From: Enlightenment S. <no-...@en...> - 2009-05-09 14:29:21
|
Log: move the image evas calls into the engine Author: pfritz Date: 2009-05-09 07:29:15 -0700 (Sat, 09 May 2009) New Revision: 40569 Modified: trunk/ewl/po/cs.po trunk/ewl/po/de.po trunk/ewl/po/fr.po trunk/ewl/po/it.po trunk/ewl/src/engines/evas/ewl_engine_evas.c trunk/ewl/src/lib/ewl_engines.c trunk/ewl/src/lib/ewl_engines.h trunk/ewl/src/lib/ewl_image.c Modified: trunk/ewl/po/cs.po =================================================================== --- trunk/ewl/po/cs.po 2009-05-09 11:58:52 UTC (rev 40568) +++ trunk/ewl/po/cs.po 2009-05-09 14:29:15 UTC (rev 40569) @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: Ewl\n" "Report-Msgid-Bugs-To: enl...@li...\n" -"POT-Creation-Date: 2009-04-28 15:17+0200\n" +"POT-Creation-Date: 2009-04-26 22:20+0200\n" "PO-Revision-Date: 2009-04-28 15:32+0100\n" "Last-Translator: quaker66 <qua...@gm...>\n" "Language-Team: Czech\n" @@ -15,299 +15,290 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -#: ../src/lib/ewl_stock.c:19 +#: src/lib/ewl_stock.c:19 msgid "STOCK|About" msgstr "O programu..." -#: ../src/lib/ewl_stock.c:20 +#: src/lib/ewl_stock.c:20 msgid "STOCK|Add" msgstr "Přidat" -#: ../src/lib/ewl_stock.c:21 +#: src/lib/ewl_stock.c:21 msgid "STOCK|Apply" msgstr "Použít" -#. Arrow -#: ../src/lib/ewl_stock.c:22 +#: src/lib/ewl_stock.c:22 msgid "STOCK|Bottom" msgstr "Spodek" -#. Arrow -#: ../src/lib/ewl_stock.c:23 +#: src/lib/ewl_stock.c:23 msgid "STOCK|Down" msgstr "Dolů" -#. Arrow -#: ../src/lib/ewl_stock.c:24 +#: src/lib/ewl_stock.c:24 msgid "STOCK|First" msgstr "První" -#. Arrow -#: ../src/lib/ewl_stock.c:25 +#: src/lib/ewl_stock.c:25 msgid "STOCK|Last" msgstr "Poslední" -#. Arrow -#: ../src/lib/ewl_stock.c:26 +#: src/lib/ewl_stock.c:26 msgid "STOCK|Left" msgstr "Vlevo" -#. Arrow -#: ../src/lib/ewl_stock.c:27 +#: src/lib/ewl_stock.c:27 msgid "STOCK|Right" msgstr "Vpravo" -#. Arrow -#: ../src/lib/ewl_stock.c:28 +#: src/lib/ewl_stock.c:28 msgid "STOCK|Top" msgstr "Vršek" -#. Arrow -#: ../src/lib/ewl_stock.c:29 +#: src/lib/ewl_stock.c:29 msgid "STOCK|Up" msgstr "Nahoru" -#: ../src/lib/ewl_stock.c:30 +#: src/lib/ewl_stock.c:30 msgid "STOCK|Bold" msgstr "Tučně" -#: ../src/lib/ewl_stock.c:31 +#: src/lib/ewl_stock.c:31 msgid "STOCK|Cancel" msgstr "Zrušit" -#: ../src/lib/ewl_stock.c:32 +#: src/lib/ewl_stock.c:32 msgid "STOCK|Clear" msgstr "Vyčistit" -#: ../src/lib/ewl_stock.c:33 +#: src/lib/ewl_stock.c:33 msgid "STOCK|Close" msgstr "Zavřít" -#: ../src/lib/ewl_stock.c:34 +#: src/lib/ewl_stock.c:34 msgid "STOCK|Copy" msgstr "Kopírovat" -#: ../src/lib/ewl_stock.c:35 +#: src/lib/ewl_stock.c:35 msgid "STOCK|Cut" msgstr "Vystřihnout" -#: ../src/lib/ewl_stock.c:36 +#: src/lib/ewl_stock.c:36 msgid "STOCK|Delete" msgstr "Smazat" -#: ../src/lib/ewl_stock.c:37 +#: src/lib/ewl_stock.c:37 msgid "STOCK|Edit" msgstr "Upravit" -#: ../src/lib/ewl_stock.c:38 +#: src/lib/ewl_stock.c:38 msgid "STOCK|Execute" msgstr "Spustit" -#: ../src/lib/ewl_stock.c:39 +#: src/lib/ewl_stock.c:39 msgid "STOCK|Find" msgstr "Najít" -#: ../src/lib/ewl_stock.c:40 +#: src/lib/ewl_stock.c:40 msgid "STOCK|Find and replace" msgstr "Najít a nahradit" -#: ../src/lib/ewl_stock.c:41 +#: src/lib/ewl_stock.c:41 msgid "STOCK|Flip horizontal" msgstr "Překlopit horizontálně" -#: ../src/lib/ewl_stock.c:42 +#: src/lib/ewl_stock.c:42 msgid "STOCK|Flip vertical" msgstr "Překlopit vertikálně" -#: ../src/lib/ewl_stock.c:43 +#: src/lib/ewl_stock.c:43 msgid "STOCK|Fullscreen" msgstr "Celá obrazovka" -#: ../src/lib/ewl_stock.c:44 +#: src/lib/ewl_stock.c:44 msgid "STOCK|Help" msgstr "Nápověda" -#: ../src/lib/ewl_stock.c:45 +#: src/lib/ewl_stock.c:45 msgid "STOCK|Home" msgstr "Domů" -#: ../src/lib/ewl_stock.c:46 +#: src/lib/ewl_stock.c:46 msgid "STOCK|Indent" msgstr "Odsazení" -#: ../src/lib/ewl_stock.c:47 +#: src/lib/ewl_stock.c:47 msgid "STOCK|Italic" msgstr "Kurzíva" -#: ../src/lib/ewl_stock.c:48 +#: src/lib/ewl_stock.c:48 msgid "STOCK|Justify center" msgstr "Zarovnat na střed" -#: ../src/lib/ewl_stock.c:49 +#: src/lib/ewl_stock.c:49 msgid "STOCK|Justify fill" msgstr "Vyplnit" -#: ../src/lib/ewl_stock.c:50 +#: src/lib/ewl_stock.c:50 msgid "STOCK|Justify left" msgstr "Zarovnat vlevo" -#: ../src/lib/ewl_stock.c:51 +#: src/lib/ewl_stock.c:51 msgid "STOCK|Justify right" msgstr "Zarovnat vpravo" -#: ../src/lib/ewl_stock.c:52 +#: src/lib/ewl_stock.c:52 msgid "STOCK|FF" msgstr "FF" -#: ../src/lib/ewl_stock.c:53 +#: src/lib/ewl_stock.c:53 msgid "STOCK|Next" msgstr "Další" -#: ../src/lib/ewl_stock.c:54 +#: src/lib/ewl_stock.c:54 msgid "STOCK|Pause" msgstr "Pauza" -#: ../src/lib/ewl_stock.c:55 +#: src/lib/ewl_stock.c:55 msgid "STOCK|Play" msgstr "Pustit" -#: ../src/lib/ewl_stock.c:56 +#: src/lib/ewl_stock.c:56 msgid "STOCK|Previous" msgstr "Předchozí" -#: ../src/lib/ewl_stock.c:57 +#: src/lib/ewl_stock.c:57 msgid "STOCK|Record" msgstr "Nahrát" -#: ../src/lib/ewl_stock.c:58 +#: src/lib/ewl_stock.c:58 msgid "STOCK|Rewind" msgstr "Převinout" -#: ../src/lib/ewl_stock.c:59 +#: src/lib/ewl_stock.c:59 msgid "STOCK|Stop" msgstr "Zastavit" -#: ../src/lib/ewl_stock.c:60 +#: src/lib/ewl_stock.c:60 msgid "STOCK|New" msgstr "Nový" -#: ../src/lib/ewl_stock.c:61 +#: src/lib/ewl_stock.c:61 msgid "STOCK|Ok" msgstr "OK" -#: ../src/lib/ewl_stock.c:62 +#: src/lib/ewl_stock.c:62 msgid "STOCK|Open" msgstr "Otevřít" -#: ../src/lib/ewl_stock.c:63 +#: src/lib/ewl_stock.c:63 msgid "STOCK|Paste" msgstr "Vložit" -#: ../src/lib/ewl_stock.c:64 +#: src/lib/ewl_stock.c:64 msgid "STOCK|Preferences" msgstr "Volby" -#: ../src/lib/ewl_stock.c:65 +#: src/lib/ewl_stock.c:65 msgid "STOCK|Print" msgstr "Tisknout" -#: ../src/lib/ewl_stock.c:66 +#: src/lib/ewl_stock.c:66 msgid "STOCK|Print preview" msgstr "Tisknout ukázku" -#: ../src/lib/ewl_stock.c:67 +#: src/lib/ewl_stock.c:67 msgid "STOCK|Properties" msgstr "Vlastnosti" -#: ../src/lib/ewl_stock.c:68 +#: src/lib/ewl_stock.c:68 msgid "STOCK|Quit" msgstr "Pryč" -#: ../src/lib/ewl_stock.c:69 +#: src/lib/ewl_stock.c:69 msgid "STOCK|Redo" msgstr "Vpřed" -#: ../src/lib/ewl_stock.c:70 +#: src/lib/ewl_stock.c:70 msgid "STOCK|Refresh" msgstr "Obnovit" -#: ../src/lib/ewl_stock.c:71 +#: src/lib/ewl_stock.c:71 msgid "STOCK|Remove" msgstr "Smazat" -#: ../src/lib/ewl_stock.c:72 +#: src/lib/ewl_stock.c:72 msgid "STOCK|Rotate left" msgstr "Otočit vlevo" -#: ../src/lib/ewl_stock.c:73 +#: src/lib/ewl_stock.c:73 msgid "STOCK|Rotate right" msgstr "Otočit vpravo" -#: ../src/lib/ewl_stock.c:74 +#: src/lib/ewl_stock.c:74 msgid "STOCK|Save" msgstr "Uložit" -#: ../src/lib/ewl_stock.c:75 +#: src/lib/ewl_stock.c:75 msgid "STOCK|Save as" msgstr "Uložit jako" -#: ../src/lib/ewl_stock.c:76 +#: src/lib/ewl_stock.c:76 msgid "STOCK|Select all" msgstr "Vybrat vše" -#: ../src/lib/ewl_stock.c:77 +#: src/lib/ewl_stock.c:77 msgid "STOCK|Sort ascending" msgstr "Seřadit vzestupně" -#: ../src/lib/ewl_stock.c:78 +#: src/lib/ewl_stock.c:78 msgid "STOCK|Sort descending" msgstr "Seřadit sestupně" -#: ../src/lib/ewl_stock.c:79 +#: src/lib/ewl_stock.c:79 msgid "STOCK|Spell check" msgstr "Kontrola pravopisu" -#: ../src/lib/ewl_stock.c:80 +#: src/lib/ewl_stock.c:80 msgid "STOCK|Strikethrough" msgstr "Proškrtnout" -#: ../src/lib/ewl_stock.c:81 +#: src/lib/ewl_stock.c:81 msgid "STOCK|Underline" msgstr "Podrhnout" -#: ../src/lib/ewl_stock.c:82 +#: src/lib/ewl_stock.c:82 msgid "STOCK|Undo" msgstr "Zpět" -#: ../src/lib/ewl_stock.c:83 +#: src/lib/ewl_stock.c:83 msgid "STOCK|Unindent" msgstr "Zrušit odsazení" -#: ../src/lib/ewl_stock.c:84 +#: src/lib/ewl_stock.c:84 msgid "STOCK|Zoom 1:1" msgstr "Přiblížení 1:1" -#: ../src/lib/ewl_stock.c:85 +#: src/lib/ewl_stock.c:85 msgid "STOCK|Zoom fit" msgstr "Přizpůsobit" -#: ../src/lib/ewl_stock.c:86 +#: src/lib/ewl_stock.c:86 msgid "STOCK|Zoom in" msgstr "Přiblížit" -#: ../src/lib/ewl_stock.c:87 +#: src/lib/ewl_stock.c:87 msgid "STOCK|Zoom out" msgstr "Oddálit" -#: ../src/lib/ewl_colordialog.c:58 +#: src/lib/ewl_colordialog.c:58 msgid "Ewl Colordialog" msgstr "Výběr barev" -#: ../src/lib/ewl_colorpicker.c:193 +#: src/lib/ewl_colorpicker.c:193 msgid "COLOR|Current:" msgstr "Nynější:" -#: ../src/lib/ewl_colorpicker.c:211 +#: src/lib/ewl_colorpicker.c:211 msgid "COLOR|Previous:" msgstr "Předchozí:" - Modified: trunk/ewl/po/de.po =================================================================== --- trunk/ewl/po/de.po 2009-05-09 11:58:52 UTC (rev 40568) +++ trunk/ewl/po/de.po 2009-05-09 14:29:15 UTC (rev 40569) @@ -299,4 +299,3 @@ #: src/lib/ewl_colorpicker.c:211 msgid "COLOR|Previous:" msgstr "Vorherige:" - Modified: trunk/ewl/po/fr.po =================================================================== --- trunk/ewl/po/fr.po 2009-05-09 11:58:52 UTC (rev 40568) +++ trunk/ewl/po/fr.po 2009-05-09 14:29:15 UTC (rev 40569) @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: Ewl\n" "Report-Msgid-Bugs-To: enl...@li...\n" -"POT-Creation-Date: 2009-04-27 07:06+0400\n" +"POT-Creation-Date: 2009-04-26 22:20+0200\n" "PO-Revision-Date: 2009-04-27 12:15+0400\n" "Last-Translator: batden <ba...@or...>\n" "Language-Team: French <Enlightenment i18n French>\n" @@ -302,4 +302,3 @@ #: src/lib/ewl_colorpicker.c:211 msgid "COLOR|Previous:" msgstr "Précédente:" - Modified: trunk/ewl/po/it.po =================================================================== --- trunk/ewl/po/it.po 2009-05-09 11:58:52 UTC (rev 40568) +++ trunk/ewl/po/it.po 2009-05-09 14:29:15 UTC (rev 40569) @@ -6,7 +6,7 @@ msgstr "" "Project-Id-Version: Ewl\n" "Report-Msgid-Bugs-To: enl...@li...\n" -"POT-Creation-Date: 2009-04-27 07:06+0400\n" +"POT-Creation-Date: 2009-04-26 22:20+0200\n" "PO-Revision-Date: 2009-04-27 17:11+0200\n" "Last-Translator: Massimo Maiurana <mai...@gm...>\n" "Language-Team: none\n" @@ -301,4 +301,3 @@ #: src/lib/ewl_colorpicker.c:211 msgid "COLOR|Previous:" msgstr "Precedente:" - Modified: trunk/ewl/src/engines/evas/ewl_engine_evas.c =================================================================== --- trunk/ewl/src/engines/evas/ewl_engine_evas.c 2009-05-09 11:58:52 UTC (rev 40568) +++ trunk/ewl/src/engines/evas/ewl_engine_evas.c 2009-05-09 14:29:15 UTC (rev 40569) @@ -29,13 +29,19 @@ static void ee_theme_layer_stack_del(Ewl_Widget *w); static void ee_theme_layer_update(Ewl_Widget *w); static void ee_theme_object_color_set(Evas_Object *obj, Ewl_Color_Set *color); -static Evas_Object *ee_theme_object_group_add(Ewl_Embed *embed); +static Evas_Object *ee_theme_group_add(Ewl_Embed *embed); +static void ee_theme_group_object_add(void *group, void *obj); static Evas_Object *ee_theme_element_add(Ewl_Embed *embed); static Evas_Object *ee_theme_layer_neighbor_find_below(Ewl_Widget *w, Evas_Object *clip); static Evas_Object *ee_theme_layer_neighbor_find_above(Ewl_Widget *w, Evas_Object *clip); static unsigned int ee_theme_element_swallow(Evas_Object *obj1, Evas_Object *obj2); static void ee_theme_element_state_set(Evas_Object *obj, const char *signal); +static void *ee_theme_image_add(Ewl_Embed *embed); +static void ee_theme_image_data_set(void *i, void *data, int w, int h, + Ewl_Colorspace cs); +static void *ee_theme_image_data_get(void *i, int *w, int *h, + Ewl_Image_Data_Mode access); static void *canvas_funcs[EWL_ENGINE_CANVAS_MAX] = { @@ -66,7 +72,8 @@ evas_object_move, evas_object_resize, /* group function */ - ee_theme_object_group_add, + ee_theme_group_add, + ee_theme_group_object_add, /* the theme functions */ ee_theme_element_add, edje_object_file_set, @@ -79,6 +86,13 @@ edje_object_data_get, ee_theme_element_swallow, edje_object_part_unswallow, + /* image functions */ + ee_theme_image_add, + evas_object_image_file_set, + evas_object_image_fill_set, + ee_theme_image_data_set, + ee_theme_image_data_get, + evas_object_image_data_update_add, }; Ecore_DList * @@ -198,7 +212,7 @@ * The theme functions */ static Evas_Object * -ee_theme_object_group_add(Ewl_Embed *embed) +ee_theme_group_add(Ewl_Embed *embed) { Evas_Object *obj; @@ -209,6 +223,16 @@ DRETURN_PTR(obj, DLEVEL_STABLE); } +static void +ee_theme_group_object_add(void *group, void *obj) +{ + DENTER_FUNCTION(DLEVEL_STABLE); + + evas_object_smart_member_add(obj, group); + + DLEAVE_FUNCTION(DLEVEL_STABLE); +} + static Evas_Object * ee_theme_element_add(Ewl_Embed *embed) { @@ -444,6 +468,56 @@ DRETURN_PTR(ol, DLEVEL_STABLE); } +static void * +ee_theme_image_add(Ewl_Embed *embed) +{ + Evas_Object *obj; + + DENTER_FUNCTION(DLEVEL_STABLE); + + obj = evas_object_image_add(embed->canvas); + + DRETURN_PTR(obj, DLEVEL_STABLE); +} + +static void +ee_theme_image_data_set(void *i, void *data, int w, int h, Ewl_Colorspace cs) +{ + DENTER_FUNCTION(DLEVEL_STABLE); + + if (cs == EWL_COLORSPACE_ARGB) + evas_object_image_alpha_set(i, TRUE); + else + evas_object_image_alpha_set(i, FALSE); + + evas_object_image_size_set(i, w, h); + if (data) + evas_object_image_data_set(i, data); + + DLEAVE_FUNCTION(DLEVEL_STABLE); +} + +static void * +ee_theme_image_data_get(void *i, int *w, int *h, Ewl_Image_Data_Mode access) +{ + char writing; + + DENTER_FUNCTION(DLEVEL_STABLE); + + evas_object_image_size_get(i, w, h); + + if (access == EWL_IMAGE_DATA_SIZE) + DRETURN_PTR(NULL, DLEVEL_STABLE); + + if (access == EWL_IMAGE_DATA_WRITE) + writing = TRUE; + else + writing = FALSE; + + DRETURN_PTR(evas_object_image_data_get(i, writing), DLEVEL_STABLE); +} + + /* * The widget smart object */ Modified: trunk/ewl/src/lib/ewl_engines.c =================================================================== --- trunk/ewl/src/lib/ewl_engines.c 2009-05-09 11:58:52 UTC (rev 40568) +++ trunk/ewl/src/lib/ewl_engines.c 2009-05-09 14:29:15 UTC (rev 40569) @@ -1424,6 +1424,28 @@ } /** + * @brief Add an object to the object group + * @note You must not add the theme object + */ +void +ewl_engine_theme_group_object_add(Ewl_Embed *embed, void *group, void *obj) +{ + Ewl_Engine_Cb_Theme_Group_Object_Add obj_add; + + DENTER_FUNCTION(DLEVEL_STABLE); + DCHECK_PARAM_PTR(embed); + DCHECK_TYPE(embed, EWL_EMBED_TYPE); + + obj_add = ewl_engine_hook_get(embed, + EWL_ENGINE_HOOK_TYPE_THEME, + EWL_ENGINE_THEME_GROUP_OBJECT_ADD); + if (obj_add) + obj_add(group, obj); + + DLEAVE_FUNCTION(DLEVEL_STABLE); +} + +/** * @return Returns a new theme object on success, NULL on failure * @brief Add a theme object. */ @@ -1663,8 +1685,138 @@ DRETURN_PTR(NULL, DLEVEL_STABLE); } +/** + * @brief + */ +void * +ewl_engine_theme_image_add(Ewl_Embed *embed) +{ + Ewl_Engine_Cb_Theme_Image_Add image_add; + DENTER_FUNCTION(DLEVEL_STABLE); + DCHECK_PARAM_PTR_RET(embed, NULL); + DCHECK_TYPE_RET(embed, EWL_EMBED_TYPE, NULL); + + image_add = ewl_engine_hook_get(embed, + EWL_ENGINE_HOOK_TYPE_THEME, + EWL_ENGINE_THEME_IMAGE_ADD); + if (image_add) + DRETURN_PTR(image_add(embed), DLEVEL_STABLE); + + DRETURN_PTR(NULL, DLEVEL_STABLE); +} + /** + * @brief + */ +void +ewl_engine_theme_image_file_set(Ewl_Embed *embed, void *obj, const char *file, + const char *key) +{ + Ewl_Engine_Cb_Theme_Image_File_Set file_set; + + DENTER_FUNCTION(DLEVEL_STABLE); + DCHECK_PARAM_PTR(embed); + DCHECK_TYPE(embed, EWL_EMBED_TYPE); + + file_set = ewl_engine_hook_get(embed, + EWL_ENGINE_HOOK_TYPE_THEME, + EWL_ENGINE_THEME_IMAGE_FILE_SET); + if (file_set) + file_set(obj, file, key); + + DLEAVE_FUNCTION(DLEVEL_STABLE); +} + +/** + * @brief + */ +void +ewl_engine_theme_image_fill_set(Ewl_Embed *embed, void *obj, int x, int y, int w, int h) +{ + Ewl_Engine_Cb_Theme_Image_Fill_Set fill_set; + + DENTER_FUNCTION(DLEVEL_STABLE); + DCHECK_PARAM_PTR(embed); + DCHECK_TYPE(embed, EWL_EMBED_TYPE); + + fill_set = ewl_engine_hook_get(embed, + EWL_ENGINE_HOOK_TYPE_THEME, + EWL_ENGINE_THEME_IMAGE_FILL_SET); + if (fill_set) + fill_set(obj, x, y, w, h); + + DLEAVE_FUNCTION(DLEVEL_STABLE); +} + +/** + * @brief + */ +void +ewl_engine_theme_image_data_set(Ewl_Embed *embed, void *obj, void *data, + int w, int h, Ewl_Colorspace cs) +{ + Ewl_Engine_Cb_Theme_Image_Data_Set data_set; + + DENTER_FUNCTION(DLEVEL_STABLE); + DCHECK_PARAM_PTR(embed); + DCHECK_TYPE(embed, EWL_EMBED_TYPE); + + data_set = ewl_engine_hook_get(embed, + EWL_ENGINE_HOOK_TYPE_THEME, + EWL_ENGINE_THEME_IMAGE_DATA_SET); + if (data_set) + data_set(obj, data, w, h, cs); + + DLEAVE_FUNCTION(DLEVEL_STABLE); +} + +/** + * @brief + */ +void * +ewl_engine_theme_image_data_get(Ewl_Embed *embed, void *obj, int *w, int *h, + Ewl_Image_Data_Mode access) +{ + Ewl_Engine_Cb_Theme_Image_Data_Get data_get; + + DENTER_FUNCTION(DLEVEL_STABLE); + DCHECK_PARAM_PTR_RET(embed, NULL); + DCHECK_TYPE_RET(embed, EWL_EMBED_TYPE, NULL); + + data_get = ewl_engine_hook_get(embed, + EWL_ENGINE_HOOK_TYPE_THEME, + EWL_ENGINE_THEME_IMAGE_DATA_GET); + if (data_get) + DRETURN_PTR(data_get(obj, w, h, access), DLEVEL_STABLE); + + DRETURN_PTR(NULL, DLEVEL_STABLE); +} + +/** + * @brief + */ +void +ewl_engine_theme_image_data_update(Ewl_Embed *embed, void *obj, int x, int y, + int w, int h) +{ + Ewl_Engine_Cb_Theme_Image_Data_Update update; + + DENTER_FUNCTION(DLEVEL_STABLE); + DCHECK_PARAM_PTR(embed); + DCHECK_TYPE(embed, EWL_EMBED_TYPE); + + update = ewl_engine_hook_get(embed, + EWL_ENGINE_HOOK_TYPE_THEME, + EWL_ENGINE_THEME_IMAGE_DATA_UPDATE); + if (update) + update(obj, x, y, w, h); + + DLEAVE_FUNCTION(DLEVEL_STABLE); +} + + +/** * @return Returns a pointer id on success, zero on failure. * @brief Creates a new pointer from ARGB data. */ Modified: trunk/ewl/src/lib/ewl_engines.h =================================================================== --- trunk/ewl/src/lib/ewl_engines.h 2009-05-09 11:58:52 UTC (rev 40568) +++ trunk/ewl/src/lib/ewl_engines.h 2009-05-09 14:29:15 UTC (rev 40569) @@ -75,6 +75,7 @@ EWL_ENGINE_THEME_OBJECT_RESIZE, EWL_ENGINE_THEME_GROUP_ADD, + EWL_ENGINE_THEME_GROUP_OBJECT_ADD, EWL_ENGINE_THEME_ELEMENT_ADD, EWL_ENGINE_THEME_ELEMENT_FILE_SET, @@ -88,6 +89,13 @@ EWL_ENGINE_THEME_ELEMENT_SWALLOW, EWL_ENGINE_THEME_ELEMENT_UNSWALLOW, + EWL_ENGINE_THEME_IMAGE_ADD, + EWL_ENGINE_THEME_IMAGE_FILE_SET, + EWL_ENGINE_THEME_IMAGE_FILL_SET, + EWL_ENGINE_THEME_IMAGE_DATA_SET, + EWL_ENGINE_THEME_IMAGE_DATA_GET, + EWL_ENGINE_THEME_IMAGE_DATA_UPDATE, + EWL_ENGINE_THEME_MAX, }; @@ -230,6 +238,8 @@ int w, int h); void *ewl_engine_theme_group_add(Ewl_Embed *emb); +void ewl_engine_theme_group_object_add(Ewl_Embed *emb, void *group, + void *obj); void *ewl_engine_theme_element_add(Ewl_Embed *emb); unsigned int ewl_engine_theme_element_file_set(Ewl_Embed *emb, void *obj, @@ -255,6 +265,22 @@ void *ewl_engine_theme_element_unswallow(Ewl_Embed *emb, void *obj, void *swallow); +void *ewl_engine_theme_image_add(Ewl_Embed *embed); +void ewl_engine_theme_image_file_set(Ewl_Embed *embed, void *obj, + const char *file, + const char *key); +void ewl_engine_theme_image_fill_set(Ewl_Embed *embed, void *obj, + int x, int y, int w, int h); +void ewl_engine_theme_image_data_set(Ewl_Embed *embed, void *obj, + void *data, int w, int h, + Ewl_Colorspace cs); +void *ewl_engine_theme_image_data_get(Ewl_Embed *embed, void *obj, + int *w, int *h, + Ewl_Image_Data_Mode access); +void ewl_engine_theme_image_data_update(Ewl_Embed *embed, void *obj, + int x, int y, int w, int h); + + int ewl_engine_pointer_data_new(Ewl_Embed *embed, unsigned int *data, int w, int h); @@ -331,6 +357,7 @@ typedef void (*Ewl_Engine_Cb_Theme_Object_Move)(void *obj, int x, int y); typedef void (*Ewl_Engine_Cb_Theme_Object_Resize)(void *obj, int w, int h); typedef void *(*Ewl_Engine_Cb_Theme_Group_Add)(Ewl_Embed *emb); +typedef void (*Ewl_Engine_Cb_Theme_Group_Object_Add)(void *group, void *obj); typedef void *(*Ewl_Engine_Cb_Theme_Element_Add)(Ewl_Embed *emb); typedef unsigned int (*Ewl_Engine_Cb_Theme_Element_File_Set)(void *obj, const char *path, @@ -354,6 +381,18 @@ typedef void *(*Ewl_Engine_Cb_Theme_Element_Unswallow)(void *obj, void *swallow); +typedef void *(*Ewl_Engine_Cb_Theme_Image_Add)(Ewl_Embed *w); +typedef void (*Ewl_Engine_Cb_Theme_Image_File_Set)(void *obj, const char *file, + const char *key); +typedef void (*Ewl_Engine_Cb_Theme_Image_Fill_Set)(void *obj, int x, int y, + int w, int h); +typedef void (*Ewl_Engine_Cb_Theme_Image_Data_Set)(void *obj, void *data, + int w, int h, + Ewl_Colorspace cs); +typedef void *(*Ewl_Engine_Cb_Theme_Image_Data_Get)(void *obj, int *w, int *h, + Ewl_Image_Data_Mode access); +typedef void (*Ewl_Engine_Cb_Theme_Image_Data_Update)(void *obj, int x, int y, + int w, int h); typedef int (*Ewl_Engine_Cb_Pointer_Data_New)(Ewl_Embed *embed, unsigned int *data, Modified: trunk/ewl/src/lib/ewl_image.c =================================================================== --- trunk/ewl/src/lib/ewl_image.c 2009-05-09 11:58:52 UTC (rev 40568) +++ trunk/ewl/src/lib/ewl_image.c 2009-05-09 14:29:15 UTC (rev 40569) @@ -5,9 +5,6 @@ #include "ewl_macros.h" #include "ewl_debug.h" -#include <Evas.h> -#include <Edje.h> - #ifdef BUILD_EPSILON_SUPPORT #include <Epsilon.h> #include <Epsilon_Request.h> @@ -654,7 +651,7 @@ void * ewl_image_data_get(Ewl_Image *i, int *w, int *h, Ewl_Image_Data_Mode access) { - char writing; + Ewl_Embed *emb; DENTER_FUNCTION(DLEVEL_STABLE); DCHECK_PARAM_PTR_RET(i, NULL); @@ -668,17 +665,9 @@ DRETURN_PTR(NULL, DLEVEL_STABLE); } - evas_object_image_size_get(i->image, w, h); - - if (access == EWL_IMAGE_DATA_SIZE) - DRETURN_PTR(NULL, DLEVEL_STABLE); - - if (access == EWL_IMAGE_DATA_WRITE) - writing = TRUE; - else - writing = FALSE; - - DRETURN_PTR(evas_object_image_data_get(i->image, writing), + emb = ewl_embed_widget_find(EWL_WIDGET(i)); + DRETURN_PTR(ewl_engine_theme_image_data_get(emb, i->image, w, h, + access), DLEVEL_STABLE); } @@ -698,6 +687,8 @@ unsigned int ewl_image_data_set(Ewl_Image *i, void *data, int w, int h, Ewl_Colorspace cs) { + Ewl_Embed *emb; + DENTER_FUNCTION(DLEVEL_STABLE); DCHECK_PARAM_PTR_RET(i, FALSE); DCHECK_TYPE_RET(i, EWL_IMAGE_TYPE, FALSE); @@ -705,15 +696,9 @@ if (!REALIZED(i) || i->type == EWL_IMAGE_TYPE_EDJE || !i->image) DRETURN_INT(FALSE, DLEVEL_STABLE); - if (cs == EWL_COLORSPACE_ARGB) - evas_object_image_alpha_set(i->image, TRUE); - else - evas_object_image_alpha_set(i->image, FALSE); + emb = ewl_embed_widget_find(EWL_WIDGET(i)); + ewl_engine_theme_image_data_set(emb, i->image, data, w, h, cs); - evas_object_image_size_set(i->image, w, h); - if (data) - evas_object_image_data_set(i->image, data); - DRETURN_INT(TRUE, DLEVEL_STABLE); } @@ -732,6 +717,8 @@ void ewl_image_data_update_add(Ewl_Image *i, int x, int y, int w, int h) { + Ewl_Embed *emb; + DENTER_FUNCTION(DLEVEL_STABLE); DCHECK_PARAM_PTR(i); DCHECK_TYPE(i, EWL_IMAGE_TYPE); @@ -739,7 +726,8 @@ if (!REALIZED(i) || i->type == EWL_IMAGE_TYPE_EDJE || !i->image) DRETURN(DLEVEL_STABLE); - evas_object_image_data_update_add(i->image, x, y, w, h); + emb = ewl_embed_widget_find(EWL_WIDGET(i)); + ewl_engine_theme_image_data_update(emb, i->image, x, y, w, h); DLEAVE_FUNCTION(DLEVEL_STABLE); } @@ -998,31 +986,34 @@ if (!i->image) i->image = ewl_embed_object_request(emb, "edje"); if (!i->image) - i->image = edje_object_add(emb->canvas); + i->image = ewl_engine_theme_element_add(emb); if (!i->image) DRETURN(DLEVEL_STABLE); if (i->path) - edje_object_file_set(i->image, i->path, i->key); - edje_object_size_min_get(i->image, &i->ow, &i->oh); + ewl_engine_theme_element_file_set(emb, i->image, + i->path, i->key); + ewl_engine_theme_element_minimum_size_get(emb, i->image, + &i->ow, &i->oh); } else { if (!i->image) i->image = ewl_embed_object_request(emb, EWL_IMAGE_TYPE); if (!i->image) - i->image = evas_object_image_add(emb->canvas); + i->image = ewl_engine_theme_image_add(emb); if (!i->image) DRETURN(DLEVEL_STABLE); if (i->path) - evas_object_image_file_set(i->image, i->path, i->key); - evas_object_image_size_get(i->image, &i->ow, &i->oh); + ewl_engine_theme_image_file_set(emb, i->image, i->path, + i->key); + + ewl_engine_theme_image_data_get(emb, i->image, &i->ow, &i->oh, + EWL_IMAGE_DATA_SIZE); } - evas_object_smart_member_add(i->image, w->smart_object); + ewl_engine_theme_group_object_add(emb, w->smart_object, i->image); + ewl_engine_theme_object_show(emb, i->image); - evas_object_pass_events_set(i->image, TRUE); - evas_object_show(i->image); - if (!i->ow) i->ow = 1; if (!i->oh) @@ -1088,7 +1079,9 @@ i = EWL_IMAGE(w); if (emb && i->image) { - evas_object_image_file_set(i->image, NULL, NULL); + if (i->type != EWL_IMAGE_TYPE_EDJE) + ewl_engine_theme_image_file_set(emb, i->image, NULL, + NULL); ewl_embed_object_cache(emb, i->image); i->image = NULL; } @@ -1160,6 +1153,7 @@ void *user_data __UNUSED__) { Ewl_Image *i; + Ewl_Embed *emb; int ww, hh; int dx = 0, dy = 0; @@ -1173,6 +1167,7 @@ ww = CURRENT_W(w); hh = CURRENT_H(w); + if (i->cs) { /* * Limit to the constraining size @@ -1222,12 +1217,14 @@ /* * Move the image into place based on type. */ + emb = ewl_embed_widget_find(w); if (i->type != EWL_IMAGE_TYPE_EDJE) - evas_object_image_fill_set(i->image, i->tile.x, i->tile.y, - i->tile.w, i->tile.h); + ewl_engine_theme_image_fill_set(emb, i->image, i->tile.x, + i->tile.y, i->tile.w, i->tile.h); - evas_object_move(i->image, CURRENT_X(w) + dx, CURRENT_Y(w) + dy); - evas_object_resize(i->image, ww, hh); + ewl_engine_theme_object_move(emb, i->image, CURRENT_X(w) + dx, + CURRENT_Y(w) + dy); + ewl_engine_theme_object_resize(emb, i->image, ww, hh); DLEAVE_FUNCTION(DLEVEL_STABLE); } |