Enlightenment CVS committal

Author  : devilhorns
Project : e_modules
Module  : flame

Dir     : e_modules/flame


Modified Files:
        e_mod_main.c e_mod_main.h e_mod_config.c 


Log Message:
Add ability to set custom palettes.
Advanced Dialogue needs some work.
         -Setting a color to 0 adds color, setting to 300 removes color

===================================================================
RCS file: /cvsroot/enlightenment/e_modules/flame/e_mod_main.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- e_mod_main.c        27 Dec 2005 10:45:44 -0000      1.8
+++ e_mod_main.c        27 Dec 2005 13:33:53 -0000      1.9
@@ -25,8 +25,9 @@
 static void _flame_palette_gold_set    (Flame_Face *ff);
 static void _flame_palette_fire_set    (Flame_Face *ff);
 static void _flame_palette_plasma_set  (Flame_Face *ff);
-static void _flame_palette_matrix_set   (Flame_Face *ff);
-static void _flame_palette_ice_set   (Flame_Face *ff);
+static void _flame_palette_matrix_set  (Flame_Face *ff);
+static void _flame_palette_ice_set     (Flame_Face *ff);
+static void _flame_palette_custom_set  (Flame_Face *ff);
 static void _flame_zero_set            (Flame_Face *ff);
 static void _flame_base_random_set     (Flame_Face *ff);
 static void _flame_base_random_modify  (Flame_Face *ff);
@@ -135,6 +136,9 @@
    E_CONFIG_VAL(D, T, vartrend, INT);
    E_CONFIG_VAL(D, T, residual, INT);
    E_CONFIG_VAL(D, T, palette_type, INT);
+   E_CONFIG_VAL(D, T, r, INT);
+   E_CONFIG_VAL(D, T, g, INT);
+   E_CONFIG_VAL(D, T, b, INT);
    
    f->conf = e_config_domain_load("module.flame", f->conf_edd);
    if (!f->conf)
@@ -146,6 +150,9 @@
        f->conf->variance = 5;
        f->conf->vartrend = 2;
        f->conf->residual = 68;
+       f->conf->r = 160;
+       f->conf->g = 40;
+       f->conf->b = 0;
        f->conf->palette_type = GOLD_PALETTE;
      }
    E_CONFIG_LIMIT(f->conf->height, 4, 4096);
@@ -154,7 +161,10 @@
    E_CONFIG_LIMIT(f->conf->variance, 1, 100);
    E_CONFIG_LIMIT(f->conf->vartrend, 1, 100);
    E_CONFIG_LIMIT(f->conf->residual, 1, 100);
-   E_CONFIG_LIMIT(f->conf->palette_type, GOLD_PALETTE, ICE_PALETTE);
+   E_CONFIG_LIMIT(f->conf->r, 0, 300);
+   E_CONFIG_LIMIT(f->conf->g, 0, 300);
+   E_CONFIG_LIMIT(f->conf->b, 0, 300);
+   E_CONFIG_LIMIT(f->conf->palette_type, GOLD_PALETTE, CUSTOM_PALETTE);
    
    managers = e_manager_list();
    for (l = managers; l; l = l->next)
@@ -225,6 +235,9 @@
       case ICE_PALETTE:
        _flame_palette_ice_set(f->face);
        break;
+      case CUSTOM_PALETTE:
+       _flame_palette_custom_set(f->face);
+       break;
       default:
        break;
      }
@@ -515,6 +528,33 @@
      }
 }
 
+static void
+_flame_palette_custom_set(Flame_Face *ff)
+{
+   int i, r, g, b, a;
+   Flame *f;
+   
+   f = ff->flame;
+   for (i = 0 ; i < 300 ; i++)
+     {
+       r = (i - f->conf->r) * 3;
+       g = (i - f->conf->g) * 3;
+       b = (i - f->conf->b) * 3;
+       
+       if (r < 0)   r = 0;
+       if (r > 255) r = 255;
+       if (g < 0)   g = 0;
+       if (g > 255) g = 255;
+       if (b < 0)   b = 0;
+       if (b > 255) b = 255;
+       a = (int)((r * 0.299) + (g * 0.587) + (b * 0.114));
+       ff->palette[i] = ((((unsigned char)a) << 24) |
+                         (((unsigned char)r) << 16) |
+                         (((unsigned char)g) << 8)  |
+                         ((unsigned char)b));
+     }
+}
+
 /* set the flame array to zero */
 static void
 _flame_zero_set(Flame_Face *ff)
