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