From 1553d338d8a75b84835a2521abad78d2295abc19 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Sun, 26 Dec 2004 05:04:03 +0000 Subject: [PATCH] flame respects resize events now ... and by default now looks much prettier.. :) SVN revision: 12591 --- src/bin/e_border.c | 10 +- src/bin/e_int_menus.c | 3 - src/modules/flame/e_mod_main.c | 197 ++++++++++++++++++++++++++---- src/modules/flame/e_mod_main.h | 5 +- src/modules/flame/module_icon.png | Bin 440 -> 1343 bytes 5 files changed, 180 insertions(+), 35 deletions(-) diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 0f8f0e749..d8fb8e711 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -76,9 +76,7 @@ static E_Border *focused = NULL; #define GRAV_SET(bd, grav) \ printf("GRAV TO %i\n", grav); \ ecore_x_window_gravity_set(bd->bg_win, grav); \ -ecore_x_window_pixel_gravity_set(bd->bg_win, grav); \ ecore_x_window_gravity_set(bd->client.shell_win, grav); \ -ecore_x_window_pixel_gravity_set(bd->client.shell_win, grav); \ ecore_x_window_gravity_set(bd->client.win, grav); \ ecore_x_window_gravity_set(ecore_evas_software_x11_subwindow_get(bd->bg_ecore_evas), grav); \ ecore_x_window_pixel_gravity_set(ecore_evas_software_x11_subwindow_get(bd->bg_ecore_evas), grav); @@ -2345,16 +2343,16 @@ _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y) { static char buf[PATH_MAX + 50]; char *name, *homedir; - int i; + int i, l; buf[0] = '\0'; /* generate a reasonable file name from the window class */ /* FIXME - I think there could be duplicates - how better to do this? */ name = strdup(bd->client.icccm.class); - for (i = 0; i < strlen(name); i++) + l = strlen(name); + for (i = 0; i < l; i++) { - if (name[i] == ' ') - name[i] = '_'; + if (name[i] == ' ') name[i] = '_'; } /* previously this could be null, but it will exist now */ homedir = e_user_homedir_get(); diff --git a/src/bin/e_int_menus.c b/src/bin/e_int_menus.c index 4d511536b..6f6273cbe 100644 --- a/src/bin/e_int_menus.c +++ b/src/bin/e_int_menus.c @@ -14,7 +14,6 @@ struct _Main_Data /* local subsystem functions */ static void _e_int_menus_main_end (void *data, E_Menu *m); -static void _e_int_menus_about_end (void *data, E_Menu *m); static void _e_int_menus_main_about (void *data, E_Menu *m, E_Menu_Item *mi); static void _e_int_menus_main_restart (void *data, E_Menu *m, E_Menu_Item *mi); static void _e_int_menus_main_exit (void *data, E_Menu *m, E_Menu_Item *mi); @@ -96,7 +95,6 @@ E_Menu * e_int_menus_apps_new(char *dir, int top) { E_Menu *m; - E_Menu_Item *mi; E_App *a; m = e_menu_new(); @@ -115,7 +113,6 @@ E_Menu * e_int_menus_favorite_apps_new(int top) { E_Menu *m; - E_App *a; char buf[4096]; char *homedir; diff --git a/src/modules/flame/e_mod_main.c b/src/modules/flame/e_mod_main.c index 1a85aa357..3c70f1a17 100644 --- a/src/modules/flame/e_mod_main.c +++ b/src/modules/flame/e_mod_main.c @@ -15,22 +15,25 @@ static Flame *_flame_init (E_Module *m); static void _flame_shutdown (Flame *f); static E_Menu *_flame_config_menu_new (Flame *f); -static void _flame_menu_default_palette (void *data, E_Menu *m, E_Menu_Item *mi); +static void _flame_menu_gold_palette (void *data, E_Menu *m, E_Menu_Item *mi); +static void _flame_menu_fire_palette (void *data, E_Menu *m, E_Menu_Item *mi); static void _flame_menu_plasma_palette (void *data, E_Menu *m, E_Menu_Item *mi); static void _flame_config_menu_del (Flame *f, E_Menu *m); static void _flame_config_palette_set (Flame *f, Flame_Palette_Type type); -static int _flame_face_init (Flame_Face *ff); -static void _flame_face_free (Flame_Face *ff); -static void _flame_face_anim_handle (Flame_Face *ff); +static int _flame_face_init (Flame_Face *ff); +static void _flame_face_free (Flame_Face *ff); +static void _flame_face_anim_handle (Flame_Face *ff); -static void _flame_palette_default_set (Flame_Face *ff); +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_zero_set (Flame_Face *ff); static void _flame_base_random_set (Flame_Face *ff); static void _flame_base_random_modify (Flame_Face *ff); static void _flame_process (Flame_Face *ff); static int _flame_cb_draw (void *data); +static int _flame_cb_event_container_resize(void *data, int type, void *event); static int powerof (unsigned int n); @@ -140,11 +143,11 @@ _flame_init (E_Module *m) f->conf = E_NEW (Config, 1); f->conf->height = 128; f->conf->hspread = 26; - f->conf->vspread = 48; + f->conf->vspread = 76; f->conf->variance = 5; f->conf->vartrend = 2; f->conf->residual = 68; - f->conf->palette_type = DEFAULT_PALETTE; + f->conf->palette_type = GOLD_PALETTE; } E_CONFIG_LIMIT(f->conf->height, 4, 4096); E_CONFIG_LIMIT(f->conf->hspread, 1, 100); @@ -152,7 +155,7 @@ _flame_init (E_Module *m) 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, DEFAULT_PALETTE, PLASMA_PALETTE); + E_CONFIG_LIMIT(f->conf->palette_type, GOLD_PALETTE, PLASMA_PALETTE); managers = e_manager_list (); for (l = managers; l; l = l->next) @@ -201,11 +204,18 @@ _flame_config_menu_new (Flame *f) mn = e_menu_new (); mi = e_menu_item_new (mn); - e_menu_item_label_set (mi, "Default Palette"); + e_menu_item_label_set (mi, "Gold Palette"); e_menu_item_radio_set(mi, 1); e_menu_item_radio_group_set(mi, 2); - if (f->conf->palette_type == DEFAULT_PALETTE) e_menu_item_toggle_set (mi, 1); - e_menu_item_callback_set (mi, _flame_menu_default_palette, f); + if (f->conf->palette_type == GOLD_PALETTE) e_menu_item_toggle_set (mi, 1); + e_menu_item_callback_set (mi, _flame_menu_gold_palette, f); + + mi = e_menu_item_new (mn); + e_menu_item_label_set (mi, "Fire Palette"); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 2); + if (f->conf->palette_type == FIRE_PALETTE) e_menu_item_toggle_set (mi, 1); + e_menu_item_callback_set (mi, _flame_menu_fire_palette, f); mi = e_menu_item_new(mn); e_menu_item_label_set(mi, "Plasma Palette"); @@ -220,12 +230,21 @@ _flame_config_menu_new (Flame *f) } static void -_flame_menu_default_palette (void *data, E_Menu *m, E_Menu_Item *mi) +_flame_menu_gold_palette (void *data, E_Menu *m, E_Menu_Item *mi) { Flame *f; f = (Flame *)data; - _flame_config_palette_set (f, DEFAULT_PALETTE); + _flame_config_palette_set (f, GOLD_PALETTE); +} + +static void +_flame_menu_fire_palette (void *data, E_Menu *m, E_Menu_Item *mi) +{ + Flame *f; + + f = (Flame *)data; + _flame_config_palette_set (f, FIRE_PALETTE); } static void @@ -248,12 +267,17 @@ _flame_config_palette_set (Flame *f, Flame_Palette_Type type) { switch (type) { - case DEFAULT_PALETTE: - _flame_palette_default_set (f->face); + case GOLD_PALETTE: + _flame_palette_gold_set (f->face); + break; + case FIRE_PALETTE: + _flame_palette_fire_set (f->face); break; case PLASMA_PALETTE: _flame_palette_plasma_set (f->face); break; + default: + break; } } @@ -265,16 +289,20 @@ _flame_face_init (Flame_Face *ff) int size; int flame_width, flame_height; + ff->ev_handler_container_resize = + ecore_event_handler_add(E_EVENT_CONTAINER_RESIZE, + _flame_cb_event_container_resize, + ff); /* set up the flame object */ o = evas_object_image_add (ff->evas); evas_output_viewport_get(ff->evas, NULL, NULL, &ww, &hh); ff->ww = ww; printf ("Size : %d %d\n", ww, hh); - evas_object_move (o, 0, hh - ff->flame->conf->height + 1); + evas_object_move (o, 0, hh - ff->flame->conf->height + 3); evas_object_resize (o, ff->ww, ff->flame->conf->height); evas_object_image_fill_set (o, 0, 0, ff->ww, ff->flame->conf->height); - evas_object_layer_set (o, -1); - evas_object_focus_set (o, 1); + evas_object_pass_events_set(o, 1); + evas_object_layer_set (o, 20); evas_object_image_alpha_set(o, 1); evas_object_show (o); ff->flame_object = o; @@ -320,6 +348,7 @@ _flame_face_init (Flame_Face *ff) static void _flame_face_free(Flame_Face *ff) { + ecore_event_handler_del(ff->ev_handler_container_resize); evas_object_del (ff->flame_object); if (ff->anim) ecore_animator_del(ff->anim); if (ff->f_array1) free (ff->f_array1); @@ -335,9 +364,86 @@ _flame_face_anim_handle (Flame_Face *ff) ff->anim = ecore_animator_add (_flame_cb_draw, ff); } -/* set the default flame palette */ static void -_flame_palette_default_set (Flame_Face *ff) +_flame_palette_gold_set (Flame_Face *ff) +{ + const unsigned char gold_cmap[300 * 4] = + "\256\256\0\1\254i\24\3\312\2165\5" + "\330\212<\7\340\244I\10\344\235R\12\332\236P\15\334\247P\17\340\242U\20\343" + "\253X\22\340\253V\25\335\245U\27\344\254X\31\353\250[\32\352\254Y\34\346" + "\251X\37\347\251Z!\351\255\\\"\351\253[$\345\253Z'\346\252\\)\347\253]+\347" + "\256\\,\346\253\\/\344\253\\1\346\256]3\347\254\\4\351\256]6\351\253\\9\351" + "\254^;\352\256\\=\352\255^>\350\255]A\350\254^C\350\255\\E\351\256^F\350" + "\255^I\347\255^K\347\255]M\350\256]O\352\257^Q\351\255_S\352\256^U\352\255" + "]W\352\255_X\351\256_[\351\255]]\351\256^_\351\256^a\351\256_c\350\256_e" + "\350\256^g\351\256^i\351\256_k\350\255_m\352\256^o\352\256_q\353\257_s\352" + "\257_u\351\255^w\351\256_y\352\256_{\352\256`}\350\256^\177\351\255_\201" + "\351\257_\203\351\256_\205\351\256_\207\351\256_\211\352\256_\213\353\257" + "_\215\352\256_\217\351\256_\221\352\257_\223\352\256_\225\352\257_\227\351" + "\256_\231\351\256_\233\351\257_\235\352\256`\237\351\256_\241\351\257_\243" + "\352\256_\245\353\257`\247\353\257`\251\352\256_\253\352\257_\255\352\256" + "`\257\352\257`\261\351\257_\263\351\256_\265\352\257`\267\352\257`\271\352" + "\257`\273\351\257_\275\352\256`\277\352\257`\301\352\256`\303\352\257_\305" + "\352\257`\307\352\257`\311\352\257`\313\352\257_\315\352\256`\317\352\257" + "`\321\352\257`\324\352\260a\326\352\261`\330\353\262b\332\353\262c\335\353" + "\264c\337\353\265d\342\353\265e\344\354\266f\346\354\267f\350\354\270g\352" + "\354\271g\354\354\272g\356\354\273i\360\355\274i\362\355\275j\364\355\275" + "k\365\355\276k\367\355\277l\371\356\300l\372\356\301m\373\356\301m\375\356" + "\301n\376\356\303o\376\357\304p\376\357\304p\377\357\305q\377\357\306q\377" + "\357\307r\377\360\310s\377\360\311s\377\360\311t\377\360\312u\377\361\313" + "v\377\361\314v\377\361\315w\377\361\316w\377\362\317x\377\362\320y\377\362" + "\320y\377\362\321z\377\362\322{\377\363\323|\377\363\324|\377\363\325}\377" + "\363\326~\377\364\327~\377\364\327\177\377\364\330\200\377\364\331\200\377" + "\365\332\201\377\365\333\202\377\365\334\202\377\365\335\203\377\365\336" + "\204\377\366\337\204\377\366\337\205\377\366\340\206\377\366\341\206\377" + "\367\342\207\377\367\343\210\377\367\344\210\377\367\345\211\377\367\346" + "\212\377\370\347\212\377\370\347\213\377\370\350\214\377\370\351\214\377" + "\371\352\215\377\371\353\216\377\371\354\216\377\371\355\217\377\372\356" + "\220\377\372\357\220\377\372\357\221\377\372\360\222\377\372\361\223\377" + "\373\362\224\377\373\363\226\377\373\363\230\377\373\364\232\377\374\365" + "\235\377\374\366\237\377\374\367\241\377\374\370\244\377\375\371\246\377" + "\375\372\250\377\375\373\252\377\375\373\254\377\375\373\256\377\376\373" + "\260\377\376\374\262\377\376\374\262\377\376\374\264\377\376\374\266\377" + "\376\374\270\377\376\374\272\377\376\374\273\377\376\374\274\377\376\374" + "\276\377\376\374\300\377\376\374\301\377\376\374\303\377\376\374\305\377" + "\376\374\306\377\376\374\310\377\376\374\311\377\376\374\313\377\376\374" + "\315\377\376\374\317\377\376\374\320\377\376\375\321\377\376\375\323\377" + "\376\375\325\377\376\375\327\377\376\375\330\377\376\375\332\377\376\375" + "\333\377\376\375\335\377\376\375\336\377\376\375\340\377\376\375\342\377" + "\376\375\343\377\376\375\345\377\376\375\346\377\376\375\350\377\376\375" + "\352\377\376\375\354\377\376\375\355\377\376\375\356\377\376\375\360\377" + "\376\375\362\377\376\375\364\377\376\375\365\377\376\375\367\377\376\375" + "\370\377\376\375\372\377\376\375\373\377\376\375\374\377\376\375\375\377" + "\376\375\375\377\376\376\375\377\376\376\375\377\376\376\375\377\376\376" + "\375\377\376\376\375\377" + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" + "\377\377\377\377" + ; + int i; + + for (i = 0 ; i < 300 ; i++) + { + ff->palette[i] = + (gold_cmap[(i * 4) + 3] << 24) | + (gold_cmap[(i * 4) + 0] << 16) | + (gold_cmap[(i * 4) + 1] << 8 ) | + (gold_cmap[(i * 4) + 2]); + } +} + +static void +_flame_palette_fire_set (Flame_Face *ff) { int i, r, g, b, a; @@ -354,11 +460,10 @@ _flame_palette_default_set (Flame_Face *ff) 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)); + ff->palette[i] = ((((unsigned char)a) << 24) | + (((unsigned char)r) << 16) | + (((unsigned char)g) << 8) | + ((unsigned char)b)); } } @@ -568,6 +673,48 @@ _flame_cb_draw (void *data) return 1; } +static int +_flame_cb_event_container_resize(void *data, int type, void *event) +{ + Flame_Face *ff; + Evas_Object *o; + Evas_Coord ww, hh; + int size; + int flame_width, flame_height; + + ff = data; + evas_output_viewport_get(ff->evas, NULL, NULL, &ww, &hh); + ff->ww = ww; + o = ff->flame_object; + printf ("Size : %d %d\n", ww, hh); + evas_object_move (o, 0, hh - ff->flame->conf->height + 3); + evas_object_resize (o, ff->ww, ff->flame->conf->height); + evas_object_image_fill_set (o, 0, 0, ff->ww, ff->flame->conf->height); + + /* Allocation of the flame arrays */ + flame_width = ff->ww >> 1; + flame_height = ff->flame->conf->height >> 1; + ff->ws = powerof (flame_width); + size = (1 << ff->ws) * flame_height * sizeof (int); + if (ff->f_array1) free(ff->f_array1); + ff->f_array1 = (unsigned int *)malloc (size); + if (!ff->f_array1) + return 0; + if (ff->f_array2) free(ff->f_array2); + ff->f_array2 = (unsigned int *)malloc (size); + if (!ff->f_array2) + return 0; + + /* allocation of the image */ + ff->ims = powerof (ff->ww); + evas_object_image_size_set (ff->flame_object, + 1<< ff->ims, ff->flame->conf->height); + evas_object_image_fill_set (o, 0, 0, 1<< ff->ims, ff->flame->conf->height); + printf ("Size : %d %d\n", 1<< ff->ims, ff->flame->conf->height); + ff->im = (unsigned int *)evas_object_image_data_get (ff->flame_object, 1); + return 1; +} + /* return the power of a number (eg powerof(8)==3, powerof(256)==8, * powerof(1367)==11, powerof(2568)==12) */ static int diff --git a/src/modules/flame/e_mod_main.h b/src/modules/flame/e_mod_main.h index 255f334b4..caca4aac4 100644 --- a/src/modules/flame/e_mod_main.h +++ b/src/modules/flame/e_mod_main.h @@ -10,7 +10,8 @@ typedef struct _Flame_Face Flame_Face; enum _Flame_Palette_Type { DEFAULT_NONE, - DEFAULT_PALETTE, + GOLD_PALETTE, + FIRE_PALETTE, PLASMA_PALETTE }; @@ -52,6 +53,8 @@ struct _Flame_Face /* the flame arrays */ int ws; unsigned int *f_array1, *f_array2; + + Ecore_Event_Handler *ev_handler_container_resize; }; EAPI void *init (E_Module *m); diff --git a/src/modules/flame/module_icon.png b/src/modules/flame/module_icon.png index a1ce6362ee0d3eb66d5eca4ffadcd7bdf4e0363c..352c3cd5dbb2779ce136ee1f535d2d836813a7c3 100644 GIT binary patch delta 1277 zcmVpOiHyA?r#*tbpe*~mSL_t(Y$F-G9Z)Hang}+s=^SJl=zI@YeKh)i6ccbPtV!#9> z1~7wJ{1f<7%oEX`Wq`yF0VzmG2niB!Cyv{0+xMJPwHcgil8{Lz>|yPywN~xDYM1zq zVITf-LUs3yk}j!E|Hb{KWB4)>7Cj%l?j@O->0!Sl0|X388L_uJm`6vDaGD@Fth~jvMf5-m7J)l#bZCG+fYnHIq#! zHN_$@L0TcTIG|X@v&Q=wQY70oWw-&ryZ4Yw45k0-2BV}Fr(;q)A*LC9ceBeSoaT5P zA=PBS(GtTmQnkb|a$Zr~6#&6M0wCL`yT1wQQI zoM*@iW*PZJwFu~~*xsbEd~!(XVFrCgFj}(4hn8yT2s5bX75&}OE>{uK1n(nVHznH^ zeixj>i;PhKPi!4wDtv9E zd7!_GI4^wV$wPzgBT%8@1FkFy)rxBE@Kf*#C_tEsP&;Tn^}fjW4k>~eE{eE>xD;jU zD1Aa+#F^M$SDXA>r;A{~IM!3xABOkaw)g1CbAR5XWkhHIlb9M}B} zs$-abPxuz5P+05<~Q7@xj?B~ZTp&qCFXIr-5b no8Q3n#}(bbEAcQi{!j5AyR5WDoGR2E00000NkvXXu0mjf#;sj` delta 367 zcmV-#0g(Q`3b+H1D=+^5|De66lK=n!32;bRa{vGioB#k0!~u2ogn=<=e*qmyL_t(|+ND&%ZNo4OJP8FfMSlshf!5H&J8*>TkQF*ZzgZ$1 z6nSQe_@zDyRg5f(ltVzUOrFT&Q8oZ%>pD9-wk(fHJG=TUs~0aeU4UCul8Xf-X3@!s zq(Xiaw6f=C;z*(bjBdY7szg0zTpo)o{M}0cE#Y$5Vq-@Ef8R>O4_etzNz}5N?ZQ-G zMkd19V