===================================================================
RCS file: /cvsroot/enlightenment/e_modules/flame/e_mod_main.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- e_mod_main.h        27 Dec 2005 10:45:43 -0000      1.4
+++ e_mod_main.h        27 Dec 2005 13:33:53 -0000      1.5
@@ -14,7 +14,8 @@
      FIRE_PALETTE,
      PLASMA_PALETTE,
      MATRIX_PALETTE,
-     ICE_PALETTE
+     ICE_PALETTE,
+     CUSTOM_PALETTE
 };
 
 struct _Config
@@ -24,6 +25,7 @@
    int                variance;
    int                vartrend;
    int                residual;
+   int                r,g,b;
    Flame_Palette_Type palette_type;
 };
 
===================================================================
RCS file: /cvsroot/enlightenment/e_modules/flame/e_mod_config.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- e_mod_config.c      27 Dec 2005 10:45:44 -0000      1.8
+++ e_mod_config.c      27 Dec 2005 13:33:53 -0000      1.9
@@ -8,6 +8,7 @@
 struct _cfdata 
 {
    int palette;
+   int r,g,b;
 };
 
 struct _Cfg_File_Data 
@@ -21,6 +22,8 @@
 static void _free_data(E_Config_Dialog *cfd, CFData *cfdata);
 static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, 
CFData *cfdata);
 static int _basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata);
+static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, 
CFData *cfdata);
+static int _advanced_apply_data(E_Config_Dialog *cfd, CFData *cfdata);
 
 void
 _config_flame_module(E_Container *con, Flame *fl) 
@@ -32,8 +35,8 @@
    v.free_cfdata = _free_data;
    v.basic.apply_cfdata = _basic_apply_data;
    v.basic.create_widgets = _basic_create_widgets;
-   v.advanced.apply_cfdata = NULL;
-   v.advanced.create_widgets = NULL;
+   v.advanced.apply_cfdata = _advanced_apply_data;
+   v.advanced.create_widgets = _advanced_create_widgets;
    
    cfd = e_config_dialog_new(con, _("Flame Configuration"), NULL, 0, &v, fl);
 }
@@ -42,6 +45,9 @@
 _fill_data(Flame *f, CFData *cfdata) 
 {
    cfdata->palette = f->conf->palette_type;
+   cfdata->r = f->conf->r;
+   cfdata->g = f->conf->g;
+   cfdata->b = f->conf->b;
 }
 
 static void
@@ -52,7 +58,7 @@
    
    f = cfd->data;
    cfdata = E_NEW(CFData, 1);
-   _fill_data(f, cfdata);
+   //_fill_data(f, cfdata);
    return cfdata;
 }
 
