Enlightenment CVS committal Author : ningerso Project : e17 Module : libs/ewl
Dir : e17/libs/ewl/src/lib Modified Files: ewl_attach.h ewl_embed.c ewl_engines.c ewl_engines.h Log Message: Break out pointer manipulation into the engines. =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_attach.h,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- ewl_attach.h 11 Oct 2006 17:42:25 -0000 1.13 +++ ewl_attach.h 13 Oct 2006 01:53:05 -0000 1.14 @@ -58,7 +58,7 @@ */ #define ewl_attach_mouse_cursor_set(w, data) \ ewl_attach_other_set(EWL_WIDGET(w), EWL_ATTACH_TYPE_MOUSE_CURSOR, \ - (int *)ecore_x_cursor_shape_get(data)) + (int *)data) /** * @def ewl_attach_color_set(w, data) =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_embed.c,v retrieving revision 1.87 retrieving revision 1.88 diff -u -3 -r1.87 -r1.88 --- ewl_embed.c 2 Oct 2006 05:19:24 -0000 1.87 +++ ewl_embed.c 13 Oct 2006 01:53:05 -0000 1.88 @@ -1532,7 +1532,7 @@ void ewl_embed_mouse_cursor_set(Ewl_Widget *w) { - Ecore_X_Cursor pointer; + int pointer; Ewl_Embed *embed; DENTER_FUNCTION(DLEVEL_STABLE); @@ -1542,12 +1542,10 @@ embed = ewl_embed_widget_find(w); if (!embed) DRETURN(DLEVEL_STABLE); - if ((pointer = (Ecore_X_Cursor)ewl_attach_get(w, - EWL_ATTACH_TYPE_MOUSE_CURSOR))) - ecore_x_window_cursor_set((Ecore_X_Window)embed->evas_window, pointer); + if ((pointer = (int)ewl_attach_get(w, EWL_ATTACH_TYPE_MOUSE_CURSOR))) + ewl_engine_pointer_set(embed, pointer); else - ecore_x_window_cursor_set((Ecore_X_Window)embed->evas_window, - ecore_x_cursor_shape_get(EWL_MOUSE_CURSOR_LEFT_PTR)); + ewl_engine_pointer_set(embed, EWL_MOUSE_CURSOR_LEFT_PTR); DLEAVE_FUNCTION(DLEVEL_STABLE); } =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_engines.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- ewl_engines.c 12 Oct 2006 21:41:18 -0000 1.15 +++ ewl_engines.c 13 Oct 2006 01:53:05 -0000 1.16 @@ -11,7 +11,8 @@ { EWL_ENGINE_HOOK_TYPE_WINDOW, EWL_ENGINE_HOOK_TYPE_CANVAS, - EWL_ENGINE_HOOK_TYPE_THEME + EWL_ENGINE_HOOK_TYPE_THEME, + EWL_ENGINE_HOOK_TYPE_POINTER }; typedef enum Ewl_Engine_Hook_Type Ewl_Engine_Hook_Type; @@ -1159,6 +1160,72 @@ DLEAVE_FUNCTION(DLEVEL_STABLE); } +/** + * @return Returns a pointer id on success, zero on failure. + * @brief Creates a new pointer from ARGB data. + */ +int +ewl_engine_pointer_data_new(Ewl_Embed *embed, unsigned int *data, int w, int h) +{ + Ewl_Engine_Cb_Pointer_Data_New pointer_data_new; + + DENTER_FUNCTION(DLEVEL_STABLE); + DCHECK_PARAM_PTR_RET("embed", embed, 0); + DCHECK_TYPE_RET("embed", embed, EWL_EMBED_TYPE, 0); + + pointer_data_new = ewl_engine_hook_get(embed, + EWL_ENGINE_HOOK_TYPE_POINTER, + EWL_ENGINE_POINTER_DATA_NEW); + if (pointer_data_new) + DRETURN_INT(pointer_data_new(embed, data, w, h), DLEVEL_STABLE); + + DRETURN_INT(0, DLEVEL_STABLE); +} + +/** + * @return Returns a pointer id on success, zero on failure. + * @brief Creates a new pointer from ARGB data. + */ +void +ewl_engine_pointer_set(Ewl_Embed *embed, int pointer) +{ + Ewl_Engine_Cb_Pointer_Set pointer_set; + + DENTER_FUNCTION(DLEVEL_STABLE); + DCHECK_PARAM_PTR("embed", embed); + DCHECK_TYPE("embed", embed, EWL_EMBED_TYPE); + + pointer_set = ewl_engine_hook_get(embed, + EWL_ENGINE_HOOK_TYPE_POINTER, + EWL_ENGINE_POINTER_SET); + if (pointer_set) + pointer_set(embed, pointer); + + DLEAVE_FUNCTION(DLEVEL_STABLE); +} + +/** + * @return Returns a pointer id on success, zero on failure. + * @brief Retrieve the currently used pointer. + */ +int +ewl_engine_pointer_get(Ewl_Embed *embed) +{ + Ewl_Engine_Cb_Pointer_Get pointer_get; + + DENTER_FUNCTION(DLEVEL_STABLE); + DCHECK_PARAM_PTR_RET("embed", embed, 0); + DCHECK_TYPE_RET("embed", embed, EWL_EMBED_TYPE, 0); + + pointer_get = ewl_engine_hook_get(embed, + EWL_ENGINE_HOOK_TYPE_POINTER, + EWL_ENGINE_POINTER_GET); + if (pointer_get) + DRETURN_INT(pointer_get(embed), DLEVEL_STABLE); + + DRETURN_INT(0, DLEVEL_STABLE); +} + static void ** ewl_engine_hooks_get(Ewl_Engine *engine, Ewl_Engine_Hook_Type type) { @@ -1179,6 +1246,9 @@ case EWL_ENGINE_HOOK_TYPE_THEME: hooks = engine->functions->hooks.theme; + break; + case EWL_ENGINE_HOOK_TYPE_POINTER: + hooks = engine->functions->hooks.pointer; break; default: =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_engines.h,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- ewl_engines.h 12 Oct 2006 21:41:18 -0000 1.12 +++ ewl_engines.h 13 Oct 2006 01:53:05 -0000 1.13 @@ -88,9 +88,19 @@ EWL_ENGINE_THEME_MAX, }; +enum Ewl_Engine_Pointer_Hooks +{ + EWL_ENGINE_POINTER_DATA_NEW, /**< Create pointer from ARGB data */ + EWL_ENGINE_POINTER_FREE, /**< Free a created pointer */ + EWL_ENGINE_POINTER_GET, /**< Get the current pointer */ + EWL_ENGINE_POINTER_SET, /**< Set the current pointer */ + EWL_ENGINE_POINTER_MAX +}; + typedef enum Ewl_Engine_Window_Hooks Ewl_Engine_Window_Hooks; typedef enum Ewl_Engine_Theme_Hooks Ewl_Engine_Theme_Hooks; typedef enum Ewl_Engine_Canvas_Hooks Ewl_Engine_Canvas_Hooks; +typedef enum Ewl_Engine_Pointer_Hooks Ewl_Engine_Pointer_Hooks; #define EWL_ENGINE(engine) ((Ewl_Engine *)engine) typedef struct Ewl_Engine Ewl_Engine; @@ -106,6 +116,7 @@ void **window; void **canvas; void **theme; + void **pointer; } hooks; }; @@ -169,6 +180,11 @@ void ewl_engine_canvas_render(Ewl_Embed *embed); void ewl_engine_canvas_freeze(Ewl_Embed *embed); void ewl_engine_canvas_thaw(Ewl_Embed *embed); +int ewl_engine_pointer_data_new(Ewl_Embed *embed, + unsigned int *data, int w, int h); +void ewl_engine_pointer_free(Ewl_Embed *embed, int pointer); +void ewl_engine_pointer_set(Ewl_Embed *embed, int pointer); +int ewl_engine_pointer_get(Ewl_Embed *embed); /** * Internal engine hook typedefs, you only need these if you're writing an @@ -250,6 +266,13 @@ typedef void *(*Ewl_Engine_Cb_Theme_Clip_Clipees_Get)(void *clip); typedef void (*Ewl_Engine_Cb_Theme_Clip_Color_Set)(void *clip, int r, int g, int b, int a); + +typedef int (*Ewl_Engine_Cb_Pointer_Data_New)(Ewl_Embed *embed, + unsigned int *data, + int w, int h); +typedef void (*Ewl_Engine_Cb_Pointer_Free)(Ewl_Embed *embed, int pointer); +typedef void (*Ewl_Engine_Cb_Pointer_Set)(Ewl_Embed *embed, int pointer); +typedef int (*Ewl_Engine_Cb_Pointer_Get)(Ewl_Embed *embed); #endif ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs