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

Reply via email to