@@ -67,19 +73,25 @@
 {
    Evas_Object *o, *of, *ob;
    E_Radio_Group *rg;
+   Flame *f;
+   
+   f = cfd->data;
+   _fill_data(f, cfdata);
    
    o = e_widget_list_add(evas, 0, 0);
    of = e_widget_framelist_add(evas, _("Flame Color"), 0);
    rg = e_widget_radio_group_new(&(cfdata->palette));
-   ob = e_widget_radio_add(evas, _("Gold"), GOLD_PALETTE ,rg);
+   ob = e_widget_radio_add(evas, _("Gold"), GOLD_PALETTE, rg);
+   e_widget_framelist_object_append(of, ob);
+   ob = e_widget_radio_add(evas, _("Fire"), FIRE_PALETTE, rg);
    e_widget_framelist_object_append(of, ob);
-   ob = e_widget_radio_add(evas, _("Fire"), FIRE_PALETTE ,rg);
+   ob = e_widget_radio_add(evas, _("Plasma"), PLASMA_PALETTE, rg);
    e_widget_framelist_object_append(of, ob);
-   ob = e_widget_radio_add(evas, _("Plasma"), PLASMA_PALETTE ,rg);
+   ob = e_widget_radio_add(evas, _("Matrix"), MATRIX_PALETTE, rg);
    e_widget_framelist_object_append(of, ob);
-   ob = e_widget_radio_add(evas, _("Matrix"), MATRIX_PALETTE ,rg);
+   ob = e_widget_radio_add(evas, _("Ice"), ICE_PALETTE, rg);
    e_widget_framelist_object_append(of, ob);
-   ob = e_widget_radio_add(evas, _("Ice"), ICE_PALETTE ,rg);
+   ob = e_widget_radio_add(evas, _("Custom"), CUSTOM_PALETTE, rg);
    e_widget_framelist_object_append(of, ob);
    e_widget_list_object_append(o, of, 1, 1, 0.5);
    return o;
@@ -98,16 +110,31 @@
        f->conf->palette_type = GOLD_PALETTE; // Gold
        break;
       case 2:
-       f->conf->palette_type = FIRE_PALETTE;   //Fre
+       f->conf->palette_type = FIRE_PALETTE;   //Fire
+       f->conf->r = 0;
+       f->conf->g = 80;
+       f->conf->b = 160;
        break;
       case 3:
        f->conf->palette_type = PLASMA_PALETTE; //Plasma
+       f->conf->r = 0;
+       f->conf->g = 0;
+       f->conf->b = 80;        
        break;
       case 4:
        f->conf->palette_type = MATRIX_PALETTE; //Matrix
+       f->conf->r = 80;
+       f->conf->g = 0;
+       f->conf->b = 160;
        break;
       case 5:
        f->conf->palette_type = ICE_PALETTE;    //Ice
+       f->conf->r = 160;
+       f->conf->g = 40;
+       f->conf->b = 0; 
+       break;
+      case 6:
+       f->conf->palette_type = CUSTOM_PALETTE; //Custom
        break;
       default:
        break;
@@ -118,3 +145,54 @@
    _flame_cb_config_updated(f);
    return 1;
 }
+
+static Evas_Object
+*_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata) 
+{
+   Evas_Object *o, *of, *ob;
+   Flame *f;
+   
+   f = cfd->data;
+   _fill_data(f, cfdata);
+   
+   o = e_widget_list_add(evas, 0, 0);
+   of = e_widget_framelist_add(evas, _("Flame Color"), 0);
+   
+   ob = e_widget_label_add(evas, _("Red Amount"));
+   e_widget_framelist_object_append(of, ob);
+   ob = e_widget_slider_add(evas, 1, 0, _("%1.0f"), 0, 300, 10, 0, NULL, 
&(cfdata->r), 200);
+   e_widget_framelist_object_append(of, ob);
+
+   ob = e_widget_label_add(evas, _("Blue Amount"));
+   e_widget_framelist_object_append(of, ob);
+   ob = e_widget_slider_add(evas, 1, 0, _("%1.0f"), 0, 300, 10, 0, NULL, 
&(cfdata->b), 200);
+   e_widget_framelist_object_append(of, ob);
+
+   ob = e_widget_label_add(evas, _("Green Amount"));
+   e_widget_framelist_object_append(of, ob);
+   ob = e_widget_slider_add(evas, 1, 0, _("%1.0f"), 0, 300, 10, 0, NULL, 
&(cfdata->g), 200);
+   e_widget_framelist_object_append(of, ob);
+   
+   e_widget_list_object_append(o, of, 1, 1, 0.5);
+   return o;
+}
+
+static int
+_advanced_apply_data(E_Config_Dialog *cfd, CFData *cfdata) 
+{
+   Flame *f;
+   
+   f = cfd->data;
+   e_border_button_bindings_ungrab_all();
+
+   f->conf->palette_type = CUSTOM_PALETTE;     //Custom
+   f->conf->r = cfdata->r;
+   f->conf->g = cfdata->g;
+   f->conf->b = cfdata->b;
+   
+   e_config_save_queue();
+   e_border_button_bindings_grab_all();
+   
+   _flame_cb_config_updated(f);
+   return 1;   
+}




-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to