aboutsummaryrefslogtreecommitdiffstats
path: root/legacy/evas/src/lib
diff options
context:
space:
mode:
authorDaniel Zaoui <daniel.zaoui@samsung.com>2012-10-09 01:58:41 +0000
committerDaniel Zaoui <daniel.zaoui@yahoo.com>2012-10-09 01:58:41 +0000
commita01418aff884f9d6f3d68e4fcee1414e736a7313 (patch)
tree89d28034bc658515e91e8b49c76f2351193e0bb2 /legacy/evas/src/lib
parentephysics: fix sandbox shutdown (diff)
downloadefl-a01418aff884f9d6f3d68e4fcee1414e736a7313.tar.gz
eo: changes made for the support of the Eo concept
Signed-off-by: Daniel Zaoui <daniel.zaoui@samsung.com> SVN revision: 77604
Diffstat (limited to 'legacy/evas/src/lib')
-rw-r--r--legacy/evas/src/lib/Evas.h3219
-rw-r--r--legacy/evas/src/lib/Makefile.am2
-rw-r--r--legacy/evas/src/lib/canvas/Makefile.am2
-rw-r--r--legacy/evas/src/lib/canvas/common_interfaces.c271
-rw-r--r--legacy/evas/src/lib/canvas/evas_callbacks.c223
-rw-r--r--legacy/evas/src/lib/canvas/evas_clip.c269
-rw-r--r--legacy/evas/src/lib/canvas/evas_common_interface.c24
-rw-r--r--legacy/evas/src/lib/canvas/evas_data.c52
-rw-r--r--legacy/evas/src/lib/canvas/evas_device.c30
-rw-r--r--legacy/evas/src/lib/canvas/evas_events.c1185
-rw-r--r--legacy/evas/src/lib/canvas/evas_focus.c59
-rw-r--r--legacy/evas/src/lib/canvas/evas_font_dir.c206
-rw-r--r--legacy/evas/src/lib/canvas/evas_gl.c4
-rw-r--r--legacy/evas/src/lib/canvas/evas_key.c195
-rw-r--r--legacy/evas/src/lib/canvas/evas_key_grab.c91
-rw-r--r--legacy/evas/src/lib/canvas/evas_layer.c114
-rw-r--r--legacy/evas/src/lib/canvas/evas_main.c707
-rw-r--r--legacy/evas/src/lib/canvas/evas_map.c150
-rw-r--r--legacy/evas/src/lib/canvas/evas_name.c82
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_box.c932
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_grid.c290
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_image.c2474
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_inform.c68
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_intercept.c239
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_line.c283
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_main.c1666
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_polygon.c290
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_rectangle.c198
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_smart.c1021
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_smart_clipped.c233
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_table.c387
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_text.c1162
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_textblock.c1035
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_textgrid.c620
-rw-r--r--legacy/evas/src/lib/canvas/evas_render.c659
-rw-r--r--legacy/evas/src/lib/canvas/evas_stack.c346
-rw-r--r--legacy/evas/src/lib/canvas/evas_touch_point.c89
-rw-r--r--legacy/evas/src/lib/include/evas_inline.x101
-rw-r--r--legacy/evas/src/lib/include/evas_private.h233
39 files changed, 13878 insertions, 5333 deletions
diff --git a/legacy/evas/src/lib/Evas.h b/legacy/evas/src/lib/Evas.h
index 8196ffca08..9adc728942 100644
--- a/legacy/evas/src/lib/Evas.h
+++ b/legacy/evas/src/lib/Evas.h
@@ -321,6 +321,9 @@
#include <Eina.h>
+/* This include has been added to support Eo in Evas */
+#include <Eo.h>
+
#ifdef EAPI
# undef EAPI
#endif
@@ -450,6 +453,74 @@ typedef enum _Evas_Callback_Type
EVAS_CALLBACK_LAST /**< kept as last element/sentinel -- not really an event */
} Evas_Callback_Type; /**< The types of events triggering a callback */
+EAPI extern const Eo_Event_Description _EVAS_EVENT_MOUSE_IN;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_MOUSE_OUT;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_MOUSE_DOWN;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_MOUSE_UP;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_MOUSE_MOVE;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_MOUSE_WHEEL;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_MULTI_DOWN;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_MULTI_UP;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_MULTI_MOVE;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_FREE;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_KEY_DOWN;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_KEY_UP;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_FOCUS_IN;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_FOCUS_OUT;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_SHOW;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_HIDE;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_MOVE;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_RESIZE;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_RESTACK;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_DEL;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_HOLD;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_CHANGED_SIZE_HINTS;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_IMAGE_PRELOADED;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_IMAGE_RESIZE;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_CANVAS_FOCUS_IN;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_CANVAS_FOCUS_OUT;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_RENDER_FLUSH_PRE;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_RENDER_FLUSH_POST;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_CANVAS_OBJECT_FOCUS_IN;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_CANVAS_OBJECT_FOCUS_OUT;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_IMAGE_UNLOADED;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_RENDER_PRE;
+EAPI extern const Eo_Event_Description _EVAS_EVENT_RENDER_POST;
+
+#define EVAS_EVENT_MOUSE_IN (&(_EVAS_EVENT_MOUSE_IN))
+#define EVAS_EVENT_MOUSE_OUT (&(_EVAS_EVENT_MOUSE_OUT))
+#define EVAS_EVENT_MOUSE_DOWN (&(_EVAS_EVENT_MOUSE_DOWN))
+#define EVAS_EVENT_MOUSE_UP (&(_EVAS_EVENT_MOUSE_UP))
+#define EVAS_EVENT_MOUSE_MOVE (&(_EVAS_EVENT_MOUSE_MOVE))
+#define EVAS_EVENT_MOUSE_WHEEL (&(_EVAS_EVENT_MOUSE_WHEEL))
+#define EVAS_EVENT_MULTI_DOWN (&(_EVAS_EVENT_MULTI_DOWN))
+#define EVAS_EVENT_MULTI_UP (&(_EVAS_EVENT_MULTI_UP))
+#define EVAS_EVENT_MULTI_MOVE (&(_EVAS_EVENT_MULTI_MOVE))
+#define EVAS_EVENT_FREE (&(_EVAS_EVENT_FREE))
+#define EVAS_EVENT_KEY_DOWN (&(_EVAS_EVENT_KEY_DOWN))
+#define EVAS_EVENT_KEY_UP (&(_EVAS_EVENT_KEY_UP))
+#define EVAS_EVENT_FOCUS_IN (&(_EVAS_EVENT_FOCUS_IN))
+#define EVAS_EVENT_FOCUS_OUT (&(_EVAS_EVENT_FOCUS_OUT))
+#define EVAS_EVENT_SHOW (&(_EVAS_EVENT_SHOW))
+#define EVAS_EVENT_HIDE (&(_EVAS_EVENT_HIDE))
+#define EVAS_EVENT_MOVE (&(_EVAS_EVENT_MOVE))
+#define EVAS_EVENT_RESIZE (&(_EVAS_EVENT_RESIZE))
+#define EVAS_EVENT_RESTACK (&(_EVAS_EVENT_RESTACK))
+#define EVAS_EVENT_DEL (&(_EVAS_EVENT_DEL))
+#define EVAS_EVENT_HOLD (&(_EVAS_EVENT_HOLD))
+#define EVAS_EVENT_CHANGED_SIZE_HINTS (&(_EVAS_EVENT_CHANGED_SIZE_HINTS))
+#define EVAS_EVENT_IMAGE_PRELOADED (&(_EVAS_EVENT_IMAGE_PRELOADED))
+#define EVAS_EVENT_IMAGE_RESIZE (&(_EVAS_EVENT_IMAGE_RESIZE))
+#define EVAS_EVENT_CANVAS_FOCUS_IN (&(_EVAS_EVENT_CANVAS_FOCUS_IN))
+#define EVAS_EVENT_CANVAS_FOCUS_OUT (&(_EVAS_EVENT_CANVAS_FOCUS_OUT))
+#define EVAS_EVENT_RENDER_FLUSH_PRE (&(_EVAS_EVENT_RENDER_FLUSH_PRE))
+#define EVAS_EVENT_RENDER_FLUSH_POST (&(_EVAS_EVENT_RENDER_FLUSH_POST))
+#define EVAS_EVENT_CANVAS_OBJECT_FOCUS_IN (&(_EVAS_EVENT_CANVAS_OBJECT_FOCUS_IN))
+#define EVAS_EVENT_CANVAS_OBJECT_FOCUS_OUT (&(_EVAS_EVENT_CANVAS_OBJECT_FOCUS_OUT))
+#define EVAS_EVENT_IMAGE_UNLOADED (&(_EVAS_EVENT_IMAGE_UNLOADED))
+#define EVAS_EVENT_RENDER_PRE (&(_EVAS_EVENT_RENDER_PRE))
+#define EVAS_EVENT_RENDER_POST (&(_EVAS_EVENT_RENDER_POST))
+
/**
* @def EVAS_CALLBACK_PRIORITY_BEFORE
* Slightly more prioritized than default.
@@ -481,7 +552,85 @@ typedef enum _Evas_Callback_Type
*
* @since 1.1
*/
-typedef short Evas_Callback_Priority;
+typedef Eo_Callback_Priority Evas_Callback_Priority;
+
+EAPI extern const Eo_Event_Description _CLICKED_EVENT;
+EAPI extern const Eo_Event_Description _CLICKED_DOUBLE_EVENT;
+EAPI extern const Eo_Event_Description _CLICKED_TRIPLE_EVENT;
+EAPI extern const Eo_Event_Description _PRESSED_EVENT;
+EAPI extern const Eo_Event_Description _UNPRESSED_EVENT;
+EAPI extern const Eo_Event_Description _LONGPRESSED_EVENT;
+EAPI extern const Eo_Event_Description _REPEATED_EVENT;
+EAPI extern const Eo_Event_Description _SCROLL_EVENT;
+EAPI extern const Eo_Event_Description _SCROLL_ANIM_START_EVENT;
+EAPI extern const Eo_Event_Description _SCROLL_ANIM_STOP_EVENT;
+EAPI extern const Eo_Event_Description _SCROLL_DRAG_START_EVENT;
+EAPI extern const Eo_Event_Description _SCROLL_DRAG_STOP_EVENT;
+EAPI extern const Eo_Event_Description _ZOOM_START_EVENT;
+EAPI extern const Eo_Event_Description _ZOOM_STOP_EVENT;
+EAPI extern const Eo_Event_Description _ZOOM_CHANGE_EVENT;
+EAPI extern const Eo_Event_Description _SELECTED_EVENT;
+EAPI extern const Eo_Event_Description _UNSELECTED_EVENT;
+EAPI extern const Eo_Event_Description _SELECTION_PASTE_EVENT;
+EAPI extern const Eo_Event_Description _SELECTION_COPY_EVENT;
+EAPI extern const Eo_Event_Description _SELECTION_CUT_EVENT;
+EAPI extern const Eo_Event_Description _SELECTION_START_EVENT;
+EAPI extern const Eo_Event_Description _SELECTION_CHANGED_EVENT;
+EAPI extern const Eo_Event_Description _SELECTION_CLEARED_EVENT;
+EAPI extern const Eo_Event_Description _DRAG_EVENT;
+EAPI extern const Eo_Event_Description _DRAG_START_EVENT;
+EAPI extern const Eo_Event_Description _DRAG_STOP_EVENT;
+EAPI extern const Eo_Event_Description _DRAG_END_EVENT;
+EAPI extern const Eo_Event_Description _DRAG_START_UP_EVENT;
+EAPI extern const Eo_Event_Description _DRAG_START_DOWN_EVENT;
+EAPI extern const Eo_Event_Description _DRAG_START_RIGHT_EVENT;
+EAPI extern const Eo_Event_Description _DRAG_START_LEFT_EVENT;
+
+#define EVAS_SMART_CLICKED_EVENT (&(_CLICKED_EVENT))
+#define EVAS_SMART_CLICKED_DOUBLE_EVENT (&(_CLICKED_DOUBLE_EVENT))
+#define EVAS_SMART_CLICKED_TRIPLE_EVENT (&(_CLICKED_TRIPLE_EVENT))
+#define EVAS_SMART_PRESSED_EVENT (&(_PRESSED_EVENT))
+#define EVAS_SMART_UNPRESSED_EVENT (&(_UNPRESSED_EVENT))
+#define EVAS_SMART_LONGPRESSED_EVENT (&(_LONGPRESSED_EVENT))
+#define EVAS_SMART_REPEATED_EVENT (&(_REPEATED_EVENT))
+#define EVAS_SMART_SCROLL_EVENT (&(_SCROLL_EVENT))
+#define EVAS_SMART_SCROLL_ANIM_START_EVENT (&(_SCROLL_ANIM_START_EVENT))
+#define EVAS_SMART_SCROLL_ANIM_STOP_EVENT (&(_SCROLL_ANIM_STOP_EVENT))
+#define EVAS_SMART_SCROLL_DRAG_START_EVENT (&(_SCROLL_DRAG_START_EVENT))
+#define EVAS_SMART_SCROLL_DRAG_STOP_EVENT (&(_SCROLL_DRAG_STOP_EVENT))
+#define EVAS_SMART_ZOOM_START_EVENT (&(_ZOOM_START_EVENT))
+#define EVAS_SMART_ZOOM_STOP_EVENT (&(_ZOOM_STOP_EVENT))
+#define EVAS_SMART_ZOOM_CHANGE_EVENT (&(_ZOOM_CHANGE_EVENT))
+#define EVAS_SMART_SELECTED_EVENT (&(_SELECTED_EVENT))
+#define EVAS_SMART_UNSELECTED_EVENT (&(_UNSELECTED_EVENT))
+#define EVAS_SMART_SELECTION_PASTE_EVENT (&(_SELECTION_PASTE_EVENT))
+#define EVAS_SMART_SELECTION_COPY_EVENT (&(_SELECTION_COPY_EVENT))
+#define EVAS_SMART_SELECTION_CUT_EVENT (&(_SELECTION_CUT_EVENT))
+#define EVAS_SMART_SELECTION_START_EVENT (&(_SELECTION_START_EVENT))
+#define EVAS_SMART_SELECTION_CHANGED_EVENT (&(_SELECTION_CHANGED_EVENT))
+#define EVAS_SMART_SELECTION_CLEARED_EVENT (&(_SELECTION_CLEARED_EVENT))
+#define EVAS_SMART_DRAG_EVENT (&(_DRAG_EVENT))
+#define EVAS_SMART_DRAG_START_EVENT (&(_DRAG_START_EVENT))
+#define EVAS_SMART_DRAG_STOP_EVENT (&(_DRAG_STOP_EVENT))
+#define EVAS_SMART_DRAG_END_EVENT (&(_DRAG_END_EVENT))
+#define EVAS_SMART_DRAG_START_UP_EVENT (&(_DRAG_START_UP_EVENT))
+#define EVAS_SMART_DRAG_START_DOWN_EVENT (&(_DRAG_START_DOWN_EVENT))
+#define EVAS_SMART_DRAG_START_RIGHT_EVENT (&(_DRAG_START_RIGHT_EVENT))
+#define EVAS_SMART_DRAG_START_LEFT_EVENT (&(_DRAG_START_LEFT_EVENT))
+
+const Eo_Class *evas_smart_signal_interface_get(void) EINA_CONST;
+const Eo_Class *evas_smart_clickable_interface_get(void) EINA_CONST;
+const Eo_Class *evas_smart_scrollable_interface_get(void) EINA_CONST;
+const Eo_Class *evas_smart_zoomable_interface_get(void) EINA_CONST;
+const Eo_Class *evas_smart_selectable_interface_get(void) EINA_CONST;
+const Eo_Class *evas_smart_draggable_interface_get(void) EINA_CONST;
+
+#define EVAS_SMART_SIGNAL_INTERFACE evas_smart_signal_interface_get()
+#define EVAS_SMART_CLICKABLE_INTERFACE evas_smart_clickable_interface_get()
+#define EVAS_SMART_SCROLLABLE_INTERFACE evas_smart_scrollable_interface_get()
+#define EVAS_SMART_ZOOMABLE_INTERFACE evas_smart_zoomable_interface_get()
+#define EVAS_SMART_SELECTABLE_INTERFACE evas_smart_selectable_interface_get()
+#define EVAS_SMART_DRAGGABLE_INTERFACE evas_smart_draggable_interface_get()
/**
* Flags for Mouse Button events
@@ -623,14 +772,28 @@ typedef struct _Evas_Map Evas_Map;
*
* @ingroup Evas_Canvas
*/
-typedef struct _Evas Evas;
+typedef Eo Evas;
+
+/**
+ * @typedef Evas_Public_Data
+ * Public data for an Evas.
+ * @ingroup Evas_Canvas
+ */
+typedef struct _Evas_Public_Data Evas_Public_Data;
/**
* @typedef Evas_Object
* An Evas Object handle.
* @ingroup Evas_Object_Group
*/
-typedef struct _Evas_Object Evas_Object;
+typedef Eo Evas_Object;
+
+/**
+ * @typedef Evas_Object_Protected_Data
+ * Protected data for an Evas Object.
+ * @ingroup Evas_Object_Group
+ */
+typedef struct _Evas_Object_Protected_Data Evas_Object_Protected_Data;
typedef void Evas_Performance; /**< An Evas Performance handle */
typedef struct _Evas_Modifier Evas_Modifier; /**< An opaque type containing information on which modifier keys are registered in an Evas canvas */
@@ -2188,6 +2351,223 @@ EAPI int evas_pointer_button_down_mask_get(const Evas *e) EINA_WAR
EAPI Eina_Bool evas_pointer_inside_get(const Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
EAPI void evas_sync(Evas *e) EINA_ARG_NONNULL(1);
+
+#define EVAS_CLASS evas_class_get()
+
+const Eo_Class *evas_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op EVAS_CANVAS_BASE_ID;
+
+enum
+{
+ EVAS_CANVAS_SUB_ID_OUTPUT_METHOD_SET,
+ EVAS_CANVAS_SUB_ID_OUTPUT_METHOD_GET,
+ EVAS_CANVAS_SUB_ID_ENGINE_INFO_GET,
+ EVAS_CANVAS_SUB_ID_ENGINE_INFO_SET,
+ EVAS_CANVAS_SUB_ID_OUTPUT_SIZE_SET,
+ EVAS_CANVAS_SUB_ID_OUTPUT_SIZE_GET,
+ EVAS_CANVAS_SUB_ID_OUTPUT_VIEWPORT_SET,
+ EVAS_CANVAS_SUB_ID_OUTPUT_VIEWPORT_GET,
+ EVAS_CANVAS_SUB_ID_OUTPUT_FRAMESPACE_SET,
+ EVAS_CANVAS_SUB_ID_OUTPUT_FRAMESPACE_GET,
+ EVAS_CANVAS_SUB_ID_COORD_SCREEN_X_TO_WORLD,
+ EVAS_CANVAS_SUB_ID_COORD_SCREEN_Y_TO_WORLD,
+ EVAS_CANVAS_SUB_ID_COORD_WORLD_X_TO_SCREEN,
+ EVAS_CANVAS_SUB_ID_COORD_WORLD_Y_TO_SCREEN,
+ EVAS_CANVAS_SUB_ID_POINTER_OUTPUT_XY_GET,
+ EVAS_CANVAS_SUB_ID_POINTER_CANVAS_XY_GET,
+ EVAS_CANVAS_SUB_ID_POINTER_BUTTON_DOWN_MASK_GET,
+ EVAS_CANVAS_SUB_ID_POINTER_INSIDE_GET,
+ EVAS_CANVAS_SUB_ID_DATA_ATTACH_SET,
+ EVAS_CANVAS_SUB_ID_DATA_ATTACH_GET,
+ EVAS_CANVAS_SUB_ID_FOCUS_IN,
+ EVAS_CANVAS_SUB_ID_FOCUS_OUT,
+ EVAS_CANVAS_SUB_ID_FOCUS_STATE_GET,
+ EVAS_CANVAS_SUB_ID_NOCHANGE_PUSH,
+ EVAS_CANVAS_SUB_ID_NOCHANGE_POP,
+ EVAS_CANVAS_SUB_ID_EVENT_DEFAULT_FLAGS_SET,
+ EVAS_CANVAS_SUB_ID_EVENT_DEFAULT_FLAGS_GET,
+ EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_DOWN,
+ EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_UP,
+ EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_CANCEL,
+ EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_WHEEL,
+ EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_MOVE,
+ EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_IN,
+ EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_OUT,
+ EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_DOWN,
+ EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_UP,
+ EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_MOVE,
+ EVAS_CANVAS_SUB_ID_EVENT_FEED_KEY_DOWN,
+ EVAS_CANVAS_SUB_ID_EVENT_FEED_KEY_UP,
+ EVAS_CANVAS_SUB_ID_EVENT_FEED_HOLD,
+ EVAS_CANVAS_SUB_ID_EVENT_REFEED_EVENT,
+ EVAS_CANVAS_SUB_ID_EVENT_DOWN_COUNT_GET,
+ EVAS_CANVAS_SUB_ID_FOCUS_GET,
+ EVAS_CANVAS_SUB_ID_FONT_PATH_CLEAR,
+ EVAS_CANVAS_SUB_ID_FONT_PATH_APPEND,
+ EVAS_CANVAS_SUB_ID_FONT_PATH_PREPEND,
+ EVAS_CANVAS_SUB_ID_FONT_PATH_LIST,
+ EVAS_CANVAS_SUB_ID_FONT_HINTING_SET,
+ EVAS_CANVAS_SUB_ID_FONT_HINTING_GET,
+ EVAS_CANVAS_SUB_ID_FONT_HINTING_CAN_HINT,
+ EVAS_CANVAS_SUB_ID_FONT_CACHE_FLUSH,
+ EVAS_CANVAS_SUB_ID_FONT_CACHE_SET,
+ EVAS_CANVAS_SUB_ID_FONT_CACHE_GET,
+ EVAS_CANVAS_SUB_ID_FONT_AVAILABLE_LIST,
+ EVAS_CANVAS_SUB_ID_KEY_MODIFIER_GET,
+ EVAS_CANVAS_SUB_ID_KEY_LOCK_GET,
+ EVAS_CANVAS_SUB_ID_KEY_MODIFIER_ADD,
+ EVAS_CANVAS_SUB_ID_KEY_MODIFIER_DEL,
+ EVAS_CANVAS_SUB_ID_KEY_LOCK_ADD,
+ EVAS_CANVAS_SUB_ID_KEY_LOCK_DEL,
+ EVAS_CANVAS_SUB_ID_KEY_MODIFIER_ON,
+ EVAS_CANVAS_SUB_ID_KEY_MODIFIER_OFF,
+ EVAS_CANVAS_SUB_ID_KEY_LOCK_ON,
+ EVAS_CANVAS_SUB_ID_KEY_LOCK_OFF,
+ EVAS_CANVAS_SUB_ID_KEY_MODIFIER_MASK_GET,
+ EVAS_CANVAS_SUB_ID_DAMAGE_RECTANGLE_ADD,
+ EVAS_CANVAS_SUB_ID_OBSCURED_RECTANGLE_ADD,
+ EVAS_CANVAS_SUB_ID_OBSCURED_CLEAR,
+ EVAS_CANVAS_SUB_ID_RENDER_UPDATES,
+ EVAS_CANVAS_SUB_ID_RENDER,
+ EVAS_CANVAS_SUB_ID_NORENDER,
+ EVAS_CANVAS_SUB_ID_RENDER_IDLE_FLUSH,
+ EVAS_CANVAS_SUB_ID_SYNC,
+ EVAS_CANVAS_SUB_ID_RENDER_DUMP,
+ EVAS_CANVAS_SUB_ID_OBJECT_BOTTOM_GET,
+ EVAS_CANVAS_SUB_ID_OBJECT_TOP_GET,
+ EVAS_CANVAS_SUB_ID_TOUCH_POINT_LIST_COUNT,
+ EVAS_CANVAS_SUB_ID_TOUCH_POINT_LIST_NTH_XY_GET,
+ EVAS_CANVAS_SUB_ID_TOUCH_POINT_LIST_NTH_ID_GET,
+ EVAS_CANVAS_SUB_ID_TOUCH_POINT_LIST_NTH_STATE_GET,
+ EVAS_CANVAS_SUB_ID_IMAGE_CACHE_FLUSH,
+ EVAS_CANVAS_SUB_ID_IMAGE_CACHE_RELOAD,
+ EVAS_CANVAS_SUB_ID_IMAGE_CACHE_SET,
+ EVAS_CANVAS_SUB_ID_IMAGE_CACHE_GET,
+ EVAS_CANVAS_SUB_ID_IMAGE_MAX_SIZE_GET,
+ EVAS_CANVAS_SUB_ID_OBJECT_NAME_FIND,
+ EVAS_CANVAS_SUB_ID_OBJECT_TOP_AT_XY_GET,
+ EVAS_CANVAS_SUB_ID_OBJECT_TOP_IN_RECTANGLE_GET,
+ EVAS_CANVAS_SUB_ID_OBJECTS_AT_XY_GET,
+ EVAS_CANVAS_SUB_ID_OBJECTS_IN_RECTANGLE_GET,
+ EVAS_CANVAS_SUB_ID_SMART_OBJECTS_CALCULATE,
+ EVAS_CANVAS_SUB_ID_SMART_OBJECTS_CALCULATE_COUNT_GET,
+ EVAS_CANVAS_SUB_ID_LAST
+};
+
+#define EVAS_CANVAS_ID(sub_id) (EVAS_CANVAS_BASE_ID + sub_id)
+
+#define evas_canvas_output_method_set(render_method) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OUTPUT_METHOD_SET), EO_TYPECHECK(int, render_method)
+#define evas_canvas_output_method_get(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OUTPUT_METHOD_GET), EO_TYPECHECK(int *, ret)
+#define evas_canvas_engine_info_get(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_ENGINE_INFO_GET), EO_TYPECHECK(Evas_Engine_Info **, ret)
+#define evas_canvas_engine_info_set(info, ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_ENGINE_INFO_SET), EO_TYPECHECK(Evas_Engine_Info *, info), EO_TYPECHECK(Eina_Bool *, ret)
+#define evas_canvas_output_size_set(w, h) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OUTPUT_SIZE_SET), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
+#define evas_canvas_output_size_get(w, h) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OUTPUT_SIZE_GET), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h)
+#define evas_canvas_output_viewport_set(x, y, w, h) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OUTPUT_VIEWPORT_SET), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y), EO_TYPECHECK(Evas_Coord, w), EO_TYPECHECK(Evas_Coord, h)
+#define evas_canvas_output_viewport_get(x, y, w, h) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OUTPUT_VIEWPORT_GET), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h)
+#define evas_canvas_output_framespace_set(x, y, w, h) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OUTPUT_FRAMESPACE_SET), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y), EO_TYPECHECK(Evas_Coord, w), EO_TYPECHECK(Evas_Coord, h)
+#define evas_canvas_output_framespace_get(x, y, w, h) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OUTPUT_FRAMESPACE_GET), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h)
+#define evas_canvas_coord_screen_x_to_world(x, ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_COORD_SCREEN_X_TO_WORLD), EO_TYPECHECK(int, x), EO_TYPECHECK(Evas_Coord *, ret)
+#define evas_canvas_coord_screen_y_to_world(y, ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_COORD_SCREEN_Y_TO_WORLD), EO_TYPECHECK(int, y), EO_TYPECHECK(Evas_Coord *, ret)
+#define evas_canvas_coord_world_x_to_screen(x, ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_COORD_WORLD_X_TO_SCREEN), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(int *, ret)
+#define evas_canvas_coord_world_y_to_screen(y, ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_COORD_WORLD_Y_TO_SCREEN), EO_TYPECHECK(Evas_Coord, y), EO_TYPECHECK(int *, ret)
+#define evas_canvas_pointer_output_xy_get(x, y) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_POINTER_OUTPUT_XY_GET), EO_TYPECHECK(int *, x), EO_TYPECHECK(int *, y)
+#define evas_canvas_pointer_canvas_xy_get(x, y) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_POINTER_CANVAS_XY_GET), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y)
+#define evas_canvas_pointer_button_down_mask_get(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_POINTER_BUTTON_DOWN_MASK_GET), EO_TYPECHECK(int *, ret)
+#define evas_canvas_pointer_inside_get(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_POINTER_INSIDE_GET), EO_TYPECHECK(Eina_Bool *, ret)
+#define evas_canvas_data_attach_set(data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_DATA_ATTACH_SET), EO_TYPECHECK(void *, data)
+#define evas_canvas_data_attach_get(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_DATA_ATTACH_GET), EO_TYPECHECK(void **, ret)
+#define evas_canvas_focus_in() EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FOCUS_IN)
+#define evas_canvas_focus_out() EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FOCUS_OUT)
+#define evas_canvas_focus_state_get(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FOCUS_STATE_GET), EO_TYPECHECK(Eina_Bool *, ret)
+#define evas_canvas_nochange_push() EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_NOCHANGE_PUSH)
+#define evas_canvas_nochange_pop() EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_NOCHANGE_POP)
+
+#define evas_canvas_event_default_flags_set(flags) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_DEFAULT_FLAGS_SET), EO_TYPECHECK(Evas_Event_Flags, flags)
+#define evas_canvas_event_default_flags_get(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_DEFAULT_FLAGS_GET), EO_TYPECHECK(Evas_Event_Flags *, ret)
+#define evas_canvas_event_freeze() EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FREEZE)
+#define evas_canvas_event_thaw() EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_THAW)
+#define evas_canvas_event_freeze_get(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FREEZE_GET), EO_TYPECHECK(int *, ret)
+#define evas_canvas_event_thaw_eval() EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_THAW_EVAL)
+#define evas_canvas_event_feed_mouse_down(b, flags, timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_DOWN), EO_TYPECHECK(int, b), EO_TYPECHECK(Evas_Button_Flags, flags), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
+#define evas_canvas_event_feed_mouse_up(b, flags, timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_UP), EO_TYPECHECK(int, b), EO_TYPECHECK(Evas_Button_Flags, flags), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
+#define evas_canvas_event_feed_mouse_cancel(timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_CANCEL), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
+#define evas_canvas_event_feed_mouse_wheel(direction, z, timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_WHEEL), EO_TYPECHECK(int, direction), EO_TYPECHECK(int, z), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
+#define evas_canvas_event_feed_mouse_move(x, y, timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_MOVE), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
+#define evas_canvas_event_feed_mouse_in(timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_IN), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
+#define evas_canvas_event_feed_mouse_out(timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_OUT), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
+#define evas_canvas_event_feed_multi_down(d, x, y, rad, radx, rady, pres, ang, fx, fy, flags, timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_DOWN), EO_TYPECHECK(int, d), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(double, rad), EO_TYPECHECK(double, radx), EO_TYPECHECK(double, rady), EO_TYPECHECK(double, pres), EO_TYPECHECK(double, ang), EO_TYPECHECK(double, fx), EO_TYPECHECK(double, fy), EO_TYPECHECK(Evas_Button_Flags, flags), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
+#define evas_canvas_event_feed_multi_up(d, x, y, rad, radx, rady, pres, ang, fx, fy, flags, timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_UP), EO_TYPECHECK(int, d), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(double, rad), EO_TYPECHECK(double, radx), EO_TYPECHECK(double, rady), EO_TYPECHECK(double, pres), EO_TYPECHECK(double, ang), EO_TYPECHECK(double, fx), EO_TYPECHECK(double, fy), EO_TYPECHECK(Evas_Button_Flags, flags), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
+#define evas_canvas_event_feed_multi_move(d, x, y, rad, radx, rady, pres, ang, fx, fy, timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_MOVE), EO_TYPECHECK(int, d), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(double, rad), EO_TYPECHECK(double, radx), EO_TYPECHECK(double, rady), EO_TYPECHECK(double, pres), EO_TYPECHECK(double, ang), EO_TYPECHECK(double, fx), EO_TYPECHECK(double, fy), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
+#define evas_canvas_event_feed_key_down(keyname, key, string, compose, timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_KEY_DOWN), EO_TYPECHECK(const char *, keyname), EO_TYPECHECK(const char *, key), EO_TYPECHECK(const char *, string), EO_TYPECHECK(const char *, compose), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
+#define evas_canvas_event_feed_key_up(keyname, key, string, compose, timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_KEY_UP), EO_TYPECHECK(const char *, keyname), EO_TYPECHECK(const char *, key), EO_TYPECHECK(const char *, string), EO_TYPECHECK(const char *, compose), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
+#define evas_canvas_event_feed_hold(hold, timestamp, data) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_HOLD), EO_TYPECHECK(int, hold), EO_TYPECHECK(unsigned int, timestamp), EO_TYPECHECK(const void *, data)
+#define evas_canvas_event_refeed_event(event_copy, event_type) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_REFEED_EVENT), EO_TYPECHECK(void *, event_copy), EO_TYPECHECK(Evas_Callback_Type, event_type)
+#define evas_canvas_event_down_count_get(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_DOWN_COUNT_GET), EO_TYPECHECK(int *, ret)
+
+#define evas_canvas_focus_get(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FOCUS_GET), EO_TYPECHECK(Evas_Object **, ret)
+
+#define evas_canvas_font_path_clear() EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_PATH_CLEAR)
+#define evas_canvas_font_path_append(path) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_PATH_APPEND), EO_TYPECHECK(const char *, path)
+#define evas_canvas_font_path_prepend(path) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_PATH_PREPEND), EO_TYPECHECK(const char *, path)
+#define evas_canvas_font_path_list(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_PATH_LIST), EO_TYPECHECK(const Eina_List **, ret)
+#define evas_canvas_font_hinting_set(hinting) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_HINTING_SET), EO_TYPECHECK(Evas_Font_Hinting_Flags, hinting)
+#define evas_canvas_font_hinting_get(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_HINTING_GET), EO_TYPECHECK(Evas_Font_Hinting_Flags *, ret)
+#define evas_canvas_font_hinting_can_hint(hinting, ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_HINTING_CAN_HINT), EO_TYPECHECK(Evas_Font_Hinting_Flags, hinting), EO_TYPECHECK(Eina_Bool *, ret)
+#define evas_canvas_font_cache_flush() EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_CACHE_FLUSH)
+#define evas_canvas_font_cache_set(size) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_CACHE_SET), EO_TYPECHECK(int, size)
+#define evas_canvas_font_cache_get(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_CACHE_GET), EO_TYPECHECK(int *, ret)
+#define evas_canvas_font_available_list(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_AVAILABLE_LIST), EO_TYPECHECK(Eina_List **, ret)
+
+#define evas_canvas_key_modifier_get(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_MODIFIER_GET), EO_TYPECHECK(const Evas_Modifier **, ret)
+#define evas_canvas_key_lock_get(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_LOCK_GET), EO_TYPECHECK(const Evas_Lock **, ret)
+#define evas_canvas_key_modifier_add(keyname) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_MODIFIER_ADD), EO_TYPECHECK(const char *, keyname)
+#define evas_canvas_key_modifier_del(keyname) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_MODIFIER_DEL), EO_TYPECHECK(const char *, keyname)
+#define evas_canvas_key_lock_add(keyname) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_LOCK_ADD), EO_TYPECHECK(const char *, keyname)
+#define evas_canvas_key_lock_del(keyname) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_LOCK_DEL), EO_TYPECHECK(const char *, keyname)
+#define evas_canvas_key_modifier_on(keyname) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_MODIFIER_ON), EO_TYPECHECK(const char *, keyname)
+#define evas_canvas_key_modifier_off(keyname) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_MODIFIER_OFF), EO_TYPECHECK(const char *, keyname)
+#define evas_canvas_key_lock_on(keyname) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_LOCK_ON), EO_TYPECHECK(const char *, keyname)
+#define evas_canvas_key_lock_off(keyname) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_LOCK_OFF), EO_TYPECHECK(const char *, keyname)
+#define evas_canvas_key_modifier_mask_get(keyname, ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_MODIFIER_MASK_GET), EO_TYPECHECK(const char *, keyname), EO_TYPECHECK(Evas_Modifier_Mask *, ret)
+
+#define evas_canvas_damage_rectangle_add(x, y, w, h) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_DAMAGE_RECTANGLE_ADD), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
+#define evas_canvas_obscured_rectangle_add(x, y, w, h) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OBSCURED_RECTANGLE_ADD), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
+#define evas_canvas_obscured_clear() EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OBSCURED_CLEAR)
+#define evas_canvas_render_updates(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_RENDER_UPDATES), EO_TYPECHECK(Eina_List **, ret)
+#define evas_canvas_render() EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_RENDER)
+#define evas_canvas_norender() EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_NORENDER)
+#define evas_canvas_render_idle_flush() EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_RENDER_IDLE_FLUSH)
+#define evas_canvas_sync() EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_SYNC)
+#define evas_canvas_render_dump() EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_RENDER_DUMP)
+
+#define evas_canvas_object_bottom_get(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OBJECT_BOTTOM_GET), EO_TYPECHECK(Evas_Object **, ret)
+#define evas_canvas_object_top_get(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OBJECT_TOP_GET), EO_TYPECHECK(Evas_Object **, ret)
+
+#define evas_canvas_touch_point_list_count(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_TOUCH_POINT_LIST_COUNT), EO_TYPECHECK(unsigned int *, ret)
+#define evas_canvas_touch_point_list_nth_xy_get(n, x, y) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_TOUCH_POINT_LIST_NTH_XY_GET), EO_TYPECHECK(unsigned int, n), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y)
+#define evas_canvas_touch_point_list_nth_id_get(n, ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_TOUCH_POINT_LIST_NTH_ID_GET), EO_TYPECHECK(unsigned int, n), EO_TYPECHECK(int *, ret)
+#define evas_canvas_touch_point_list_nth_state_get(n, ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_TOUCH_POINT_LIST_NTH_STATE_GET), EO_TYPECHECK(unsigned int, n), EO_TYPECHECK(Evas_Touch_Point_State *, ret)
+
+#define evas_canvas_image_cache_flush() EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_IMAGE_CACHE_FLUSH)
+#define evas_canvas_image_cache_reload() EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_IMAGE_CACHE_RELOAD)
+#define evas_canvas_image_cache_set(size) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_IMAGE_CACHE_SET), EO_TYPECHECK(int, size)
+#define evas_canvas_image_cache_get(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_IMAGE_CACHE_GET), EO_TYPECHECK(int *, ret)
+#define evas_canvas_image_max_size_get(maxw, maxh, ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_IMAGE_MAX_SIZE_GET), EO_TYPECHECK(int *, maxw), EO_TYPECHECK(int *, maxh), EO_TYPECHECK(Eina_Bool *, ret)
+
+#define evas_canvas_object_name_find(name, ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OBJECT_NAME_FIND),EO_TYPECHECK(const char *, name), EO_TYPECHECK(Evas_Object **, ret)
+
+#define evas_canvas_object_top_at_xy_get(x, y, include_pass_events_objects, include_hidden_objects, ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OBJECT_TOP_AT_XY_GET), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y), EO_TYPECHECK(Eina_Bool, include_pass_events_objects), EO_TYPECHECK(Eina_Bool, include_hidden_objects), EO_TYPECHECK(Evas_Object **, ret)
+#define evas_canvas_object_top_in_rectangle_get(x, y, w, h, include_pass_events_objects, include_hidden_objects, ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OBJECT_TOP_IN_RECTANGLE_GET), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y), EO_TYPECHECK(Evas_Coord, w), EO_TYPECHECK(Evas_Coord, h), EO_TYPECHECK(Eina_Bool, include_pass_events_objects), EO_TYPECHECK(Eina_Bool, include_hidden_objects), EO_TYPECHECK(Evas_Object **, ret)
+#define evas_canvas_objects_at_xy_get(x, y, include_pass_events_objects, include_hidden_objects, ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OBJECTS_AT_XY_GET), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y), EO_TYPECHECK(Eina_Bool, include_pass_events_objects), EO_TYPECHECK(Eina_Bool, include_hidden_objects), EO_TYPECHECK(Eina_List **, ret)
+#define evas_canvas_objects_in_rectangle_get(x, y, w, h, include_pass_events_objects, include_hidden_objects, ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OBJECTS_IN_RECTANGLE_GET), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y), EO_TYPECHECK(Evas_Coord, w), EO_TYPECHECK(Evas_Coord, h), EO_TYPECHECK(Eina_Bool, include_pass_events_objects), EO_TYPECHECK(Eina_Bool, include_hidden_objects), EO_TYPECHECK(Eina_List **, ret)
+
+#define evas_canvas_smart_objects_calculate() EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_SMART_OBJECTS_CALCULATE)
+#define evas_canvas_smart_objects_calculate_count_get(ret) EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_SMART_OBJECTS_CALCULATE_COUNT_GET), EO_TYPECHECK(int *, ret)
+
+
+
+
/**
* @defgroup Evas_Canvas_Events Canvas Events
@@ -6397,6 +6777,19 @@ EAPI void *evas_object_intercept_clip_unset_callback_del(Evas_Object *obj, Evas_
* @ingroup Evas_Object_Specific
*/
+#define EVAS_OBJ_RECTANGLE_CLASS evas_object_rectangle_class_get()
+
+const Eo_Class *evas_object_rectangle_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op EVAS_OBJ_RECTANGLE_BASE_ID;
+
+enum
+{
+ EVAS_OBJ_RECTANGLE_SUB_ID_LAST
+};
+
+#define EVAS_OBJ_RECTANGLE_ID(sub_id) (EVAS_OBJ_RECTANGLE_BASE_ID + sub_id)
+
/**
* Adds a rectangle to the given evas.
* @param e The given evas.
@@ -7904,6 +8297,408 @@ typedef enum _Evas_Text_Style_Type
EVAS_TEXT_STYLE_SHADOW_DIRECTION_RIGHT = (0x7 << 4) /**< shadow growing to the right */
} Evas_Text_Style_Type; /**< Types of styles to be applied on text objects. The @c EVAS_TEXT_STYLE_SHADOW_DIRECTION_* ones are to be ORed together with others imposing shadow, to change shadow's direction */
+#define EVAS_OBJ_TEXT_CLASS evas_object_text_class_get()
+
+const Eo_Class *evas_object_text_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op EVAS_OBJ_TEXT_BASE_ID;
+
+enum
+{
+ EVAS_OBJ_TEXT_SUB_ID_FONT_SOURCE_SET,
+ EVAS_OBJ_TEXT_SUB_ID_FONT_SOURCE_GET,
+ EVAS_OBJ_TEXT_SUB_ID_FONT_SET,
+ EVAS_OBJ_TEXT_SUB_ID_FONT_GET,
+ EVAS_OBJ_TEXT_SUB_ID_TEXT_SET,
+ EVAS_OBJ_TEXT_SUB_ID_BIDI_DELIMITERS_SET,
+ EVAS_OBJ_TEXT_SUB_ID_BIDI_DELIMITERS_GET,
+ EVAS_OBJ_TEXT_SUB_ID_TEXT_GET,
+ EVAS_OBJ_TEXT_SUB_ID_DIRECTION_GET,
+ EVAS_OBJ_TEXT_SUB_ID_ASCENT_GET,
+ EVAS_OBJ_TEXT_SUB_ID_DESCENT_GET,
+ EVAS_OBJ_TEXT_SUB_ID_MAX_ASCENT_GET,
+ EVAS_OBJ_TEXT_SUB_ID_MAX_DESCENT_GET,
+ EVAS_OBJ_TEXT_SUB_ID_INSET_GET,
+ EVAS_OBJ_TEXT_SUB_ID_HORIZ_ADVANCE_GET,
+ EVAS_OBJ_TEXT_SUB_ID_VERT_ADVANCE_GET,
+ EVAS_OBJ_TEXT_SUB_ID_CHAR_POS_GET,
+ EVAS_OBJ_TEXT_SUB_ID_LAST_UP_TO_POS,
+ EVAS_OBJ_TEXT_SUB_ID_CHAR_COORDS_GET,
+ EVAS_OBJ_TEXT_SUB_ID_STYLE_SET,
+ EVAS_OBJ_TEXT_SUB_ID_STYLE_GET,
+ EVAS_OBJ_TEXT_SUB_ID_SHADOW_COLOR_SET,
+ EVAS_OBJ_TEXT_SUB_ID_SHADOW_COLOR_GET,
+ EVAS_OBJ_TEXT_SUB_ID_GLOW_COLOR_SET,
+ EVAS_OBJ_TEXT_SUB_ID_GLOW_COLOR_GET,
+ EVAS_OBJ_TEXT_SUB_ID_GLOW2_COLOR_SET,
+ EVAS_OBJ_TEXT_SUB_ID_GLOW2_COLOR_GET,
+ EVAS_OBJ_TEXT_SUB_ID_OUTLINE_COLOR_SET,
+ EVAS_OBJ_TEXT_SUB_ID_OUTLINE_COLOR_GET,
+ EVAS_OBJ_TEXT_SUB_ID_STYLE_PAD_GET,
+ EVAS_OBJ_TEXT_SUB_ID_LAST
+};
+
+#define EVAS_OBJ_TEXT_ID(sub_id) (EVAS_OBJ_TEXT_BASE_ID + sub_id)
+
+/**
+ * @def evas_obj_text_font_source_set
+ *
+ * Set the font (source) file to be used on a given text object.
+ *
+ * @param[in] font_source in
+ *
+ * @see evas_object_text_font_source_set
+ */
+#define evas_obj_text_font_source_set(font_source) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_FONT_SOURCE_SET), EO_TYPECHECK(const char *, font_source)
+
+/**
+ * @def evas_obj_text_font_source_get
+ *
+ * Get the font file's path which is being used on a given text
+ * object.
+ *
+ * @param[out] font_source out
+ *
+ * @see evas_object_text_font_source_get
+ */
+#define evas_obj_text_font_source_get(font_source) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_FONT_SOURCE_GET), EO_TYPECHECK(const char **, font_source)
+
+/**
+ * @def evas_obj_text_font_set
+ *
+ * Set the font family and size on a given text object.
+ *
+ * @param[in] font in
+ * @param[in] size in
+ *
+ * @see evas_object_text_font_set
+ */
+#define evas_obj_text_font_set(font, size) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_FONT_SET), EO_TYPECHECK(const char *, font), EO_TYPECHECK(Evas_Font_Size, size)
+
+/**
+ * @def evas_obj_text_font_get
+ *
+ * Retrieve the font family and size in use on a given text object.
+ *
+ * @param[out] font out
+ * @param[out] size out
+ *
+ * @see evas_object_text_font_get
+ */
+#define evas_obj_text_font_get(font, size) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_FONT_GET), EO_TYPECHECK(const char **, font), EO_TYPECHECK(Evas_Font_Size *, size)
+
+/**
+ * @def evas_obj_text_text_set
+ *
+ * Sets the text string to be displayed by the given text object.
+ *
+ * @param[in] text
+ *
+ * @see evas_object_text_text_set
+ */
+#define evas_obj_text_text_set(text) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_TEXT_SET), EO_TYPECHECK(const char *, text)
+
+/**
+ * @def evas_obj_text_bidi_delimiters_set
+ *
+ * Retrieves the text string currently being displayed by the given
+ * text object.
+ *
+ * @param[in] delim in
+ *
+ * @see evas_object_text_text_get
+ */
+#define evas_obj_text_text_get(text) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_TEXT_GET), EO_TYPECHECK(const char **, text)
+
+/**
+ * @def evas_obj_text_bidi_delimiters_set
+ *
+ * Sets the BiDi delimiters used in the textblock.
+ *
+ * @param[in] delim in
+ *
+ * @see evas_object_text_bidi_delimiters_set
+ */
+#define evas_obj_text_bidi_delimiters_set(delim) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_BIDI_DELIMITERS_SET), EO_TYPECHECK(const char *, delim)
+
+/**
+ * @def evas_obj_text_bidi_delimiters_get
+ *
+ * Gets the BiDi delimiters used in the textblock.
+ *
+ * @param[out] delim out
+ *
+ * @see evas_object_text_bidi_delimiters_get
+ */
+#define evas_obj_text_bidi_delimiters_get(delim) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_BIDI_DELIMITERS_GET), EO_TYPECHECK(const char **, delim)
+
+/**
+ * @def evas_obj_text_direction_get
+ *
+ * Retrieves the direction of the text currently being displayed in the
+ * text object.
+ *
+ * @param[out] bidi_dir out
+ *
+ * @see evas_object_text_direction_get
+ */
+#define evas_obj_text_direction_get(bidi_dir) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_DIRECTION_GET), EO_TYPECHECK(Evas_BiDi_Direction *, bidi_dir)
+
+/**
+ * @def evas_obj_text_ascent_get
+ *
+ * @param[out] ascent out
+ *
+ * @see evas_object_text_ascent_get
+ */
+#define evas_obj_text_ascent_get(ascent) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_ASCENT_GET), EO_TYPECHECK(Evas_Coord *, ascent)
+
+/**
+ * @def evas_obj_text_descent_get
+ *
+ * @param[out] descent out
+ *
+ * @see evas_object_text_descent_get
+ */
+#define evas_obj_text_descent_get(descent) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_DESCENT_GET), EO_TYPECHECK(Evas_Coord *, descent)
+
+/**
+ * @def evas_obj_text_max_ascent_get
+ *
+ * @param[out] max_ascent out
+ *
+ * @see evas_object_text_max_ascent_get
+ */
+#define evas_obj_text_max_ascent_get(max_ascent) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_MAX_ASCENT_GET), EO_TYPECHECK(Evas_Coord *, max_ascent)
+
+/**
+ * @def evas_obj_text_max_descent_get
+ *
+ * @param[out] max_descent out
+ *
+ * @see evas_object_text_max_descent_get
+ */
+#define evas_obj_text_max_descent_get(max_descent) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_MAX_DESCENT_GET), EO_TYPECHECK(Evas_Coord *, max_descent)
+
+/**
+ * @def evas_obj_text_inset_get
+ *
+ * @param[out] inset out
+ *
+ * @see evas_object_text_inset_get
+ */
+#define evas_obj_text_inset_get(inset) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_INSET_GET), EO_TYPECHECK(Evas_Coord *, inset)
+
+/**
+ * @def evas_obj_text_horiz_advance_get
+ *
+ * @param[out] horiz out
+ *
+ * @see evas_object_text_horiz_advance_get
+ */
+#define evas_obj_text_horiz_advance_get(horiz) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_HORIZ_ADVANCE_GET), EO_TYPECHECK(Evas_Coord *, horiz)
+
+/**
+ * @def evas_obj_text_vert_advance_get_
+ *
+ * @param[out] vert out
+ *
+ * @see evas_object_text_vert_advance_get
+ */
+#define evas_obj_text_vert_advance_get(vert) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_VERT_ADVANCE_GET), EO_TYPECHECK(Evas_Coord *, vert)
+/**
+ * @def evas_obj_text_char_pos_get
+ *
+ * Retrieve position and dimension information of a character within a text @c Evas_Object.
+ *
+ * @param[in] pos in
+ * @param[out] cx out
+ * @param[out] cy out
+ * @param[out] cw out
+ * @param[out] ch out
+ * @param[out] ret out
+ *
+ * @see evas_object_text_char_pos_get
+ */
+#define evas_obj_text_char_pos_get(pos, cx, cy, cw, ch, ret) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_CHAR_POS_GET), EO_TYPECHECK(int, pos), EO_TYPECHECK(Evas_Coord *, cx), EO_TYPECHECK(Evas_Coord *, cy), EO_TYPECHECK(Evas_Coord *, cw), EO_TYPECHECK(Evas_Coord *, ch), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def evas_obj_text_last_up_to_pos
+ *
+ * Returns the logical position of the last char in the text
+ * up to the pos given. this is NOT the position of the last char
+ * because of the possibility of RTL in the text.
+ *
+ * @param[in] x in
+ * @param[in] y in
+ * @param[out] res out
+ *
+ * @see evas_object_text_last_up_to_pos
+ */
+#define evas_obj_text_last_up_to_pos(x, y, res) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_LAST_UP_TO_POS), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y), EO_TYPECHECK(int *, res)
+/**
+ * @def evas_obj_text_char_coords_get
+ *
+ * @param[in] x in
+ * @param[in] y in
+ * @param[out] cx out
+ * @param[out] cy out
+ * @param[out] cw out
+ * @param[out] ch out
+ * @param[out] res out
+ *
+ * @see evas_object_text_char_coords_get
+ */
+#define evas_obj_text_char_coords_get(x, y, cx, cy, cw, ch, res) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_CHAR_COORDS_GET), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y), EO_TYPECHECK(Evas_Coord *, cx), EO_TYPECHECK(Evas_Coord *, cy), EO_TYPECHECK(Evas_Coord *, cw), EO_TYPECHECK(Evas_Coord *, ch), EO_TYPECHECK(int *, res)
+
+/**
+ * @def evas_obj_text_style_set
+ *
+ * Sets the style to apply on the given text object.
+ *
+ * @param[in] style in
+ *
+ * @see evas_object_text_style_set
+ */
+#define evas_obj_text_style_set(style) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_STYLE_SET), EO_TYPECHECK(Evas_Text_Style_Type, style)
+
+/**
+ * @def evas_obj_text_style_get
+ *
+ * Retrieves the style on use on the given text object.
+ *
+ * @param[out] style out
+ *
+ * @see evas_object_text_style_get
+ */
+#define evas_obj_text_style_get(style) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_STYLE_GET), EO_TYPECHECK(Evas_Text_Style_Type *, style)
+
+/**
+ * @def evas_obj_text_shadow_color_set
+ *
+ * Sets the shadow color for the given text object.
+ *
+ * @param[in] r in
+ * @param[in] g in
+ * @param[in] b in
+ * @param[in] a in
+ *
+ * @see evas_object_text_shadow_color_set
+ */
+#define evas_obj_text_shadow_color_set(r, g, b, a) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_SHADOW_COLOR_SET), EO_TYPECHECK(int, r), EO_TYPECHECK(int, g), EO_TYPECHECK(int, b), EO_TYPECHECK(int, a)
+
+/**
+ * @def evas_obj_text_shadow_color_get
+ *
+ * Retrieves the shadow color for the given text object.
+ *
+ * @param[out] r out
+ * @param[out] g out
+ * @param[out] b out
+ * @param[out] a out
+ *
+ * @see evas_object_text_shadow_color_get
+ */
+#define evas_obj_text_shadow_color_get(r, g, b, a) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_SHADOW_COLOR_GET), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, g), EO_TYPECHECK(int *, b), EO_TYPECHECK(int *, a)
+
+/**
+ * @def evas_obj_text_glow_color_set
+ *
+ * Sets the glow color for the given text object.
+ *
+ * @param[in] r in
+ * @param[in] g in
+ * @param[in] b in
+ * @param[in] a in
+ *
+ * @see evas_object_text_glow_color_set
+ */
+#define evas_obj_text_glow_color_set(r, g, b, a) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_GLOW_COLOR_SET), EO_TYPECHECK(int, r), EO_TYPECHECK(int, g), EO_TYPECHECK(int, b), EO_TYPECHECK(int, a)
+
+/**
+ * @def evas_obj_text_glow_color_get
+ *
+ * Retrieves the glow color for the given text object.
+ *
+ * @param[out] r out
+ * @param[out] g out
+ * @param[out] b out
+ * @param[out] a out
+ *
+ * @see evas_object_text_glow_color_get
+ */
+#define evas_obj_text_glow_color_get(r, g, b, a) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_GLOW_COLOR_GET), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, g), EO_TYPECHECK(int *, b), EO_TYPECHECK(int *, a)
+
+/**
+ * @def evas_obj_text_glow2_color_set
+ *
+ * Sets the 'glow 2' color for the given text object.
+ *
+ * @param[in] r in
+ * @param[in] g in
+ * @param[in] b in
+ * @param[in] a in
+ *
+ * @see evas_object_text_glow2_color_set
+ */
+#define evas_obj_text_glow2_color_set(r, g, b, a) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_GLOW2_COLOR_SET), EO_TYPECHECK(int, r), EO_TYPECHECK(int, g), EO_TYPECHECK(int, b), EO_TYPECHECK(int, a)
+
+/**
+ * @def evas_obj_text_glow2_color_get
+ *
+ * Retrieves the 'glow 2' color for the given text object.
+ *
+ * @param[out] r out
+ * @param[out] g out
+ * @param[out] b out
+ * @param[out] a out
+ *
+ * @see evas_object_text_glow2_color_get
+ */
+#define evas_obj_text_glow2_color_get(r, g, b, a) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_GLOW2_COLOR_GET), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, g), EO_TYPECHECK(int *, b), EO_TYPECHECK(int *, a)
+
+/**
+ * @def evas_obj_text_outline_color_set
+ *
+ * Sets the outline color for the given text object.
+ *
+ * @param[in] r in
+ * @param[in] g in
+ * @param[in] b in
+ * @param[in] a in
+ *
+ * @see evas_object_text_outline_color_set
+ */
+#define evas_obj_text_outline_color_set(r, g, b, a) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_OUTLINE_COLOR_SET), EO_TYPECHECK(int, r), EO_TYPECHECK(int, g), EO_TYPECHECK(int, b), EO_TYPECHECK(int, a)
+
+/**
+ * @def evas_obj_text_outline_color_get
+ *
+ * Retrieves the outline color for the given text object.
+ *
+ * @param[out] r out
+ * @param[out] g out
+ * @param[out] b out
+ * @param[out] a out
+ *
+ * @see evas_object_text_outline_color_get
+ */
+#define evas_obj_text_outline_color_get(r, g, b, a) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_OUTLINE_COLOR_GET), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, g), EO_TYPECHECK(int *, b), EO_TYPECHECK(int *, a)
+
+/**
+ * @def evas_obj_text_style_pad_get
+ *
+ * Gets the text style pad of a text object.
+ *
+ * @param[out] l out
+ * @param[out] r out
+ * @param[out] t out
+ * @param[out] b out
+ *
+ * @see evas_object_text_style_pad_get
+ */
+#define evas_obj_text_style_pad_get(l, r, t, b) EVAS_OBJ_TEXT_ID(EVAS_OBJ_TEXT_SUB_ID_STYLE_PAD_GET), EO_TYPECHECK(int *, l), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, t), EO_TYPECHECK(int *, b)
+
/**
* Creates a new text object on the provided canvas.
*
@@ -8448,6 +9243,72 @@ typedef enum _Evas_Textblock_Cursor_Type
EVAS_TEXTBLOCK_CURSOR_BEFORE
} Evas_Textblock_Cursor_Type;
+#define EVAS_OBJ_TEXTBLOCK_CLASS evas_object_textblock_class_get()
+
+const Eo_Class *evas_object_textblock_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op EVAS_OBJ_TEXTBLOCK_BASE_ID;
+
+enum
+{
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_STYLE_SET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_STYLE_GET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_STYLE_USER_PUSH,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_STYLE_USER_PEEK,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_STYLE_USER_POP,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_REPLACE_CHAR_SET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_LEGACY_NEWLINE_SET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_LEGACY_NEWLINE_GET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_VALIGN_SET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_VALIGN_GET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_BIDI_DELIMITERS_SET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_BIDI_DELIMITERS_GET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_REPLACE_CHAR_GET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_TEXT_MARKUP_SET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_TEXT_MARKUP_GET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_CURSOR_GET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_CURSOR_NEW,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_NODE_FORMAT_LIST_GET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_NODE_FORMAT_FIRST_GET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_NODE_FORMAT_LAST_GET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_NODE_FORMAT_REMOVE_PAIR,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_LINE_NUMBER_GEOMETRY_GET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_CLEAR,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_SIZE_FORMATTED_GET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_SIZE_NATIVE_GET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_STYLE_INSETS_GET,
+ EVAS_OBJ_TEXTBLOCK_SUB_ID_LAST
+};
+
+#define EVAS_OBJ_TEXTBLOCK_ID(sub_id) (EVAS_OBJ_TEXTBLOCK_BASE_ID + sub_id)
+
+#define evas_obj_textblock_style_set(ts) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_STYLE_SET), EO_TYPECHECK(Evas_Textblock_Style *, ts)
+#define evas_obj_textblock_style_get(ts) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_STYLE_GET), EO_TYPECHECK(const Evas_Textblock_Style **, ts)
+#define evas_obj_textblock_style_user_push(ts) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_STYLE_USER_PUSH), EO_TYPECHECK(Evas_Textblock_Style *, ts)
+#define evas_obj_textblock_style_user_peek(ts) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_STYLE_USER_PEEK), EO_TYPECHECK(const Evas_Textblock_Style **, ts)
+#define evas_obj_textblock_style_user_pop() EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_STYLE_USER_POP)
+#define evas_obj_textblock_replace_char_set(ch) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_REPLACE_CHAR_SET), EO_TYPECHECK(const char *, ch)
+#define evas_obj_textblock_legacy_newline_set(mode) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_LEGACY_NEWLINE_SET), EO_TYPECHECK(Eina_Bool, mode)
+#define evas_obj_textblock_legacy_newline_get(newline) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_LEGACY_NEWLINE_GET), EO_TYPECHECK(Eina_Bool *, newline)
+#define evas_obj_textblock_valign_set(align) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_VALIGN_SET), EO_TYPECHECK(double, align)
+#define evas_obj_textblock_valign_get(valign) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_VALIGN_GET), EO_TYPECHECK(double *, valign)
+#define evas_obj_textblock_bidi_delimiters_set(delim) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_BIDI_DELIMITERS_SET), EO_TYPECHECK(const char *, delim)
+#define evas_obj_textblock_bidi_delimiters_get(delim) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_BIDI_DELIMITERS_GET), EO_TYPECHECK(const char **, delim)
+#define evas_obj_textblock_replace_char_get(repch) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_REPLACE_CHAR_GET), EO_TYPECHECK(const char **, repch)
+#define evas_obj_textblock_text_markup_set(text) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_TEXT_MARKUP_SET), EO_TYPECHECK(const char *, text)
+#define evas_obj_textblock_text_markup_get(markup) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_TEXT_MARKUP_GET), EO_TYPECHECK(const char **, markup)
+#define evas_obj_textblock_cursor_get(cursor) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_CURSOR_GET), EO_TYPECHECK(Evas_Textblock_Cursor **, cursor)
+#define evas_obj_textblock_cursor_new(cur) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_CURSOR_NEW), EO_TYPECHECK(Evas_Textblock_Cursor **, cur)
+#define evas_obj_textblock_node_format_list_get(obj, anchor, list) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_NODE_FORMAT_LIST_GET), EO_TYPECHECK(const char *, anchor), EO_TYPECHECK(const Eina_List **, list)
+#define evas_obj_textblock_node_format_first_get(format) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_NODE_FORMAT_FIRST_GET), EO_TYPECHECK(const Evas_Object_Textblock_Node_Format **, format)
+#define evas_obj_textblock_node_format_last_get(format) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_NODE_FORMAT_LAST_GET), EO_TYPECHECK(const Evas_Object_Textblock_Node_Format **, format)
+#define evas_obj_textblock_node_format_remove_pair(n) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_NODE_FORMAT_REMOVE_PAIR), EO_TYPECHECK(Evas_Object_Textblock_Node_Format *, n)
+#define evas_obj_textblock_line_number_geometry_get(line, cx, cy, cw, ch, result) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_LINE_NUMBER_GEOMETRY_GET), EO_TYPECHECK(int, line), EO_TYPECHECK(Evas_Coord *, cx), EO_TYPECHECK(Evas_Coord *, cy), EO_TYPECHECK(Evas_Coord *, cw), EO_TYPECHECK(Evas_Coord *, ch), EO_TYPECHECK(Eina_Bool *, result)
+#define evas_obj_textblock_clear() EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_CLEAR)
+#define evas_obj_textblock_size_formatted_get(w, h) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_SIZE_FORMATTED_GET), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h)
+#define evas_obj_textblock_size_native_get(w, h) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_SIZE_NATIVE_GET), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h)
+#define evas_obj_textblock_style_insets_get(l, r, t, b) EVAS_OBJ_TEXTBLOCK_ID(EVAS_OBJ_TEXTBLOCK_SUB_ID_STYLE_INSETS_GET), EO_TYPECHECK(Evas_Coord *, l), EO_TYPECHECK(Evas_Coord *, r), EO_TYPECHECK(Evas_Coord *, t), EO_TYPECHECK(Evas_Coord *, b)
+
/**
* Adds a textblock to the given evas.
* @param e The given evas.
@@ -9318,6 +10179,48 @@ EAPI void evas_object_textblock_style_insets
* @{
*/
+#define EVAS_OBJ_TEXTGRID_CLASS evas_object_textgrid_class_get()
+
+const Eo_Class *evas_object_textgrid_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op EVAS_OBJ_TEXTGRID_BASE_ID;
+
+enum
+{
+ EVAS_OBJ_TEXTGRID_SUB_ID_SIZE_SET,
+ EVAS_OBJ_TEXTGRID_SUB_ID_SIZE_GET,
+ EVAS_OBJ_TEXTGRID_SUB_ID_FONT_SOURCE_SET,
+ EVAS_OBJ_TEXTGRID_SUB_ID_FONT_SOURCE_GET,
+ EVAS_OBJ_TEXTGRID_SUB_ID_FONT_SET,
+ EVAS_OBJ_TEXTGRID_SUB_ID_FONT_GET,
+ EVAS_OBJ_TEXTGRID_SUB_ID_CELL_SIZE_GET,
+ EVAS_OBJ_TEXTGRID_SUB_ID_PALETTE_SET,
+ EVAS_OBJ_TEXTGRID_SUB_ID_PALETTE_GET,
+ EVAS_OBJ_TEXTGRID_SUB_ID_SUPPORTED_FONT_STYLES_SET,
+ EVAS_OBJ_TEXTGRID_SUB_ID_SUPPORTED_FONT_STYLES_GET,
+ EVAS_OBJ_TEXTGRID_SUB_ID_CELLROW_SET,
+ EVAS_OBJ_TEXTGRID_SUB_ID_CELLROW_GET,
+ EVAS_OBJ_TEXTGRID_SUB_ID_UPDATE_ADD,
+ EVAS_OBJ_TEXTGRID_SUB_ID_LAST
+};
+
+#define EVAS_OBJ_TEXTGRID_ID(sub_id) (EVAS_OBJ_TEXTGRID_BASE_ID + sub_id)
+
+#define evas_obj_textgrid_size_set(w, h) EVAS_OBJ_TEXTGRID_ID(EVAS_OBJ_TEXTGRID_SUB_ID_SIZE_SET), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
+#define evas_obj_textgrid_size_get(w, h) EVAS_OBJ_TEXTGRID_ID(EVAS_OBJ_TEXTGRID_SUB_ID_SIZE_GET), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h)
+#define evas_obj_textgrid_font_source_set(font_source) EVAS_OBJ_TEXTGRID_ID(EVAS_OBJ_TEXTGRID_SUB_ID_FONT_SOURCE_SET), EO_TYPECHECK(const char *, font_source)
+#define evas_obj_textgrid_font_source_get(ret) EVAS_OBJ_TEXTGRID_ID(EVAS_OBJ_TEXTGRID_SUB_ID_FONT_SOURCE_GET), EO_TYPECHECK(const char **, ret)
+#define evas_obj_textgrid_font_set(font_name, font_size) EVAS_OBJ_TEXTGRID_ID(EVAS_OBJ_TEXTGRID_SUB_ID_FONT_SET), EO_TYPECHECK(const char *, font_name), EO_TYPECHECK(Evas_Font_Size, font_size)
+#define evas_obj_textgrid_font_get(font_name, font_size) EVAS_OBJ_TEXTGRID_ID(EVAS_OBJ_TEXTGRID_SUB_ID_FONT_GET), EO_TYPECHECK(const char **, font_name), EO_TYPECHECK(Evas_Font_Size *, font_size)
+#define evas_obj_textgrid_cell_size_get(width, height) EVAS_OBJ_TEXTGRID_ID(EVAS_OBJ_TEXTGRID_SUB_ID_CELL_SIZE_GET), EO_TYPECHECK(int *, width), EO_TYPECHECK(int *, height)
+#define evas_obj_textgrid_palette_set(pal, idx, r, g, b, a) EVAS_OBJ_TEXTGRID_ID(EVAS_OBJ_TEXTGRID_SUB_ID_PALETTE_SET), EO_TYPECHECK(Evas_Textgrid_Palette, pal), EO_TYPECHECK(int, idx), EO_TYPECHECK(int, r), EO_TYPECHECK(int, g), EO_TYPECHECK(int, b), EO_TYPECHECK(int, a)
+#define evas_obj_textgrid_palette_get(pal, idx, r, g, b, a) EVAS_OBJ_TEXTGRID_ID(EVAS_OBJ_TEXTGRID_SUB_ID_PALETTE_GET), EO_TYPECHECK(Evas_Textgrid_Palette, pal), EO_TYPECHECK(int, idx), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, g), EO_TYPECHECK(int *, b), EO_TYPECHECK(int *, a)
+#define evas_obj_textgrid_supported_font_styles_set(styles) EVAS_OBJ_TEXTGRID_ID(EVAS_OBJ_TEXTGRID_SUB_ID_SUPPORTED_FONT_STYLES_SET), EO_TYPECHECK(Evas_Textgrid_Font_Style, styles)
+#define evas_obj_textgrid_supported_font_styles_get(ret) EVAS_OBJ_TEXTGRID_ID(EVAS_OBJ_TEXTGRID_SUB_ID_SUPPORTED_FONT_STYLES_GET), EO_TYPECHECK(Evas_Textgrid_Font_Style *, ret)
+#define evas_obj_textgrid_cellrow_set(y, row) EVAS_OBJ_TEXTGRID_ID(EVAS_OBJ_TEXTGRID_SUB_ID_CELLROW_SET), EO_TYPECHECK(int, y), EO_TYPECHECK(const Evas_Textgrid_Cell *, row)
+#define evas_obj_textgrid_cellrow_get(y, ret) EVAS_OBJ_TEXTGRID_ID(EVAS_OBJ_TEXTGRID_SUB_ID_CELLROW_GET), EO_TYPECHECK(int, y), EO_TYPECHECK(Evas_Textgrid_Cell **, ret)
+#define evas_obj_textgrid_update_add(x, y, w, h) EVAS_OBJ_TEXTGRID_ID(EVAS_OBJ_TEXTGRID_SUB_ID_UPDATE_ADD), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
+
/**
* @typedef Evas_Textgrid_Palette
*
@@ -9671,6 +10574,23 @@ EAPI void evas_object_textgrid_update_add(Evas_Object *obj, int x, int y, int w,
* @{
*/
+#define EVAS_OBJ_LINE_CLASS evas_object_line_class_get()
+const Eo_Class *evas_object_line_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op EVAS_OBJ_LINE_BASE_ID;
+
+enum
+{
+ EVAS_OBJ_LINE_SUB_ID_XY_SET,
+ EVAS_OBJ_LINE_SUB_ID_XY_GET,
+ EVAS_OBJ_LINE_SUB_ID_LAST
+};
+
+#define EVAS_OBJ_LINE_ID(sub_id) (EVAS_OBJ_LINE_BASE_ID + sub_id)
+
+#define evas_obj_line_xy_set(x1, y1, x2, y2) EVAS_OBJ_LINE_ID(EVAS_OBJ_LINE_SUB_ID_XY_SET), EO_TYPECHECK(Evas_Coord, x1), EO_TYPECHECK(Evas_Coord, y1), EO_TYPECHECK(Evas_Coord, x2), EO_TYPECHECK(Evas_Coord, y2)
+#define evas_obj_line_xy_get(x1, y1, x2, y2) EVAS_OBJ_LINE_ID(EVAS_OBJ_LINE_SUB_ID_XY_GET), EO_TYPECHECK(Evas_Coord *, x1), EO_TYPECHECK(Evas_Coord *, y1), EO_TYPECHECK(Evas_Coord *, x2), EO_TYPECHECK(Evas_Coord *, y2)
+
/**
* Adds a new evas line object to the given evas.
* @param e The given evas.
@@ -9721,6 +10641,23 @@ EAPI void evas_object_line_xy_get(const Evas_Object *obj, Evas_Coord *x1
* @{
*/
+#define EVAS_OBJ_POLYGON_CLASS evas_object_polygon_class_get()
+const Eo_Class *evas_object_polygon_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op EVAS_OBJ_POLYGON_BASE_ID;
+
+enum
+{
+ EVAS_OBJ_POLYGON_SUB_ID_POINT_ADD,
+ EVAS_OBJ_POLYGON_SUB_ID_POINTS_CLEAR,
+ EVAS_OBJ_POLYGON_SUB_ID_LAST
+};
+
+#define EVAS_OBJ_POLYGON_ID(sub_id) (EVAS_OBJ_POLYGON_BASE_ID + sub_id)
+
+#define evas_obj_polygon_point_add(x, y) EVAS_OBJ_POLYGON_ID(EVAS_OBJ_POLYGON_SUB_ID_POINT_ADD), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y)
+#define evas_obj_polygon_points_clear() EVAS_OBJ_POLYGON_ID(EVAS_OBJ_POLYGON_SUB_ID_POINTS_CLEAR)
+
/**
* Adds a new evas polygon object to the given evas.
* @param e The given evas.
@@ -10168,6 +11105,248 @@ struct _Evas_Smart_Cb_Description
evas_object_smart_data_set(o, priv); \
}
+#define EVAS_OBJ_SMART_CLASS evas_object_smart_class_get()
+
+const Eo_Class *evas_object_smart_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op EVAS_OBJ_SMART_BASE_ID;
+
+enum
+{
+ EVAS_OBJ_SMART_SUB_ID_DATA_SET,
+ EVAS_OBJ_SMART_SUB_ID_SMART_GET,
+ EVAS_OBJ_SMART_SUB_ID_MEMBER_ADD,
+ EVAS_OBJ_SMART_SUB_ID_MEMBER_DEL,
+ EVAS_OBJ_SMART_SUB_ID_MEMBERS_GET,
+ EVAS_OBJ_SMART_SUB_ID_CALLBACKS_DESCRIPTIONS_SET,
+ EVAS_OBJ_SMART_SUB_ID_CALLBACKS_DESCRIPTIONS_GET,
+ EVAS_OBJ_SMART_SUB_ID_CALLBACK_DESCRIPTION_FIND,
+ EVAS_OBJ_SMART_SUB_ID_NEED_RECALCULATE_SET,
+ EVAS_OBJ_SMART_SUB_ID_NEED_RECALCULATE_GET,
+ EVAS_OBJ_SMART_SUB_ID_CALCULATE,
+ EVAS_OBJ_SMART_SUB_ID_CHANGED,
+ EVAS_OBJ_SMART_SUB_ID_ATTACH,
+ // Specific Smart functions that can be overriden by the inherit classes
+ EVAS_OBJ_SMART_SUB_ID_ADD,
+ EVAS_OBJ_SMART_SUB_ID_DEL,
+ EVAS_OBJ_SMART_SUB_ID_RESIZE,
+ EVAS_OBJ_SMART_SUB_ID_MOVE,
+ EVAS_OBJ_SMART_SUB_ID_SHOW,
+ EVAS_OBJ_SMART_SUB_ID_HIDE,
+ EVAS_OBJ_SMART_SUB_ID_COLOR_SET,
+ EVAS_OBJ_SMART_SUB_ID_CLIP_SET,
+ EVAS_OBJ_SMART_SUB_ID_CLIP_UNSET,
+ EVAS_OBJ_SMART_SUB_ID_LAST
+};
+
+#define EVAS_OBJ_SMART_ID(sub_id) (EVAS_OBJ_SMART_BASE_ID + sub_id)
+
+/**
+ * @def evas_obj_smart_data_set
+ *
+ * Store a pointer to user data for a given smart object.
+ *
+ * @param[in] data in
+ *
+ * @see evas_object_smart_data_set
+ */
+#define evas_obj_smart_data_set(data) EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DATA_SET), EO_TYPECHECK(void *, data)
+
+/**
+ * @def evas_obj_smart_smart_get
+ *
+ * Get the #Evas_Smart from which smart object was created.
+ *
+ * @param[out] smart out
+ *
+ * @see evas_object_smart_smart_get
+ */
+#define evas_obj_smart_smart_get(smart) EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_SMART_GET), EO_TYPECHECK(Evas_Smart **, smart)
+
+/**
+ * @def evas_obj_smart_member_add
+ *
+ * Set an Evas object as a member of a given smart object.
+ *
+ * @param[in] obj in
+ *
+ * @see evas_object_smart_member_add
+ */
+#define evas_obj_smart_member_add(obj) EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_MEMBER_ADD), EO_TYPECHECK(Evas_Object *, obj)
+
+/**
+ * @def evas_obj_smart_member_del
+ *
+ * Removes a member object from a given smart object.
+ *
+ * @param[in] obj in
+ *
+ * @see evas_object_smart_member_del
+ */
+#define evas_obj_smart_member_del(obj) EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_MEMBER_DEL), EO_TYPECHECK(Evas_Object *, obj)
+
+/**
+ * @def evas_obj_smart_members_get
+ *
+ * Retrieves the list of the member objects of a given Evas smart
+ * object
+ *
+ * @param[out] list out
+ *
+ * @see evas_object_smart_members_get
+ */
+#define evas_obj_smart_members_get(list) EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_MEMBERS_GET), EO_TYPECHECK(Eina_List **, list)
+
+/**
+ * @def evas_obj_smart_callback_priority_add
+ *
+ * Add (register) a callback function to the smart event specified by
+ * @p event on the smart object. Except for the priority field,
+ * it's exactly the same as @ref evas_object_smart_callback_add
+ *
+ * @param[in] event in
+ * @param[in] priority in
+ * @param[in] func in
+ * @param[in] data in
+ *
+ * @see evas_object_smart_callback_priority_add
+ */
+#define evas_obj_smart_callback_priority_add(event, priority, func, data) EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CALLBACK_PRIORITY_ADD), EO_TYPECHECK(const char *, event), EO_TYPECHECK(Evas_Callback_Priority, priority), EO_TYPECHECK(Evas_Smart_Cb, func), EO_TYPECHECK(const void *, data)
+
+/**
+ * @def evas_obj_smart_callback_del
+ *
+ * Delete (unregister) a callback function from the smart event
+ * specified by @p event on the smart object.
+ *
+ * @param[in] event in
+ * @param[in] func in
+ * @param[out] ret_data out
+ *
+ * @see evas_object_smart_callback_del
+ */
+#define evas_obj_smart_callback_del(event, func, ret_data) EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CALLBACK_DEL), EO_TYPECHECK(const char *, event), EO_TYPECHECK(Evas_Smart_Cb, func), EO_TYPECHECK(void **, ret_data)
+
+/**
+ * @def evas_obj_smart_callback_del_full
+ *
+ * Delete (unregister) a callback function from the smart event
+ * specified by @p event on the smart object.
+ *
+ * @param[in] event in
+ * @param[in] func in
+ * @param[in] data in
+ * @param[out] ret_data out
+ *
+ * @see evas_object_smart_callback_del_full
+ */
+#define evas_obj_smart_callback_del_full(event, func, data, ret_data) EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CALLBACK_DEL_FULL), EO_TYPECHECK(const char *, event), EO_TYPECHECK(Evas_Smart_Cb, func), EO_TYPECHECK(const void *, data), EO_TYPECHECK(void **, ret_data)
+
+/**
+ * @def evas_obj_smart_callback_call
+ *
+ * Call a given smart callback on the smart object.
+ *
+ * @param[in] event
+ * @param[in] event_info
+ *
+ * @see evas_object_smart_callback_call
+ */
+#define evas_obj_smart_callback_call(event, event_info) EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CALLBACK_CALL), EO_TYPECHECK(const char *, event), EO_TYPECHECK(void *, event_info)
+
+/**
+ * @def evas_obj_smart_callbacks_descriptions_set
+ *
+ * Set an smart object @b instance's smart callbacks descriptions.
+ *
+ * @param[in] descriptions in
+ * @param[out] result out
+ *
+ * @see evas_object_smart_callbacks_descriptions_set
+ */
+#define evas_obj_smart_callbacks_descriptions_set(descriptions, result) EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CALLBACKS_DESCRIPTIONS_SET), EO_TYPECHECK(const Evas_Smart_Cb_Description *, descriptions), EO_TYPECHECK(Eina_Bool *, result)
+
+/**
+ * @def evas_obj_smart_callbacks_descriptions_get
+ *
+ * Retrieve an smart object's know smart callback descriptions (both
+ * instance and class ones).
+ *
+ * @param[out] class_descriptions out
+ * @param[out] class_count out
+ * @param[out] instance_descriptions out
+ * @param[out] instance_count out
+ *
+ * @see evas_object_smart_callbacks_descriptions_get
+ */
+#define evas_obj_smart_callbacks_descriptions_get(class_descriptions, class_count, instance_descriptions, instance_count) EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CALLBACKS_DESCRIPTIONS_GET), EO_TYPECHECK(const Evas_Smart_Cb_Description ***, class_descriptions), EO_TYPECHECK(unsigned int *, class_count), EO_TYPECHECK(const Evas_Smart_Cb_Description ***, instance_descriptions), EO_TYPECHECK(unsigned int *, instance_count)
+
+/**
+ * @def evas_obj_smart_callback_description_find
+ *
+ * Find callback description for callback called @a name.
+ *
+ * @param[in] name in
+ * @param[out] class_description out
+ * @param[out] instance_description out
+ *
+ * @see evas_object_smart_callback_description_find
+ */
+#define evas_obj_smart_callback_description_find(name, class_description, instance_description) EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CALLBACK_DESCRIPTION_FIND), EO_TYPECHECK(const char *, name), EO_TYPECHECK(const Evas_Smart_Cb_Description **, class_description), EO_TYPECHECK(const Evas_Smart_Cb_Description **, instance_description)
+
+/**
+ * @def evas_obj_smart_need_recalculate_set
+ *
+ * Set or unset the flag signalling that a given smart object needs to
+ * get recalculated.
+ *
+ * @param[in] value in
+ *
+ * @see evas_object_smart_need_recalculate_set
+ */
+#define evas_obj_smart_need_recalculate_set(value) EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_NEED_RECALCULATE_SET), EO_TYPECHECK(Eina_Bool, value)
+
+/**
+ * @def evas_obj_smart_need_recalculate_get
+ *
+ * Get the value of the flag signalling that a given smart object needs to
+ * get recalculated.
+ *
+ * @param[out] need_recalculate out
+ *
+ * @see evas_object_smart_need_recalculate_get
+ */
+#define evas_obj_smart_need_recalculate_get(need_recalculate) EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_NEED_RECALCULATE_GET), EO_TYPECHECK(Eina_Bool *, need_recalculate)
+
+/**
+ * @def evas_obj_smart_calculate
+ *
+ * Call the @b calculate() smart function immediately on a given smart
+ * object.
+ *
+ * @see evas_object_smart_calculate
+ */
+#define evas_obj_smart_calculate() EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CALCULATE)
+
+/**
+ * @def evas_obj_smart_changed
+ *
+ * Mark smart object as changed, dirty.
+ *
+ * @see evas_object_smart_changed
+ */
+#define evas_obj_smart_changed() EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CHANGED)
+
+#define evas_obj_smart_add() EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_ADD)
+#define evas_obj_smart_del() EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL)
+#define evas_obj_smart_resize(w, h) EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_RESIZE), EO_TYPECHECK(Evas_Coord, w), EO_TYPECHECK(Evas_Coord, h)
+#define evas_obj_smart_move(x, y) EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_MOVE), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y)
+#define evas_obj_smart_show() EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_SHOW)
+#define evas_obj_smart_hide() EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_HIDE)
+#define evas_obj_smart_color_set(r, g, b, a) EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_COLOR_SET), EO_TYPECHECK(int, r), EO_TYPECHECK(int, g), EO_TYPECHECK(int, b), EO_TYPECHECK(int, a)
+#define evas_obj_smart_clip_set(clip) EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CLIP_SET), EO_TYPECHECK(Evas_Object *, clip)
+#define evas_obj_smart_clip_unset() EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CLIP_UNSET)
+
/**
* Free an #Evas_Smart struct
*
@@ -10942,6 +12121,17 @@ EAPI void evas_object_smart_move_children_relative(Evas_Object *obj, Eva
* @{
*/
+#define EVAS_OBJ_SMART_CLIPPED_CLASS evas_object_smart_clipped_eo_class_get()
+
+const Eo_Class *evas_object_smart_clipped_eo_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op EVAS_OBJ_SMART_CLIPPED_BASE_ID;
+
+enum
+{
+ EVAS_OBJ_SMART_CLIPPED_SUB_ID_LAST
+};
+
/**
* Every subclass should provide this at the beginning of their own
* data set with evas_object_smart_data_set().
@@ -11265,6 +12455,98 @@ struct _Evas_Object_Box_Option
Evas_Coord alloc_size;
}; /**< #Evas_Object_Box_Option struct fields */
+#define EVAS_OBJ_BOX_CLASS evas_object_box_class_get()
+
+const Eo_Class *evas_object_box_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op EVAS_OBJ_BOX_BASE_ID;
+
+enum
+{
+ EVAS_OBJ_BOX_SUB_ID_INTERNAL_APPEND,
+ EVAS_OBJ_BOX_SUB_ID_INTERNAL_PREPEND,
+ EVAS_OBJ_BOX_SUB_ID_INTERNAL_INSERT_BEFORE,
+ EVAS_OBJ_BOX_SUB_ID_INTERNAL_INSERT_AFTER,
+ EVAS_OBJ_BOX_SUB_ID_INTERNAL_INSERT_AT,
+ EVAS_OBJ_BOX_SUB_ID_INTERNAL_REMOVE,
+ EVAS_OBJ_BOX_SUB_ID_INTERNAL_REMOVE_AT,
+ EVAS_OBJ_BOX_SUB_ID_INTERNAL_OPTION_NEW,
+ EVAS_OBJ_BOX_SUB_ID_INTERNAL_OPTION_FREE,
+
+ EVAS_OBJ_BOX_SUB_ID_ADD_TO,
+ EVAS_OBJ_BOX_SUB_ID_LAYOUT_SET,
+ EVAS_OBJ_BOX_SUB_ID_LAYOUT_HORIZONTAL,
+ EVAS_OBJ_BOX_SUB_ID_LAYOUT_VERTICAL,
+ EVAS_OBJ_BOX_SUB_ID_LAYOUT_HOMOGENEOUS_HORIZONTAL,
+ EVAS_OBJ_BOX_SUB_ID_LAYOUT_HOMOGENEOUS_VERTICAL,
+ EVAS_OBJ_BOX_SUB_ID_LAYOUT_HOMOGENEOUS_MAX_SIZE_HORIZONTAL,
+ EVAS_OBJ_BOX_SUB_ID_LAYOUT_HOMOGENEOUS_MAX_SIZE_VERTICAL,
+ EVAS_OBJ_BOX_SUB_ID_LAYOUT_FLOW_HORIZONTAL,
+ EVAS_OBJ_BOX_SUB_ID_LAYOUT_FLOW_VERTICAL,
+ EVAS_OBJ_BOX_SUB_ID_LAYOUT_STACK,
+ EVAS_OBJ_BOX_SUB_ID_ALIGN_SET,
+ EVAS_OBJ_BOX_SUB_ID_ALIGN_GET,
+ EVAS_OBJ_BOX_SUB_ID_PADDING_SET,
+ EVAS_OBJ_BOX_SUB_ID_PADDING_GET,
+ EVAS_OBJ_BOX_SUB_ID_APPEND,
+ EVAS_OBJ_BOX_SUB_ID_PREPEND,
+ EVAS_OBJ_BOX_SUB_ID_INSERT_BEFORE,
+ EVAS_OBJ_BOX_SUB_ID_INSERT_AFTER,
+ EVAS_OBJ_BOX_SUB_ID_INSERT_AT,
+ EVAS_OBJ_BOX_SUB_ID_REMOVE,
+ EVAS_OBJ_BOX_SUB_ID_REMOVE_AT,
+ EVAS_OBJ_BOX_SUB_ID_REMOVE_ALL,
+ EVAS_OBJ_BOX_SUB_ID_ITERATOR_NEW,
+ EVAS_OBJ_BOX_SUB_ID_ACCESSOR_NEW,
+ EVAS_OBJ_BOX_SUB_ID_OPTION_PROPERTY_NAME_GET,
+ EVAS_OBJ_BOX_SUB_ID_OPTION_PROPERTY_ID_GET,
+ EVAS_OBJ_BOX_SUB_ID_OPTION_PROPERTY_VSET,
+ EVAS_OBJ_BOX_SUB_ID_OPTION_PROPERTY_VGET,
+ EVAS_OBJ_BOX_SUB_ID_LAST
+};
+
+#define EVAS_OBJ_BOX_ID(sub_id) (EVAS_OBJ_BOX_BASE_ID + sub_id)
+
+#define evas_obj_box_internal_append(child, option) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INTERNAL_APPEND), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(Evas_Object_Box_Option **, option)
+#define evas_obj_box_internal_prepend(child, option) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INTERNAL_PREPEND), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(Evas_Object_Box_Option **, option)
+#define evas_obj_box_internal_insert_before(child, reference, option) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INTERNAL_INSERT_BEFORE), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(const Evas_Object *, reference), EO_TYPECHECK(Evas_Object_Box_Option **, option)
+#define evas_obj_box_internal_insert_after(child, reference, option) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INTERNAL_INSERT_AFTER), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(const Evas_Object *, reference), EO_TYPECHECK(Evas_Object_Box_Option **, option)
+#define evas_obj_box_internal_insert_at(child, pos, option) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INTERNAL_INSERT_AT), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(unsigned int, pos), EO_TYPECHECK(Evas_Object_Box_Option **, option)
+#define evas_obj_box_internal_remove(child, result) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INTERNAL_REMOVE), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(Evas_Object **, result)
+#define evas_obj_box_internal_remove_at(pos, result) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INTERNAL_REMOVE_AT), EO_TYPECHECK(unsigned int, pos), EO_TYPECHECK(Evas_Object **, result)
+#define evas_obj_box_internal_option_new(child, ret) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INTERNAL_OPTION_NEW), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(Evas_Object_Box_Option **, ret)
+#define evas_obj_box_internal_option_free(opt) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INTERNAL_OPTION_FREE), EO_TYPECHECK(Evas_Object_Box_Option *, opt)
+
+#define evas_obj_box_add_to(o) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_ADD_TO), EO_TYPECHECK(Evas_Object **, o)
+#define evas_obj_box_layout_set(cb, data, free_data) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_SET), EO_TYPECHECK(Evas_Object_Box_Layout, cb), EO_TYPECHECK(const void *, data), EO_TYPECHECK(Eina_Free_Cb, free_data)
+#define evas_obj_box_layout_horizontal() EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_HORIZONTAL)
+#define evas_obj_box_layout_vertical() EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_VERTICAL)
+#define evas_obj_box_layout_homogeneous_horizontal() EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_HOMOGENEOUS_HORIZONTAL)
+#define evas_obj_box_layout_homogeneous_vertical() EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_HOMOGENEOUS_VERTICAL)
+#define evas_obj_box_layout_homogeneous_max_size_horizontal() EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_HOMOGENEOUS_MAX_SIZE_HORIZONTAL)
+#define evas_obj_box_layout_homogeneous_max_size_vertical() EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_HOMOGENEOUS_MAX_SIZE_VERTICAL)
+#define evas_obj_box_layout_flow_horizontal() EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_FLOW_HORIZONTAL)
+#define evas_obj_box_layout_flow_vertical() EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_FLOW_VERTICAL)
+#define evas_obj_box_layout_stack() EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_STACK)
+#define evas_obj_box_align_set(horizontal, vertical) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_ALIGN_SET), EO_TYPECHECK(double, horizontal), EO_TYPECHECK(double, vertical)
+#define evas_obj_box_align_get(horizontal, vertical) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_ALIGN_GET), EO_TYPECHECK(double *, horizontal), EO_TYPECHECK(double *, vertical)
+#define evas_obj_box_padding_set(horizontal, vertical) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_PADDING_SET), EO_TYPECHECK(Evas_Coord, horizontal), EO_TYPECHECK(Evas_Coord, vertical)
+#define evas_obj_box_padding_get(horizontal, vertical) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_PADDING_GET), EO_TYPECHECK(Evas_Coord *, horizontal), EO_TYPECHECK(Evas_Coord *, vertical)
+#define evas_obj_box_append(child, option) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_APPEND), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(Evas_Object_Box_Option **, option)
+#define evas_obj_box_prepend(child, option) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_PREPEND), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(Evas_Object_Box_Option **, option)
+#define evas_obj_box_insert_before(child, reference, option) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INSERT_BEFORE), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(const Evas_Object *, reference), EO_TYPECHECK(Evas_Object_Box_Option **, option)
+#define evas_obj_box_insert_after(child, reference, option) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INSERT_AFTER), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(const Evas_Object *, reference), EO_TYPECHECK(Evas_Object_Box_Option **, option)
+#define evas_obj_box_insert_at(child, pos, option) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INSERT_AT), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(unsigned int, pos), EO_TYPECHECK(Evas_Object_Box_Option **, option)
+#define evas_obj_box_remove(child, result) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_REMOVE), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(Eina_Bool *, result)
+#define evas_obj_box_remove_at(pos, result) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_REMOVE_AT), EO_TYPECHECK(unsigned int, pos), EO_TYPECHECK(Eina_Bool *, result)
+#define evas_obj_box_remove_all(clear, result) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_REMOVE_ALL), EO_TYPECHECK(Eina_Bool, clear), EO_TYPECHECK(Eina_Bool *, result)
+#define evas_obj_box_iterator_new(itr) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_ITERATOR_NEW), EO_TYPECHECK(Eina_Iterator **, itr)
+#define evas_obj_box_accessor_new(accessor) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_ACCESSOR_NEW), EO_TYPECHECK(Eina_Accessor **, accessor)
+#define evas_obj_box_option_property_name_get(property, name) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_OPTION_PROPERTY_NAME_GET), EO_TYPECHECK(int, property), EO_TYPECHECK(const char **, name)
+#define evas_obj_box_option_property_id_get(name, id) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_OPTION_PROPERTY_ID_GET), EO_TYPECHECK(const char *, name), EO_TYPECHECK(int *, id)
+#define evas_obj_box_option_property_vset(opt, property, args, ret) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_OPTION_PROPERTY_VSET), EO_TYPECHECK(Evas_Object_Box_Option *, opt), EO_TYPECHECK(int, property), EO_TYPECHECK(va_list, args), EO_TYPECHECK(Eina_Bool *, ret)
+#define evas_obj_box_option_property_vget(opt, property, args, ret) EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_OPTION_PROPERTY_VGET), EO_TYPECHECK(Evas_Object_Box_Option *, opt), EO_TYPECHECK(int, property), EO_TYPECHECK(va_list, args), EO_TYPECHECK(Eina_Bool *, ret)
+
/**
* Set the default box @a api struct (Evas_Object_Box_Api)
* with the default values. May be used to extend that API.
@@ -12009,6 +13291,54 @@ EAPI Eina_Bool evas_object_box_option_property_vget(const Evas_
* @{
*/
+#define EVAS_OBJ_TABLE_CLASS evas_object_table_class_get()
+
+const Eo_Class *evas_object_table_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op EVAS_OBJ_TABLE_BASE_ID;
+
+enum
+{
+ EVAS_OBJ_TABLE_SUB_ID_ADD_TO,
+ EVAS_OBJ_TABLE_SUB_ID_HOMOGENEOUS_SET,
+ EVAS_OBJ_TABLE_SUB_ID_HOMOGENEOUS_GET,
+ EVAS_OBJ_TABLE_SUB_ID_ALIGN_SET,
+ EVAS_OBJ_TABLE_SUB_ID_ALIGN_GET,
+ EVAS_OBJ_TABLE_SUB_ID_PADDING_SET,
+ EVAS_OBJ_TABLE_SUB_ID_PADDING_GET,
+ EVAS_OBJ_TABLE_SUB_ID_PACK_GET,
+ EVAS_OBJ_TABLE_SUB_ID_PACK,
+ EVAS_OBJ_TABLE_SUB_ID_UNPACK,
+ EVAS_OBJ_TABLE_SUB_ID_CLEAR,
+ EVAS_OBJ_TABLE_SUB_ID_COL_ROW_SIZE_GET,
+ EVAS_OBJ_TABLE_SUB_ID_ITERATOR_NEW,
+ EVAS_OBJ_TABLE_SUB_ID_ACCESSOR_NEW,
+ EVAS_OBJ_TABLE_SUB_ID_CHILDREN_GET,
+ EVAS_OBJ_TABLE_SUB_ID_MIRRORED_GET,
+ EVAS_OBJ_TABLE_SUB_ID_MIRRORED_SET,
+ EVAS_OBJ_TABLE_SUB_ID_LAST
+};
+
+#define EVAS_OBJ_TABLE_ID(sub_id) (EVAS_OBJ_TABLE_BASE_ID + sub_id)
+
+#define evas_obj_table_add_to(ret) EVAS_OBJ_TABLE_ID(EVAS_OBJ_TABLE_SUB_ID_ADD_TO), EO_TYPECHECK(Evas_Object **, ret)
+#define evas_obj_table_homogeneous_set(homogeneous) EVAS_OBJ_TABLE_ID(EVAS_OBJ_TABLE_SUB_ID_HOMOGENEOUS_SET), EO_TYPECHECK(Evas_Object_Table_Homogeneous_Mode, homogeneous)
+#define evas_obj_table_homogeneous_get(ret) EVAS_OBJ_TABLE_ID(EVAS_OBJ_TABLE_SUB_ID_HOMOGENEOUS_GET), EO_TYPECHECK(Evas_Object_Table_Homogeneous_Mode *, ret)
+#define evas_obj_table_align_set(horizontal, vertical) EVAS_OBJ_TABLE_ID(EVAS_OBJ_TABLE_SUB_ID_ALIGN_SET), EO_TYPECHECK(double, horizontal), EO_TYPECHECK(double, vertical)
+#define evas_obj_table_align_get(horizontal, vertical) EVAS_OBJ_TABLE_ID(EVAS_OBJ_TABLE_SUB_ID_ALIGN_GET), EO_TYPECHECK(double *, horizontal), EO_TYPECHECK(double *, vertical)
+#define evas_obj_table_padding_set(horizontal, vertical) EVAS_OBJ_TABLE_ID(EVAS_OBJ_TABLE_SUB_ID_PADDING_SET), EO_TYPECHECK(Evas_Coord, horizontal), EO_TYPECHECK(Evas_Coord, vertical)
+#define evas_obj_table_padding_get(horizontal, vertical) EVAS_OBJ_TABLE_ID(EVAS_OBJ_TABLE_SUB_ID_PADDING_GET), EO_TYPECHECK(Evas_Coord *, horizontal), EO_TYPECHECK(Evas_Coord *, vertical)
+#define evas_obj_table_pack_get(child, col, row, colspan, rowspan, ret) EVAS_OBJ_TABLE_ID(EVAS_OBJ_TABLE_SUB_ID_PACK_GET), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(unsigned short *, col), EO_TYPECHECK(unsigned short *, row), EO_TYPECHECK(unsigned short *, colspan), EO_TYPECHECK(unsigned short *, rowspan), EO_TYPECHECK(Eina_Bool *, ret)
+#define evas_obj_table_pack(child, col, row, colspan, rowspan, ret) EVAS_OBJ_TABLE_ID(EVAS_OBJ_TABLE_SUB_ID_PACK), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(unsigned short, col), EO_TYPECHECK(unsigned short, row), EO_TYPECHECK(unsigned short, colspan), EO_TYPECHECK(unsigned short, rowspan), EO_TYPECHECK(Eina_Bool *, ret)
+#define evas_obj_table_unpack(child, ret) EVAS_OBJ_TABLE_ID(EVAS_OBJ_TABLE_SUB_ID_UNPACK), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(Eina_Bool *, ret)
+#define evas_obj_table_clear(clear) EVAS_OBJ_TABLE_ID(EVAS_OBJ_TABLE_SUB_ID_CLEAR), EO_TYPECHECK(Eina_Bool, clear)
+#define evas_obj_table_col_row_size_get(cols, rows) EVAS_OBJ_TABLE_ID(EVAS_OBJ_TABLE_SUB_ID_COL_ROW_SIZE_GET), EO_TYPECHECK(int *, cols), EO_TYPECHECK(int *, rows)
+#define evas_obj_table_iterator_new(ret) EVAS_OBJ_TABLE_ID(EVAS_OBJ_TABLE_SUB_ID_ITERATOR_NEW), EO_TYPECHECK(Eina_Iterator **, ret)
+#define evas_obj_table_accessor_new(ret) EVAS_OBJ_TABLE_ID(EVAS_OBJ_TABLE_SUB_ID_ACCESSOR_NEW), EO_TYPECHECK(Eina_Accessor **, ret)
+#define evas_obj_table_children_get(ret) EVAS_OBJ_TABLE_ID(EVAS_OBJ_TABLE_SUB_ID_CHILDREN_GET), EO_TYPECHECK(Eina_List **, ret)
+#define evas_obj_table_mirrored_get(ret) EVAS_OBJ_TABLE_ID(EVAS_OBJ_TABLE_SUB_ID_MIRRORED_GET), EO_TYPECHECK(Eina_Bool *, ret)
+#define evas_obj_table_mirrored_set(mirrored) EVAS_OBJ_TABLE_ID(EVAS_OBJ_TABLE_SUB_ID_MIRRORED_SET), EO_TYPECHECK(Eina_Bool, mirrored)
+
/**
* @brief Create a new table.
*
@@ -12223,6 +13553,45 @@ EAPI Evas_Object *evas_object_table_child_get(const Evas_O
* @{
*/
+#define EVAS_OBJ_GRID_CLASS evas_object_grid_class_get()
+
+const Eo_Class *evas_object_grid_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op EVAS_OBJ_GRID_BASE_ID;
+
+enum
+{
+ EVAS_OBJ_GRID_SUB_ID_ADD_TO,
+ EVAS_OBJ_GRID_SUB_ID_SIZE_SET,
+ EVAS_OBJ_GRID_SUB_ID_SIZE_GET,
+ EVAS_OBJ_GRID_SUB_ID_PACK,
+ EVAS_OBJ_GRID_SUB_ID_UNPACK,
+ EVAS_OBJ_GRID_SUB_ID_CLEAR,
+ EVAS_OBJ_GRID_SUB_ID_PACK_GET,
+ EVAS_OBJ_GRID_SUB_ID_ITERATOR_NEW,
+ EVAS_OBJ_GRID_SUB_ID_ACCESSOR_NEW,
+ EVAS_OBJ_GRID_SUB_ID_CHILDREN_GET,
+ EVAS_OBJ_GRID_SUB_ID_MIRRORED_GET,
+ EVAS_OBJ_GRID_SUB_ID_MIRRORED_SET,
+ EVAS_OBJ_GRID_SUB_ID_LAST
+};
+
+#define EVAS_OBJ_GRID_ID(sub_id) (EVAS_OBJ_GRID_BASE_ID + sub_id)
+
+#define evas_obj_grid_add(ret) EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_ADD), EO_TYPECHECK(Evas_Object **, ret)
+#define evas_obj_grid_add_to(ret) EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_ADD_TO), EO_TYPECHECK(Evas_Object **, ret)
+#define evas_obj_grid_size_set(w, h) EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_SIZE_SET), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
+#define evas_obj_grid_size_get(w, h) EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_SIZE_GET), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h)
+#define evas_obj_grid_pack(child, x, y, w, h, ret) EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_PACK), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h), EO_TYPECHECK(Eina_Bool *, ret)
+#define evas_obj_grid_unpack(child, ret) EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_UNPACK), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(Eina_Bool *, ret)
+#define evas_obj_grid_clear(clear) EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_CLEAR), EO_TYPECHECK(Eina_Bool, clear)
+#define evas_obj_grid_pack_get(child, x, y, w, h, ret) EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_PACK_GET), EO_TYPECHECK(Evas_Object *, child), EO_TYPECHECK(int *, x), EO_TYPECHECK(int *, y), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h), EO_TYPECHECK(Eina_Bool *, ret)
+#define evas_obj_grid_iterator_new(ret) EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_ITERATOR_NEW), EO_TYPECHECK(Eina_Iterator **, ret)
+#define evas_obj_grid_accessor_new(ret) EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_ACCESSOR_NEW), EO_TYPECHECK(Eina_Accessor **, ret)
+#define evas_obj_grid_children_get(ret) EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_CHILDREN_GET), EO_TYPECHECK(Eina_List **, ret)
+#define evas_obj_grid_mirrored_get(ret) EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_MIRRORED_GET), EO_TYPECHECK(Eina_Bool *, ret)
+#define evas_obj_grid_mirrored_set(mirrored) EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_MIRRORED_SET), EO_TYPECHECK(Eina_Bool, mirrored)
+
/**
* Create a new grid.
*
@@ -13215,6 +14584,1850 @@ EAPI Evas_Touch_Point_State evas_touch_point_list_nth_state_get(Evas *e, unsigne
* @}
*/
+#define EVAS_COMMON_CLASS evas_common_class_get()
+
+const Eo_Class *evas_common_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op EVAS_COMMON_BASE_ID;
+
+enum
+{
+ EVAS_COMMON_SUB_ID_EVAS_GET,
+ EVAS_COMMON_SUB_ID_LAST
+};
+
+#define EVAS_COMMON_ID(sub_id) (EVAS_COMMON_BASE_ID + sub_id)
+
+#define evas_common_evas_get(ret) EVAS_COMMON_ID(EVAS_COMMON_SUB_ID_EVAS_GET), EO_TYPECHECK(Evas **, ret)
+
+extern EAPI Eo_Op EVAS_OBJ_BASE_ID;
+
+enum
+{
+ EVAS_OBJ_SUB_ID_POSITION_SET,
+ EVAS_OBJ_SUB_ID_POSITION_GET,
+ EVAS_OBJ_SUB_ID_SIZE_SET,
+ EVAS_OBJ_SUB_ID_SIZE_GET,
+ EVAS_OBJ_SUB_ID_SIZE_HINT_MIN_SET,
+ EVAS_OBJ_SUB_ID_SIZE_HINT_MIN_GET,
+ EVAS_OBJ_SUB_ID_SIZE_HINT_MAX_SET,
+ EVAS_OBJ_SUB_ID_SIZE_HINT_MAX_GET,
+ EVAS_OBJ_SUB_ID_SIZE_HINT_REQUEST_SET,
+ EVAS_OBJ_SUB_ID_SIZE_HINT_REQUEST_GET,
+ EVAS_OBJ_SUB_ID_SIZE_HINT_ASPECT_SET,
+ EVAS_OBJ_SUB_ID_SIZE_HINT_ASPECT_GET,
+ EVAS_OBJ_SUB_ID_SIZE_HINT_ALIGN_SET,
+ EVAS_OBJ_SUB_ID_SIZE_HINT_ALIGN_GET,
+ EVAS_OBJ_SUB_ID_SIZE_HINT_WEIGHT_SET,
+ EVAS_OBJ_SUB_ID_SIZE_HINT_WEIGHT_GET,
+ EVAS_OBJ_SUB_ID_SIZE_HINT_PADDING_SET,
+ EVAS_OBJ_SUB_ID_SIZE_HINT_PADDING_GET,
+ EVAS_OBJ_SUB_ID_VISIBILITY_SET,
+ EVAS_OBJ_SUB_ID_VISIBILITY_GET,
+ EVAS_OBJ_SUB_ID_COLOR_SET,
+ EVAS_OBJ_SUB_ID_COLOR_GET,
+ EVAS_OBJ_SUB_ID_ANTI_ALIAS_SET,
+ EVAS_OBJ_SUB_ID_ANTI_ALIAS_GET,
+ EVAS_OBJ_SUB_ID_SCALE_SET,
+ EVAS_OBJ_SUB_ID_SCALE_GET,
+ EVAS_OBJ_SUB_ID_RENDER_OP_SET,
+ EVAS_OBJ_SUB_ID_RENDER_OP_GET,
+ EVAS_OBJ_SUB_ID_TYPE_SET,
+ EVAS_OBJ_SUB_ID_TYPE_GET,
+ EVAS_OBJ_SUB_ID_PRECISE_IS_INSIDE_SET,
+ EVAS_OBJ_SUB_ID_PRECISE_IS_INSIDE_GET,
+ EVAS_OBJ_SUB_ID_STATIC_CLIP_SET,
+ EVAS_OBJ_SUB_ID_STATIC_CLIP_GET,
+ EVAS_OBJ_SUB_ID_IS_FRAME_OBJECT_SET,
+ EVAS_OBJ_SUB_ID_IS_FRAME_OBJECT_GET,
+ EVAS_OBJ_SUB_ID_FREEZE_EVENTS_SET,
+ EVAS_OBJ_SUB_ID_FREEZE_EVENTS_GET,
+ EVAS_OBJ_SUB_ID_PASS_EVENTS_SET,
+ EVAS_OBJ_SUB_ID_PASS_EVENTS_GET,
+ EVAS_OBJ_SUB_ID_REPEAT_EVENTS_SET,
+ EVAS_OBJ_SUB_ID_REPEAT_EVENTS_GET,
+ EVAS_OBJ_SUB_ID_PROPAGATE_EVENTS_SET,
+ EVAS_OBJ_SUB_ID_PROPAGATE_EVENTS_GET,
+ EVAS_OBJ_SUB_ID_POINTER_MODE_SET,
+ EVAS_OBJ_SUB_ID_POINTER_MODE_GET,
+ EVAS_OBJ_SUB_ID_KEY_GRAB,
+ EVAS_OBJ_SUB_ID_KEY_UNGRAB,
+ EVAS_OBJ_SUB_ID_FOCUS_SET,
+ EVAS_OBJ_SUB_ID_FOCUS_GET,
+ EVAS_OBJ_SUB_ID_NAME_SET,
+ EVAS_OBJ_SUB_ID_NAME_GET,
+ EVAS_OBJ_SUB_ID_NAME_CHILD_FIND,
+ EVAS_OBJ_SUB_ID_LAYER_SET,
+ EVAS_OBJ_SUB_ID_LAYER_GET,
+ EVAS_OBJ_SUB_ID_CLIP_SET,
+ EVAS_OBJ_SUB_ID_CLIP_GET,
+ EVAS_OBJ_SUB_ID_CLIP_UNSET,
+ EVAS_OBJ_SUB_ID_CLIPEES_GET,
+ EVAS_OBJ_SUB_ID_MAP_ENABLE_SET,
+ EVAS_OBJ_SUB_ID_MAP_ENABLE_GET,
+ EVAS_OBJ_SUB_ID_MAP_SET,
+ EVAS_OBJ_SUB_ID_MAP_GET,
+ EVAS_OBJ_SUB_ID_SMART_PARENT_GET,
+ EVAS_OBJ_SUB_ID_SMART_DATA_GET,
+ EVAS_OBJ_SUB_ID_SMART_TYPE_CHECK,
+ EVAS_OBJ_SUB_ID_SMART_TYPE_CHECK_PTR,
+ EVAS_OBJ_SUB_ID_SMART_MOVE_CHILDREN_RELATIVE,
+ EVAS_OBJ_SUB_ID_SMART_CLIPPED_CLIPPER_GET,
+ EVAS_OBJ_SUB_ID_RAISE,
+ EVAS_OBJ_SUB_ID_LOWER,
+ EVAS_OBJ_SUB_ID_STACK_ABOVE,
+ EVAS_OBJ_SUB_ID_STACK_BELOW,
+ EVAS_OBJ_SUB_ID_ABOVE_GET,
+ EVAS_OBJ_SUB_ID_BELOW_GET,
+ EVAS_OBJ_SUB_ID_TYPE_CHECK,
+ EVAS_OBJ_SUB_ID_LAST
+};
+
+#define EVAS_OBJ_ID(sub_id) (EVAS_OBJ_BASE_ID + sub_id)
+
+/**
+ * @def evas_obj_position_set
+ *
+ * Move the given Evas object to the given location inside its
+ * canvas' viewport.
+ *
+ * @param[in] x in
+ * @param[in] y in
+ *
+ * @see evas_object_move
+ */
+#define evas_obj_position_set(x, y) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_POSITION_SET), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y)
+
+/**
+ * @def evas_obj_position_get
+ *
+ * Retrieves the position of the given Evas object.
+ *
+ * @param[out] x out
+ * @param[out] y out
+ *
+ * @see evas_object_geometry_get
+ */
+#define evas_obj_position_get(x, y) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_POSITION_GET), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y)
+
+/**
+ * @def evas_obj_size_set
+ * Changes the size of the given Evas object.
+ *
+ * @param w[in] in
+ * @param h[in] in
+ *
+ * @see evas_object_resize
+ */
+#define evas_obj_size_set(w, h) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SIZE_SET), EO_TYPECHECK(Evas_Coord, w), EO_TYPECHECK(Evas_Coord, h)
+
+/**
+ * @def evas_obj_size_get
+ *
+ * Retrieves the (rectangular) size of the given Evas object.
+ *
+ * @param[out] w out
+ * @param[out] h out
+ *
+ * @see evas_object_geometry_get
+ */
+#define evas_obj_size_get(w, h) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SIZE_GET), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h)
+
+/**
+ * @def evas_obj_size_hint_min_set
+ *
+ * Sets the hints for an object's minimum size.
+ *
+ * @param[in] w in
+ * @param[in] h in
+ *
+ * @see evas_object_size_hint_min_set
+ */
+#define evas_obj_size_hint_min_set(w, h) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SIZE_HINT_MIN_SET), EO_TYPECHECK(Evas_Coord, w), EO_TYPECHECK(Evas_Coord, h)
+
+/**
+ * @def evas_obj_size_hint_min_get
+ *
+ * Retrieves the hints for an object's minimum size.
+ *
+ * @param[out] w out
+ * @param[out] h out
+ *
+ * @see evas_object_size_hint_min_get
+ */
+#define evas_obj_size_hint_min_get(w, h) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SIZE_HINT_MIN_GET), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h)
+
+/**
+ * @def evas_obj_size_hint_max_set
+ *
+ * Sets the hints for an object's maximum size.
+ *
+ * @param[in] w in
+ * @param[in] h in
+ *
+ * @see evas_object_size_hint_max_set
+ */
+#define evas_obj_size_hint_max_set(w, h) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SIZE_HINT_MAX_SET), EO_TYPECHECK(Evas_Coord, w), EO_TYPECHECK(Evas_Coord, h)
+
+/**
+ * @def evas_obj_size_hint_max_get
+ *
+ * Retrieves the hints for an object's maximum size.
+ *
+ * @param[out] w out
+ * @param[out] h out
+ *
+ * @see evas_object_size_hint_max_get
+ */
+#define evas_obj_size_hint_max_get(w, h) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SIZE_HINT_MAX_GET), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h)
+
+/**
+ * @def evas_obj_size_hint_request_set
+ *
+ * Sets the hints for an object's optimum size.
+ *
+ * @param[in] w in
+ * @param[in] h in
+ *
+ * @see evas_object_size_hint_request_set
+ */
+#define evas_obj_size_hint_request_set(w, h) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SIZE_HINT_REQUEST_SET), EO_TYPECHECK(Evas_Coord, w), EO_TYPECHECK(Evas_Coord, h)
+
+/**
+ * @def evas_obj_size_hint_request_get
+ *
+ * Retrieves the hints for an object's optimum size.
+ *
+ * @param[out] w out
+ * @param[out] h out
+ *
+ * @see evas_object_size_hint_request_get
+ */
+#define evas_obj_size_hint_request_get(w, h) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SIZE_HINT_REQUEST_GET), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h)
+
+/**
+ * @def evas_obj_size_hint_aspect_set
+ *
+ * Sets the hints for an object's aspect ratio.
+ *
+ * @param[in] aspect in
+ * @param[in] w in
+ * @param[in] h in
+ *
+ * @see evas_object_size_hint_aspect_set
+ */
+#define evas_obj_size_hint_aspect_set(aspect, w, h) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SIZE_HINT_ASPECT_SET), EO_TYPECHECK(Evas_Aspect_Control, aspect), EO_TYPECHECK(Evas_Coord, w), EO_TYPECHECK(Evas_Coord, h)
+
+/**
+ * @def evas_obj_size_hint_aspect_get
+ *
+ * Retrieves the hints for an object's aspect ratio.
+ *
+ * @param[out] aspect out
+ * @param[out] w out
+ * @param[out] h out
+ *
+ * @see evas_object_size_hint_aspect_get
+ */
+#define evas_obj_size_hint_aspect_get(aspect, w, h) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SIZE_HINT_ASPECT_GET), EO_TYPECHECK(Evas_Aspect_Control *, aspect), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h)
+
+/**
+ * @def evas_obj_size_hint_align_set
+ *
+ * Sets the hints for an object's alignment.
+ *
+ * @param[in] x in
+ * @param[in] y in
+ *
+ * @see evas_object_size_hint_align_set
+ */
+#define evas_obj_size_hint_align_set(x, y) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SIZE_HINT_ALIGN_SET), EO_TYPECHECK(double, x), EO_TYPECHECK(double, y)
+
+/**
+ * @def evas_obj_size_hint_align_get
+ *
+ * Retrieves the hints for on object's alignment.
+ *
+ * @param[out] x out
+ * @param[out] y out
+ *
+ * @see evas_object_size_hint_align_get
+ */
+#define evas_obj_size_hint_align_get(x, y) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SIZE_HINT_ALIGN_GET), EO_TYPECHECK(double *, x), EO_TYPECHECK(double *, y)
+
+/**
+ * @def evas_obj_size_hint_weight_set
+ *
+ * Sets the hints for an object's weight.
+ *
+ * @param[in] x in
+ * @param[in] y in
+ *
+ * @see evas_object_size_hint_weight_set
+ */
+#define evas_obj_size_hint_weight_set(x, y) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SIZE_HINT_WEIGHT_SET), EO_TYPECHECK(double, x), EO_TYPECHECK(double, y)
+
+/**
+ * @def evas_obj_size_hint_weight_get
+ *
+ * Retrieves the hints for an object's weight.
+ *
+ * @param[out] x out
+ * @param[out] y out
+ *
+ * @see evas_object_size_hint_weight_get
+ */
+#define evas_obj_size_hint_weight_get(x, y) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SIZE_HINT_WEIGHT_GET), EO_TYPECHECK(double *, x), EO_TYPECHECK(double *, y)
+
+/**
+ * @def evas_obj_size_hint_padding_set
+ *
+ * Sets the hints for an object's padding space.
+ *
+ * @param[in] l in
+ * @param[in] r in
+ * @param[in] t in
+ * @param[in] b in
+ *
+ * @see evas_object_size_hint_padding_set
+ */
+#define evas_obj_size_hint_padding_set(l, r, t, b) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SIZE_HINT_PADDING_SET), EO_TYPECHECK(Evas_Coord, l), EO_TYPECHECK(Evas_Coord, r), EO_TYPECHECK(Evas_Coord, t), EO_TYPECHECK(Evas_Coord, b)
+
+/**
+ * @def evas_obj_size_hint_padding_get
+ *
+ * Retrieves the hints for an object's padding space.
+ *
+ * @param[out] l out
+ * @param[out] r out
+ * @param[out] t out
+ * @param[out] b out
+ *
+ * @see evas_object_size_hint_padding_get
+ */
+#define evas_obj_size_hint_padding_get(l, r, t, b) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SIZE_HINT_PADDING_GET), EO_TYPECHECK(Evas_Coord *, l), EO_TYPECHECK(Evas_Coord *, r), EO_TYPECHECK(Evas_Coord *, t), EO_TYPECHECK(Evas_Coord *, b)
+
+/**
+ * @def evas_obj_visibility_set
+ *
+ * Makes the given Evas object visible or invisible.
+ * @param[in] v @c EINA_TRUE if to make the object visible, @c EINA_FALSE
+ * otherwise.
+ *
+ * @see evas_object_show
+ * @see evas_object_hide
+ */
+#define evas_obj_visibility_set(v) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_VISIBILITY_SET), EO_TYPECHECK(Eina_Bool, v)
+
+/**
+ * @def evas_obj_visibility_get
+ *
+ * Retrieves whether or not the given Evas object is visible.
+ *
+ * @param[out] v @c EINA_TRUE if the object is visible, @c EINA_FALSE
+ * otherwise.
+ *
+ * @see evas_object_visible_get
+ */
+#define evas_obj_visibility_get(v) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_VISIBILITY_GET), EO_TYPECHECK(Eina_Bool *, v)
+
+/**
+ * @def evas_obj_color_set
+ *
+ * Sets the general/main color of the given Evas object to the given
+ * one.
+ *
+ * @param[in] r in
+ * @param[in] g in
+ * @param[in] b in
+ * @param[in] a in
+ *
+ * @see evas_object_color_set
+ */
+#define evas_obj_color_set(r, g, b, a) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_COLOR_SET), EO_TYPECHECK(int, r), EO_TYPECHECK(int, g), EO_TYPECHECK(int, b), EO_TYPECHECK(int, a)
+
+/**
+ * @def evas_obj_color_get
+ * Retrieves the general/main color of the given Evas object.
+ *
+ * @param r out
+ * @param g out
+ * @param b out
+ * @param a out
+ *
+ * @see evas_object_color_get
+ */
+#define evas_obj_color_get(r, g, b, a) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_COLOR_GET), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, g), EO_TYPECHECK(int *, b), EO_TYPECHECK(int *, a)
+
+/**
+ * @def evas_obj_anti_alias_set
+ *
+ * Sets whether or not the given Evas object is to be drawn anti-aliased.
+ *
+ * @param[in] anti_alias in
+ *
+ * @see evas_object_anti_alias_set
+ */
+#define evas_obj_anti_alias_set(anti_alias) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_ANTI_ALIAS_SET), EO_TYPECHECK(Eina_Bool, anti_alias)
+
+/**
+ * @def evas_obj_anti_alias_get
+ *
+ * Retrieves whether or not the given Evas object is to be drawn anti_aliased.
+ *
+ * @param[out] anti_alias out
+ *
+ * @see evas_object_anti_alias_get
+ */
+#define evas_obj_anti_alias_get(anti_alias) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_ANTI_ALIAS_GET), EO_TYPECHECK(Eina_Bool *, anti_alias)
+
+/**
+ * @def evas_obj_scale_set
+ *
+ * Sets the scaling factor for an Evas object. Does not affect all
+ * objects.
+ *
+ * @param[in] scale in
+ *
+ * @see evas_object_scale_set
+ */
+#define evas_obj_scale_set(scale) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SCALE_SET), EO_TYPECHECK(double, scale)
+
+/**
+ * @def evas_obj_scale_get
+ *
+ * Retrieves the scaling factor for the given Evas object.
+ *
+ * @param[out] scale out
+ *
+ * @see evas_object_scale_get
+ */
+#define evas_obj_scale_get(scale) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SCALE_GET), EO_TYPECHECK(double *, scale)
+
+/**
+ * @def evas_obj_render_op_set
+ *
+ * Sets the render_op to be used for rendering the Evas object.
+ *
+ * @param[in] render_op in
+ *
+ * @see evas_object_render_op_set
+ */
+#define evas_obj_render_op_set(render_op) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_RENDER_OP_SET), EO_TYPECHECK(Evas_Render_Op, render_op)
+
+/**
+ * @def evas_obj_render_op_get
+ *
+ * Retrieves the current value of the operation used for rendering the Evas object.
+ *
+ * @param[out] render_op
+ *
+ * @see evas_object_render_op_get
+ */
+#define evas_obj_render_op_get(render_op) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_RENDER_OP_GET), EO_TYPECHECK(Evas_Render_Op *, render_op)
+
+/**
+ * @def evas_obj_evas_get
+ * Retrieves the Evas canvas that the given object lives on.
+ *
+ * @param[out] out.
+ * @see evas_object_evas_get
+ */
+#define evas_obj_evas_get(evas) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_EVAS_GET), EO_TYPECHECK(Evas **, evas)
+
+/**
+ * @def evas_obj_type_get
+ * Retrieves the type of the given Evas object.
+ *
+ * @param[out] type out
+ * @see evas_object_type_get
+ */
+#define evas_obj_type_get(type) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_TYPE_GET), EO_TYPECHECK(const char **, type)
+
+/**
+ * @def evas_obj_type_set
+ * Sets the type of the given Evas object.
+ *
+ * @param[in] type in
+ */
+#define evas_obj_type_set(type) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_TYPE_SET), EO_TYPECHECK(const char *, type)
+
+/**
+ * @def evas_obj_precise_is_inside_set
+ *
+ * Set whether to use precise (usually expensive) point collision
+ * detection for a given Evas object.
+ *
+ * @param[in] precise in
+ *
+ * @see evas_object_precise_is_inside_set
+ */
+#define evas_obj_precise_is_inside_set(precise) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_PRECISE_IS_INSIDE_SET), EO_TYPECHECK(Eina_Bool, precise)
+
+/**
+ * @def evas_obj_precise_is_inside_get
+ *
+ * Determine whether an object is set to use precise point collision
+ * detection.
+ *
+ * @param[out] precise out
+ *
+ * @see evas_object_precise_is_inside_get
+ */
+#define evas_obj_precise_is_inside_get(precise) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_PRECISE_IS_INSIDE_GET), EO_TYPECHECK(Eina_Bool *, precise)
+
+/**
+ * @def evas_obj_static_clip_set
+ *
+ * Set a hint flag on the given Evas object that it's used as a "static
+ * clipper".
+ *
+ * @param[in] is_static_clip in
+ *
+ * @see evas_object_static_clip_set
+ */
+#define evas_obj_static_clip_set(is_static_clip) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_STATIC_CLIP_SET), EO_TYPECHECK(Eina_Bool, is_static_clip)
+
+/**
+ * @def evas_obj_static_clip_get
+ *
+ * Get the "static clipper" hint flag for a given Evas object.
+ *
+ * @param[out] is_static_clip out
+ *
+ * @see evas_object_static_clip_get
+ */
+#define evas_obj_static_clip_get(is_static_clip) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_STATIC_CLIP_GET), EO_TYPECHECK(Eina_Bool *, is_static_clip)
+
+/**
+ * @def evas_obj_is_frame_object_set
+ *
+ * @param[in] is_frame in
+ *
+ * @see evas_object_is_frame_object_set
+ */
+#define evas_obj_is_frame_object_set(is_frame) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_IS_FRAME_OBJECT_SET), EO_TYPECHECK(Eina_Bool, is_frame)
+
+/**
+ * @def evas_obj_is_frame_object_get
+ *
+ * @param[out] is_frame out
+ *
+ * @see evas_object_is_frame_object_get
+ */
+#define evas_obj_is_frame_object_get(is_frame) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_IS_FRAME_OBJECT_GET), EO_TYPECHECK(Eina_Bool *, is_frame)
+
+/**
+ * @def evas_obj_freeze_events_set
+ *
+ * Set whether an Evas object is to freeze (discard) events.
+ *
+ * @param[in] freeze in
+ *
+ * @see evas_object_freeze_events_set
+ */
+#define evas_obj_freeze_events_set(freeze) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_FREEZE_EVENTS_SET), EO_TYPECHECK(Eina_Bool, freeze)
+
+/**
+ * @def evas_obj_freeze_events_get
+ *
+ * Determine whether an object is set to freeze (discard) events.
+ *
+ * @param[out] freeze out
+ *
+ * @see evas_object_freeze_events_get
+ */
+#define evas_obj_freeze_events_get(freeze) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_FREEZE_EVENTS_GET), EO_TYPECHECK(Eina_Bool *, freeze)
+
+/**
+ * @def evas_obj_pass_events_set
+ *
+ * Set whether an Evas object is to pass (ignore) events.
+ *
+ * @param[in] pass in
+ *
+ * @see evas_object_pass_events_set
+ */
+#define evas_obj_pass_events_set(pass) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_PASS_EVENTS_SET), EO_TYPECHECK(Eina_Bool, pass)
+
+/**
+ * @def evas_obj_pass_events_get
+ *
+ * Determine whether an object is set to pass (ignore) events.
+ *
+ * @param[out] pass
+ *
+ * @see evas_object_pass_events_get
+ */
+#define evas_obj_pass_events_get(pass) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_PASS_EVENTS_GET), EO_TYPECHECK(Eina_Bool *, pass)
+
+/**
+ * @def evas_obj_repeat_events_set
+ *
+ * Set whether an Evas object is to repeat events.
+ *
+ * @param[in] repeat in
+ *
+ * @see evas_object_repeat_events_set
+ */
+#define evas_obj_repeat_events_set(repeat) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_REPEAT_EVENTS_SET), EO_TYPECHECK(Eina_Bool, repeat)
+
+/**
+ * @def evas_obj_repeat_events_get
+ *
+ * Determine whether an object is set to repeat events.
+ *
+ * @param[out] repeat out
+ *
+ * @see evas_object_repeat_events_get
+ */
+#define evas_obj_repeat_events_get(repeat) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_REPEAT_EVENTS_GET), EO_TYPECHECK(Eina_Bool *, repeat)
+
+/**
+ * @def evas_obj_propagate_events_set
+ *
+ * Set whether events on a smart object's member should get propagated
+ * up to its parent.
+ *
+ * @param[in] propagate in
+ * @see evas_object_propagate_events_set
+ */
+#define evas_obj_propagate_events_set(propagate) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_PROPAGATE_EVENTS_SET), EO_TYPECHECK(Eina_Bool, propagate)
+
+/**
+ * @def evas_obj_propagate_events_get
+ *
+ * Retrieve whether an Evas object is set to propagate events.
+ *
+ * @param[out] propagate out
+ *
+ * @see evas_object_propagate_events_get
+ */
+#define evas_obj_propagate_events_get(propagate) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_PROPAGATE_EVENTS_GET), EO_TYPECHECK(Eina_Bool *, propagate)
+
+/**
+ * @def evas_obj_pointer_mode_set
+ *
+ * Set pointer behavior.
+ *
+ * @param[in] setting in
+ *
+ * @see evas_object_pointer_mode_set
+ */
+#define evas_obj_pointer_mode_set(pointer_mode) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_POINTER_MODE_SET), EO_TYPECHECK(Evas_Object_Pointer_Mode, pointer_mode)
+
+/**
+ * @def evas_obj_pointer_mode_get
+ *
+ * Determine how pointer will behave.
+ *
+ * @param[out] setting out
+ *
+ * @see evas_object_pointer_mode_get
+ */
+#define evas_obj_pointer_mode_get(pointer_mode) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_POINTER_MODE_GET), EO_TYPECHECK(Evas_Object_Pointer_Mode *, pointer_mode)
+
+/**
+ * @def evas_obj_clip_set
+ * Clip one object to another.
+ *
+ * @parami[in] clip in
+ *
+ * @see evas_object_clip_set
+ */
+#define evas_obj_clip_set(clip) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_CLIP_SET), EO_TYPECHECK(Evas_Object *, clip)
+
+/**
+ * @def evas_obj_clip_get
+ * Get the object clipping @p obj (if any).
+ *
+ * @param[out] clip out
+ *
+ * @see evas_object_clip_get
+ */
+#define evas_obj_clip_get(clip) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_CLIP_GET), EO_TYPECHECK(Evas_Object **, clip)
+
+/**
+ * @def evas_obj_clip_unset
+ * Disable/cease clipping on a clipped @p obj object.
+ *
+ * @see evas_object_clip_unset
+ */
+#define evas_obj_clip_unset() EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_CLIP_UNSET)
+
+/**
+ * @def evas_obj_clipees_get
+ * Return a list of objects currently clipped by @p obj.
+ *
+ * @param[out] clipees out
+ *
+ * @see evas_object_clipees_get
+ */
+#define evas_obj_clipees_get(clipees) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_CLIPEES_GET), EO_TYPECHECK(const Eina_List **, clipees)
+
+/**
+ * @def evas_obj_focus_set
+ * Sets or unsets a given object as the currently focused one on its
+ * canvas.
+ * @param[in] focus in
+ *
+ * @see evas_object_focus_set
+ */
+#define evas_obj_focus_set(focus) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_FOCUS_SET), EO_TYPECHECK(Eina_Bool, focus)
+
+/**
+ * @def evas_obj_focus_get
+ * Retrieve whether an object has the focus.
+ *
+ * @param[out] focus out
+ *
+ * @see evas_object_focus_get
+ */
+#define evas_obj_focus_get(focus) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_FOCUS_GET), EO_TYPECHECK(Eina_Bool *, focus)
+
+/**
+ * @def evas_obj_name_set
+ * Sets the name of the given Evas object to the given name.
+ *
+ * @param[in] name in
+ *
+ * @see evas_object_name_set
+ */
+#define evas_obj_name_set(name) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_NAME_SET), EO_TYPECHECK(const char *, name)
+
+/**
+ * @def evas_obj_name_get
+ *
+ * Retrieves the name of the given Evas object.
+ *
+ * @param[out] name out
+ *
+ * @see evas_object_name_get
+ *
+ */
+#define evas_obj_name_get(name) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_NAME_GET), EO_TYPECHECK(const char **, name)
+
+/**
+ * @def evas_obj_name_child_find
+ *
+ * Retrieves the object from children of the given object with the given name.
+ * @param[in] name in
+ * @param[in] recurse in
+ * @param[out] child out
+ *
+ * @see evas_object_name_child_find
+ */
+#define evas_obj_name_child_find(name, recurse, child) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_NAME_CHILD_FIND), EO_TYPECHECK(const char *, name), EO_TYPECHECK(int, recurse), EO_TYPECHECK(Evas_Object **, child)
+
+/**
+ * @def evas_obj_key_grab
+ *
+ * Requests @p keyname key events be directed to the obj.
+ * @param[in] keyname in
+ * @param[in] modifiers in
+ * @param[in] not_modifiers in
+ * @param[in] exclusive in
+ * @param[out] ret out
+ *
+ * @see evas_object_key_grab
+ */
+#define evas_obj_key_grab(keyname, modifiers, not_modifiers, exclusive, ret) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_KEY_GRAB), EO_TYPECHECK(const char *, keyname), EO_TYPECHECK(Evas_Modifier_Mask, modifiers), EO_TYPECHECK(Evas_Modifier_Mask, not_modifiers), EO_TYPECHECK(Eina_Bool, exclusive), EO_TYPECHECK(Eina_Bool *, ret)
+
+/**
+ * @def evas_obj_key_ungrab
+ *
+ * Removes the grab on @p keyname key events by the obj.
+ *
+ * @param[in] keyname
+ * @param[in] modifiers
+ * @param[in] not_modifiers
+ *
+ * @see evas_object_key_ungrab
+ */
+#define evas_obj_key_ungrab(keyname, modifiers, not_modifiers) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_KEY_UNGRAB), EO_TYPECHECK(const char *, keyname), EO_TYPECHECK(Evas_Modifier_Mask, modifiers), EO_TYPECHECK(Evas_Modifier_Mask, not_modifiers)
+
+/**
+ * @def evas_obj_layer_set
+ * Sets the layer of the its canvas that the given object will be part
+ * of.
+ *
+ * @param[in] l in
+ *
+ * @see evas_object_layer_set()
+ */
+#define evas_obj_layer_set(l) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_LAYER_SET), EO_TYPECHECK(short, l)
+
+/**
+ * @def evas_obj_layer_get
+ * Retrieves the layer of its canvas that the given object is part of.
+ *
+ * @param Number of the its layer
+ */
+#define evas_obj_layer_get(l) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_LAYER_GET), EO_TYPECHECK(short *, l)
+
+/**
+ * @def evas_obj_map_enable_set
+ *
+ * Enable or disable the map that is set.
+ *
+ * @param[in] enabled in
+ *
+ * @see evas_object_map_enable_set
+ */
+#define evas_obj_map_enable_set(enabled) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_MAP_ENABLE_SET), EO_TYPECHECK(Eina_Bool, enabled)
+
+/**
+ * @def evas_obj_map_enable_get
+ *
+ * Get the map enabled state
+ *
+ * @param[out] enabled out
+ *
+ * @see evas_object_map_enable_get
+ */
+#define evas_obj_map_enable_get(enabled) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_MAP_ENABLE_GET), EO_TYPECHECK(Eina_Bool *, enabled)
+
+/**
+ * @def evas_obj_map_source_set
+ *
+ * Set the map source object
+ *
+ * @param[in] source in
+ *
+ * @see evas_object_map_source_set
+ */
+#define evas_obj_map_source_set(source) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_MAP_SOURCE_SET), EO_TYPECHECK(Evas_Object *, source)
+
+/**
+ * @def evas_obj_map_source_get
+ *
+ * Get the map source object
+ *
+ * @param[out] source out
+ *
+ * @see evas_object_map_source_get
+ */
+#define evas_obj_map_source_get(source) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_MAP_SOURCE_GET), EO_TYPECHECK(Evas_Object **, source)
+
+/**
+ * @def evas_obj_map_set
+ *
+ * Set current object transformation map.
+ *
+ * @param[in] map in
+ *
+ * @see evas_object_map_set
+ */
+#define evas_obj_map_set(map) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_MAP_SET), EO_TYPECHECK(const Evas_Map *, map)
+
+/**
+ * @def evas_obj_map_get
+ *
+ * Get current object transformation map.
+ *
+ * @param[out] map out
+ *
+ * @see evas_object_map_get
+ */
+#define evas_obj_map_get(map) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_MAP_GET), EO_TYPECHECK(const Evas_Map **, map)
+
+/**
+ * @def evas_obj_smart_parent_get
+ *
+ * Gets the parent smart object of a given Evas object, if it has one.
+ *
+ * @param[out] smart_parent out
+ *
+ * @see evas_object_smart_parent_get
+ */
+#define evas_obj_smart_parent_get(smart_parent) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SMART_PARENT_GET), EO_TYPECHECK(Evas_Object **, smart_parent)
+/**
+ * @def evas_obj_smart_data_get
+ *
+ * Retrieve user data stored on a given smart object.
+ *
+ * @param[out] data out
+ *
+ * @see evas_object_smart_data_get
+ */
+#define evas_obj_smart_data_get(data) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SMART_DATA_GET), EO_TYPECHECK(void **, data)
+
+/**
+ * @def evas_obj_smart_type_check
+ *
+ * Checks whether a given smart object or any of its smart object
+ * parents is of a given smart class.
+ *
+ * @param[in] type in
+ * @param[out] type_check out
+ *
+ * @see evas_object_smart_type_check
+ */
+#define evas_obj_smart_type_check(type, type_check) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SMART_TYPE_CHECK), EO_TYPECHECK(const char *, type), EO_TYPECHECK(Eina_Bool *, type_check)
+
+/**
+ * @def evas_obj_smart_type_check_ptr
+ *
+ * Checks whether a given smart object or any of its smart object
+ * parents is of a given smart class, <b>using pointer comparison</b>.
+ *
+ * @param[in] type in
+ * @param[out] type_check out
+ *
+ * @see evas_object_smart_type_check_ptr
+ */
+#define evas_obj_smart_type_check_ptr(type, type_check) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SMART_TYPE_CHECK_PTR), EO_TYPECHECK(const char *, type), EO_TYPECHECK(Eina_Bool *, type_check)
+
+/**
+ * @def evas_obj_smart_move_children_relative
+ *
+ * Moves all children objects of a given smart object relative to a
+ * given offset.
+ *
+ * @param[in] dx in
+ * @param[in] dy in
+ *
+ * @see evas_object_smart_move_children_relative
+ */
+#define evas_obj_smart_move_children_relative(dx, dy) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SMART_MOVE_CHILDREN_RELATIVE), EO_TYPECHECK(Evas_Coord, dx), EO_TYPECHECK(Evas_Coord, dy)
+
+/**
+ * @def evas_obj_smart_clipped_clipper_get
+ *
+ * Get the clipper object for the given clipped smart object.
+ *
+ * @param[out] ret out
+ *
+ * @see evas_object_smart_clipped_clipper_get
+ */
+#define evas_obj_smart_clipped_clipper_get(ret) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SMART_CLIPPED_CLIPPER_GET), EO_TYPECHECK(Evas_Object **, ret)
+
+/**
+ * @def evas_obj_raise
+ *
+ * Raise obj to the top of its layer.
+ *
+ * @see evas_object_raise
+ */
+#define evas_obj_raise() EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_RAISE)
+
+/**
+ * @def evas_obj_lower
+ *
+ * Lower obj to the bottom of its layer.
+ *
+ * @see evas_object_lower
+ */
+#define evas_obj_lower() EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_LOWER)
+
+/**
+ * @def evas_obj_stack_above
+ *
+ * Stack the object immediately above @p above
+ *
+ * @param[in] above in
+ *
+ * @see evas_object_stack_above
+ */
+#define evas_obj_stack_above(above) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_STACK_ABOVE), EO_TYPECHECK(Evas_Object *, above)
+
+/**
+ * @def evas_obj_stack_below
+ *
+ * Stack the object immediately below @p below
+ *
+ * @param[in] below in
+ *
+ * @see evas_object_stack_below
+ */
+#define evas_obj_stack_below(below) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_STACK_BELOW), EO_TYPECHECK(Evas_Object *, below)
+
+/**
+ * @def evas_obj_above_get
+ *
+ * Get the Evas object stacked right above the object
+ *
+ * @param[out] ret out
+ *
+ * @see evas_object_above_get
+ */
+#define evas_obj_above_get(ret) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_ABOVE_GET), EO_TYPECHECK(Evas_Object **, ret)
+
+/**
+ * @def evas_obj_below_get
+ *
+ * Get the Evas object stacked right below the object
+ *
+ * @param[out] ret out
+ *
+ * @see evas_object_below_get
+ */
+#define evas_obj_below_get(ret) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_BELOW_GET), EO_TYPECHECK(Evas_Object **, ret)
+
+/**
+ * @def evas_obj_type_check
+ *
+ * Checks whether a given object is of a given class.
+ *
+ * @param[in] type in
+ * @param[out] type_check out
+ *
+ * This function has been implemented to support legacy smart inheritance
+ * and needs to be removed when all the objects are Eo objects (inc. Edje and ELM)
+ * @see evas_object_smart_type_check
+ */
+#define evas_obj_type_check(type, type_check) EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_TYPE_CHECK), EO_TYPECHECK(const char *, type), EO_TYPECHECK(Eina_Bool *, type_check)
+
+#define EVAS_OBJ_CLASS evas_object_class_get()
+
+const Eo_Class *evas_object_class_get(void) EINA_CONST;
+
+#define EVAS_OBJ_IMAGE_CLASS evas_object_image_class_get()
+const Eo_Class *evas_object_image_class_get(void) EINA_CONST;
+
+extern EAPI Eo_Op EVAS_OBJ_IMAGE_BASE_ID;
+
+enum
+{
+ EVAS_OBJ_IMAGE_SUB_ID_MEMFILE_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_FILE_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_FILE_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_SOURCE_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_SOURCE_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_BORDER_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_BORDER_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_BORDER_CENTER_FILL_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_BORDER_CENTER_FILL_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_FILLED_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_FILLED_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_BORDER_SCALE_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_BORDER_SCALE_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_FILL_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_FILL_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_FILL_SPREAD_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_FILL_SPREAD_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_SIZE_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_SIZE_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_STRIDE_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_LOAD_ERROR_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_DATA_CONVERT,
+ EVAS_OBJ_IMAGE_SUB_ID_DATA_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_DATA_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_PRELOAD,
+ EVAS_OBJ_IMAGE_SUB_ID_DATA_COPY_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_DATA_UPDATE_ADD,
+ EVAS_OBJ_IMAGE_SUB_ID_ALPHA_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_ALPHA_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_SMOOTH_SCALE_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_SMOOTH_SCALE_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_RELOAD,
+ EVAS_OBJ_IMAGE_SUB_ID_SAVE,
+ EVAS_OBJ_IMAGE_SUB_ID_PIXELS_IMPORT,
+ EVAS_OBJ_IMAGE_SUB_ID_PIXELS_GET_CALLBACK_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_PIXELS_DIRTY_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_PIXELS_DIRTY_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_LOAD_DPI_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_LOAD_DPI_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_LOAD_SIZE_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_LOAD_SIZE_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_LOAD_SCALE_DOWN_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_LOAD_SCALE_DOWN_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_LOAD_REGION_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_LOAD_REGION_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_LOAD_ORIENTATION_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_LOAD_ORIENTATION_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_COLORSPACE_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_COLORSPACE_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_VIDEO_SURFACE_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_VIDEO_SURFACE_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_NATIVE_SURFACE_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_NATIVE_SURFACE_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_SCALE_HINT_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_SCALE_HINT_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_CONTENT_HINT_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_CONTENT_HINT_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_REGION_SUPPORT_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_FRAME_COUNT_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_LOOP_TYPE_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_LOOP_COUNT_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_FRAME_DURATION_GET,
+ EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_FRAME_SET,
+ EVAS_OBJ_IMAGE_SUB_ID_LAST
+};
+
+#define EVAS_OBJ_IMAGE_ID(sub_id) (EVAS_OBJ_IMAGE_BASE_ID + sub_id)
+
+/**
+ * @def evas_obj_image_memfile_set
+ *
+ * Sets the data for an image from memory to be loaded
+ *
+ * @param[in] data in
+ * @param[in] size in
+ * @param[in] format in
+ * @param[in] key in
+ *
+ * @see evas_object_image_memfile_set
+ */
+#define evas_obj_image_memfile_set(data, size, format, key) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_MEMFILE_SET), EO_TYPECHECK(void *, data), EO_TYPECHECK(int, size), EO_TYPECHECK(char *, format), EO_TYPECHECK(char *, key)
+
+/**
+ * @def evas_obj_image_file_set
+ *
+ * Set the source file from where an image object must fetch the real
+ * image data (it may be an Eet file, besides pure image ones).
+ *
+ * @param[in] file in
+ * @param[in] key in
+ *
+ * @see evas_object_image_file_set
+ */
+#define evas_obj_image_file_set(file, key) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_FILE_SET), EO_TYPECHECK(const char *, file), EO_TYPECHECK(const char*, key)
+
+/**
+ * @def evas_obj_image_file_get
+ *
+ * This is the same as evas_object_image_file_set() but the file to be loaded
+ * may exist at an address in memory (the data for the file, not the filename
+ * itself). The @p data at the address is copied and stored for future use, so
+ * no @p data needs to be kept after this call is made. It will be managed and
+ * freed for you when no longer needed. The @p size is limited to 2 gigabytes
+ * in size, and must be greater than 0. A @c NULL @p data pointer is also
+ * invalid. Set the filename to @c NULL to reset to empty state and have the
+ * image file data freed from memory using evas_object_image_file_set().
+ *
+ * @param[in] file out
+ * @param[in] key out
+ *
+ * @see evas_object_image_file_get
+ */
+#define evas_obj_image_file_get(file, key) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_FILE_GET), EO_TYPECHECK(const char **, file), EO_TYPECHECK(const char **, key)
+
+/**
+ * @def evas_obj_image_source_set
+ *
+ * Set the source object on an image object to used as a @b proxy.
+ *
+ * @param[in] src in
+ * @param[out] result out
+ *
+ * @see evas_object_image_source_set
+ */
+#define evas_obj_image_source_set(src, result) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_SOURCE_SET), EO_TYPECHECK(Evas_Object *, src), EO_TYPECHECK(Eina_Bool *, result)
+
+/**
+ * @def evas_obj_image_source_get
+ *
+ * Get the current source object of an image object.
+ *
+ * @param[out] src out
+ *
+ * @see evas_object_image_source_get
+ */
+#define evas_obj_image_source_get(src) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_SOURCE_GET), EO_TYPECHECK(Evas_Object **, src)
+
+/**
+ * @def evas_obj_image_border_set
+ *
+ * Set the dimensions for an image object's border, a region which @b
+ * won't ever be scaled together with its center.
+ *
+ * @param[in] l in
+ * @param[in] r in
+ * @param[in] t in
+ * @param[in] b in
+ *
+ * @see evas_object_image_border_set
+ */
+#define evas_obj_image_border_set(l, r, t, b) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_BORDER_SET), EO_TYPECHECK(int, l), EO_TYPECHECK(int, r), EO_TYPECHECK(int, t), EO_TYPECHECK(int, b)
+
+/**
+ * @def evas_obj_image_border_get
+ *
+ * Retrieve the dimensions for an image object's border, a region
+ * which @b won't ever be scaled together with its center.
+ *
+ * @param[out] l in
+ * @param[out] r in
+ * @param[out] t in
+ * @param[out] b in
+ *
+ * @see evas_object_image_border_get
+ */
+#define evas_obj_image_border_get(l, r, t, b) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_BORDER_GET), EO_TYPECHECK(int *, l), EO_TYPECHECK(int *, r), EO_TYPECHECK(int *, t), EO_TYPECHECK(int *, b)
+
+/**
+ * @def evas_obj_image_border_center_fill_set
+ *
+ * Sets @b how the center part of the given image object (not the
+ * borders) should be drawn when Evas is rendering it.
+ *
+ * @param[in] fill in
+ *
+ * @see evas_object_image_border_center_fill_set
+ */
+#define evas_obj_image_border_center_fill_set(fill) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_BORDER_CENTER_FILL_SET), EO_TYPECHECK(Evas_Border_Fill_Mode, fill)
+
+/**
+ * @def evas_obj_image_border_center_fill_get
+ *
+ * Retrieves @b how the center part of the given image object (not the
+ * borders) is to be drawn when Evas is rendering it.
+ *
+ * @param[out] fill out
+ *
+ * @see evas_object_image_border_center_fill_get
+ */
+#define evas_obj_image_border_center_fill_get(fill) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_BORDER_CENTER_FILL_GET), EO_TYPECHECK(Evas_Border_Fill_Mode *, fill)
+
+/**
+ * @def evas_obj_image_filled_set
+ *
+ * Set whether the image object's fill property should track the
+ * object's size.
+ *
+ * @param[in] filled in
+ *
+ * @see evas_object_image_filled_set
+ */
+#define evas_obj_image_filled_set(filled) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_FILLED_SET), EO_TYPECHECK(Eina_Bool, filled)
+
+/**
+ * @def evas_obj_image_filled_get
+ *
+ * Retrieve whether the image object's fill property should track the
+ * object's size.
+ *
+ * @param[out] filled out
+ *
+ * @see evas_object_image_filled_get
+ */
+#define evas_obj_image_filled_get(filled) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_FILLED_GET), EO_TYPECHECK(Eina_Bool *, filled)
+
+/**
+ * @def evas_obj_image_border_scale_set
+ *
+ * Sets the scaling factor (multiplier) for the borders of an image
+ * object.
+ *
+ * @param[in] scale in
+ *
+ * @see evas_object_image_border_scale_set
+ */
+#define evas_obj_image_border_scale_set(scale) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_BORDER_SCALE_SET), EO_TYPECHECK(double, scale)
+
+/**
+ * @def evas_obj_image_border_scale_get
+ *
+ * Retrieves the scaling factor (multiplier) for the borders of an
+ * image object.
+ *
+ * @param[out] scale out
+ *
+ * @see evas_object_image_border_scale_get
+ */
+#define evas_obj_image_border_scale_get(scale) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_BORDER_SCALE_GET), EO_TYPECHECK(double *, scale)
+
+/**
+ * @def evas_obj_image_fill_set
+ *
+ * Set how to fill an image object's drawing rectangle given the
+ * (real) image bound to it.
+ *
+ * @param[in] x in
+ * @param[in] y in
+ * @param[in] w in
+ * @param[in] h in
+ *
+ * @see evas_object_image_fill_set
+ */
+#define evas_obj_image_fill_set(x, y, w, h) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_FILL_SET), EO_TYPECHECK(Evas_Coord, x), EO_TYPECHECK(Evas_Coord, y), EO_TYPECHECK(Evas_Coord, w), EO_TYPECHECK(Evas_Coord, h)
+
+/**
+ * @def evas_obj_image_fill_get
+ *
+ * Retrieve how an image object is to fill its drawing rectangle,
+ * given the (real) image bound to it.
+ *
+ * @param[out] x out
+ * @param[out] y out
+ * @param[out] w out
+ * @param[out] h out
+ *
+ * @see evas_object_image_fill_get
+ */
+#define evas_obj_image_fill_get(x, y, w, h) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_FILL_GET), EO_TYPECHECK(Evas_Coord *, x), EO_TYPECHECK(Evas_Coord *, y), EO_TYPECHECK(Evas_Coord *, w), EO_TYPECHECK(Evas_Coord *, h)
+
+/**
+ * @def evas_obj_image_fill_spread_set
+ *
+ * Sets the tiling mode for the given evas image object's fill.
+ *
+ * @param[in] spread in
+ *
+ * @see evas_object_image_fill_spread_set
+ */
+#define evas_obj_image_fill_spread_set(spread) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_FILL_SPREAD_SET), EO_TYPECHECK(Evas_Fill_Spread, spread)
+
+/**
+ * @def evas_obj_image_fill_spread_get
+ *
+ * Retrieves the spread (tiling mode) for the given image object's
+ * fill.
+ *
+ * @param[out] spread out
+ *
+ * @see evas_object_image_fill_spread_get
+ */
+#define evas_obj_image_fill_spread_get(spread) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_FILL_SPREAD_GET), EO_TYPECHECK(Evas_Fill_Spread *, spread)
+
+/**
+ * @def evas_obj_image_size_set
+ *
+ * Sets the size of the given image object.
+ *
+ * @param[in] w in
+ * @param[in] h in
+ *
+ * @see evas_object_image_size_set
+ */
+#define evas_obj_image_size_set(w, h) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_SIZE_SET), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
+
+/**
+ * @def evas_obj_image_size_get
+ *
+ * Retrieves the size of the given image object.
+ *
+ * @param[out] w out
+ * @param[out] h out
+ *
+ * @see evas_object_image_size_get
+ */
+#define evas_obj_image_size_get(w, h) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_SIZE_GET), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h)
+
+/**
+ * @def evas_obj_image_stride_get
+ *
+ * Retrieves the row stride of the given image object.
+ *
+ * @param[out] stride out
+ *
+ * @see evas_object_image_stride_get
+ */
+#define evas_obj_image_stride_get(stride) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_STRIDE_GET), EO_TYPECHECK(int *, stride)
+
+/**
+ * @de evas_obj_image_load_error_get
+ *
+ * Retrieves a number representing any error that occurred during the
+ * last loading of the given image object's source image.
+ *
+ * @param[out] load_error out
+ *
+ * @see evas_object_image_load_error_get
+ */
+#define evas_obj_image_load_error_get(load_error) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_ERROR_GET), EO_TYPECHECK(Evas_Load_Error *, load_error)
+
+/**
+ * @def evas_obj_image_data_convert
+ *
+ * Converts the raw image data of the given image object to the
+ * specified colorspace.
+ *
+ * @param[in] cspace in
+ * @param[out] data out
+ *
+ * @see evas_object_image_data_convert
+ */
+#define evas_obj_image_data_convert(to_cspace, data) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_DATA_CONVERT), EO_TYPECHECK(Evas_Colorspace, to_cspace), EO_TYPECHECK(void **, data)
+
+/**
+ * @def evas_obj_image_data_set
+ *
+ * Sets the raw image data of the given image object.
+ *
+ * @param[in] data in
+ *
+ * @see evas_object_image_data_set
+ */
+#define evas_obj_image_data_set(data) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_DATA_SET), EO_TYPECHECK(void *, data)
+
+/**
+ * @def evas_obj_image_data_get
+ *
+ * Get a pointer to the raw image data of the given image object.
+ *
+ * @param[in] for_writing in
+ * @param[out] data out
+ *
+ * @see evas_object_image_data_get
+ */
+#define evas_obj_image_data_get(for_writing, data) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_DATA_GET), EO_TYPECHECK(Eina_Bool, for_writing), EO_TYPECHECK(void **, data)
+
+/**
+ * @def evas_obj_image_data_copy_set
+ *
+ * Replaces the raw image data of the given image object.
+ *
+ * @param[in] data in
+ *
+ * @see evas_object_image_data_copy_set
+ */
+#define evas_obj_image_data_copy_set(data) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_DATA_COPY_SET), EO_TYPECHECK(void *, data)
+
+/**
+ * @def evas_obj_image_data_update_add
+ *
+ * Mark a sub-region of the given image object to be redrawn.
+ *
+ * @param[in] x in
+ * @param[in] y in
+ * @param[in] r in
+ * @param[in] h in
+ *
+ * @see evas_object_image_data_update_add
+ */
+#define evas_obj_image_data_update_add(x, y, w, h) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_DATA_UPDATE_ADD), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
+
+/**
+ * @def evas_obj_image_alpha_set
+ *
+ * Enable or disable alpha channel usage on the given image object.
+ *
+ * @param[in] alpha in
+ *
+ * @see evas_object_image_alpha_set
+ */
+#define evas_obj_image_alpha_set(alpha) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_ALPHA_SET), EO_TYPECHECK(Eina_Bool, alpha)
+
+/**
+ * @def evas_obj_image_alpha_get
+ *
+ * Retrieve whether alpha channel data is being used on the given
+ * image object.
+ *
+ * @param[out] alpha out
+ *
+ * @see evas_object_image_alpha_get
+ */
+#define evas_obj_image_alpha_get(alpha) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_ALPHA_GET), EO_TYPECHECK(Eina_Bool *, alpha)
+
+/**
+ * @def evas_obj_image_smooth_scale_set
+ *
+ * Sets whether to use high-quality image scaling algorithm on the
+ * given image object.
+ *
+ * @param[in] smooth_scale in
+ *
+ * @see evas_object_image_smooth_scale_set
+ */
+#define evas_obj_image_smooth_scale_set(smooth_scale) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_SMOOTH_SCALE_SET), EO_TYPECHECK(Eina_Bool, smooth_scale)
+
+/**
+ * @def evas_obj_image_smooth_scale_get
+ *
+ * Retrieves whether the given image object is using high-quality
+ * image scaling algorithm.
+ *
+ * @param[out] smooth_scale out
+ *
+ * @see evas_object_image_smooth_scale_get
+ */
+#define evas_obj_image_smooth_scale_get(smooth_scale) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_SMOOTH_SCALE_GET), EO_TYPECHECK(Eina_Bool *, smooth_scale)
+
+/**
+ * @def evas_obj_image_preload
+ *
+ * Preload an image object's image data in the background
+ *
+ * @param[in] cancel in
+ *
+ * @see evas_object_image_preload
+ */
+#define evas_obj_image_preload(cancel) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_PRELOAD), EO_TYPECHECK(Eina_Bool, cancel)
+
+/**
+ * @def evas_obj_image_reload
+ *
+ * Reload an image object's image data.
+ *
+ * @see evas_object_image_reload
+ */
+#define evas_obj_image_reload() EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_RELOAD)
+
+/**
+ * @def evas_obj_image_save
+ *
+ * Save the given image object's contents to an (image) file.
+ *
+ * @param[in] file in
+ * @param[in] key in
+ * @param[in] flags in
+ * @param[out] result out
+ *
+ * @see evas_object_image_save
+ */
+#define evas_obj_image_save(file, key, flags, result) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_SAVE), EO_TYPECHECK(const char *, file), EO_TYPECHECK(const char *, key), EO_TYPECHECK(const char *, flags), EO_TYPECHECK(Eina_Bool *, result)
+
+/**
+ * @def evas_obj_image_pixels_import
+ *
+ * Import pixels from given source to a given canvas image object.
+ *
+ * @param[in] pixels in
+ * @param[out] result out
+ *
+ * @see evas_object_image_pixels_import
+ */
+#define evas_obj_image_pixels_import(pixels, result) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_PIXELS_IMPORT), EO_TYPECHECK(Evas_Pixel_Import_Source *, pixels), EO_TYPECHECK(Eina_Bool *, result)
+
+/**
+ * @def evas_obj_image_pixels_get_callback_set
+ *
+ * Set the callback function to get pixels from a canvas' image.
+ *
+ * @param[in] func in
+ * @param[in] data in
+ *
+ * @see evas_object_image_pixels_get_callback_set
+ */
+#define evas_obj_image_pixels_get_callback_set(func, data) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_PIXELS_GET_CALLBACK_SET), EO_TYPECHECK(Evas_Object_Image_Pixels_Get_Cb, func), EO_TYPECHECK(void *, data)
+
+/**
+ * @def evas_obj_image_pixels_dirty_set
+ *
+ * Mark whether the given image object is dirty (needs to be redrawn).
+ *
+ * @param[in] dirty in
+ *
+ * @see evas_object_image_pixels_get_callback_set
+ */
+#define evas_obj_image_pixels_dirty_set(dirty) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_PIXELS_DIRTY_SET), EO_TYPECHECK(Eina_Bool, dirty)
+
+/**
+ * @def evas_obj_image_pixels_dirty_get
+ *
+ * Retrieves whether the given image object is dirty (needs to be redrawn).
+ *
+ * @param[out] dirty out
+ *
+ * @see evas_object_image_pixels_dirty_get
+ */
+#define evas_obj_image_pixels_dirty_get(dirty) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_PIXELS_DIRTY_GET), EO_TYPECHECK(Eina_Bool *, dirty)
+
+/**
+ * @def evas_obj_image_load_dpi_set
+ *
+ * Set the DPI resolution of an image object's source image.
+ *
+ * @param[in] dpi in
+ *
+ * @see evas_object_image_load_dpi_set
+ */
+#define evas_obj_image_load_dpi_set(dpi) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_DPI_SET), EO_TYPECHECK(double, dpi)
+
+/**
+ * @def evas_obj_image_load_dpi_get
+ *
+ * Get the DPI resolution of a loaded image object in the canvas.
+ *
+ * @param[out] dpi out
+ *
+ * @see evas_object_image_load_dpi_get
+ */
+#define evas_obj_image_load_dpi_get(dpi) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_DPI_GET), EO_TYPECHECK(double *, dpi)
+
+/**
+ * @def evas_obj_image_load_size_set
+ *
+ * Set the size of a given image object's source image, when loading
+ * it.
+ *
+ * @param[in] w in
+ * @param[in] h in
+ *
+ * @see evas_object_image_load_size_set
+ */
+#define evas_obj_image_load_size_set(w, h) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_SIZE_SET), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
+
+/**
+ * @def evas_obj_image_load_size_get
+ *
+ * Get the size of a given image object's source image, when loading
+ * it.
+ *
+ * @param[out] w out
+ * @param[out] h out
+ *
+ * @see evas_object_image_load_size_get
+ */
+#define evas_obj_image_load_size_get(w, h) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_SIZE_GET), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h)
+
+/**
+ * @def evas_obj_image_load_scale_down_set
+ *
+ * Set the scale down factor of a given image object's source image,
+ * when loading it.
+ *
+ * @param[in] scale_down in
+ *
+ * @see evas_object_image_load_scale_down_set
+ */
+#define evas_obj_image_load_scale_down_set(scale_down) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_SCALE_DOWN_SET), EO_TYPECHECK(int, scale_down)
+
+/**
+ * @def evas_obj_image_load_scale_down_get
+ *
+ * Get the scale down factor of a given image object's source image,
+ * when loading it.
+ *
+ * @param[out] scale_down out
+ *
+ * @see evas_object_image_load_scale_down_get
+ */
+#define evas_obj_image_load_scale_down_get(scale_down) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_SCALE_DOWN_GET), EO_TYPECHECK(int *, scale_down)
+
+/**
+ * @def evas_obj_image_load_region_set
+ *
+ * Inform a given image object to load a selective region of its
+ * source image.
+ *
+ * @param[in] x in
+ * @param[in] y in
+ * @param[in] w in
+ * @param[in] h in
+ *
+ * @see evas_object_image_load_region_set
+ */
+#define evas_obj_image_load_region_set(x, y, w, h) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_REGION_SET), EO_TYPECHECK(int, x), EO_TYPECHECK(int, y), EO_TYPECHECK(int, w), EO_TYPECHECK(int, h)
+
+/**
+ * Retrieve the coordinates of a given image object's selective
+ * (source image) load region.
+ *
+ * @param[out] x out
+ * @param[out] y out
+ * @param[out] w out
+ * @param[out] h out
+ *
+ * @see evas_object_image_load_region_get
+ */
+#define evas_obj_image_load_region_get(x, y, w, h) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_REGION_GET), EO_TYPECHECK(int *, x), EO_TYPECHECK(int *, y), EO_TYPECHECK(int *, w), EO_TYPECHECK(int *, h)
+
+/**
+ * @def evas_obj_image_load_orientation_set
+ *
+ * Define if the orientation information in the image file should be honored.
+ *
+ * @param[in] enable in
+ *
+ * @see evas_object_image_load_orientation_set
+ */
+#define evas_obj_image_load_orientation_set(enable) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_ORIENTATION_SET), EO_TYPECHECK(Eina_Bool, enable)
+
+/**
+ * @def evas_obj_image_load_orientation_get
+ *
+ * Get if the orientation information in the image file should be honored.
+ *
+ * @param[out] enable out
+ *
+ * @see evas_object_image_load_orientation_get
+ */
+#define evas_obj_image_load_orientation_get(enable) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_ORIENTATION_GET), EO_TYPECHECK(Eina_Bool *, enable)
+
+/**
+ * @def evas_obj_image_colorspace_set
+ *
+ * Set the colorspace of a given image of the canvas.
+ *
+ * @param[in] cspace in
+ *
+ * @see evas_object_image_colorspace_set
+ */
+#define evas_obj_image_colorspace_set(cspace) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_COLORSPACE_SET), EO_TYPECHECK(Evas_Colorspace, cspace)
+
+/**
+ * @def evas_obj_image_colorspace_get
+ *
+ * Get the colorspace of a given image of the canvas.
+ *
+ * @param[out] cspace out
+ *
+ * @see evas_object_image_colorspace_get
+ */
+#define evas_obj_image_colorspace_get(cspace) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_COLORSPACE_GET), EO_TYPECHECK(Evas_Colorspace *, cspace)
+
+/**
+ * @def evas_obj_image_video_surface_set
+ *
+ * Set the video surface linked to a given image of the canvas
+ *
+ * @param[in] surf in
+ *
+ * @see evas_object_image_video_surface_set
+ */
+#define evas_obj_image_video_surface_set(surf) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_VIDEO_SURFACE_SET), EO_TYPECHECK(Evas_Video_Surface *, surf)
+
+/**
+ * @def evas_obj_image_video_surface_get
+ *
+ * Get the video surface linked to a given image of the canvas
+ *
+ * @param[out] surf out
+ *
+ * @see evas_object_image_video_surface_get
+ */
+#define evas_obj_image_video_surface_get(surf) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_VIDEO_SURFACE_GET), EO_TYPECHECK(const Evas_Video_Surface **, surf)
+
+/**
+ * @def evas_obj_image_native_surface_set
+ *
+ * Set the native surface of a given image of the canvas
+ *
+ * @param[in] surf in
+ *
+ * @see evas_object_image_native_surface_set
+ */
+#define evas_obj_image_native_surface_set(surf) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_NATIVE_SURFACE_SET), EO_TYPECHECK(Evas_Native_Surface *, surf)
+
+/**
+ * @def evas_obj_image_native_surface_get
+ *
+ * Get the native surface of a given image of the canvas
+ *
+ * @param[out] surf out
+ *
+ * @see evas_object_image_native_surface_get
+ */
+#define evas_obj_image_native_surface_get(surf) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_NATIVE_SURFACE_GET), EO_TYPECHECK(Evas_Native_Surface **, surf)
+
+/**
+ * @def evas_obj_image_scale_hint_set
+ *
+ * Set the scale hint of a given image of the canvas.
+ *
+ * @param[in] hint in
+ *
+ * @see evas_object_image_scale_hint_set
+ */
+#define evas_obj_image_scale_hint_set(hint) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_SCALE_HINT_SET), EO_TYPECHECK(Evas_Image_Scale_Hint, hint)
+
+/**
+ * @def evas_obj_image_scale_hint_get
+ *
+ * Get the scale hint of a given image of the canvas.
+ *
+ * @param[out] hint out
+ *
+ * @see evas_object_image_scale_hint_get
+ */
+#define evas_obj_image_scale_hint_get(hint) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_SCALE_HINT_GET), EO_TYPECHECK(Evas_Image_Scale_Hint *, hint)
+
+/**
+ * @def evas_obj_image_content_hint_set
+ *
+ * Set the content hint setting of a given image object of the canvas.
+ *
+ * @param[in] hint in
+ *
+ * @see evas_object_image_content_hint_set
+ */
+#define evas_obj_image_content_hint_set(hint) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_CONTENT_HINT_SET), EO_TYPECHECK(Evas_Image_Content_Hint, hint)
+
+/**
+ * @def evas_obj_image_content_hint_get
+ *
+ * Get the content hint setting of a given image object of the canvas.
+ *
+ * @param[out] hint out
+ *
+ * @see evas_object_image_content_hint_get
+ */
+#define evas_obj_image_content_hint_get(hint) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_CONTENT_HINT_GET), EO_TYPECHECK(Evas_Image_Content_Hint *, hint)
+
+/**
+ * @def evas_obj_image_region_support_get
+ *
+ * Get the support state of a given image
+ *
+ * @param[out] region out
+ *
+ * @see evas_object_image_region_support_get
+ */
+#define evas_obj_image_region_support_get(region) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_REGION_SUPPORT_GET), EO_TYPECHECK(Eina_Bool *, region)
+
+/**
+ * @def evas_obj_image_animated_get
+ *
+ * Check if an image object can be animated (have multiple frames)
+ *
+ * @param[out] animated out
+ *
+ * @see evas_object_image_animated_get
+ */
+#define evas_obj_image_animated_get(animated) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_GET), EO_TYPECHECK(Eina_Bool *, animated)
+
+/**
+ * @def evas_obj_image_animated_frame_count_get
+ *
+ * Get the total number of frames of the image object.
+ *
+ * @param[out] frame_count out
+ *
+ * @see evas_object_image_animated_frame_count_get
+ */
+#define evas_obj_image_animated_frame_count_get(frame_count) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_FRAME_COUNT_GET), EO_TYPECHECK(int *, frame_count)
+
+/**
+ * @def evas_obj_image_animated_loop_type_get
+ *
+ * Get the kind of looping the image object does.
+ *
+ * @param[out] hint out
+ *
+ * @see evas_object_image_animated_loop_type_get
+ */
+#define evas_obj_image_animated_loop_type_get(hint) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_LOOP_TYPE_GET), EO_TYPECHECK(Evas_Image_Animated_Loop_Hint *, hint)
+
+/**
+ * @def evas_obj_image_animated_loop_count_get
+ *
+ * Get the number times the animation of the object loops.
+ *
+ * @param[out] loop_count out
+ *
+ * @see evas_object_image_animated_loop_count_get
+ */
+#define evas_obj_image_animated_loop_count_get(loop_count) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_LOOP_COUNT_GET), EO_TYPECHECK(int *, loop_count)
+
+/**
+ * @def evas_obj_image_animated_frame_duration_get
+ *
+ * Get the duration of a sequence of frames.
+ *
+ * @param[in] start_frame in
+ * @param[in] frame_num in
+ * @param[out] frame_duration out
+ *
+ * @see evas_object_image_animated_frame_duration_get
+ */
+#define evas_obj_image_animated_frame_duration_get(start_frame, frame_num, frame_duration) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_FRAME_DURATION_GET), EO_TYPECHECK(int, start_frame), EO_TYPECHECK(int, frame_num), EO_TYPECHECK(double *, frame_duration)
+
+/**
+ * @def evas_obj_image_animated_frame_set
+ *
+ * Set the frame to current frame of an image object
+ *
+ * @param[in] frame_index in
+ *
+ * @see evas_object_image_animated_frame_set
+ */
+#define evas_obj_image_animated_frame_set(frame_index) EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_FRAME_SET), EO_TYPECHECK(int, frame_index)
+
#ifdef __cplusplus
}
#endif
diff --git a/legacy/evas/src/lib/Makefile.am b/legacy/evas/src/lib/Makefile.am
index c6ceafb53c..fe44f3dcb0 100644
--- a/legacy/evas/src/lib/Makefile.am
+++ b/legacy/evas/src/lib/Makefile.am
@@ -171,6 +171,7 @@ AM_CPPFLAGS = \
@EET_CFLAGS@ \
@FONTCONFIG_CFLAGS@ \
@pthread_cflags@ \
+@EO_CFLAGS@ \
@PIXMAN_CFLAGS@
lib_LTLIBRARIES = libevas.la
@@ -209,6 +210,7 @@ engines/common/libevas_engine_common.la \
$(EVAS_STATIC_MODULE) \
$(EVAS_STATIC_LIBADD) \
@PIXMAN_LIBS@ \
+@EO_LIBS@ \
-lm
libevas_la_DEPENDENCIES = \
diff --git a/legacy/evas/src/lib/canvas/Makefile.am b/legacy/evas/src/lib/canvas/Makefile.am
index 2ed5c50ae4..b5c27408b8 100644
--- a/legacy/evas/src/lib/canvas/Makefile.am
+++ b/legacy/evas/src/lib/canvas/Makefile.am
@@ -20,8 +20,10 @@ AM_CPPFLAGS = \
noinst_LTLIBRARIES = libevas_canvas.la
libevas_canvas_la_SOURCES = \
+common_interfaces.c \
evas_callbacks.c \
evas_clip.c \
+evas_common_interface.c \
evas_data.c \
evas_device.c \
evas_events.c \
diff --git a/legacy/evas/src/lib/canvas/common_interfaces.c b/legacy/evas/src/lib/canvas/common_interfaces.c
new file mode 100644
index 0000000000..0246138f34
--- /dev/null
+++ b/legacy/evas/src/lib/canvas/common_interfaces.c
@@ -0,0 +1,271 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+#include "Eo.h"
+
+Eina_Hash* signals_hash_table = NULL;
+
+EAPI const Eo_Event_Description _CLICKED_EVENT =
+ EO_EVENT_DESCRIPTION("clicked", "");
+
+EAPI const Eo_Event_Description _CLICKED_DOUBLE_EVENT =
+ EO_EVENT_DESCRIPTION("clicked,double", "");
+
+EAPI const Eo_Event_Description _CLICKED_TRIPLE_EVENT =
+ EO_EVENT_DESCRIPTION("clicked,triple", "");
+
+EAPI const Eo_Event_Description _PRESSED_EVENT =
+ EO_EVENT_DESCRIPTION("pressed", "");
+
+EAPI const Eo_Event_Description _UNPRESSED_EVENT =
+ EO_EVENT_DESCRIPTION("unpressed", "");
+
+EAPI const Eo_Event_Description _LONGPRESSED_EVENT =
+ EO_EVENT_DESCRIPTION("longpressed", "");
+
+EAPI const Eo_Event_Description _REPEATED_EVENT =
+ EO_EVENT_DESCRIPTION("repeated", "");
+
+EAPI const Eo_Event_Description _SCROLL_EVENT =
+ EO_EVENT_DESCRIPTION("scroll", "");
+
+EAPI const Eo_Event_Description _SCROLL_ANIM_START_EVENT =
+ EO_EVENT_DESCRIPTION("scroll,anim,start", "");
+
+EAPI const Eo_Event_Description _SCROLL_ANIM_STOP_EVENT =
+ EO_EVENT_DESCRIPTION("scroll,anim,stop", "");
+
+EAPI const Eo_Event_Description _SCROLL_DRAG_START_EVENT =
+ EO_EVENT_DESCRIPTION("scroll,drag,start", "");
+
+EAPI const Eo_Event_Description _SCROLL_DRAG_STOP_EVENT =
+ EO_EVENT_DESCRIPTION("scroll,drag,stop", "");
+
+EAPI const Eo_Event_Description _ZOOM_START_EVENT =
+ EO_EVENT_DESCRIPTION("zoom,start", "");
+
+EAPI const Eo_Event_Description _ZOOM_STOP_EVENT =
+ EO_EVENT_DESCRIPTION("zoom,stop", "");
+
+EAPI const Eo_Event_Description _ZOOM_CHANGE_EVENT =
+ EO_EVENT_DESCRIPTION("zoom,changed", "");
+
+EAPI const Eo_Event_Description _SELECTED_EVENT =
+ EO_EVENT_DESCRIPTION("selected", "");
+
+EAPI const Eo_Event_Description _UNSELECTED_EVENT =
+ EO_EVENT_DESCRIPTION("unselected", "");
+
+EAPI const Eo_Event_Description _SELECTION_PASTE_EVENT =
+ EO_EVENT_DESCRIPTION("selection,paste", "");
+
+EAPI const Eo_Event_Description _SELECTION_COPY_EVENT =
+ EO_EVENT_DESCRIPTION("selection,copy", "");
+
+EAPI const Eo_Event_Description _SELECTION_CUT_EVENT =
+ EO_EVENT_DESCRIPTION("selection,cut", "");
+
+EAPI const Eo_Event_Description _SELECTION_START_EVENT =
+ EO_EVENT_DESCRIPTION("selection,start", "");
+
+EAPI const Eo_Event_Description _SELECTION_CHANGED_EVENT =
+ EO_EVENT_DESCRIPTION("selection,changed", "");
+
+EAPI const Eo_Event_Description _SELECTION_CLEARED_EVENT =
+ EO_EVENT_DESCRIPTION("selection,cleared", "");
+
+EAPI const Eo_Event_Description _DRAG_EVENT =
+ EO_EVENT_DESCRIPTION("drag", "");
+
+EAPI const Eo_Event_Description _DRAG_START_EVENT =
+ EO_EVENT_DESCRIPTION("drag,start", "");
+
+EAPI const Eo_Event_Description _DRAG_STOP_EVENT =
+ EO_EVENT_DESCRIPTION("drag,stop", "");
+
+EAPI const Eo_Event_Description _DRAG_END_EVENT =
+ EO_EVENT_DESCRIPTION("drag,end", "");
+
+EAPI const Eo_Event_Description _DRAG_START_UP_EVENT =
+ EO_EVENT_DESCRIPTION("drag,start,up", "");
+
+EAPI const Eo_Event_Description _DRAG_START_DOWN_EVENT =
+ EO_EVENT_DESCRIPTION("drag,start,down", "");
+
+EAPI const Eo_Event_Description _DRAG_START_RIGHT_EVENT =
+ EO_EVENT_DESCRIPTION("drag,start,right", "");
+
+EAPI const Eo_Event_Description _DRAG_START_LEFT_EVENT =
+ EO_EVENT_DESCRIPTION("drag,start,left", "");
+
+static const Eo_Event_Description *_clickable_events_desc[] = {
+ EVAS_SMART_CLICKED_EVENT,
+ EVAS_SMART_CLICKED_DOUBLE_EVENT,
+ EVAS_SMART_CLICKED_TRIPLE_EVENT,
+ EVAS_SMART_PRESSED_EVENT,
+ EVAS_SMART_UNPRESSED_EVENT,
+ EVAS_SMART_LONGPRESSED_EVENT,
+ EVAS_SMART_REPEATED_EVENT,
+ NULL
+};
+
+static const Eo_Event_Description *_scrollable_events_desc[] = {
+ EVAS_SMART_SCROLL_EVENT,
+ EVAS_SMART_SCROLL_ANIM_START_EVENT,
+ EVAS_SMART_SCROLL_ANIM_STOP_EVENT,
+ EVAS_SMART_SCROLL_DRAG_START_EVENT,
+ EVAS_SMART_SCROLL_DRAG_STOP_EVENT,
+ NULL
+};
+
+static const Eo_Event_Description *_zoomable_events_desc[] = {
+ EVAS_SMART_ZOOM_START_EVENT,
+ EVAS_SMART_ZOOM_STOP_EVENT,
+ EVAS_SMART_ZOOM_CHANGE_EVENT,
+ NULL
+};
+
+static const Eo_Event_Description *_selectable_events_desc[] = {
+ EVAS_SMART_SELECTED_EVENT,
+ EVAS_SMART_UNSELECTED_EVENT,
+ EVAS_SMART_SELECTION_PASTE_EVENT,
+ EVAS_SMART_SELECTION_COPY_EVENT,
+ EVAS_SMART_SELECTION_CUT_EVENT,
+ EVAS_SMART_SELECTION_START_EVENT,
+ EVAS_SMART_SELECTION_CHANGED_EVENT,
+ EVAS_SMART_SELECTION_CLEARED_EVENT,
+ NULL
+};
+
+static const Eo_Event_Description *_draggable_events_desc[] = {
+ EVAS_SMART_DRAG_EVENT,
+ EVAS_SMART_DRAG_START_EVENT,
+ EVAS_SMART_DRAG_STOP_EVENT,
+ EVAS_SMART_DRAG_END_EVENT,
+ EVAS_SMART_DRAG_START_UP_EVENT,
+ EVAS_SMART_DRAG_START_DOWN_EVENT,
+ EVAS_SMART_DRAG_START_RIGHT_EVENT,
+ EVAS_SMART_DRAG_START_LEFT_EVENT,
+ NULL
+};
+
+#define ADD_SIGNAL(name, event) eina_hash_add(signals_hash_table, name, event)
+#define ADD_INTERFACE_SIGNALS(events_desc) \
+ do \
+ { \
+ int i = 0; \
+ while (events_desc[i]) { \
+ _Evas_Event_Description *desc = calloc(1, sizeof(*desc)); \
+ desc->eo_desc = (Eo_Event_Description *)events_desc[i]; \
+ desc->is_desc_allocated = EINA_FALSE; \
+ ADD_SIGNAL(events_desc[i]->name, desc); \
+ i++; \
+ } \
+ } \
+ while (0);
+
+static void
+_signal_interface_del(void *data)
+{
+ _Evas_Event_Description *desc = data;
+ if (desc->is_desc_allocated) free(desc->eo_desc);
+ free(desc);
+}
+
+static void
+_signal_interface_constructor(Eo_Class *klass EINA_UNUSED)
+{
+ signals_hash_table = eina_hash_string_superfast_new(_signal_interface_del);
+ ADD_INTERFACE_SIGNALS(_clickable_events_desc);
+ ADD_INTERFACE_SIGNALS(_scrollable_events_desc);
+ ADD_INTERFACE_SIGNALS(_zoomable_events_desc);
+ ADD_INTERFACE_SIGNALS(_selectable_events_desc);
+ ADD_INTERFACE_SIGNALS(_draggable_events_desc);
+}
+#undef ADD_INTERFACE_SIGNALS
+#undef ADD_SIGNAL
+
+static void
+_signal_interface_destructor(Eo_Class *klass EINA_UNUSED)
+{
+ eina_hash_free(signals_hash_table);
+}
+
+static const Eo_Class_Description signal_interface_desc = {
+ EO_VERSION,
+ "Signal_Interface",
+ EO_CLASS_TYPE_INTERFACE,
+ EO_CLASS_DESCRIPTION_OPS(NULL, NULL, 0),
+ NULL,
+ 0,
+ _signal_interface_constructor,
+ _signal_interface_destructor
+};
+
+EO_DEFINE_CLASS(evas_smart_signal_interface_get, &signal_interface_desc, NULL, NULL);
+
+static const Eo_Class_Description clickable_interface_desc = {
+ EO_VERSION,
+ "Clickable_Interface",
+ EO_CLASS_TYPE_INTERFACE,
+ EO_CLASS_DESCRIPTION_OPS(NULL, NULL, 0),
+ _clickable_events_desc,
+ 0,
+ NULL,
+ NULL
+};
+
+EO_DEFINE_CLASS(evas_smart_clickable_interface_get, &clickable_interface_desc, EVAS_SMART_SIGNAL_INTERFACE, NULL);
+
+static const Eo_Class_Description scrollable_interface_desc = {
+ EO_VERSION,
+ "Scrollable_Interface",
+ EO_CLASS_TYPE_INTERFACE,
+ EO_CLASS_DESCRIPTION_OPS(NULL, NULL, 0),
+ _scrollable_events_desc,
+ 0,
+ NULL,
+ NULL
+};
+
+EO_DEFINE_CLASS(evas_smart_scrollable_interface_get, &scrollable_interface_desc, EVAS_SMART_SIGNAL_INTERFACE, NULL);
+
+static const Eo_Class_Description zoomable_interface_desc = {
+ EO_VERSION,
+ "Zoomable_Interface",
+ EO_CLASS_TYPE_INTERFACE,
+ EO_CLASS_DESCRIPTION_OPS(NULL, NULL, 0),
+ _zoomable_events_desc,
+ 0,
+ NULL,
+ NULL
+};
+
+EO_DEFINE_CLASS(evas_smart_zoomable_interface_get, &zoomable_interface_desc, EVAS_SMART_SIGNAL_INTERFACE, NULL);
+
+static const Eo_Class_Description selectable_interface_desc = {
+ EO_VERSION,
+ "Selectable_Interface",
+ EO_CLASS_TYPE_INTERFACE,
+ EO_CLASS_DESCRIPTION_OPS(NULL, NULL, 0),
+ _selectable_events_desc,
+ 0,
+ NULL,
+ NULL
+};
+
+EO_DEFINE_CLASS(evas_smart_selectable_interface_get, &selectable_interface_desc, EVAS_SMART_SIGNAL_INTERFACE, NULL);
+
+static const Eo_Class_Description draggable_interface_desc = {
+ EO_VERSION,
+ "Draggable_Interface",
+ EO_CLASS_TYPE_INTERFACE,
+ EO_CLASS_DESCRIPTION_OPS(NULL, NULL, 0),
+ _draggable_events_desc,
+ 0,
+ NULL,
+ NULL
+};
+
+EO_DEFINE_CLASS(evas_smart_draggable_interface_get, &draggable_interface_desc, EVAS_SMART_SIGNAL_INTERFACE, NULL);
+
diff --git a/legacy/evas/src/lib/canvas/evas_callbacks.c b/legacy/evas/src/lib/canvas/evas_callbacks.c
index dfd8099f94..faf84455e6 100644
--- a/legacy/evas/src/lib/canvas/evas_callbacks.c
+++ b/legacy/evas/src/lib/canvas/evas_callbacks.c
@@ -1,16 +1,125 @@
#include "evas_common.h"
#include "evas_private.h"
-static void evas_object_event_callback_clear(Evas_Object *obj);
-static void evas_event_callback_clear(Evas *e);
+static void evas_object_event_callback_clear(Evas_Object *eo_obj);
+static void evas_event_callback_clear(Evas *eo_e);
int _evas_event_counter = 0;
EVAS_MEMPOOL(_mp_fn);
EVAS_MEMPOOL(_mp_cb);
EVAS_MEMPOOL(_mp_pc);
+extern Eina_Hash* signals_hash_table;
+
+EAPI const Eo_Event_Description _EVAS_EVENT_MOUSE_IN =
+ EO_EVENT_DESCRIPTION("Mouse In", "Mouse In Event");
+EAPI const Eo_Event_Description _EVAS_EVENT_MOUSE_OUT =
+ EO_EVENT_DESCRIPTION("Mouse Out", "Mouse Out Event");
+EAPI const Eo_Event_Description _EVAS_EVENT_MOUSE_DOWN =
+ EO_EVENT_DESCRIPTION("Mouse Down", "Mouse Button Down Event");
+EAPI const Eo_Event_Description _EVAS_EVENT_MOUSE_UP =
+ EO_EVENT_DESCRIPTION("Mouse Up", "Mouse Button Up Event");
+EAPI const Eo_Event_Description _EVAS_EVENT_MOUSE_MOVE =
+ EO_EVENT_DESCRIPTION("Mouse Move", "Mouse Move Event");
+EAPI const Eo_Event_Description _EVAS_EVENT_MOUSE_WHEEL =
+ EO_EVENT_DESCRIPTION("Mouse Wheel", "Mouse Wheel Event");
+EAPI const Eo_Event_Description _EVAS_EVENT_MULTI_DOWN =
+ EO_EVENT_DESCRIPTION("Multi Down", "Mouse-touch Down Event");
+EAPI const Eo_Event_Description _EVAS_EVENT_MULTI_UP =
+ EO_EVENT_DESCRIPTION("Multi Up", "Mouse-touch Up Event");
+EAPI const Eo_Event_Description _EVAS_EVENT_MULTI_MOVE =
+ EO_EVENT_DESCRIPTION("Multi Move", "Multi-touch Move Event");
+EAPI const Eo_Event_Description _EVAS_EVENT_FREE =
+ EO_EVENT_DESCRIPTION("Free", "Object Being Freed (Called after Del)");
+EAPI const Eo_Event_Description _EVAS_EVENT_KEY_DOWN =
+ EO_EVENT_DESCRIPTION("Key Down", "Key Press Event");
+EAPI const Eo_Event_Description _EVAS_EVENT_KEY_UP =
+ EO_EVENT_DESCRIPTION("Key Up", "Key Release Event");
+EAPI const Eo_Event_Description _EVAS_EVENT_FOCUS_IN =
+ EO_EVENT_DESCRIPTION("Focus In", "Focus In Event");
+EAPI const Eo_Event_Description _EVAS_EVENT_FOCUS_OUT =
+ EO_EVENT_DESCRIPTION("Focus Out", "Focus Out Event");
+EAPI const Eo_Event_Description _EVAS_EVENT_SHOW =
+ EO_EVENT_DESCRIPTION("Show", "Show Event");
+EAPI const Eo_Event_Description _EVAS_EVENT_HIDE =
+ EO_EVENT_DESCRIPTION("Hide", "Hide Event");
+EAPI const Eo_Event_Description _EVAS_EVENT_MOVE =
+ EO_EVENT_DESCRIPTION("Move", "Move Event");
+EAPI const Eo_Event_Description _EVAS_EVENT_RESIZE =
+ EO_EVENT_DESCRIPTION("Resize", "Resize Event");
+EAPI const Eo_Event_Description _EVAS_EVENT_RESTACK =
+ EO_EVENT_DESCRIPTION("Restack", "Restack Event");
+EAPI const Eo_Event_Description _EVAS_EVENT_DEL =
+ EO_EVENT_DESCRIPTION("Del", "Object Being Deleted (called before Free)");
+EAPI const Eo_Event_Description _EVAS_EVENT_HOLD =
+ EO_EVENT_DESCRIPTION("Hold", "Events go on/off hold");
+EAPI const Eo_Event_Description _EVAS_EVENT_CHANGED_SIZE_HINTS =
+ EO_EVENT_DESCRIPTION("Changed Size Hints", "Size hints changed event");
+EAPI const Eo_Event_Description _EVAS_EVENT_IMAGE_PRELOADED =
+ EO_EVENT_DESCRIPTION("Image Preloaded", "Image has been preloaded");
+EAPI const Eo_Event_Description _EVAS_EVENT_IMAGE_RESIZE=
+ EO_EVENT_DESCRIPTION("Image Resize", "Image resize");
+EAPI const Eo_Event_Description _EVAS_EVENT_CANVAS_FOCUS_IN =
+ EO_EVENT_DESCRIPTION("Canvas Focus In", "Canvas got focus as a whole");
+EAPI const Eo_Event_Description _EVAS_EVENT_CANVAS_FOCUS_OUT =
+ EO_EVENT_DESCRIPTION("Canvas Focus Out", "Canvas lost focus as a whole");
+EAPI const Eo_Event_Description _EVAS_EVENT_RENDER_FLUSH_PRE =
+ EO_EVENT_DESCRIPTION("Render Flush Pre", "Called just before rendering is updated on the canvas target");
+EAPI const Eo_Event_Description _EVAS_EVENT_RENDER_FLUSH_POST =
+ EO_EVENT_DESCRIPTION("Render Flush Post", "Called just after rendering is updated on the canvas target");
+EAPI const Eo_Event_Description _EVAS_EVENT_CANVAS_OBJECT_FOCUS_IN =
+ EO_EVENT_DESCRIPTION("Canvas Object Focus In", "Canvas object got focus");
+EAPI const Eo_Event_Description _EVAS_EVENT_CANVAS_OBJECT_FOCUS_OUT =
+ EO_EVENT_DESCRIPTION("Canvas Object Focus Out", "Canvas object lost focus");
+EAPI const Eo_Event_Description _EVAS_EVENT_IMAGE_UNLOADED =
+ EO_EVENT_DESCRIPTION("Image Unloaded", "Image data has been unloaded (by some mechanism in Evas that throw out original image data)");
+EAPI const Eo_Event_Description _EVAS_EVENT_RENDER_PRE =
+ EO_EVENT_DESCRIPTION("Render Pre", "Called just before rendering starts on the canvas target @since 1.2");
+EAPI const Eo_Event_Description _EVAS_EVENT_RENDER_POST =
+ EO_EVENT_DESCRIPTION("Render Post", "Called just after rendering stops on the canvas target @since 1.2");
+
+/**
+ * Evas events descriptions for Eo.
+ */
+static const Eo_Event_Description *_legacy_evas_callback_table[EVAS_CALLBACK_LAST] =
+{
+ EVAS_EVENT_MOUSE_IN,
+ EVAS_EVENT_MOUSE_OUT,
+ EVAS_EVENT_MOUSE_DOWN,
+ EVAS_EVENT_MOUSE_UP,
+ EVAS_EVENT_MOUSE_MOVE,
+ EVAS_EVENT_MOUSE_WHEEL,
+ EVAS_EVENT_MULTI_DOWN,
+ EVAS_EVENT_MULTI_UP,
+ EVAS_EVENT_MULTI_MOVE,
+ EVAS_EVENT_FREE,
+ EVAS_EVENT_KEY_DOWN,
+ EVAS_EVENT_KEY_UP,
+ EVAS_EVENT_FOCUS_IN,
+ EVAS_EVENT_FOCUS_OUT,
+ EVAS_EVENT_SHOW,
+ EVAS_EVENT_HIDE,
+ EVAS_EVENT_MOVE,
+ EVAS_EVENT_RESIZE,
+ EVAS_EVENT_RESTACK,
+ EVAS_EVENT_DEL,
+ EVAS_EVENT_HOLD,
+ EVAS_EVENT_CHANGED_SIZE_HINTS,
+ EVAS_EVENT_IMAGE_PRELOADED,
+ EVAS_EVENT_IMAGE_RESIZE,
+ EVAS_EVENT_CANVAS_FOCUS_IN,
+ EVAS_EVENT_CANVAS_FOCUS_OUT,
+ EVAS_EVENT_RENDER_FLUSH_PRE,
+ EVAS_EVENT_RENDER_FLUSH_POST,
+ EVAS_EVENT_CANVAS_OBJECT_FOCUS_IN,
+ EVAS_EVENT_CANVAS_OBJECT_FOCUS_OUT,
+ EVAS_EVENT_IMAGE_UNLOADED,
+ EVAS_EVENT_RENDER_PRE,
+ EVAS_EVENT_RENDER_POST
+};
+
void
-_evas_post_event_callback_call(Evas *e)
+_evas_post_event_callback_call(Evas *eo_e, Evas_Public_Data *e)
{
Evas_Post_Callback *pc;
int skip = 0;
@@ -21,7 +130,7 @@ _evas_post_event_callback_call(Evas *e)
{
if ((!skip) && (!e->delete_me) && (!pc->delete_me))
{
- if (!pc->func((void*)pc->data, e)) skip = 1;
+ if (!pc->func((void*)pc->data, eo_e)) skip = 1;
}
EVAS_MEMPOOL_FREE(_mp_pc, pc);
}
@@ -29,8 +138,9 @@ _evas_post_event_callback_call(Evas *e)
}
void
-_evas_post_event_callback_free(Evas *e)
+_evas_post_event_callback_free(Evas *eo_e)
{
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
Evas_Post_Callback *pc;
EINA_LIST_FREE(e->post_events, pc)
@@ -60,8 +170,9 @@ evas_event_callback_list_post_free(Eina_Inlist **list)
}
static void
-evas_object_event_callback_clear(Evas_Object *obj)
+evas_object_event_callback_clear(Evas_Object *eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if (!obj->callbacks) return;
if (!obj->callbacks->deletions_waiting) return;
obj->callbacks->deletions_waiting = 0;
@@ -74,8 +185,9 @@ evas_object_event_callback_clear(Evas_Object *obj)
}
static void
-evas_event_callback_clear(Evas *e)
+evas_event_callback_clear(Evas *eo_e)
{
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
if (!e->callbacks) return;
if (!e->callbacks->deletions_waiting) return;
e->callbacks->deletions_waiting = 0;
@@ -88,9 +200,10 @@ evas_event_callback_clear(Evas *e)
}
void
-evas_object_event_callback_all_del(Evas_Object *obj)
+evas_object_event_callback_all_del(Evas_Object *eo_obj)
{
Evas_Func_Node *fn;
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if (!obj->callbacks) return;
EINA_INLIST_FOREACH(obj->callbacks->callbacks, fn)
@@ -98,9 +211,10 @@ evas_object_event_callback_all_del(Evas_Object *obj)
}
void
-evas_object_event_callback_cleanup(Evas_Object *obj)
+evas_object_event_callback_cleanup(Evas_Object *eo_obj)
{
/* MEM OK */
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if (!obj->callbacks) return;
evas_event_callback_list_post_free(&obj->callbacks->callbacks);
EVAS_MEMPOOL_FREE(_mp_cb, obj->callbacks);
@@ -108,8 +222,9 @@ evas_object_event_callback_cleanup(Evas_Object *obj)
}
void
-evas_event_callback_all_del(Evas *e)
+evas_event_callback_all_del(Evas *eo_e)
{
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
Evas_Func_Node *fn;
if (!e->callbacks) return;
@@ -118,8 +233,9 @@ evas_event_callback_all_del(Evas *e)
}
void
-evas_event_callback_cleanup(Evas *e)
+evas_event_callback_cleanup(Evas *eo_e)
{
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
/* MEM OK */
if (!e->callbacks) return;
evas_event_callback_list_post_free(&e->callbacks->callbacks);
@@ -128,8 +244,9 @@ evas_event_callback_cleanup(Evas *e)
}
void
-evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info)
+evas_event_callback_call(Evas *eo_e, Evas_Callback_Type type, void *event_info)
{
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
Eina_Inlist **l_mod = NULL, *l;
_evas_walk(e);
@@ -146,14 +263,14 @@ evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info)
{
Evas_Event_Cb func = fn->func;
if (func)
- func(fn->data, e, event_info);
+ func(fn->data, eo_e, event_info);
}
if (e->delete_me) break;
}
e->callbacks->walking_list--;
if (!e->callbacks->walking_list)
{
- evas_event_callback_clear(e);
+ evas_event_callback_clear(eo_e);
l_mod = NULL;
}
}
@@ -161,12 +278,12 @@ evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info)
}
void
-evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info, int event_id)
+evas_object_event_callback_call(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Evas_Callback_Type type, void *event_info, int event_id)
{
/* MEM OK */
Eina_Inlist **l_mod = NULL, *l;
Evas_Button_Flags flags = EVAS_BUTTON_NONE;
- Evas *e;
+ Evas_Public_Data *e;
if ((obj->delete_me) || (!obj->layer)) return;
if ((obj->last_event == event_id) &&
@@ -229,17 +346,21 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void
{
Evas_Object_Event_Cb func = fn->func;
if (func)
- func(fn->data, obj->layer->evas, obj, event_info);
+ func(fn->data, obj->layer->evas->evas, eo_obj, event_info);
}
if (obj->delete_me) break;
}
obj->callbacks->walking_list--;
if (!obj->callbacks->walking_list)
{
- evas_object_event_callback_clear(obj);
+ evas_object_event_callback_clear(eo_obj);
l_mod = NULL;
}
+ const Eo_Event_Description *event_desc = eina_hash_find(signals_hash_table, _legacy_evas_callback_table[type]->name);
+ if (event_desc)
+ eo_do(eo_obj, eo_event_callback_call(_legacy_evas_callback_table[type], event_info, NULL));
+
if (type == EVAS_CALLBACK_MOUSE_DOWN)
{
Evas_Event_Mouse_Down *ev = event_info;
@@ -258,7 +379,10 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void
{
if ((obj->smart.parent) && (type != EVAS_CALLBACK_FREE) &&
(type <= EVAS_CALLBACK_KEY_UP))
- evas_object_event_callback_call(obj->smart.parent, type, event_info, event_id);
+ {
+ Evas_Object_Protected_Data *smart_parent = eo_data_get(obj->smart.parent, EVAS_OBJ_CLASS);
+ evas_object_event_callback_call(obj->smart.parent, smart_parent, type, event_info, event_id);
+ }
}
}
_evas_unwalk(e);
@@ -277,19 +401,20 @@ _callback_priority_cmp(const void *_a, const void *_b)
}
EAPI void
-evas_object_event_callback_add(Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data)
+evas_object_event_callback_add(Evas_Object *eo_obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data)
{
- evas_object_event_callback_priority_add(obj, type,
+ evas_object_event_callback_priority_add(eo_obj, type,
EVAS_CALLBACK_PRIORITY_DEFAULT, func, data);
}
EAPI void
-evas_object_event_callback_priority_add(Evas_Object *obj, Evas_Callback_Type type, Evas_Callback_Priority priority, Evas_Object_Event_Cb func, const void *data)
+evas_object_event_callback_priority_add(Evas_Object *eo_obj, Evas_Callback_Type type, Evas_Callback_Priority priority, Evas_Object_Event_Cb func, const void *data)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
/* MEM OK */
Evas_Func_Node *fn;
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
@@ -318,14 +443,15 @@ evas_object_event_callback_priority_add(Evas_Object *obj, Evas_Callback_Type typ
}
EAPI void *
-evas_object_event_callback_del(Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func)
+evas_object_event_callback_del(Evas_Object *eo_obj, Evas_Callback_Type type, Evas_Object_Event_Cb func)
{
/* MEM OK */
Evas_Func_Node *fn;
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return NULL;
MAGIC_CHECK_END();
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if (!func) return NULL;
@@ -341,7 +467,7 @@ evas_object_event_callback_del(Evas_Object *obj, Evas_Callback_Type type, Evas_O
fn->delete_me = 1;
obj->callbacks->deletions_waiting = 1;
if (!obj->callbacks->walking_list)
- evas_object_event_callback_clear(obj);
+ evas_object_event_callback_clear(eo_obj);
return tmp;
}
}
@@ -349,14 +475,15 @@ evas_object_event_callback_del(Evas_Object *obj, Evas_Callback_Type type, Evas_O
}
EAPI void *
-evas_object_event_callback_del_full(Evas_Object *obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data)
+evas_object_event_callback_del_full(Evas_Object *eo_obj, Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data)
{
/* MEM OK */
Evas_Func_Node *fn;
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return NULL;
MAGIC_CHECK_END();
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if (!func) return NULL;
@@ -372,7 +499,7 @@ evas_object_event_callback_del_full(Evas_Object *obj, Evas_Callback_Type type, E
fn->delete_me = 1;
obj->callbacks->deletions_waiting = 1;
if (!obj->callbacks->walking_list)
- evas_object_event_callback_clear(obj);
+ evas_object_event_callback_clear(eo_obj);
return tmp;
}
}
@@ -380,19 +507,20 @@ evas_object_event_callback_del_full(Evas_Object *obj, Evas_Callback_Type type, E
}
EAPI void
-evas_event_callback_add(Evas *e, Evas_Callback_Type type, Evas_Event_Cb func, const void *data)
+evas_event_callback_add(Evas *eo_e, Evas_Callback_Type type, Evas_Event_Cb func, const void *data)
{
- evas_event_callback_priority_add(e, type, EVAS_CALLBACK_PRIORITY_DEFAULT,
+ evas_event_callback_priority_add(eo_e, type, EVAS_CALLBACK_PRIORITY_DEFAULT,
func, data);
}
EAPI void
-evas_event_callback_priority_add(Evas *e, Evas_Callback_Type type, Evas_Callback_Priority priority, Evas_Event_Cb func, const void *data)
+evas_event_callback_priority_add(Evas *eo_e, Evas_Callback_Type type, Evas_Callback_Priority priority, Evas_Event_Cb func, const void *data)
{
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
/* MEM OK */
Evas_Func_Node *fn;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
@@ -420,12 +548,13 @@ evas_event_callback_priority_add(Evas *e, Evas_Callback_Type type, Evas_Callback
}
EAPI void *
-evas_event_callback_del(Evas *e, Evas_Callback_Type type, Evas_Event_Cb func)
+evas_event_callback_del(Evas *eo_e, Evas_Callback_Type type, Evas_Event_Cb func)
{
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
/* MEM OK */
Evas_Func_Node *fn;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return NULL;
MAGIC_CHECK_END();
@@ -443,7 +572,7 @@ evas_event_callback_del(Evas *e, Evas_Callback_Type type, Evas_Event_Cb func)
fn->delete_me = 1;
e->callbacks->deletions_waiting = 1;
if (!e->callbacks->walking_list)
- evas_event_callback_clear(e);
+ evas_event_callback_clear(eo_e);
return data;
}
}
@@ -451,14 +580,15 @@ evas_event_callback_del(Evas *e, Evas_Callback_Type type, Evas_Event_Cb func)
}
EAPI void *
-evas_event_callback_del_full(Evas *e, Evas_Callback_Type type, Evas_Event_Cb func, const void *data)
+evas_event_callback_del_full(Evas *eo_e, Evas_Callback_Type type, Evas_Event_Cb func, const void *data)
{
/* MEM OK */
Evas_Func_Node *fn;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return NULL;
MAGIC_CHECK_END();
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
if (!func) return NULL;
@@ -474,7 +604,7 @@ evas_event_callback_del_full(Evas *e, Evas_Callback_Type type, Evas_Event_Cb fun
fn->delete_me = 1;
e->callbacks->deletions_waiting = 1;
if (!e->callbacks->walking_list)
- evas_event_callback_clear(e);
+ evas_event_callback_clear(eo_e);
return tmp;
}
}
@@ -482,14 +612,15 @@ evas_event_callback_del_full(Evas *e, Evas_Callback_Type type, Evas_Event_Cb fun
}
EAPI void
-evas_post_event_callback_push(Evas *e, Evas_Object_Event_Post_Cb func, const void *data)
+evas_post_event_callback_push(Evas *eo_e, Evas_Object_Event_Post_Cb func, const void *data)
{
Evas_Post_Callback *pc;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
EVAS_MEMPOOL_INIT(_mp_pc, "evas_post_callback", Evas_Post_Callback, 64, );
pc = EVAS_MEMPOOL_ALLOC(_mp_pc, Evas_Post_Callback);
if (!pc) return;
@@ -502,15 +633,16 @@ evas_post_event_callback_push(Evas *e, Evas_Object_Event_Post_Cb func, const voi
}
EAPI void
-evas_post_event_callback_remove(Evas *e, Evas_Object_Event_Post_Cb func)
+evas_post_event_callback_remove(Evas *eo_e, Evas_Object_Event_Post_Cb func)
{
Evas_Post_Callback *pc;
Eina_List *l;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
EINA_LIST_FOREACH(e->post_events, l, pc)
{
if (pc->func == func)
@@ -522,15 +654,16 @@ evas_post_event_callback_remove(Evas *e, Evas_Object_Event_Post_Cb func)
}
EAPI void
-evas_post_event_callback_remove_full(Evas *e, Evas_Object_Event_Post_Cb func, const void *data)
+evas_post_event_callback_remove_full(Evas *eo_e, Evas_Object_Event_Post_Cb func, const void *data)
{
Evas_Post_Callback *pc;
Eina_List *l;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
EINA_LIST_FOREACH(e->post_events, l, pc)
{
if ((pc->func == func) && (pc->data == data))
diff --git a/legacy/evas/src/lib/canvas/evas_clip.c b/legacy/evas/src/lib/canvas/evas_clip.c
index f1e9de339a..d412e435fa 100644
--- a/legacy/evas/src/lib/canvas/evas_clip.c
+++ b/legacy/evas/src/lib/canvas/evas_clip.c
@@ -2,7 +2,7 @@
#include "evas_private.h"
void
-evas_object_clip_dirty(Evas_Object *obj)
+evas_object_clip_dirty(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj)
{
Eina_List *l;
Evas_Object *data;
@@ -10,32 +10,43 @@ evas_object_clip_dirty(Evas_Object *obj)
if (obj->cur.cache.clip.dirty) return;
obj->cur.cache.clip.dirty = 1;
+ Evas_Object_Protected_Data *clipee = NULL;
EINA_LIST_FOREACH(obj->clip.clipees, l, data)
- evas_object_clip_dirty(data);
+ {
+ clipee = eo_data_get(data, EVAS_OBJ_CLASS);
+ evas_object_clip_dirty(data, clipee);
+ }
}
void
-evas_object_recalc_clippees(Evas_Object *obj)
+evas_object_recalc_clippees(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
{
Eina_List *l;
Evas_Object *data;
if (obj->cur.cache.clip.dirty)
{
- evas_object_clip_recalc(obj);
+ evas_object_clip_recalc(eo_obj, obj);
EINA_LIST_FOREACH(obj->clip.clipees, l, data)
- evas_object_recalc_clippees(data);
+ {
+ Evas_Object_Protected_Data *clipee = eo_data_get(data, EVAS_OBJ_CLASS);
+ evas_object_recalc_clippees(data, clipee);
+ }
}
}
int
-evas_object_clippers_was_visible(Evas_Object *obj)
+evas_object_clippers_was_visible(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj)
{
if (obj->prev.visible)
{
- if (obj->prev.clipper)
- return evas_object_clippers_is_visible(obj->prev.clipper);
- return 1;
+ if (obj->prev.clipper)
+ {
+ Evas_Object_Protected_Data *prev_clipper =
+ eo_data_get(obj->prev.clipper, EVAS_OBJ_CLASS);
+ return evas_object_clippers_is_visible(obj->prev.clipper, prev_clipper);
+ }
+ return 1;
}
return 0;
}
@@ -76,63 +87,71 @@ evas_object_clippers_was_visible(Evas_Object *obj)
#define MAP_ACROSS 1
static void
-evas_object_child_map_across_mark(Evas_Object *obj, Evas_Object *map_obj, Eina_Bool force)
+evas_object_child_map_across_mark(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Evas_Object *map_obj, Eina_Bool force)
{
#ifdef MAP_ACROSS
if ((obj->cur.map_parent != map_obj) || force)
{
obj->cur.map_parent = map_obj;
obj->cur.cache.clip.dirty = 1;
- evas_object_clip_recalc(obj);
- if (obj->smart.smart)
+ evas_object_clip_recalc(eo_obj, obj);
+ if (obj->is_smart)
{
- Evas_Object *obj2;
+ Evas_Object_Protected_Data *obj2;
- EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(obj), obj2)
+ EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), obj2)
{
// if obj has its own map - skip it. already done
if ((obj2->cur.map) && (obj2->cur.usemap)) continue;
- evas_object_child_map_across_mark(obj2, map_obj, force);
+ Evas_Object *eo_obj2 = obj2->object;
+ evas_object_child_map_across_mark(eo_obj2, obj2, map_obj, force);
}
}
else if (obj->clip.clipees)
{
Eina_List *l;
- Evas_Object *obj2;
+ Evas_Object *eo_obj2;
- EINA_LIST_FOREACH(obj->clip.clipees, l, obj2)
- evas_object_child_map_across_mark(obj2, map_obj, force);
+ EINA_LIST_FOREACH(obj->clip.clipees, l, eo_obj2)
+ {
+ Evas_Object_Protected_Data *obj2 = eo_data_get(eo_obj2, EVAS_OBJ_CLASS);
+ evas_object_child_map_across_mark(eo_obj2, obj2, map_obj, force);
+ }
}
}
#endif
}
void
-evas_object_clip_across_check(Evas_Object *obj)
+evas_object_clip_across_check(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
{
#ifdef MAP_ACROSS
if (!obj->cur.clipper) return;
- if (obj->cur.clipper->cur.map_parent != obj->cur.map_parent)
- evas_object_child_map_across_mark(obj, obj->cur.map_parent, 1);
+ Evas_Object_Protected_Data *clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
+ if (clipper->cur.map_parent != obj->cur.map_parent)
+ evas_object_child_map_across_mark(eo_obj, obj, obj->cur.map_parent, 1);
#endif
}
void
-evas_object_clip_across_clippees_check(Evas_Object *obj)
+evas_object_clip_across_clippees_check(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
{
#ifdef MAP_ACROSS
Eina_List *l;
- Evas_Object *obj2;
+ Evas_Object *eo_obj2;
if (!obj->clip.clipees) return;
// schloooooooooooow:
-// evas_object_child_map_across_mark(obj, obj->cur.map_parent, 1);
+// evas_object_child_map_across_mark(eo_obj, obj->cur.map_parent, 1);
// buggy:
- evas_object_child_map_across_mark(obj, obj->cur.map_parent, 0);
+ evas_object_child_map_across_mark(eo_obj, obj, obj->cur.map_parent, 0);
if (obj->cur.cache.clip.dirty)
{
- EINA_LIST_FOREACH(obj->clip.clipees, l, obj2)
- evas_object_clip_across_clippees_check(obj2);
+ EINA_LIST_FOREACH(obj->clip.clipees, l, eo_obj2)
+ {
+ Evas_Object_Protected_Data *obj2 = eo_data_get(eo_obj2, EVAS_OBJ_CLASS);
+ evas_object_clip_across_clippees_check(eo_obj2, obj2);
+ }
}
#endif
}
@@ -142,19 +161,23 @@ evas_object_clip_across_clippees_check(Evas_Object *obj)
//
// FIXME: flip2 test broken in elm - might be show/hide of clips
void
-evas_object_mapped_clip_across_mark(Evas_Object *obj)
+evas_object_mapped_clip_across_mark(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
{
#ifdef MAP_ACROSS
if ((obj->cur.map) && (obj->cur.usemap))
- evas_object_child_map_across_mark(obj, obj, 0);
+ evas_object_child_map_across_mark(eo_obj, obj, eo_obj, 0);
else
{
if (obj->smart.parent)
- evas_object_child_map_across_mark
- (obj, obj->smart.parent->cur.map_parent, 0);
+ {
+ Evas_Object_Protected_Data *smart_parent_obj =
+ eo_data_get(obj->smart.parent, EVAS_OBJ_CLASS);
+ evas_object_child_map_across_mark
+ (eo_obj, obj, smart_parent_obj->cur.map_parent, 0);
+ }
else
- evas_object_child_map_across_mark(obj, NULL, 0);
- }
+ evas_object_child_map_across_mark(eo_obj, obj, NULL, 0);
+ }
#endif
}
@@ -162,40 +185,51 @@ evas_object_mapped_clip_across_mark(Evas_Object *obj)
extern const char *o_rect_type;
EAPI void
-evas_object_clip_set(Evas_Object *obj, Evas_Object *clip)
+evas_object_clip_set(
+ Evas_Object *eo_obj,
+ Evas_Object *clip)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
- if (!clip)
+ eo_do(eo_obj, evas_obj_clip_set(clip));
+}
+
+void
+_clip_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object *eo_clip = va_arg(*list, Evas_Object *);
+ Evas_Object_Protected_Data *obj = _pd;
+ if (!eo_clip)
{
- evas_object_clip_unset(obj);
+ evas_object_clip_unset(eo_obj);
return;
}
- MAGIC_CHECK(clip, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_clip, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
- if (obj->cur.clipper == clip) return;
- if (obj == clip)
+ Evas_Object_Protected_Data *clip = eo_data_get(eo_clip, EVAS_OBJ_CLASS);
+ if (obj->cur.clipper == eo_clip) return;
+ if (eo_obj == eo_clip)
{
- CRIT("Setting clip %p on itself", obj);
+ CRIT("Setting clip %p on itself", eo_obj);
return;
}
if (clip->delete_me)
{
- CRIT("Setting deleted object %p as clip obj %p", clip, obj);
+ CRIT("Setting deleted object %p as clip obj %p", eo_clip, eo_obj);
abort();
return;
}
if (obj->delete_me)
{
- CRIT("Setting object %p as clip to deleted obj %p", clip, obj);
+ CRIT("Setting object %p as clip to deleted obj %p", eo_clip, eo_obj);
abort();
return;
}
if (!obj->layer)
{
- CRIT("No evas surface associated with object (%p)", obj);
+ CRIT("No evas surface associated with object (%p)", eo_obj);
abort();
return;
}
@@ -207,34 +241,34 @@ evas_object_clip_set(Evas_Object *obj, Evas_Object *clip)
return;
}
- if (evas_object_intercept_call_clip_set(obj, clip)) return;
+ if (evas_object_intercept_call_clip_set(eo_obj, obj, eo_clip)) return;
// illegal to set anything but a rect as a clip
if (clip->type != o_rect_type)
{
ERR("For now a clip on other object than a rectangle is disabled");
return;
}
- if (obj->smart.smart)
+ if (obj->is_smart)
{
- if (obj->smart.smart->smart_class->clip_set)
- obj->smart.smart->smart_class->clip_set(obj, clip);
+ eo_do(eo_obj, evas_obj_smart_clip_set(eo_clip));
}
if (obj->cur.clipper)
{
- /* unclip */
- obj->cur.clipper->clip.clipees = eina_list_remove(obj->cur.clipper->clip.clipees, obj);
- if (!obj->cur.clipper->clip.clipees)
+ /* unclip */
+ Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
+ cur_clipper->clip.clipees = eina_list_remove(cur_clipper->clip.clipees, eo_obj);
+ if (!cur_clipper->clip.clipees)
{
- obj->cur.clipper->cur.have_clipees = 0;
- if (obj->cur.clipper->cur.visible)
- evas_damage_rectangle_add(obj->cur.clipper->layer->evas,
- obj->cur.clipper->cur.geometry.x,
- obj->cur.clipper->cur.geometry.y,
- obj->cur.clipper->cur.geometry.w,
- obj->cur.clipper->cur.geometry.h);
+ cur_clipper->cur.have_clipees = 0;
+ if (cur_clipper->cur.visible)
+ evas_damage_rectangle_add(cur_clipper->layer->evas->evas,
+ cur_clipper->cur.geometry.x,
+ cur_clipper->cur.geometry.y,
+ cur_clipper->cur.geometry.w,
+ cur_clipper->cur.geometry.h);
}
- evas_object_change(obj->cur.clipper);
- evas_object_change(obj);
+ evas_object_change(obj->cur.clipper, cur_clipper);
+ evas_object_change(eo_obj, obj);
obj->cur.clipper = NULL;
}
/* clip me */
@@ -243,115 +277,142 @@ evas_object_clip_set(Evas_Object *obj, Evas_Object *clip)
/* Basically it just went invisible */
clip->changed = 1;
clip->layer->evas->changed = 1;
- evas_damage_rectangle_add(clip->layer->evas,
+ evas_damage_rectangle_add(clip->layer->evas->evas,
clip->cur.geometry.x, clip->cur.geometry.y,
clip->cur.geometry.w, clip->cur.geometry.h);
}
- obj->cur.clipper = clip;
- clip->clip.clipees = eina_list_append(clip->clip.clipees, obj);
+ obj->cur.clipper = eo_clip;
+ clip->clip.clipees = eina_list_append(clip->clip.clipees, eo_obj);
if (clip->clip.clipees)
{
clip->cur.have_clipees = 1;
if (clip->changed)
- evas_object_update_bounding_box(clip);
+ evas_object_update_bounding_box(eo_clip, clip);
}
/* If it's NOT a rectangle set the mask bits too */
/* FIXME: Optmz ths chck */
if (clip->type == o_rect_type)
- obj->cur.mask = NULL;
+ obj->cur.mask = NULL;
else
{
void *engdata;
- obj->cur.mask = clip;
- engdata = clip->func->engine_data_get(clip);
+ obj->cur.mask = eo_clip;
+ engdata = clip->func->engine_data_get(eo_clip);
/* FIXME: Images only */
clip->layer->evas->engine.func->image_mask_create(
clip->layer->evas->engine.data.output,
engdata);
}
- evas_object_change(clip);
- evas_object_change(obj);
- evas_object_clip_dirty(obj);
- evas_object_recalc_clippees(obj);
- if ((!obj->smart.smart) &&
+ evas_object_change(eo_clip, clip);
+ evas_object_change(eo_obj, obj);
+ evas_object_clip_dirty(eo_obj, obj);
+ evas_object_recalc_clippees(eo_obj, obj);
+ if ((!obj->is_smart) &&
(!((obj->cur.map) && (obj->cur.usemap))))
{
- if (evas_object_is_in_output_rect(obj,
+ if (evas_object_is_in_output_rect(eo_obj, obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1))
- evas_event_feed_mouse_move(obj->layer->evas,
+ evas_event_feed_mouse_move(obj->layer->evas->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
- evas_object_clip_across_check(obj);
+ evas_object_clip_across_check(eo_obj, obj);
}
EAPI Evas_Object *
-evas_object_clip_get(const Evas_Object *obj)
+evas_object_clip_get(const Evas_Object *eo_obj)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return NULL;
MAGIC_CHECK_END();
- return obj->cur.clipper;
+ Evas_Object *clip = NULL;
+ eo_do((Eo *)eo_obj, evas_obj_clip_get(&clip));
+ return clip;
+}
+
+void
+_clip_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Object **clip = va_arg(*list, Evas_Object **);
+ const Evas_Object_Protected_Data *obj = _pd;
+ *clip = obj->cur.clipper;
}
EAPI void
-evas_object_clip_unset(Evas_Object *obj)
+evas_object_clip_unset(Evas_Object *eo_obj)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_clip_unset());
+}
+
+void
+_clip_unset(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED)
+{
+ Evas_Object_Protected_Data *obj = _pd;
if (!obj->cur.clipper) return;
/* unclip */
- if (evas_object_intercept_call_clip_unset(obj)) return;
- if (obj->smart.smart)
+ if (evas_object_intercept_call_clip_unset(eo_obj)) return;
+ if (obj->is_smart)
{
- if (obj->smart.smart->smart_class->clip_unset)
- obj->smart.smart->smart_class->clip_unset(obj);
+ eo_do(eo_obj, evas_obj_smart_clip_unset());
}
if (obj->cur.clipper)
{
- obj->cur.clipper->clip.clipees = eina_list_remove(obj->cur.clipper->clip.clipees, obj);
- if (!obj->cur.clipper->clip.clipees)
+ Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
+ cur_clipper->clip.clipees = eina_list_remove(cur_clipper->clip.clipees, eo_obj);
+ if (!cur_clipper->clip.clipees)
{
- obj->cur.clipper->cur.have_clipees = 0;
- if (obj->cur.clipper->cur.visible)
- evas_damage_rectangle_add(obj->cur.clipper->layer->evas,
- obj->cur.clipper->cur.geometry.x,
- obj->cur.clipper->cur.geometry.y,
- obj->cur.clipper->cur.geometry.w,
- obj->cur.clipper->cur.geometry.h);
+ cur_clipper->cur.have_clipees = 0;
+ if (cur_clipper->cur.visible)
+ evas_damage_rectangle_add(cur_clipper->layer->evas->evas,
+ cur_clipper->cur.geometry.x,
+ cur_clipper->cur.geometry.y,
+ cur_clipper->cur.geometry.w,
+ cur_clipper->cur.geometry.h);
}
- evas_object_change(obj->cur.clipper);
+ evas_object_change(obj->cur.clipper, cur_clipper);
}
obj->cur.clipper = NULL;
- evas_object_change(obj);
- evas_object_clip_dirty(obj);
- evas_object_recalc_clippees(obj);
- if ((!obj->smart.smart) &&
+ evas_object_change(eo_obj, obj);
+ evas_object_clip_dirty(eo_obj, obj);
+ evas_object_recalc_clippees(eo_obj, obj);
+ if ((!obj->is_smart) &&
(!((obj->cur.map) && (obj->cur.usemap))))
{
- if (evas_object_is_in_output_rect(obj,
+ if (evas_object_is_in_output_rect(eo_obj, obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1))
- evas_event_feed_mouse_move(obj->layer->evas,
+ evas_event_feed_mouse_move(obj->layer->evas->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
- evas_object_clip_across_check(obj);
+ evas_object_clip_across_check(eo_obj, obj);
}
EAPI const Eina_List *
-evas_object_clipees_get(const Evas_Object *obj)
+evas_object_clipees_get(const Evas_Object *eo_obj)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return NULL;
MAGIC_CHECK_END();
- return obj->clip.clipees;
+ const Eina_List *clipees = NULL;
+ eo_do((Eo *)eo_obj, evas_obj_clipees_get(&clipees));
+ return clipees;
+}
+
+void
+_clipees_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ const Eina_List **clipees = va_arg(*list, const Eina_List **);
+ const Evas_Object_Protected_Data *obj = _pd;
+ *clipees = obj->clip.clipees;
}
diff --git a/legacy/evas/src/lib/canvas/evas_common_interface.c b/legacy/evas/src/lib/canvas/evas_common_interface.c
new file mode 100644
index 0000000000..8f16d5ae73
--- /dev/null
+++ b/legacy/evas/src/lib/canvas/evas_common_interface.c
@@ -0,0 +1,24 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+#include "Eo.h"
+
+EAPI Eo_Op EVAS_COMMON_BASE_ID = EO_NOOP;
+
+static const Eo_Op_Description op_desc[] = {
+ EO_OP_DESCRIPTION(EVAS_COMMON_SUB_ID_EVAS_GET, "Return the evas parent attached to the object"),
+ EO_OP_DESCRIPTION_SENTINEL
+};
+
+static const Eo_Class_Description class_desc = {
+ EO_VERSION,
+ "Evas_Common_Interface",
+ EO_CLASS_TYPE_INTERFACE,
+ EO_CLASS_DESCRIPTION_OPS(&EVAS_COMMON_BASE_ID, op_desc, EVAS_COMMON_SUB_ID_LAST),
+ NULL,
+ 0,
+ NULL,
+ NULL,
+};
+
+EO_DEFINE_CLASS(evas_common_class_get, &class_desc, NULL, NULL)
diff --git a/legacy/evas/src/lib/canvas/evas_data.c b/legacy/evas/src/lib/canvas/evas_data.c
index 3ac9d63577..1d1d69829d 100644
--- a/legacy/evas/src/lib/canvas/evas_data.c
+++ b/legacy/evas/src/lib/canvas/evas_data.c
@@ -5,68 +5,30 @@
EAPI void
evas_object_data_set(Evas_Object *obj, const char *key, const void *data)
{
- Evas_Data_Node *node;
-
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
- if (!key) return;
-
- evas_object_data_del(obj, key);
- if (!data) return;
- node = malloc(sizeof(Evas_Data_Node) + strlen(key) + 1);
- node->key = (char *)node + sizeof(Evas_Data_Node);
- strcpy(node->key, key);
- node->data = (void *)data;
- obj->data.elements = eina_list_prepend(obj->data.elements, node);
+ eo_do(obj, eo_base_data_set(key, data, NULL));
}
EAPI void *
evas_object_data_get(const Evas_Object *obj, const char *key)
{
- Eina_List *l;
- Evas_Data_Node *node;
-
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
return NULL;
MAGIC_CHECK_END();
- if (!key) return NULL;
-
- EINA_LIST_FOREACH(obj->data.elements, l, node)
- {
- if (!strcmp(node->key, key))
- {
- Eina_List *lst;
- lst = obj->data.elements;
- lst = eina_list_promote_list(lst, l);
- ((Evas_Object *)obj)->data.elements = lst;
- return node->data;
- }
- }
- return NULL;
+ void *data = NULL;
+ eo_do((Evas_Object *)obj, eo_base_data_get(key, &data));
+ return data;
}
EAPI void *
evas_object_data_del(Evas_Object *obj, const char *key)
{
- Eina_List *l;
- Evas_Data_Node *node;
-
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
return NULL;
MAGIC_CHECK_END();
- if (!key) return NULL;
- EINA_LIST_FOREACH(obj->data.elements, l, node)
- {
- if (!strcmp(node->key, key))
- {
- void *data;
-
- data = node->data;
- obj->data.elements = eina_list_remove_list(obj->data.elements, l);
- free(node);
- return data;
- }
- }
- return NULL;
+ void *data = NULL;
+ eo_do(obj, eo_base_data_get(key, &data), eo_base_data_del(key));
+ return data;
}
diff --git a/legacy/evas/src/lib/canvas/evas_device.c b/legacy/evas/src/lib/canvas/evas_device.c
index 95204be77b..8569bd5d02 100644
--- a/legacy/evas/src/lib/canvas/evas_device.c
+++ b/legacy/evas/src/lib/canvas/evas_device.c
@@ -2,20 +2,21 @@
#include "evas_private.h"
EAPI Evas_Device *
-evas_device_new(Evas *e)
+evas_device_new(Evas *eo_e)
{
Evas_Device *dev;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return NULL;
MAGIC_CHECK_END();
dev = calloc(1, sizeof(Evas_Device));
if (!dev) return NULL;
dev->magic = MAGIC_DEV;
- dev->evas = e;
+ dev->evas = eo_e;
dev->ref = 1;
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
e->devices = eina_list_append(e->devices, dev);
- evas_event_callback_call(e, EVAS_CALLBACK_DEVICE_CHANGED, dev);
+ evas_event_callback_call(eo_e, EVAS_CALLBACK_DEVICE_CHANGED, dev);
return dev;
}
@@ -45,14 +46,15 @@ evas_device_free(Evas_Device *dev)
}
EAPI void
-evas_device_push(Evas *e, Evas_Device *dev)
+evas_device_push(Evas *eo_e, Evas_Device *dev)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
MAGIC_CHECK(dev, Evas_Device, MAGIC_DEV);
return;
MAGIC_CHECK_END();
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
if (!e->cur_device)
{
e->cur_device = eina_array_new(4);
@@ -63,21 +65,22 @@ evas_device_push(Evas *e, Evas_Device *dev)
}
EAPI void
-evas_device_pop(Evas *e)
+evas_device_pop(Evas *eo_e)
{
Evas_Device *dev;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
dev = eina_array_pop(e->cur_device);
if (dev) _evas_device_unref(dev);
}
EAPI const Eina_List *
-evas_device_list(Evas *e, const Evas_Device *dev)
+evas_device_list(Evas *eo_e, const Evas_Device *dev)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return NULL;
MAGIC_CHECK_END();
if (dev)
@@ -87,6 +90,7 @@ evas_device_list(Evas *e, const Evas_Device *dev)
MAGIC_CHECK_END();
}
if (dev) return dev->children;
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
return e->devices;
}
@@ -206,10 +210,11 @@ evas_device_emulation_source_get(const Evas_Device *dev)
}
void
-_evas_device_cleanup(Evas *e)
+_evas_device_cleanup(Evas *eo_e)
{
Evas_Device *dev;
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
if (e->cur_device)
{
while ((dev = eina_array_pop(e->cur_device)))
@@ -224,10 +229,11 @@ _evas_device_cleanup(Evas *e)
}
Evas_Device *
-_evas_device_top_get(const Evas *e)
+_evas_device_top_get(const Evas *eo_e)
{
int num;
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
if (!e->cur_device) return NULL;
num = eina_array_count(e->cur_device);
if (num < 1) return NULL;
diff --git a/legacy/evas/src/lib/canvas/evas_events.c b/legacy/evas/src/lib/canvas/evas_events.c
index 9a21bac8b0..09d642d96c 100644
--- a/legacy/evas/src/lib/canvas/evas_events.c
+++ b/legacy/evas/src/lib/canvas/evas_events.c
@@ -2,15 +2,18 @@
#include "evas_private.h"
static Eina_List *
-_evas_event_object_list_in_get(Evas *e, Eina_List *in,
+_evas_event_object_list_in_get(Evas *eo_e, Eina_List *in,
const Eina_Inlist *list, Evas_Object *stop,
int x, int y, int *no_rep);
static void
-_evas_event_havemap_adjust(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Eina_Bool mouse_grabbed)
+_evas_event_havemap_adjust(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Evas_Coord *x, Evas_Coord *y, Eina_Bool mouse_grabbed)
{
if (obj->smart.parent)
- _evas_event_havemap_adjust(obj->smart.parent, x, y, mouse_grabbed);
+ {
+ Evas_Object_Protected_Data *smart_parent_obj = eo_data_get(obj->smart.parent, EVAS_OBJ_CLASS);
+ _evas_event_havemap_adjust(obj->smart.parent, smart_parent_obj, x, y, mouse_grabbed);
+ }
if ((!obj->cur.usemap) || (!obj->cur.map) || (!obj->cur.map->count == 4))
return;
@@ -21,13 +24,14 @@ _evas_event_havemap_adjust(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Eina_
}
static void
-_evas_event_framespace_adjust(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y)
+_evas_event_framespace_adjust(Evas_Object *eo_obj, Evas_Coord *x, Evas_Coord *y)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if (obj->is_frame) return;
- if ((!obj->smart.parent) && (obj->smart.smart))
+ if ((!obj->smart.parent) && (obj->is_smart))
{
- Evas *evas;
+ Evas_Public_Data *evas;
evas = obj->layer->evas;
if (x) *x -= evas->framespace.x;
@@ -36,36 +40,38 @@ _evas_event_framespace_adjust(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y)
}
static Eina_List *
-_evas_event_object_list_raw_in_get(Evas *e, Eina_List *in,
+_evas_event_object_list_raw_in_get(Evas *eo_e, Eina_List *in,
const Eina_Inlist *list, Evas_Object *stop,
int x, int y, int *no_rep)
{
- Evas_Object *obj;
+ Evas_Object *eo_obj;
+ Evas_Object_Protected_Data *obj;
int inside;
if (!list) return in;
- for (obj = _EINA_INLIST_CONTAINER(obj, list);
- obj;
+ for (obj = _EINA_INLIST_CONTAINER(obj, list);
+ obj;
obj = _EINA_INLIST_CONTAINER(obj, EINA_INLIST_GET(obj)->prev))
{
- if (obj == stop)
+ eo_obj = obj->object;
+ if (eo_obj == stop)
{
*no_rep = 1;
return in;
}
- if (evas_event_passes_through(obj)) continue;
+ if (evas_event_passes_through(eo_obj, obj)) continue;
if ((obj->cur.visible) && (obj->delete_me == 0) &&
(!obj->clip.clipees) &&
- (evas_object_clippers_is_visible(obj)))
+ (evas_object_clippers_is_visible(eo_obj, obj)))
{
- if (obj->smart.smart)
+ if (obj->is_smart)
{
int norep = 0;
if ((obj->cur.usemap) && (obj->cur.map) &&
(obj->cur.map->count == 4))
{
- inside = evas_object_is_in_output_rect(obj, x, y, 1, 1);
+ inside = evas_object_is_in_output_rect(eo_obj, obj, x, y, 1, 1);
if (inside)
{
if (!evas_map_coords_get(obj->cur.map, x, y,
@@ -77,8 +83,8 @@ _evas_event_object_list_raw_in_get(Evas *e, Eina_List *in,
else
{
in = _evas_event_object_list_in_get
- (e, in,
- evas_object_smart_members_get_direct(obj),
+ (eo_e, in,
+ evas_object_smart_members_get_direct(eo_obj),
stop,
obj->cur.geometry.x + obj->cur.map->mx,
obj->cur.geometry.y + obj->cur.map->my,
@@ -89,7 +95,7 @@ _evas_event_object_list_raw_in_get(Evas *e, Eina_List *in,
else
{
if (!obj->child_has_map)
- evas_object_smart_bouding_box_update(obj);
+ evas_object_smart_bouding_box_update(eo_obj);
if (obj->child_has_map ||
(obj->cur.bounding_box.x <= x &&
obj->cur.bounding_box.x + obj->cur.bounding_box.w >= x &&
@@ -100,7 +106,7 @@ _evas_event_object_list_raw_in_get(Evas *e, Eina_List *in,
obj->cur.geometry.y <= y &&
obj->cur.geometry.y + obj->cur.geometry.h >= y))
in = _evas_event_object_list_in_get
- (e, in, evas_object_smart_members_get_direct(obj),
+ (eo_e, in, evas_object_smart_members_get_direct(eo_obj),
stop, x, y, &norep);
}
if (norep)
@@ -114,7 +120,7 @@ _evas_event_object_list_raw_in_get(Evas *e, Eina_List *in,
}
else
{
- inside = evas_object_is_in_output_rect(obj, x, y, 1, 1);
+ inside = evas_object_is_in_output_rect(eo_obj, obj, x, y, 1, 1);
if (inside)
{
@@ -130,10 +136,10 @@ _evas_event_object_list_raw_in_get(Evas *e, Eina_List *in,
}
}
if (inside && ((!obj->precise_is_inside) ||
- (evas_object_is_inside(obj, x, y))))
+ (evas_object_is_inside(eo_obj, obj, x, y))))
{
- if (!evas_event_freezes_through(obj))
- in = eina_list_append(in, obj);
+ if (!evas_event_freezes_through(eo_obj, obj))
+ in = eina_list_append(in, eo_obj);
if (!obj->repeat_events)
{
*no_rep = 1;
@@ -148,26 +154,27 @@ _evas_event_object_list_raw_in_get(Evas *e, Eina_List *in,
}
static Eina_List *
-_evas_event_object_list_in_get(Evas *e, Eina_List *in,
+_evas_event_object_list_in_get(Evas *eo_e, Eina_List *in,
const Eina_Inlist *list, Evas_Object *stop,
int x, int y, int *no_rep)
{
if (!list) return NULL;
- return _evas_event_object_list_raw_in_get(e, in, list->last, stop, x, y,
+ return _evas_event_object_list_raw_in_get(eo_e, in, list->last, stop, x, y,
no_rep);
}
Eina_List *
-evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y)
+evas_event_objects_event_list(Evas *eo_e, Evas_Object *stop, int x, int y)
{
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
Evas_Layer *lay;
Eina_List *in = NULL;
- if ((!e->layers) || (e->events_frozen > 0)) return NULL;
+ if ((!e->layers) || (e->is_frozen)) return NULL;
EINA_INLIST_REVERSE_FOREACH((EINA_INLIST_GET(e->layers)), lay)
{
int no_rep = 0;
- in = _evas_event_object_list_in_get(e, in,
+ in = _evas_event_object_list_in_get(eo_e, in,
EINA_INLIST_GET(lay->objects),
stop, x, y, &no_rep);
if (no_rep) return in;
@@ -188,98 +195,157 @@ evas_event_list_copy(Eina_List *list)
/* public functions */
EAPI void
-evas_event_default_flags_set(Evas *e, Evas_Event_Flags flags)
+evas_event_default_flags_set(Evas *eo_e, Evas_Event_Flags flags)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_event_default_flags_set(flags));
+}
+
+void
+_canvas_event_default_flags_set(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Event_Flags flags = va_arg(*list, Evas_Event_Flags);
+ Evas_Public_Data *e = _pd;
e->default_event_flags = flags;
}
EAPI Evas_Event_Flags
-evas_event_default_flags_get(const Evas *e)
+evas_event_default_flags_get(const Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return EVAS_EVENT_FLAG_ON_HOLD;
MAGIC_CHECK_END();
- return e->default_event_flags;
+ Evas_Event_Flags flags = EVAS_EVENT_FLAG_ON_HOLD;
+ eo_do((Eo *)eo_e, evas_canvas_event_default_flags_get(&flags));
+ return flags;
+}
+
+void
+_canvas_event_default_flags_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Event_Flags *ret = va_arg(*list, Evas_Event_Flags *);
+ const Evas_Public_Data *e = _pd;
+ *ret = e->default_event_flags;
+}
+
+static inline void
+_canvas_event_thaw_eval_internal(Eo *eo_e, Evas_Public_Data *e)
+{
+ evas_event_feed_mouse_move(eo_e, e->pointer.x, e->pointer.y,
+ e->last_timestamp, NULL);
}
EAPI void
-evas_event_freeze(Evas *e)
+evas_event_freeze(Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
- e->events_frozen++;
+ eo_do(eo_e, eo_event_freeze());
}
EAPI void
-evas_event_thaw(Evas *e)
+evas_event_thaw(Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
- e->events_frozen--;
- if (e->events_frozen == 0)
+ eo_do(eo_e, eo_event_thaw());
+}
+
+void
+_canvas_event_freeze(Eo *eo_e, void *_pd, va_list *list EINA_UNUSED)
+{
+ eo_do_super(eo_e, eo_event_freeze());
+ Evas_Public_Data *e = _pd;
+ e->is_frozen = EINA_TRUE;
+}
+
+void
+_canvas_event_thaw(Eo *eo_e, void *_pd, va_list *list EINA_UNUSED)
+{
+ int fcount = -1;
+ eo_do_super(eo_e,
+ eo_event_thaw(),
+ eo_event_freeze_get(&fcount));
+ if (0 == fcount)
{
+ Evas_Public_Data *e = _pd;
Evas_Layer *lay;
+ e->is_frozen = EINA_FALSE;
EINA_INLIST_FOREACH((EINA_INLIST_GET(e->layers)), lay)
{
- Evas_Object *obj;
+ Evas_Object_Protected_Data *obj;
EINA_INLIST_FOREACH(lay->objects, obj)
{
- evas_object_clip_recalc(obj);
- evas_object_recalc_clippees(obj);
+ Evas_Object *eo_obj = obj->object;
+ evas_object_clip_recalc(eo_obj, obj);
+ evas_object_recalc_clippees(eo_obj, obj);
}
}
+
+ _canvas_event_thaw_eval_internal(eo_e, e);
}
- if (e->events_frozen < 0)
- evas_debug_generic(" Thaw of events when already thawed!!!\n");
}
EAPI int
-evas_event_freeze_get(const Evas *e)
+evas_event_freeze_get(const Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return 0;
MAGIC_CHECK_END();
- return e->events_frozen;
+ int ret = 0;
+ eo_do((Eo *)eo_e, eo_event_freeze_get(&ret));
+ return ret;
}
EAPI void
-evas_event_thaw_eval(Evas *e)
+evas_event_thaw_eval(Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
- if (e->events_frozen != 0) return;
-
- evas_event_feed_mouse_move(e, e->pointer.x, e->pointer.y,
- e->last_timestamp, NULL);
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
+ if (0 == evas_event_freeze_get(eo_e))
+ {
+ _canvas_event_thaw_eval_internal(eo_e, e);
+ }
}
EAPI void
-evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int timestamp, const void *data)
+evas_event_feed_mouse_down(Evas *eo_e, int b, Evas_Button_Flags flags, unsigned int timestamp, const void *data)
{
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
+ return;
+ MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_event_feed_mouse_down(b, flags, timestamp, data));
+}
+
+void
+_canvas_event_feed_mouse_down(Eo *eo_e, void *_pd, va_list *list)
+{
+ int b = va_arg(*list, int);
+ Evas_Button_Flags flags = va_arg(*list, Evas_Button_Flags);
+ unsigned int timestamp = va_arg(*list, unsigned int);
+ const void *data = va_arg(*list, const void *);
+
+ Evas_Public_Data *e = _pd;
Eina_List *l, *copy;
Evas_Event_Mouse_Down ev;
- Evas_Object *obj;
+ Evas_Object *eo_obj;
int addgrab = 0;
int event_id = 0;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
- return;
- MAGIC_CHECK_END();
-
if ((b < 1) || (b > 32)) return;
e->pointer.button |= (1 << (b - 1));
e->pointer.downs++;
- if (e->events_frozen > 0) return;
+ if (e->is_frozen) return;
e->last_timestamp = timestamp;
_evas_object_event_new();
@@ -296,17 +362,17 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int
ev.flags = flags;
ev.timestamp = timestamp;
ev.event_flags = e->default_event_flags;
- ev.dev = _evas_device_top_get(e);
+ ev.dev = _evas_device_top_get(eo_e);
if (ev.dev) _evas_device_ref(ev.dev);
_evas_walk(e);
/* append new touch point to the touch point list */
- _evas_touch_point_append(e, 0, e->pointer.x, e->pointer.y);
+ _evas_touch_point_append(eo_e, 0, e->pointer.x, e->pointer.y);
/* If this is the first finger down, i.e no other fingers pressed,
* get a new event list, otherwise, keep the current grabbed list. */
if (e->pointer.mouse_grabbed == 0)
{
- Eina_List *ins = evas_event_objects_event_list(e,
+ Eina_List *ins = evas_event_objects_event_list(eo_e,
NULL,
e->pointer.x,
e->pointer.y);
@@ -319,8 +385,9 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int
if (e->pointer.downs > 1) addgrab = e->pointer.downs - 1;
}
copy = evas_event_list_copy(e->pointer.object.in);
- EINA_LIST_FOREACH(copy, l, obj)
+ EINA_LIST_FOREACH(copy, l, eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if ((obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_AUTOGRAB) ||
(obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN))
{
@@ -333,35 +400,37 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int
}
}
}
- EINA_LIST_FOREACH(copy, l, obj)
+ EINA_LIST_FOREACH(copy, l, eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if (obj->delete_me) continue;
ev.canvas.x = e->pointer.x;
ev.canvas.y = e->pointer.y;
- _evas_event_framespace_adjust(obj, &ev.canvas.x, &ev.canvas.y);
- _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
+ _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
+ _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
- if (e->events_frozen <= 0)
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_DOWN, &ev, event_id);
+ if (!e->is_frozen)
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_DOWN, &ev, event_id);
if (e->delete_me) break;
if (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)
break;
}
if (copy) eina_list_free(copy);
e->last_mouse_down_counter++;
- _evas_post_event_callback_call(e);
+ _evas_post_event_callback_call(eo_e, e);
/* update touch point's state to EVAS_TOUCH_POINT_STILL */
- _evas_touch_point_update(e, 0, e->pointer.x, e->pointer.y, EVAS_TOUCH_POINT_STILL);
+ _evas_touch_point_update(eo_e, 0, e->pointer.x, e->pointer.y, EVAS_TOUCH_POINT_STILL);
if (ev.dev) _evas_device_unref(ev.dev);
_evas_unwalk(e);
}
static int
-_post_up_handle(Evas *e, unsigned int timestamp, const void *data)
+_post_up_handle(Evas *eo_e, unsigned int timestamp, const void *data)
{
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
Eina_List *l, *copy, *ins, *ll;
Evas_Event_Mouse_Out ev;
- Evas_Object *obj;
+ Evas_Object *eo_obj;
int post_called = 0;
int event_id = 0;
@@ -378,38 +447,39 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data)
ev.locks = &(e->locks);
ev.timestamp = timestamp;
ev.event_flags = e->default_event_flags;
- ev.dev = _evas_device_top_get(e);
+ ev.dev = _evas_device_top_get(eo_e);
if (ev.dev) _evas_device_ref(ev.dev);
/* get new list of ins */
- ins = evas_event_objects_event_list(e, NULL, e->pointer.x, e->pointer.y);
+ ins = evas_event_objects_event_list(eo_e, NULL, e->pointer.x, e->pointer.y);
/* go thru old list of in objects */
copy = evas_event_list_copy(e->pointer.object.in);
- EINA_LIST_FOREACH(copy, ll, obj)
+ EINA_LIST_FOREACH(copy, ll, eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
ev.canvas.x = e->pointer.x;
ev.canvas.y = e->pointer.y;
- _evas_event_framespace_adjust(obj, &ev.canvas.x, &ev.canvas.y);
- _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
- if ((!eina_list_data_find(ins, obj)) ||
+ _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
+ _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
+ if ((!eina_list_data_find(ins, eo_obj)) ||
(!e->pointer.inside))
{
if (obj->mouse_in)
{
obj->mouse_in = 0;
- if (e->events_frozen <= 0)
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id);
+ if (!e->is_frozen)
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id);
}
}
if (e->delete_me) break;
}
- _evas_post_event_callback_call(e);
+ _evas_post_event_callback_call(eo_e, e);
if (copy) copy = eina_list_free(copy);
if (e->pointer.inside)
{
Evas_Event_Mouse_In ev_in;
- Evas_Object *obj_itr;
+ Evas_Object *eo_obj_itr;
_evas_object_event_new();
@@ -425,25 +495,26 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data)
ev_in.timestamp = timestamp;
ev_in.event_flags = e->default_event_flags;
- EINA_LIST_FOREACH(ins, l, obj_itr)
+ EINA_LIST_FOREACH(ins, l, eo_obj_itr)
{
+ Evas_Object_Protected_Data *obj_itr = eo_data_get(eo_obj_itr, EVAS_OBJ_CLASS);
ev_in.canvas.x = e->pointer.x;
ev_in.canvas.y = e->pointer.y;
- _evas_event_framespace_adjust(obj_itr, &ev_in.canvas.x, &ev_in.canvas.y);
- _evas_event_havemap_adjust(obj_itr, &ev_in.canvas.x, &ev_in.canvas.y, obj_itr->mouse_grabbed);
- if (!eina_list_data_find(e->pointer.object.in, obj_itr))
+ _evas_event_framespace_adjust(eo_obj_itr, &ev_in.canvas.x, &ev_in.canvas.y);
+ _evas_event_havemap_adjust(eo_obj_itr, obj_itr, &ev_in.canvas.x, &ev_in.canvas.y, obj_itr->mouse_grabbed);
+ if (!eina_list_data_find(e->pointer.object.in, eo_obj_itr))
{
if (!obj_itr->mouse_in)
{
obj_itr->mouse_in = 1;
- if (e->events_frozen <= 0)
- evas_object_event_callback_call(obj_itr, EVAS_CALLBACK_MOUSE_IN, &ev_in, event_id);
+ if (!e->is_frozen)
+ evas_object_event_callback_call(eo_obj_itr, obj_itr, EVAS_CALLBACK_MOUSE_IN, &ev_in, event_id);
}
}
if (e->delete_me) break;
}
post_called = 1;
- _evas_post_event_callback_call(e);
+ _evas_post_event_callback_call(eo_e, e);
}
else
{
@@ -463,32 +534,44 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data)
eina_list_free(ins);
}
if (e->pointer.inside)
- evas_event_feed_mouse_move(e, e->pointer.x, e->pointer.y, timestamp, data);
+ evas_event_feed_mouse_move(eo_e, e->pointer.x, e->pointer.y, timestamp, data);
if (ev.dev) _evas_device_unref(ev.dev);
return post_called;
}
EAPI void
-evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int timestamp, const void *data)
+evas_event_feed_mouse_up(Evas *eo_e, int b, Evas_Button_Flags flags, unsigned int timestamp, const void *data)
{
- Eina_List *l, *copy;
-
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_event_feed_mouse_up(b, flags, timestamp, data));
+}
+
+void
+_canvas_event_feed_mouse_up(Eo *eo_e, void *_pd, va_list *list)
+{
+ int b = va_arg(*list, int);
+ Evas_Button_Flags flags = va_arg(*list, Evas_Button_Flags);
+ unsigned int timestamp = va_arg(*list, unsigned int);
+ const void *data = va_arg(*list, const void *);
+
+ Evas_Public_Data *e = _pd;
+ Eina_List *l, *copy;
+
if ((b < 1) || (b > 32)) return;
if (e->pointer.downs <= 0) return;
e->pointer.button &= ~(1 << (b - 1));
e->pointer.downs--;
- if (e->events_frozen > 0) return;
+ if (e->is_frozen) return;
e->last_timestamp = timestamp;
{
Evas_Event_Mouse_Up ev;
- Evas_Object *obj;
+ Evas_Object *eo_obj;
int event_id = 0;
_evas_object_event_new();
@@ -505,19 +588,20 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
ev.flags = flags;
ev.timestamp = timestamp;
ev.event_flags = e->default_event_flags;
- ev.dev = _evas_device_top_get(e);
+ ev.dev = _evas_device_top_get(eo_e);
if (ev.dev) _evas_device_ref(ev.dev);
_evas_walk(e);
/* update released touch point */
- _evas_touch_point_update(e, 0, e->pointer.x, e->pointer.y, EVAS_TOUCH_POINT_UP);
+ _evas_touch_point_update(eo_e, 0, e->pointer.x, e->pointer.y, EVAS_TOUCH_POINT_UP);
copy = evas_event_list_copy(e->pointer.object.in);
- EINA_LIST_FOREACH(copy, l, obj)
+ EINA_LIST_FOREACH(copy, l, eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
ev.canvas.x = e->pointer.x;
ev.canvas.y = e->pointer.y;
- _evas_event_framespace_adjust(obj, &ev.canvas.x, &ev.canvas.y);
- _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
+ _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
+ _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
if ((obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_AUTOGRAB) &&
(obj->mouse_grabbed > 0))
{
@@ -526,9 +610,9 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
}
if (!obj->delete_me)
{
- if ((e->events_frozen <= 0) &&
- (!evas_event_freezes_through(obj)))
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_UP, &ev, event_id);
+ if ((!e->is_frozen) &&
+ (!evas_event_freezes_through(eo_obj, obj)))
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_UP, &ev, event_id);
}
if (e->delete_me) break;
if (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)
@@ -539,13 +623,13 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
}
if (copy) copy = eina_list_free(copy);
e->last_mouse_up_counter++;
- _evas_post_event_callback_call(e);
+ _evas_post_event_callback_call(eo_e, e);
if (ev.dev) _evas_device_unref(ev.dev);
}
if (e->pointer.mouse_grabbed == 0)
{
- _post_up_handle(e, timestamp, data);
+ _post_up_handle(eo_e, timestamp, data);
}
if (e->pointer.mouse_grabbed < 0)
@@ -554,45 +638,67 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
e->pointer.mouse_grabbed);
}
/* remove released touch point from the touch point list */
- _evas_touch_point_remove(e, 0);
-
+ _evas_touch_point_remove(eo_e, 0);
+
_evas_unwalk(e);
}
EAPI void
-evas_event_feed_mouse_cancel(Evas *e, unsigned int timestamp, const void *data)
+evas_event_feed_mouse_cancel(Evas *eo_e, unsigned int timestamp, const void *data)
{
- int i;
-
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
- if (e->events_frozen > 0) return;
+ eo_do(eo_e, evas_canvas_event_feed_mouse_cancel(timestamp, data));
+}
+
+void
+_canvas_event_feed_mouse_cancel(Eo *eo_e, void *_pd, va_list *list)
+{
+ unsigned int timestamp = va_arg(*list, unsigned int);
+ const void *data = va_arg(*list, const void *);
+
+ Evas_Public_Data *e = _pd;
+ int i;
+
+ if (e->is_frozen) return;
_evas_walk(e);
for (i = 0; i < 32; i++)
{
if ((e->pointer.button & (1 << i)))
- evas_event_feed_mouse_up(e, i + 1, 0, timestamp, data);
+ evas_event_feed_mouse_up(eo_e, i + 1, 0, timestamp, data);
}
// FIXME: multi cancel too?
_evas_unwalk(e);
}
EAPI void
-evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestamp, const void *data)
+evas_event_feed_mouse_wheel(Evas *eo_e, int direction, int z, unsigned int timestamp, const void *data)
+{
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
+ return;
+ MAGIC_CHECK_END();
+
+ eo_do(eo_e, evas_canvas_event_feed_mouse_wheel(direction, z, timestamp, data));
+}
+
+void
+_canvas_event_feed_mouse_wheel(Eo *eo_e, void *_pd, va_list *list)
{
+ int direction = va_arg(*list, int);
+ int z = va_arg(*list, int);
+ unsigned int timestamp = va_arg(*list, unsigned int);
+ const void *data = va_arg(*list, const void *);
+
+ Evas_Public_Data *e = _pd;
Eina_List *l, *copy;
Evas_Event_Mouse_Wheel ev;
- Evas_Object *obj;
+ Evas_Object *eo_obj;
int event_id = 0;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
- return;
- MAGIC_CHECK_END();
-
- if (e->events_frozen > 0) return;
+ if (e->is_frozen) return;
e->last_timestamp = timestamp;
_evas_object_event_new();
@@ -609,59 +715,72 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam
ev.locks = &(e->locks);
ev.timestamp = timestamp;
ev.event_flags = e->default_event_flags;
- ev.dev = _evas_device_top_get(e);
+ ev.dev = _evas_device_top_get(eo_e);
if (ev.dev) _evas_device_ref(ev.dev);
_evas_walk(e);
copy = evas_event_list_copy(e->pointer.object.in);
- EINA_LIST_FOREACH(copy, l, obj)
+ EINA_LIST_FOREACH(copy, l, eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
ev.canvas.x = e->pointer.x;
ev.canvas.y = e->pointer.y;
- _evas_event_framespace_adjust(obj, &ev.canvas.x, &ev.canvas.y);
- _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
- if ((e->events_frozen <= 0) && !evas_event_freezes_through(obj))
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_WHEEL, &ev, event_id);
+ _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
+ _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
+ if ((!e->is_frozen) && !evas_event_freezes_through(eo_obj, obj))
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_WHEEL, &ev, event_id);
if (e->delete_me) break;
}
if (copy) copy = eina_list_free(copy);
- _evas_post_event_callback_call(e);
+ _evas_post_event_callback_call(eo_e, e);
if (ev.dev) _evas_device_unref(ev.dev);
_evas_unwalk(e);
}
EAPI void
-evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const void *data)
+evas_event_feed_mouse_move(Evas *eo_e, int x, int y, unsigned int timestamp, const void *data)
{
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
+ return;
+ MAGIC_CHECK_END();
+
+ eo_do(eo_e, evas_canvas_event_feed_mouse_move(x, y, timestamp, data));
+}
+
+void
+_canvas_event_feed_mouse_move(Eo *eo_e, void *_pd, va_list *list)
+{
+ int x = va_arg(*list, int);
+ int y = va_arg(*list, int);
+ unsigned int timestamp = va_arg(*list, unsigned int);
+ const void *data = va_arg(*list, const void *);
+
+ Evas_Public_Data *e = _pd;
Evas_Object *nogrep_obj = NULL;
int px, py;
//// Evas_Coord pcx, pcy;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
- return;
- MAGIC_CHECK_END();
-
px = e->pointer.x;
py = e->pointer.y;
//// pcx = e->pointer.canvas_x;
//// pcy = e->pointer.canvas_y;
- if (e->events_frozen > 0) return;
+ if (e->is_frozen) return;
e->last_timestamp = timestamp;
e->pointer.x = x;
e->pointer.y = y;
//// e->pointer.canvas_x = x;
//// e->pointer.canvas_y = y;
-//// e->pointer.canvas_x = evas_coord_screen_x_to_world(e, x);
-//// e->pointer.canvas_y = evas_coord_screen_y_to_world(e, y);
+//// e->pointer.canvas_x = evas_coord_screen_x_to_world(eo_e, x);
+//// e->pointer.canvas_y = evas_coord_screen_y_to_world(eo_e, y);
if ((!e->pointer.inside) && (e->pointer.mouse_grabbed == 0)) return;
_evas_walk(e);
/* update moved touch point */
if ((px != x) || (py != y))
- _evas_touch_point_update(e, 0, e->pointer.x, e->pointer.y, EVAS_TOUCH_POINT_MOVE);
+ _evas_touch_point_update(eo_e, 0, e->pointer.x, e->pointer.y, EVAS_TOUCH_POINT_MOVE);
/* if our mouse button is grabbed to any objects */
if (e->pointer.mouse_grabbed > 0)
{
@@ -671,7 +790,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
{
Evas_Event_Mouse_Move ev;
- Evas_Object *obj;
+ Evas_Object *eo_obj;
int event_id = 0;
_evas_object_event_new();
@@ -691,39 +810,40 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
ev.locks = &(e->locks);
ev.timestamp = timestamp;
ev.event_flags = e->default_event_flags;
- ev.dev = _evas_device_top_get(e);
+ ev.dev = _evas_device_top_get(eo_e);
if (ev.dev) _evas_device_ref(ev.dev);
copy = evas_event_list_copy(e->pointer.object.in);
- EINA_LIST_FOREACH(copy, l, obj)
+ EINA_LIST_FOREACH(copy, l, eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
ev.cur.canvas.x = e->pointer.x;
ev.cur.canvas.y = e->pointer.y;
- _evas_event_framespace_adjust(obj, &ev.cur.canvas.x, &ev.cur.canvas.y);
- _evas_event_havemap_adjust(obj, &ev.cur.canvas.x,
+ _evas_event_framespace_adjust(eo_obj, &ev.cur.canvas.x, &ev.cur.canvas.y);
+ _evas_event_havemap_adjust(eo_obj, obj, &ev.cur.canvas.x,
&ev.cur.canvas.y,
obj->mouse_grabbed);
- if ((e->events_frozen <= 0) &&
- (evas_object_clippers_is_visible(obj) ||
+ if ((!e->is_frozen) &&
+ (evas_object_clippers_is_visible(eo_obj, obj) ||
obj->mouse_grabbed) &&
- (!evas_event_passes_through(obj)) &&
- (!evas_event_freezes_through(obj)) &&
+ (!evas_event_passes_through(eo_obj, obj)) &&
+ (!evas_event_freezes_through(eo_obj, obj)) &&
(!obj->clip.clipees))
{
if ((px != x) || (py != y))
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id);
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id);
}
else
- outs = eina_list_append(outs, obj);
+ outs = eina_list_append(outs, eo_obj);
if ((obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN) &&
(e->pointer.nogrep > 0))
{
eina_list_free(copy);
- nogrep_obj = obj;
+ nogrep_obj = eo_obj;
goto nogrep;
}
if (e->delete_me) break;
}
- _evas_post_event_callback_call(e);
+ _evas_post_event_callback_call(eo_e, e);
if (ev.dev) _evas_device_unref(ev.dev);
}
{
@@ -743,35 +863,36 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
ev.locks = &(e->locks);
ev.timestamp = timestamp;
ev.event_flags = e->default_event_flags;
- ev.dev = _evas_device_top_get(e);
+ ev.dev = _evas_device_top_get(eo_e);
if (ev.dev) _evas_device_ref(ev.dev);
if (copy) eina_list_free(copy);
while (outs)
{
- Evas_Object *obj;
+ Evas_Object *eo_obj;
- obj = outs->data;
- outs = eina_list_remove(outs, obj);
+ eo_obj = outs->data;
+ outs = eina_list_remove(outs, eo_obj);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if ((obj->mouse_grabbed == 0) && (!e->delete_me))
{
ev.canvas.x = e->pointer.x;
ev.canvas.y = e->pointer.y;
- _evas_event_framespace_adjust(obj, &ev.canvas.x, &ev.canvas.y);
- _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
- e->pointer.object.in = eina_list_remove(e->pointer.object.in, obj);
+ _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
+ _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
+ e->pointer.object.in = eina_list_remove(e->pointer.object.in, eo_obj);
if (obj->mouse_in)
{
obj->mouse_in = 0;
if (!obj->delete_me)
{
- if (e->events_frozen <= 0)
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id);
+ if (!e->is_frozen)
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id);
}
}
}
}
- _evas_post_event_callback_call(e);
+ _evas_post_event_callback_call(eo_e, e);
if (ev.dev) _evas_device_unref(ev.dev);
}
}
@@ -782,7 +903,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
Evas_Event_Mouse_Move ev;
Evas_Event_Mouse_Out ev2;
Evas_Event_Mouse_In ev3;
- Evas_Object *obj;
+ Evas_Object *eo_obj;
int event_id = 0, event_id2 = 0;
_evas_object_event_new();
@@ -802,7 +923,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
ev.locks = &(e->locks);
ev.timestamp = timestamp;
ev.event_flags = e->default_event_flags;
- ev.dev = _evas_device_top_get(e);
+ ev.dev = _evas_device_top_get(eo_e);
if (ev.dev) _evas_device_ref(ev.dev);
ev2.buttons = e->pointer.button;
@@ -830,32 +951,33 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
ev3.dev = ev.dev;
/* get all new in objects */
- ins = evas_event_objects_event_list(e, NULL, x, y);
+ ins = evas_event_objects_event_list(eo_e, NULL, x, y);
/* go thru old list of in objects */
copy = evas_event_list_copy(e->pointer.object.in);
- EINA_LIST_FOREACH(copy, l, obj)
+ EINA_LIST_FOREACH(copy, l, eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
/* if its under the pointer and its visible and its in the new */
/* in list */
// FIXME: i don't think we need this
- // evas_object_clip_recalc(obj);
- if ((e->events_frozen <= 0) &&
- evas_object_is_in_output_rect(obj, x, y, 1, 1) &&
- (evas_object_clippers_is_visible(obj) ||
+ // evas_object_clip_recalc(eo_obj);
+ if ((!e->is_frozen) &&
+ evas_object_is_in_output_rect(eo_obj, obj, x, y, 1, 1) &&
+ (evas_object_clippers_is_visible(eo_obj, obj) ||
obj->mouse_grabbed) &&
- eina_list_data_find(ins, obj) &&
- (!evas_event_passes_through(obj)) &&
- (!evas_event_freezes_through(obj)) &&
+ eina_list_data_find(ins, eo_obj) &&
+ (!evas_event_passes_through(eo_obj, obj)) &&
+ (!evas_event_freezes_through(eo_obj, obj)) &&
(!obj->clip.clipees) &&
- ((!obj->precise_is_inside) || evas_object_is_inside(obj, x, y))
+ ((!obj->precise_is_inside) || evas_object_is_inside(eo_obj, obj, x, y))
)
{
if ((px != x) || (py != y))
{
ev.cur.canvas.x = e->pointer.x;
ev.cur.canvas.y = e->pointer.y;
- _evas_event_havemap_adjust(obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed);
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id);
+ _evas_event_havemap_adjust(eo_obj, obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed);
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id);
}
}
/* otherwise it has left the object */
@@ -866,35 +988,36 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
obj->mouse_in = 0;
ev2.canvas.x = e->pointer.x;
ev2.canvas.y = e->pointer.y;
- _evas_event_framespace_adjust(obj, &ev2.canvas.x, &ev2.canvas.y);
- _evas_event_havemap_adjust(obj, &ev2.canvas.x, &ev2.canvas.y, obj->mouse_grabbed);
- if (e->events_frozen <= 0)
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev2, event_id);
+ _evas_event_framespace_adjust(eo_obj, &ev2.canvas.x, &ev2.canvas.y);
+ _evas_event_havemap_adjust(eo_obj, obj, &ev2.canvas.x, &ev2.canvas.y, obj->mouse_grabbed);
+ if (!e->is_frozen)
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, &ev2, event_id);
}
}
if (e->delete_me) break;
}
- _evas_post_event_callback_call(e);
+ _evas_post_event_callback_call(eo_e, e);
_evas_object_event_new();
event_id2 = _evas_event_counter;
if (copy) copy = eina_list_free(copy);
/* go thru our current list of ins */
- EINA_LIST_FOREACH(ins, l, obj)
+ EINA_LIST_FOREACH(ins, l, eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
ev3.canvas.x = e->pointer.x;
ev3.canvas.y = e->pointer.y;
- _evas_event_framespace_adjust(obj, &ev3.canvas.x, &ev3.canvas.y);
- _evas_event_havemap_adjust(obj, &ev3.canvas.x, &ev3.canvas.y, obj->mouse_grabbed);
+ _evas_event_framespace_adjust(eo_obj, &ev3.canvas.x, &ev3.canvas.y);
+ _evas_event_havemap_adjust(eo_obj, obj, &ev3.canvas.x, &ev3.canvas.y, obj->mouse_grabbed);
/* if its not in the old list of ins send an enter event */
- if (!eina_list_data_find(e->pointer.object.in, obj))
+ if (!eina_list_data_find(e->pointer.object.in, eo_obj))
{
if (!obj->mouse_in)
{
obj->mouse_in = 1;
- if (e->events_frozen <= 0)
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2);
+ if (!e->is_frozen)
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2);
}
}
if (e->delete_me) break;
@@ -911,7 +1034,7 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
/* free our cur ins */
eina_list_free(ins);
}
- _evas_post_event_callback_call(e);
+ _evas_post_event_callback_call(eo_e, e);
if (ev.dev) _evas_device_unref(ev.dev);
}
_evas_unwalk(e);
@@ -924,7 +1047,7 @@ nogrep:
Evas_Event_Mouse_Move ev;
Evas_Event_Mouse_Out ev2;
Evas_Event_Mouse_In ev3;
- Evas_Object *obj, *below_obj;
+ Evas_Object *eo_obj, *eo_below_obj;
int event_id = 0, event_id2 = 0;
int norep = 0, breaknext = 0;
@@ -945,7 +1068,7 @@ nogrep:
ev.locks = &(e->locks);
ev.timestamp = timestamp;
ev.event_flags = e->default_event_flags;
- ev.dev = _evas_device_top_get(e);
+ ev.dev = _evas_device_top_get(eo_e);
if (ev.dev) _evas_device_ref(ev.dev);
ev2.buttons = e->pointer.button;
@@ -974,57 +1097,61 @@ nogrep:
/* go thru old list of in objects */
copy = evas_event_list_copy(e->pointer.object.in);
- EINA_LIST_FOREACH(copy, l, obj)
+ EINA_LIST_FOREACH(copy, l, eo_obj)
{
if (breaknext)
{
lst = l;
break;
}
- if (obj == nogrep_obj) breaknext = 1;
+ if (eo_obj == nogrep_obj) breaknext = 1;
}
-
+
/* get all new in objects */
- below_obj = evas_object_below_get(nogrep_obj);
- if (below_obj)
- ins = _evas_event_object_list_raw_in_get(e, NULL,
+ eo_below_obj = evas_object_below_get(nogrep_obj);
+ if (eo_below_obj)
+ {
+ Evas_Object_Protected_Data *below_obj = eo_data_get(eo_below_obj, EVAS_OBJ_CLASS);
+ ins = _evas_event_object_list_raw_in_get(eo_e, NULL,
EINA_INLIST_GET(below_obj), NULL,
e->pointer.x, e->pointer.y,
&norep);
- EINA_LIST_FOREACH(copy, l, obj)
+ }
+ EINA_LIST_FOREACH(copy, l, eo_obj)
{
- newin = eina_list_append(newin, obj);
- if (obj == nogrep_obj) break;
+ newin = eina_list_append(newin, eo_obj);
+ if (eo_obj == nogrep_obj) break;
}
- EINA_LIST_FOREACH(ins, l, obj)
+ EINA_LIST_FOREACH(ins, l, eo_obj)
{
- newin = eina_list_append(newin, obj);
+ newin = eina_list_append(newin, eo_obj);
}
- EINA_LIST_FOREACH(lst, l, obj)
+ EINA_LIST_FOREACH(lst, l, eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
/* if its under the pointer and its visible and its in the new */
/* in list */
// FIXME: i don't think we need this
- // evas_object_clip_recalc(obj);
- if ((e->events_frozen <= 0) &&
- evas_object_is_in_output_rect(obj, x, y, 1, 1) &&
- (evas_object_clippers_is_visible(obj) ||
+ // evas_object_clip_recalc(eo_obj);
+ if ((!e->is_frozen) &&
+ evas_object_is_in_output_rect(eo_obj, obj, x, y, 1, 1) &&
+ (evas_object_clippers_is_visible(eo_obj, obj) ||
obj->mouse_grabbed) &&
- eina_list_data_find(newin, obj) &&
- (!evas_event_passes_through(obj)) &&
- (!evas_event_freezes_through(obj)) &&
+ eina_list_data_find(newin, eo_obj) &&
+ (!evas_event_passes_through(eo_obj, obj)) &&
+ (!evas_event_freezes_through(eo_obj, obj)) &&
(!obj->clip.clipees) &&
- ((!obj->precise_is_inside) || evas_object_is_inside(obj, x, y))
+ ((!obj->precise_is_inside) || evas_object_is_inside(eo_obj, obj, x, y))
)
{
if ((px != x) || (py != y))
{
ev.cur.canvas.x = e->pointer.x;
ev.cur.canvas.y = e->pointer.y;
- _evas_event_framespace_adjust(obj, &ev.cur.canvas.x, &ev.cur.canvas.y);
- _evas_event_havemap_adjust(obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed);
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id);
+ _evas_event_framespace_adjust(eo_obj, &ev.cur.canvas.x, &ev.cur.canvas.y);
+ _evas_event_havemap_adjust(eo_obj, obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed);
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_MOVE, &ev, event_id);
}
}
/* otherwise it has left the object */
@@ -1035,35 +1162,36 @@ nogrep:
obj->mouse_in = 0;
ev2.canvas.x = e->pointer.x;
ev2.canvas.y = e->pointer.y;
- _evas_event_framespace_adjust(obj, &ev2.canvas.x, &ev2.canvas.y);
- _evas_event_havemap_adjust(obj, &ev2.canvas.x, &ev2.canvas.y, obj->mouse_grabbed);
- if (e->events_frozen <= 0)
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev2, event_id);
+ _evas_event_framespace_adjust(eo_obj, &ev2.canvas.x, &ev2.canvas.y);
+ _evas_event_havemap_adjust(eo_obj, obj, &ev2.canvas.x, &ev2.canvas.y, obj->mouse_grabbed);
+ if (!e->is_frozen)
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, &ev2, event_id);
}
}
if (e->delete_me) break;
}
- _evas_post_event_callback_call(e);
+ _evas_post_event_callback_call(eo_e, e);
_evas_object_event_new();
-
+
event_id2 = _evas_event_counter;
if (copy) copy = eina_list_free(copy);
/* go thru our current list of ins */
- EINA_LIST_FOREACH(newin, l, obj)
+ EINA_LIST_FOREACH(newin, l, eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
ev3.canvas.x = e->pointer.x;
ev3.canvas.y = e->pointer.y;
- _evas_event_framespace_adjust(obj, &ev3.canvas.x, &ev3.canvas.y);
- _evas_event_havemap_adjust(obj, &ev3.canvas.x, &ev3.canvas.y, obj->mouse_grabbed);
+ _evas_event_framespace_adjust(eo_obj, &ev3.canvas.x, &ev3.canvas.y);
+ _evas_event_havemap_adjust(eo_obj, obj, &ev3.canvas.x, &ev3.canvas.y, obj->mouse_grabbed);
/* if its not in the old list of ins send an enter event */
- if (!eina_list_data_find(e->pointer.object.in, obj))
+ if (!eina_list_data_find(e->pointer.object.in, eo_obj))
{
if (!obj->mouse_in)
{
obj->mouse_in = 1;
- if (e->events_frozen <= 0)
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2);
+ if (!e->is_frozen)
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_IN, &ev3, event_id2);
}
}
if (e->delete_me) break;
@@ -1073,27 +1201,38 @@ nogrep:
/* and set up the new one */
e->pointer.object.in = newin;
- _evas_post_event_callback_call(e);
+ _evas_post_event_callback_call(eo_e, e);
if (ev.dev) _evas_device_unref(ev.dev);
}
_evas_unwalk(e);
}
EAPI void
-evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data)
+evas_event_feed_mouse_in(Evas *eo_e, unsigned int timestamp, const void *data)
{
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
+ return;
+ MAGIC_CHECK_END();
+
+ eo_do(eo_e, evas_canvas_event_feed_mouse_in(timestamp, data));
+}
+
+void
+_canvas_event_feed_mouse_in(Eo *eo_e, void *_pd, va_list *list)
+{
+ unsigned int timestamp = va_arg(*list, unsigned int);
+ const void *data = va_arg(*list, const void *);
+
+ Evas_Public_Data *e = _pd;
Eina_List *ins;
Eina_List *l;
Evas_Event_Mouse_In ev;
- Evas_Object *obj;
+ Evas_Object *eo_obj;
int event_id = 0;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
- return;
- MAGIC_CHECK_END();
e->pointer.inside = 1;
- if (e->events_frozen > 0) return;
+ if (e->is_frozen) return;
e->last_timestamp = timestamp;
if (e->pointer.mouse_grabbed != 0) return;
@@ -1111,25 +1250,26 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data)
ev.locks = &(e->locks);
ev.timestamp = timestamp;
ev.event_flags = e->default_event_flags;
- ev.dev = _evas_device_top_get(e);
+ ev.dev = _evas_device_top_get(eo_e);
if (ev.dev) _evas_device_ref(ev.dev);
_evas_walk(e);
/* get new list of ins */
- ins = evas_event_objects_event_list(e, NULL, e->pointer.x, e->pointer.y);
- EINA_LIST_FOREACH(ins, l, obj)
+ ins = evas_event_objects_event_list(eo_e, NULL, e->pointer.x, e->pointer.y);
+ EINA_LIST_FOREACH(ins, l, eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
ev.canvas.x = e->pointer.x;
ev.canvas.y = e->pointer.y;
- _evas_event_framespace_adjust(obj, &ev.canvas.x, &ev.canvas.y);
- _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
- if (!eina_list_data_find(e->pointer.object.in, obj))
+ _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
+ _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
+ if (!eina_list_data_find(e->pointer.object.in, eo_obj))
{
if (!obj->mouse_in)
{
obj->mouse_in = 1;
- if (e->events_frozen <= 0)
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev, event_id);
+ if (!e->is_frozen)
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_IN, &ev, event_id);
}
}
if (e->delete_me) break;
@@ -1138,24 +1278,35 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data)
e->pointer.object.in = eina_list_free(e->pointer.object.in);
/* and set up the new one */
e->pointer.object.in = ins;
- _evas_post_event_callback_call(e);
- evas_event_feed_mouse_move(e, e->pointer.x, e->pointer.y, timestamp, data);
+ _evas_post_event_callback_call(eo_e, e);
+ evas_event_feed_mouse_move(eo_e, e->pointer.x, e->pointer.y, timestamp, data);
if (ev.dev) _evas_device_unref(ev.dev);
_evas_unwalk(e);
}
EAPI void
-evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data)
+evas_event_feed_mouse_out(Evas *eo_e, unsigned int timestamp, const void *data)
+{
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
+ return;
+ MAGIC_CHECK_END();
+
+ eo_do(eo_e, evas_canvas_event_feed_mouse_out(timestamp, data));
+}
+
+void
+_canvas_event_feed_mouse_out(Eo *eo_e, void *_pd, va_list *list)
{
+ unsigned int timestamp = va_arg(*list, unsigned int);
+ const void *data = va_arg(*list, const void *);
+
+ Evas_Public_Data *e = _pd;
Evas_Event_Mouse_Out ev;
int event_id = 0;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
- return;
- MAGIC_CHECK_END();
e->pointer.inside = 0;
- if (e->events_frozen > 0) return;
+ if (e->is_frozen) return;
e->last_timestamp = timestamp;
_evas_object_event_new();
@@ -1171,7 +1322,7 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data)
ev.locks = &(e->locks);
ev.timestamp = timestamp;
ev.event_flags = e->default_event_flags;
- ev.dev = _evas_device_top_get(e);
+ ev.dev = _evas_device_top_get(eo_e);
if (ev.dev) _evas_device_ref(ev.dev);
_evas_walk(e);
@@ -1179,22 +1330,23 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data)
{
/* go thru old list of in objects */
Eina_List *l, *copy;
- Evas_Object *obj;
+ Evas_Object *eo_obj;
copy = evas_event_list_copy(e->pointer.object.in);
- EINA_LIST_FOREACH(copy, l, obj)
+ EINA_LIST_FOREACH(copy, l, eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
ev.canvas.x = e->pointer.x;
ev.canvas.y = e->pointer.y;
- _evas_event_framespace_adjust(obj, &ev.canvas.x, &ev.canvas.y);
- _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
+ _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
+ _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
if (obj->mouse_in)
{
obj->mouse_in = 0;
if (!obj->delete_me)
{
- if (e->events_frozen <= 0)
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id);
+ if (!e->is_frozen)
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOUSE_OUT, &ev, event_id);
}
obj->mouse_grabbed = 0;
}
@@ -1204,14 +1356,14 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data)
/* free our old list of ins */
e->pointer.object.in = eina_list_free(e->pointer.object.in);
e->pointer.mouse_grabbed = 0;
- _evas_post_event_callback_call(e);
+ _evas_post_event_callback_call(eo_e, e);
}
if (ev.dev) _evas_device_unref(ev.dev);
_evas_unwalk(e);
}
EAPI void
-evas_event_feed_multi_down(Evas *e,
+evas_event_feed_multi_down(Evas *eo_e,
int d, int x, int y,
double rad, double radx, double rady,
double pres, double ang,
@@ -1219,18 +1371,39 @@ evas_event_feed_multi_down(Evas *e,
Evas_Button_Flags flags, unsigned int timestamp,
const void *data)
{
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
+ return;
+ MAGIC_CHECK_END();
+
+ eo_do(eo_e, evas_canvas_event_feed_multi_down(d, x, y, rad, radx, rady, pres, ang, fx, fy, flags, timestamp, data));
+}
+
+void
+_canvas_event_feed_multi_down(Eo *eo_e, void *_pd, va_list *list)
+{
+ int d = va_arg(*list, int);
+ int x = va_arg(*list, int);
+ int y = va_arg(*list, int);
+ double rad = va_arg(*list, double);
+ double radx = va_arg(*list, double);
+ double rady = va_arg(*list, double);
+ double pres = va_arg(*list, double);
+ double ang = va_arg(*list, double);
+ double fx = va_arg(*list, double);
+ double fy = va_arg(*list, double);
+ Evas_Button_Flags flags = va_arg(*list, Evas_Button_Flags);
+ unsigned int timestamp = va_arg(*list, unsigned int);
+ const void *data = va_arg(*list, const void *);
+
+ Evas_Public_Data *e = _pd;
Eina_List *l, *copy;
Evas_Event_Multi_Down ev;
- Evas_Object *obj;
+ Evas_Object *eo_obj;
int addgrab = 0;
int event_id = 0;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
- return;
- MAGIC_CHECK_END();
-
e->pointer.downs++;
- if (e->events_frozen > 0) return;
+ if (e->is_frozen) return;
e->last_timestamp = timestamp;
_evas_object_event_new();
@@ -1254,51 +1427,53 @@ evas_event_feed_multi_down(Evas *e,
ev.flags = flags;
ev.timestamp = timestamp;
ev.event_flags = e->default_event_flags;
- ev.dev = _evas_device_top_get(e);
+ ev.dev = _evas_device_top_get(eo_e);
if (ev.dev) _evas_device_ref(ev.dev);
_evas_walk(e);
/* append new touch point to the touch point list */
- _evas_touch_point_append(e, d, x, y);
+ _evas_touch_point_append(eo_e, d, x, y);
if (e->pointer.mouse_grabbed == 0)
{
if (e->pointer.downs > 1) addgrab = e->pointer.downs - 1;
}
copy = evas_event_list_copy(e->pointer.object.in);
- EINA_LIST_FOREACH(copy, l, obj)
+ EINA_LIST_FOREACH(copy, l, eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if (obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB)
{
obj->mouse_grabbed += addgrab + 1;
e->pointer.mouse_grabbed += addgrab + 1;
}
}
- EINA_LIST_FOREACH(copy, l, obj)
+ EINA_LIST_FOREACH(copy, l, eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
ev.canvas.x = x;
ev.canvas.y = y;
ev.canvas.xsub = fx;
ev.canvas.ysub = fy;
- _evas_event_framespace_adjust(obj, &ev.canvas.x, &ev.canvas.y);
- _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
+ _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
+ _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
if (x != ev.canvas.x)
ev.canvas.xsub = ev.canvas.x; // fixme - lost precision
if (y != ev.canvas.y)
ev.canvas.ysub = ev.canvas.y; // fixme - lost precision
- if (e->events_frozen <= 0)
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_DOWN, &ev, event_id);
+ if (!e->is_frozen)
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_DOWN, &ev, event_id);
if (e->delete_me) break;
}
if (copy) eina_list_free(copy);
- _evas_post_event_callback_call(e);
+ _evas_post_event_callback_call(eo_e, e);
/* update touch point's state to EVAS_TOUCH_POINT_STILL */
- _evas_touch_point_update(e, d, x, y, EVAS_TOUCH_POINT_STILL);
+ _evas_touch_point_update(eo_e, d, x, y, EVAS_TOUCH_POINT_STILL);
if (ev.dev) _evas_device_unref(ev.dev);
_evas_unwalk(e);
}
EAPI void
-evas_event_feed_multi_up(Evas *e,
+evas_event_feed_multi_up(Evas *eo_e,
int d, int x, int y,
double rad, double radx, double rady,
double pres, double ang,
@@ -1306,18 +1481,39 @@ evas_event_feed_multi_up(Evas *e,
Evas_Button_Flags flags, unsigned int timestamp,
const void *data)
{
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
+ return;
+ MAGIC_CHECK_END();
+
+ eo_do(eo_e, evas_canvas_event_feed_multi_up(d, x, y, rad, radx, rady, pres, ang, fx, fy, flags, timestamp, data));
+}
+
+void
+_canvas_event_feed_multi_up(Eo *eo_e, void *_pd, va_list *list)
+{
+ int d = va_arg(*list, int);
+ int x = va_arg(*list, int);
+ int y = va_arg(*list, int);
+ double rad = va_arg(*list, double);
+ double radx = va_arg(*list, double);
+ double rady = va_arg(*list, double);
+ double pres = va_arg(*list, double);
+ double ang = va_arg(*list, double);
+ double fx = va_arg(*list, double);
+ double fy = va_arg(*list, double);
+ Evas_Button_Flags flags = va_arg(*list, Evas_Button_Flags);
+ unsigned int timestamp = va_arg(*list, unsigned int);
+ const void *data = va_arg(*list, const void *);
+
+ Evas_Public_Data *e = _pd;
Eina_List *l, *copy;
Evas_Event_Multi_Up ev;
- Evas_Object *obj;
+ Evas_Object *eo_obj;
int event_id = 0;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
- return;
- MAGIC_CHECK_END();
-
if (e->pointer.downs <= 0) return;
e->pointer.downs--;
- if (e->events_frozen > 0) return;
+ if (e->is_frozen) return;
e->last_timestamp = timestamp;
_evas_object_event_new();
@@ -1341,21 +1537,22 @@ evas_event_feed_multi_up(Evas *e,
ev.flags = flags;
ev.timestamp = timestamp;
ev.event_flags = e->default_event_flags;
- ev.dev = _evas_device_top_get(e);
+ ev.dev = _evas_device_top_get(eo_e);
if (ev.dev) _evas_device_ref(ev.dev);
_evas_walk(e);
/* update released touch point */
- _evas_touch_point_update(e, d, x, y, EVAS_TOUCH_POINT_UP);
+ _evas_touch_point_update(eo_e, d, x, y, EVAS_TOUCH_POINT_UP);
copy = evas_event_list_copy(e->pointer.object.in);
- EINA_LIST_FOREACH(copy, l, obj)
+ EINA_LIST_FOREACH(copy, l, eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
ev.canvas.x = x;
ev.canvas.y = y;
ev.canvas.xsub = fx;
ev.canvas.ysub = fy;
- _evas_event_framespace_adjust(obj, &ev.canvas.x, &ev.canvas.y);
- _evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
+ _evas_event_framespace_adjust(eo_obj, &ev.canvas.x, &ev.canvas.y);
+ _evas_event_havemap_adjust(eo_obj, obj, &ev.canvas.x, &ev.canvas.y, obj->mouse_grabbed);
if (x != ev.canvas.x)
ev.canvas.xsub = ev.canvas.x; // fixme - lost precision
if (y != ev.canvas.y)
@@ -1366,46 +1563,67 @@ evas_event_feed_multi_up(Evas *e,
obj->mouse_grabbed--;
e->pointer.mouse_grabbed--;
}
- if (e->events_frozen <= 0)
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_UP, &ev, event_id);
+ if (!e->is_frozen)
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_UP, &ev, event_id);
if (e->delete_me) break;
}
if (copy) copy = eina_list_free(copy);
- if ((e->pointer.mouse_grabbed == 0) && !_post_up_handle(e, timestamp, data))
- _evas_post_event_callback_call(e);
+ if ((e->pointer.mouse_grabbed == 0) && !_post_up_handle(eo_e, timestamp, data))
+ _evas_post_event_callback_call(eo_e, e);
/* remove released touch point from the touch point list */
- _evas_touch_point_remove(e, d);
+ _evas_touch_point_remove(eo_e, d);
if (ev.dev) _evas_device_unref(ev.dev);
_evas_unwalk(e);
}
EAPI void
-evas_event_feed_multi_move(Evas *e,
+evas_event_feed_multi_move(Evas *eo_e,
int d, int x, int y,
double rad, double radx, double rady,
double pres, double ang,
double fx, double fy,
unsigned int timestamp, const void *data)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
- if (e->events_frozen > 0) return;
+ eo_do(eo_e, evas_canvas_event_feed_multi_move(d, x, y, rad, radx, rady, pres, ang, fx, fy, timestamp, data));
+}
+
+void
+_canvas_event_feed_multi_move(Eo *eo_e, void *_pd, va_list *list)
+{
+ int d = va_arg(*list, int);
+ int x = va_arg(*list, int);
+ int y = va_arg(*list, int);
+ double rad = va_arg(*list, double);
+ double radx = va_arg(*list, double);
+ double rady = va_arg(*list, double);
+ double pres = va_arg(*list, double);
+ double ang = va_arg(*list, double);
+ double fx = va_arg(*list, double);
+ double fy = va_arg(*list, double);
+ unsigned int timestamp = va_arg(*list, unsigned int);
+ const void *data = va_arg(*list, const void *);
+
+ Evas_Public_Data *e = _pd;
+
+ if (e->is_frozen) return;
e->last_timestamp = timestamp;
if ((!e->pointer.inside) && (e->pointer.mouse_grabbed == 0)) return;
_evas_walk(e);
/* update moved touch point */
- _evas_touch_point_update(e, d, x, y, EVAS_TOUCH_POINT_MOVE);
+ _evas_touch_point_update(eo_e, d, x, y, EVAS_TOUCH_POINT_MOVE);
/* if our mouse button is grabbed to any objects */
if (e->pointer.mouse_grabbed > 0)
{
/* go thru old list of in objects */
Eina_List *l, *copy;
Evas_Event_Multi_Move ev;
- Evas_Object *obj;
+ Evas_Object *eo_obj;
int event_id = 0;
_evas_object_event_new();
@@ -1428,33 +1646,34 @@ evas_event_feed_multi_move(Evas *e,
ev.locks = &(e->locks);
ev.timestamp = timestamp;
ev.event_flags = e->default_event_flags;
- ev.dev = _evas_device_top_get(e);
+ ev.dev = _evas_device_top_get(eo_e);
if (ev.dev) _evas_device_ref(ev.dev);
copy = evas_event_list_copy(e->pointer.object.in);
- EINA_LIST_FOREACH(copy, l, obj)
+ EINA_LIST_FOREACH(copy, l, eo_obj)
{
- if ((e->events_frozen <= 0) &&
- (evas_object_clippers_is_visible(obj) || obj->mouse_grabbed) &&
- (!evas_event_passes_through(obj)) &&
- (!evas_event_freezes_through(obj)) &&
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ if ((!e->is_frozen) &&
+ (evas_object_clippers_is_visible(eo_obj, obj) || obj->mouse_grabbed) &&
+ (!evas_event_passes_through(eo_obj, obj)) &&
+ (!evas_event_freezes_through(eo_obj, obj)) &&
(!obj->clip.clipees))
{
ev.cur.canvas.x = x;
ev.cur.canvas.y = y;
ev.cur.canvas.xsub = fx;
ev.cur.canvas.ysub = fy;
- _evas_event_framespace_adjust(obj, &ev.cur.canvas.x, &ev.cur.canvas.y);
- _evas_event_havemap_adjust(obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed);
+ _evas_event_framespace_adjust(eo_obj, &ev.cur.canvas.x, &ev.cur.canvas.y);
+ _evas_event_havemap_adjust(eo_obj, obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed);
if (x != ev.cur.canvas.x)
ev.cur.canvas.xsub = ev.cur.canvas.x; // fixme - lost precision
if (y != ev.cur.canvas.y)
ev.cur.canvas.ysub = ev.cur.canvas.y; // fixme - lost precision
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_MOVE, &ev, event_id);
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_MOVE, &ev, event_id);
}
if (e->delete_me) break;
}
- _evas_post_event_callback_call(e);
+ _evas_post_event_callback_call(eo_e, e);
if (ev.dev) _evas_device_unref(ev.dev);
}
else
@@ -1462,7 +1681,7 @@ evas_event_feed_multi_move(Evas *e,
Eina_List *ins;
Eina_List *l, *copy;
Evas_Event_Multi_Move ev;
- Evas_Object *obj;
+ Evas_Object *eo_obj;
int event_id = 0;
_evas_object_event_new();
@@ -1485,41 +1704,42 @@ evas_event_feed_multi_move(Evas *e,
ev.locks = &(e->locks);
ev.timestamp = timestamp;
ev.event_flags = e->default_event_flags;
- ev.dev = _evas_device_top_get(e);
+ ev.dev = _evas_device_top_get(eo_e);
if (ev.dev) _evas_device_ref(ev.dev);
/* get all new in objects */
- ins = evas_event_objects_event_list(e, NULL, x, y);
+ ins = evas_event_objects_event_list(eo_e, NULL, x, y);
/* go thru old list of in objects */
copy = evas_event_list_copy(e->pointer.object.in);
- EINA_LIST_FOREACH(copy, l, obj)
+ EINA_LIST_FOREACH(copy, l, eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
/* if its under the pointer and its visible and its in the new */
/* in list */
// FIXME: i don't think we need this
- // evas_object_clip_recalc(obj);
- if ((e->events_frozen <= 0) &&
- evas_object_is_in_output_rect(obj, x, y, 1, 1) &&
- (evas_object_clippers_is_visible(obj) ||
+ // evas_object_clip_recalc(eo_obj);
+ if ((!e->is_frozen) &&
+ evas_object_is_in_output_rect(eo_obj, obj, x, y, 1, 1) &&
+ (evas_object_clippers_is_visible(eo_obj, obj) ||
obj->mouse_grabbed) &&
- eina_list_data_find(ins, obj) &&
- (!evas_event_passes_through(obj)) &&
- (!evas_event_freezes_through(obj)) &&
+ eina_list_data_find(ins, eo_obj) &&
+ (!evas_event_passes_through(eo_obj, obj)) &&
+ (!evas_event_freezes_through(eo_obj, obj)) &&
(!obj->clip.clipees) &&
- ((!obj->precise_is_inside) || evas_object_is_inside(obj, x, y))
+ ((!obj->precise_is_inside) || evas_object_is_inside(eo_obj, obj, x, y))
)
{
ev.cur.canvas.x = x;
ev.cur.canvas.y = y;
ev.cur.canvas.xsub = fx;
ev.cur.canvas.ysub = fy;
- _evas_event_framespace_adjust(obj, &ev.cur.canvas.x, &ev.cur.canvas.y);
- _evas_event_havemap_adjust(obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed);
+ _evas_event_framespace_adjust(eo_obj, &ev.cur.canvas.x, &ev.cur.canvas.y);
+ _evas_event_havemap_adjust(eo_obj, obj, &ev.cur.canvas.x, &ev.cur.canvas.y, obj->mouse_grabbed);
if (x != ev.cur.canvas.x)
ev.cur.canvas.xsub = ev.cur.canvas.x; // fixme - lost precision
if (y != ev.cur.canvas.y)
ev.cur.canvas.ysub = ev.cur.canvas.y; // fixme - lost precision
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MULTI_MOVE, &ev, event_id);
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MULTI_MOVE, &ev, event_id);
}
if (e->delete_me) break;
}
@@ -1536,22 +1756,36 @@ evas_event_feed_multi_move(Evas *e,
/* free our cur ins */
eina_list_free(ins);
}
- _evas_post_event_callback_call(e);
+ _evas_post_event_callback_call(eo_e, e);
if (ev.dev) _evas_device_unref(ev.dev);
}
_evas_unwalk(e);
}
EAPI void
-evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data)
+evas_event_feed_key_down(Evas *eo_e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data)
{
- int event_id = 0;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_event_feed_key_down(keyname, key, string, compose, timestamp, data));
+}
+
+void
+_canvas_event_feed_key_down(Eo *eo_e, void *_pd, va_list *list)
+{
+ const char *keyname = va_arg(*list, const char *);
+ const char *key = va_arg(*list, const char *);
+ const char *string = va_arg(*list, const char *);
+ const char *compose = va_arg(*list, const char *);
+ unsigned int timestamp = va_arg(*list, unsigned int);
+ const void *data = va_arg(*list, const void *);
+
+ int event_id = 0;
+ Evas_Public_Data *e = _pd;
if (!keyname) return;
- if (e->events_frozen > 0) return;
+ if (e->is_frozen) return;
e->last_timestamp = timestamp;
_evas_walk(e);
@@ -1571,7 +1805,7 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch
ev.compose = compose;
ev.timestamp = timestamp;
ev.event_flags = e->default_event_flags;
- ev.dev = _evas_device_top_get(e);
+ ev.dev = _evas_device_top_get(eo_e);
if (ev.dev) _evas_device_ref(ev.dev);
if (e->grabs)
@@ -1594,9 +1828,10 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch
{
if (!(e->modifiers.mask & g->not_modifiers))
{
- if (e->events_frozen <= 0 &&
- !evas_event_freezes_through(g->object))
- evas_object_event_callback_call(g->object,
+ Evas_Object_Protected_Data *object_obj = eo_data_get(g->object, EVAS_OBJ_CLASS);
+ if (!e->is_frozen &&
+ !evas_event_freezes_through(g->object, object_obj))
+ evas_object_event_callback_call(g->object, object_obj,
EVAS_CALLBACK_KEY_DOWN,
&ev, event_id);
if (g->exclusive) exclusive = EINA_TRUE;
@@ -1615,32 +1850,50 @@ evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const ch
g = eina_list_data_get(l);
l = eina_list_next(l);
if (g->delete_me)
- evas_key_grab_free(g->object, g->keyname, g->modifiers,
- g->not_modifiers);
+ {
+ Evas_Object_Protected_Data *g_object_obj = eo_data_get(g->object, EVAS_OBJ_CLASS);
+ evas_key_grab_free(g->object, g_object_obj, g->keyname,
+ g->modifiers, g->not_modifiers);
+ }
}
}
}
}
if ((e->focused) && (!exclusive))
{
- if (e->events_frozen <= 0 && !evas_event_freezes_through(e->focused))
- evas_object_event_callback_call(e->focused, EVAS_CALLBACK_KEY_DOWN,
+ Evas_Object_Protected_Data *focused_obj = eo_data_get(e->focused, EVAS_OBJ_CLASS);
+ if (!e->is_frozen && !evas_event_freezes_through(e->focused, focused_obj))
+ evas_object_event_callback_call(e->focused, focused_obj, EVAS_CALLBACK_KEY_DOWN,
&ev, event_id);
}
- _evas_post_event_callback_call(e);
+ _evas_post_event_callback_call(eo_e, e);
if (ev.dev) _evas_device_unref(ev.dev);
_evas_unwalk(e);
}
EAPI void
-evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data)
+evas_event_feed_key_up(Evas *eo_e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data)
{
- int event_id = 0;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_event_feed_key_up(keyname, key, string, compose, timestamp, data));
+}
+
+void
+_canvas_event_feed_key_up(Eo *eo_e, void *_pd, va_list *list)
+{
+ const char *keyname = va_arg(*list, const char *);
+ const char *key = va_arg(*list, const char *);
+ const char *string = va_arg(*list, const char *);
+ const char *compose = va_arg(*list, const char *);
+ unsigned int timestamp = va_arg(*list, unsigned int);
+ const void *data = va_arg(*list, const void *);
+
+ int event_id = 0;
+ Evas_Public_Data *e = _pd;
if (!keyname) return;
- if (e->events_frozen > 0) return;
+ if (e->is_frozen) return;
e->last_timestamp = timestamp;
_evas_walk(e);
@@ -1660,7 +1913,7 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char
ev.compose = compose;
ev.timestamp = timestamp;
ev.event_flags = e->default_event_flags;
- ev.dev = _evas_device_top_get(e);
+ ev.dev = _evas_device_top_get(eo_e);
if (ev.dev) _evas_device_ref(ev.dev);
if (e->grabs)
@@ -1683,9 +1936,10 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char
(g->not_modifiers == ~e->modifiers.mask))) &&
(!strcmp(keyname, g->keyname)))
{
- if (e->events_frozen <= 0 &&
- !evas_event_freezes_through(g->object))
- evas_object_event_callback_call(g->object,
+ Evas_Object_Protected_Data *object_obj = eo_data_get(g->object, EVAS_OBJ_CLASS);
+ if (!e->is_frozen &&
+ !evas_event_freezes_through(g->object, object_obj))
+ evas_object_event_callback_call(g->object, object_obj,
EVAS_CALLBACK_KEY_UP, &ev, event_id);
if (g->exclusive) exclusive = EINA_TRUE;
}
@@ -1703,36 +1957,48 @@ evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char
EINA_LIST_FOREACH_SAFE(e->grabs, ll, l_next, gr)
{
if (gr->delete_me)
- evas_key_grab_free(gr->object, gr->keyname,
+ {
+ Evas_Object_Protected_Data *gr_object_obj =
+ eo_data_get(gr->object, EVAS_OBJ_CLASS);
+ evas_key_grab_free(gr->object, gr_object_obj, gr->keyname,
gr->modifiers, gr->not_modifiers);
+ }
}
}
}
}
if ((e->focused) && (!exclusive))
{
- if (e->events_frozen <= 0 && !evas_event_freezes_through(e->focused))
- evas_object_event_callback_call(e->focused, EVAS_CALLBACK_KEY_UP,
+ Evas_Object_Protected_Data *focused_obj = eo_data_get(e->focused, EVAS_OBJ_CLASS);
+ if (!e->is_frozen && !evas_event_freezes_through(e->focused, focused_obj))
+ evas_object_event_callback_call(e->focused, focused_obj, EVAS_CALLBACK_KEY_UP,
&ev, event_id);
}
- _evas_post_event_callback_call(e);
+ _evas_post_event_callback_call(eo_e, e);
if (ev.dev) _evas_device_unref(ev.dev);
_evas_unwalk(e);
}
EAPI void
-evas_event_feed_hold(Evas *e, int hold, unsigned int timestamp, const void *data)
+evas_event_feed_hold(Evas *eo_e, int hold, unsigned int timestamp, const void *data)
{
+ eo_do(eo_e, evas_canvas_event_feed_hold(hold, timestamp, data));
+}
+
+void
+_canvas_event_feed_hold(Eo *eo_e, void *_pd, va_list *list)
+{
+ int hold = va_arg(*list, int);
+ unsigned int timestamp = va_arg(*list, unsigned int);
+ const void *data = va_arg(*list, const void *);
+
+ Evas_Public_Data *e = _pd;
Eina_List *l, *copy;
Evas_Event_Hold ev;
- Evas_Object *obj;
+ Evas_Object *eo_obj;
int event_id = 0;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
- return;
- MAGIC_CHECK_END();
-
- if (e->events_frozen > 0) return;
+ if (e->is_frozen) return;
e->last_timestamp = timestamp;
_evas_object_event_new();
@@ -1742,64 +2008,90 @@ evas_event_feed_hold(Evas *e, int hold, unsigned int timestamp, const void *data
ev.data = (void *)data;
ev.timestamp = timestamp;
ev.event_flags = e->default_event_flags;
- ev.dev = _evas_device_top_get(e);
+ ev.dev = _evas_device_top_get(eo_e);
if (ev.dev) _evas_device_ref(ev.dev);
_evas_walk(e);
copy = evas_event_list_copy(e->pointer.object.in);
- EINA_LIST_FOREACH(copy, l, obj)
+ EINA_LIST_FOREACH(copy, l, eo_obj)
{
- if ((e->events_frozen <= 0) && !evas_event_freezes_through(obj))
- evas_object_event_callback_call(obj, EVAS_CALLBACK_HOLD, &ev, event_id);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ if ((!e->is_frozen) && !evas_event_freezes_through(eo_obj, obj))
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_HOLD, &ev, event_id);
if (e->delete_me) break;
}
if (copy) copy = eina_list_free(copy);
- _evas_post_event_callback_call(e);
+ _evas_post_event_callback_call(eo_e, e);
if (ev.dev) _evas_device_unref(ev.dev);
_evas_unwalk(e);
_evas_object_event_new();
}
EAPI void
-evas_object_freeze_events_set(Evas_Object *obj, Eina_Bool freeze)
+evas_object_freeze_events_set(Evas_Object *eo_obj, Eina_Bool freeze)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_freeze_events_set(freeze));
+}
+void
+_freeze_events_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Eina_Bool freeze = va_arg(*list, int);
+ Evas_Object_Protected_Data *obj = _pd;
freeze = !!freeze;
if (obj->freeze_events == freeze) return;
obj->freeze_events = freeze;
- evas_object_smart_member_cache_invalidate(obj, EINA_FALSE, EINA_TRUE);
+ evas_object_smart_member_cache_invalidate(eo_obj, EINA_FALSE, EINA_TRUE);
}
EAPI Eina_Bool
-evas_object_freeze_events_get(const Evas_Object *obj)
+evas_object_freeze_events_get(const Evas_Object *eo_obj)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return EINA_FALSE;
MAGIC_CHECK_END();
- return obj->freeze_events;
+ Eina_Bool freeze_events = EINA_FALSE;
+ eo_do((Eo *)eo_obj, evas_obj_freeze_events_get(&freeze_events));
+ return freeze_events;
+}
+
+void
+_freeze_events_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ Eina_Bool *freeze_events = va_arg(*list, Eina_Bool *);
+ const Evas_Object_Protected_Data *obj = _pd;
+ if (freeze_events) *freeze_events = obj->freeze_events;
}
EAPI void
-evas_object_pass_events_set(Evas_Object *obj, Eina_Bool pass)
+evas_object_pass_events_set(Evas_Object *eo_obj, Eina_Bool pass)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_pass_events_set(pass));
+}
+
+void
+_pass_events_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Eina_Bool pass = va_arg(*list, int);
+ Evas_Object_Protected_Data *obj = _pd;
pass = !!pass;
if (obj->pass_events == pass) return;
obj->pass_events = pass;
- evas_object_smart_member_cache_invalidate(obj, EINA_TRUE, EINA_FALSE);
- if (evas_object_is_in_output_rect(obj,
+ evas_object_smart_member_cache_invalidate(eo_obj, EINA_TRUE, EINA_FALSE);
+ if (evas_object_is_in_output_rect(eo_obj, obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1) &&
((!obj->precise_is_inside) ||
- (evas_object_is_inside(obj,
+ (evas_object_is_inside(eo_obj, obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y))))
- evas_event_feed_mouse_move(obj->layer->evas,
+ evas_event_feed_mouse_move(obj->layer->evas->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
@@ -1807,31 +2099,49 @@ evas_object_pass_events_set(Evas_Object *obj, Eina_Bool pass)
}
EAPI Eina_Bool
-evas_object_pass_events_get(const Evas_Object *obj)
+evas_object_pass_events_get(const Evas_Object *eo_obj)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return EINA_FALSE;
MAGIC_CHECK_END();
- return obj->pass_events;
+ Eina_Bool pass_events = EINA_FALSE;
+ eo_do((Eo *)eo_obj, evas_obj_pass_events_get(&pass_events));
+ return pass_events;
+}
+
+void
+_pass_events_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ Eina_Bool *pass_events = va_arg(*list, Eina_Bool *);
+ const Evas_Object_Protected_Data *obj = _pd;
+ if (pass_events) *pass_events = obj->pass_events;
}
EAPI void
-evas_object_repeat_events_set(Evas_Object *obj, Eina_Bool repeat)
+evas_object_repeat_events_set(Evas_Object *eo_obj, Eina_Bool repeat)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_repeat_events_set(repeat));
+}
+
+void
+_repeat_events_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Eina_Bool repeat = va_arg(*list, int);
+ Evas_Object_Protected_Data *obj = _pd;
repeat = !!repeat;
if (obj->repeat_events == repeat) return;
obj->repeat_events = repeat;
- if (evas_object_is_in_output_rect(obj,
+ if (evas_object_is_in_output_rect(eo_obj, obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1) &&
((!obj->precise_is_inside) ||
- (evas_object_is_inside(obj,
+ (evas_object_is_inside(eo_obj, obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y))))
- evas_event_feed_mouse_move(obj->layer->evas,
+ evas_event_feed_mouse_move(obj->layer->evas->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
@@ -1839,53 +2149,108 @@ evas_object_repeat_events_set(Evas_Object *obj, Eina_Bool repeat)
}
EAPI Eina_Bool
-evas_object_repeat_events_get(const Evas_Object *obj)
+evas_object_repeat_events_get(const Evas_Object *eo_obj)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return EINA_FALSE;
MAGIC_CHECK_END();
- return obj->repeat_events;
+ Eina_Bool repeat_events = EINA_FALSE;
+ eo_do((Eo *)eo_obj, evas_obj_repeat_events_get(&repeat_events));
+ return repeat_events;
+}
+
+void
+_repeat_events_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ Eina_Bool *repeat_events = va_arg(*list, Eina_Bool *);
+ const Evas_Object_Protected_Data *obj = _pd;
+ if (repeat_events) *repeat_events = obj->repeat_events;
}
EAPI void
-evas_object_propagate_events_set(Evas_Object *obj, Eina_Bool prop)
+evas_object_propagate_events_set(Evas_Object *eo_obj, Eina_Bool prop)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_propagate_events_set(prop));
+}
+
+void
+_propagate_events_set(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ Eina_Bool prop = va_arg(*list, int);
+ Evas_Object_Protected_Data *obj = _pd;
obj->no_propagate = !prop;
}
EAPI Eina_Bool
-evas_object_propagate_events_get(const Evas_Object *obj)
+evas_object_propagate_events_get(const Evas_Object *eo_obj)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return EINA_FALSE;
MAGIC_CHECK_END();
- return !(obj->no_propagate);
+ Eina_Bool no_propagate = EINA_FALSE;
+ eo_do((Eo *)eo_obj, evas_obj_propagate_events_get(&no_propagate));
+ return no_propagate;
+}
+
+void
+_propagate_events_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ Eina_Bool *no_propagate = va_arg(*list, Eina_Bool *);
+ const Evas_Object_Protected_Data *obj = _pd;
+ if (no_propagate) *no_propagate = !(obj->no_propagate);
}
EAPI void
-evas_object_pointer_mode_set(Evas_Object *obj, Evas_Object_Pointer_Mode setting)
+evas_object_pointer_mode_set(Evas_Object *eo_obj, Evas_Object_Pointer_Mode setting)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_pointer_mode_set(setting));
+}
+
+void
+_pointer_mode_set(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Object_Pointer_Mode setting = va_arg(*list, Evas_Object_Pointer_Mode);
+ Evas_Object_Protected_Data *obj = _pd;
obj->pointer_mode = setting;
}
EAPI Evas_Object_Pointer_Mode
-evas_object_pointer_mode_get(const Evas_Object *obj)
+evas_object_pointer_mode_get(const Evas_Object *eo_obj)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return EVAS_OBJECT_POINTER_MODE_AUTOGRAB;
MAGIC_CHECK_END();
- return obj->pointer_mode;
+ Evas_Object_Pointer_Mode setting = EVAS_OBJECT_POINTER_MODE_AUTOGRAB;
+ eo_do((Eo *)eo_obj, evas_obj_pointer_mode_get(&setting));
+ return setting;
+}
+
+void
+_pointer_mode_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Object_Pointer_Mode *setting = va_arg(*list, Evas_Object_Pointer_Mode *);
+ const Evas_Object_Protected_Data *obj = _pd;
+ if (setting) *setting = obj->pointer_mode;
}
EAPI void
-evas_event_refeed_event(Evas *e, void *event_copy, Evas_Callback_Type event_type)
+evas_event_refeed_event(Evas *eo_e, void *event_copy, Evas_Callback_Type event_type)
+{
+ eo_do(eo_e, evas_canvas_event_refeed_event(event_copy, event_type));
+}
+
+void
+_canvas_event_refeed_event(Eo *eo_e, void *_pd EINA_UNUSED, va_list *list)
{
+ void *event_copy = va_arg(*list, void *);
+ Evas_Callback_Type event_type = va_arg(*list, Evas_Callback_Type);
+
if (!event_copy) return;
switch (event_type)
@@ -1893,67 +2258,67 @@ evas_event_refeed_event(Evas *e, void *event_copy, Evas_Callback_Type event_type
case EVAS_CALLBACK_MOUSE_IN:
{
Evas_Event_Mouse_In *ev = event_copy;
- evas_event_feed_mouse_in(e, ev->timestamp, ev->data);
+ evas_event_feed_mouse_in(eo_e, ev->timestamp, ev->data);
break;
}
case EVAS_CALLBACK_MOUSE_OUT:
{
Evas_Event_Mouse_Out *ev = event_copy;
- evas_event_feed_mouse_out(e, ev->timestamp, ev->data);
+ evas_event_feed_mouse_out(eo_e, ev->timestamp, ev->data);
break;
}
case EVAS_CALLBACK_MOUSE_DOWN:
{
Evas_Event_Mouse_Down *ev = event_copy;
- evas_event_feed_mouse_down(e, ev->button, ev->flags, ev-> timestamp, ev->data);
+ evas_event_feed_mouse_down(eo_e, ev->button, ev->flags, ev-> timestamp, ev->data);
break;
}
case EVAS_CALLBACK_MOUSE_UP:
{
Evas_Event_Mouse_Up *ev = event_copy;
- evas_event_feed_mouse_up(e, ev->button, ev->flags, ev-> timestamp, ev->data);
+ evas_event_feed_mouse_up(eo_e, ev->button, ev->flags, ev-> timestamp, ev->data);
break;
}
case EVAS_CALLBACK_MOUSE_MOVE:
{
Evas_Event_Mouse_Move *ev = event_copy;
- evas_event_feed_mouse_move(e, ev->cur.canvas.x, ev->cur.canvas.y, ev->timestamp, ev->data);
+ evas_event_feed_mouse_move(eo_e, ev->cur.canvas.x, ev->cur.canvas.y, ev->timestamp, ev->data);
break;
}
case EVAS_CALLBACK_MOUSE_WHEEL:
{
Evas_Event_Mouse_Wheel *ev = event_copy;
- evas_event_feed_mouse_wheel(e, ev->direction, ev-> z, ev->timestamp, ev->data);
+ evas_event_feed_mouse_wheel(eo_e, ev->direction, ev-> z, ev->timestamp, ev->data);
break;
}
case EVAS_CALLBACK_MULTI_DOWN:
{
Evas_Event_Multi_Down *ev = event_copy;
- evas_event_feed_multi_down(e, ev->device, ev->canvas.x, ev->canvas.y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, ev->canvas.xsub, ev->canvas.ysub, ev->flags, ev->timestamp, ev->data);
+ evas_event_feed_multi_down(eo_e, ev->device, ev->canvas.x, ev->canvas.y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, ev->canvas.xsub, ev->canvas.ysub, ev->flags, ev->timestamp, ev->data);
break;
}
case EVAS_CALLBACK_MULTI_UP:
{
Evas_Event_Multi_Up *ev = event_copy;
- evas_event_feed_multi_up(e, ev->device, ev->canvas.x, ev->canvas.y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, ev->canvas.xsub, ev->canvas.ysub, ev->flags, ev->timestamp, ev->data);
+ evas_event_feed_multi_up(eo_e, ev->device, ev->canvas.x, ev->canvas.y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, ev->canvas.xsub, ev->canvas.ysub, ev->flags, ev->timestamp, ev->data);
break;
}
case EVAS_CALLBACK_MULTI_MOVE:
{
Evas_Event_Multi_Move *ev = event_copy;
- evas_event_feed_multi_move(e, ev->device, ev->cur.canvas.x, ev->cur.canvas.y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, ev->cur.canvas.xsub, ev->cur.canvas.ysub, ev->timestamp, ev->data);
+ evas_event_feed_multi_move(eo_e, ev->device, ev->cur.canvas.x, ev->cur.canvas.y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, ev->cur.canvas.xsub, ev->cur.canvas.ysub, ev->timestamp, ev->data);
break;
}
case EVAS_CALLBACK_KEY_DOWN:
{
Evas_Event_Key_Down *ev = event_copy;
- evas_event_feed_key_down(e, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, ev->data);
+ evas_event_feed_key_down(eo_e, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, ev->data);
break;
}
case EVAS_CALLBACK_KEY_UP:
{
Evas_Event_Key_Up *ev = event_copy;
- evas_event_feed_key_up(e, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, ev->data);
+ evas_event_feed_key_up(eo_e, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, ev->data);
break;
}
default: /* All non-input events are not handeled */
@@ -1962,10 +2327,20 @@ evas_event_refeed_event(Evas *e, void *event_copy, Evas_Callback_Type event_type
}
EAPI int
-evas_event_down_count_get(const Evas *e)
+evas_event_down_count_get(const Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return 0;
MAGIC_CHECK_END();
- return e->pointer.downs;
+ int ret = 0;
+ eo_do((Eo *)eo_e, evas_canvas_event_down_count_get(&ret));
+ return ret;
+}
+
+void
+_canvas_event_down_count_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ int *ret = va_arg(*list, int *);
+ const Evas_Public_Data *e = _pd;
+ *ret = e->pointer.downs;
}
diff --git a/legacy/evas/src/lib/canvas/evas_focus.c b/legacy/evas/src/lib/canvas/evas_focus.c
index 29da7e7140..0e1914d78a 100644
--- a/legacy/evas/src/lib/canvas/evas_focus.c
+++ b/legacy/evas/src/lib/canvas/evas_focus.c
@@ -8,12 +8,21 @@
/* public calls */
EAPI void
-evas_object_focus_set(Evas_Object *obj, Eina_Bool focus)
+evas_object_focus_set(Evas_Object *eo_obj, Eina_Bool focus)
{
+ eo_do(eo_obj, evas_obj_focus_set(focus));
+}
+
+void
+_focus_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Eina_Bool focus = va_arg(*list, int);
+
int event_id = 0;
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ Evas_Object_Protected_Data *obj = _pd;
_evas_object_event_new();
@@ -24,31 +33,42 @@ evas_object_focus_set(Evas_Object *obj, Eina_Bool focus)
if (obj->layer->evas->focused)
evas_object_focus_set(obj->layer->evas->focused, 0);
obj->focused = 1;
- obj->layer->evas->focused = obj;
- evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_IN, NULL, event_id);
- evas_event_callback_call(obj->layer->evas,
- EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_IN, obj);
+ obj->layer->evas->focused = eo_obj;
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_FOCUS_IN, NULL, event_id);
+ evas_event_callback_call(obj->layer->evas->evas,
+ EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_IN, eo_obj);
}
else
{
if (!obj->focused) goto end;
obj->focused = 0;
obj->layer->evas->focused = NULL;
- evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL, event_id);
- evas_event_callback_call(obj->layer->evas,
- EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_OUT, obj);
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_FOCUS_OUT, NULL, event_id);
+ evas_event_callback_call(obj->layer->evas->evas,
+ EVAS_CALLBACK_CANVAS_OBJECT_FOCUS_OUT, eo_obj);
}
end:
- _evas_post_event_callback_call(obj->layer->evas);
+ _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
}
EAPI Eina_Bool
-evas_object_focus_get(const Evas_Object *obj)
+evas_object_focus_get(const Evas_Object *eo_obj)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return 0;
MAGIC_CHECK_END();
- return obj->focused;
+ Eina_Bool focus = 0;
+ eo_do((Eo *)eo_obj, evas_obj_focus_get(&focus));
+ return focus;
+}
+
+void
+_focus_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ Eina_Bool *focus = va_arg(*list, Eina_Bool *);
+
+ const Evas_Object_Protected_Data *obj = _pd;
+ *focus = obj->focused;
}
EAPI Evas_Object *
@@ -57,5 +77,16 @@ evas_focus_get(const Evas *e)
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
return NULL;
MAGIC_CHECK_END();
- return e->focused;
+ Evas_Object *ret = NULL;
+ eo_do((Eo *)e, evas_canvas_focus_get(&ret));
+ return ret;
+}
+
+void
+_canvas_focus_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Object **ret = va_arg(*list, Evas_Object **);
+ const Evas_Public_Data *e = _pd;
+ *ret = e->focused;
}
+
diff --git a/legacy/evas/src/lib/canvas/evas_font_dir.c b/legacy/evas/src/lib/canvas/evas_font_dir.c
index 94ffd4ad6b..e67668513b 100644
--- a/legacy/evas/src/lib/canvas/evas_font_dir.c
+++ b/legacy/evas/src/lib/canvas/evas_font_dir.c
@@ -135,9 +135,10 @@ evas_font_set_get(const char *name)
}
void
-evas_fonts_zero_free(Evas *evas)
+evas_fonts_zero_free(Evas *eo_evas)
{
Fndat *fd;
+ Evas_Public_Data *evas = eo_data_get(eo_evas, EVAS_CLASS);
EINA_LIST_FREE(fonts_zero, fd)
{
@@ -153,9 +154,10 @@ evas_fonts_zero_free(Evas *evas)
}
void
-evas_fonts_zero_presure(Evas *evas)
+evas_fonts_zero_presure(Evas *eo_evas)
{
Fndat *fd;
+ Evas_Public_Data *evas = eo_data_get(eo_evas, EVAS_CLASS);
while (fonts_zero
&& eina_list_count(fonts_zero) > 4) /* 4 is arbitrary */
@@ -179,10 +181,11 @@ evas_fonts_zero_presure(Evas *evas)
}
void
-evas_font_free(Evas *evas, void *font)
+evas_font_free(Evas *eo_evas, void *font)
{
Eina_List *l;
Fndat *fd;
+ Evas_Public_Data *evas = eo_data_get(eo_evas, EVAS_CLASS);
EINA_LIST_FOREACH(fonts_cache, l, fd)
{
@@ -236,9 +239,10 @@ evas_font_init(void)
#ifdef HAVE_FONTCONFIG
static Evas_Font_Set *
-evas_load_fontconfig(Evas *evas, FcFontSet *set, int size,
+evas_load_fontconfig(Evas *eo_evas, FcFontSet *set, int size,
Font_Rend_Flags wanted_rend)
{
+ Evas_Public_Data *evas = eo_data_get(eo_evas, EVAS_CLASS);
Evas_Font_Set *font = NULL;
int i;
@@ -494,8 +498,9 @@ evas_font_name_parse(Evas_Font_Description *fdesc, const char *name)
}
void *
-evas_font_load(Evas *evas, Evas_Font_Description *fdesc, const char *source, Evas_Font_Size size)
+evas_font_load(Evas *eo_evas, Evas_Font_Description *fdesc, const char *source, Evas_Font_Size size)
{
+ Evas_Public_Data *evas = eo_data_get(eo_evas, EVAS_CLASS);
#ifdef HAVE_FONTCONFIG
FcPattern *p_nm = NULL;
FcFontSet *set = NULL;
@@ -545,7 +550,7 @@ evas_font_load(Evas *evas, Evas_Font_Description *fdesc, const char *source, Eva
#ifdef HAVE_FONTCONFIG
if (found_fd)
{
- font = evas_load_fontconfig(evas, found_fd->set, size, wanted_rend);
+ font = evas_load_fontconfig(evas->evas, found_fd->set, size, wanted_rend);
goto on_find;
}
#endif
@@ -578,7 +583,7 @@ evas_font_load(Evas *evas, Evas_Font_Description *fdesc, const char *source, Eva
#ifdef HAVE_FONTCONFIG
if (found_fd)
{
- font = evas_load_fontconfig(evas, found_fd->set, size, wanted_rend);
+ font = evas_load_fontconfig(evas->evas, found_fd->set, size, wanted_rend);
goto on_find;
}
#endif
@@ -765,7 +770,7 @@ evas_font_load(Evas *evas, Evas_Font_Description *fdesc, const char *source, Eva
}
else
{
- font = evas_load_fontconfig(evas, set, size, wanted_rend);
+ font = evas_load_fontconfig(evas->evas, set, size, wanted_rend);
}
}
#endif
@@ -796,15 +801,17 @@ evas_font_load(Evas *evas, Evas_Font_Description *fdesc, const char *source, Eva
}
void
-evas_font_load_hinting_set(Evas *evas, void *font, int hinting)
+evas_font_load_hinting_set(Evas *eo_evas, void *font, int hinting)
{
+ Evas_Public_Data *evas = eo_data_get(eo_evas, EVAS_CLASS);
evas->engine.func->font_hinting_set(evas->engine.data.output, font,
hinting);
}
Eina_List *
-evas_font_dir_available_list(const Evas *evas)
+evas_font_dir_available_list(const Evas *eo_evas)
{
+ const Evas_Public_Data *evas = eo_data_get(eo_evas, EVAS_CLASS);
Eina_List *l;
Eina_List *ll;
Eina_List *available = NULL;
@@ -1217,152 +1224,243 @@ evas_object_text_font_string_parse(char *buffer, char dest[14][256])
}
EAPI void
-evas_font_path_clear(Evas *e)
+evas_font_path_clear(Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
- while (e->font_path)
+ eo_do(eo_e, evas_canvas_font_path_clear());
+}
+
+void
+_canvas_font_path_clear(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list EINA_UNUSED)
+{
+ Evas_Public_Data *evas = _pd;
+ while (evas->font_path)
{
- eina_stringshare_del(e->font_path->data);
- e->font_path = eina_list_remove(e->font_path, e->font_path->data);
+ eina_stringshare_del(evas->font_path->data);
+ evas->font_path = eina_list_remove(evas->font_path, evas->font_path->data);
}
}
EAPI void
-evas_font_path_append(Evas *e, const char *path)
+evas_font_path_append(Evas *eo_e, const char *path)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_font_path_append(path));
+}
+void
+_canvas_font_path_append(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ const char *path = va_arg(*list, const char *);
+ Evas_Public_Data *e = _pd;
if (!path) return;
e->font_path = eina_list_append(e->font_path, eina_stringshare_add(path));
}
EAPI void
-evas_font_path_prepend(Evas *e, const char *path)
+evas_font_path_prepend(Evas *eo_e, const char *path)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_font_path_prepend(path));
+}
+void
+_canvas_font_path_prepend(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ const char *path = va_arg(*list, const char *);
+ Evas_Public_Data *e = _pd;
if (!path) return;
e->font_path = eina_list_prepend(e->font_path, eina_stringshare_add(path));
}
EAPI const Eina_List *
-evas_font_path_list(const Evas *e)
+evas_font_path_list(const Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return NULL;
MAGIC_CHECK_END();
- return e->font_path;
+ const Eina_List *ret = NULL;
+ eo_do((Eo *)eo_e, evas_canvas_font_path_list(&ret));
+ return ret;
}
-static void
-evas_font_object_rehint(Evas_Object *obj)
+void
+_canvas_font_path_list(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ const Eina_List **ret = va_arg(*list, const Eina_List **);
+ const Evas_Public_Data *e = _pd;
+ *ret = e->font_path;
+}
+
+void
+evas_font_object_rehint(Evas_Object *eo_obj)
{
- if (obj->smart.smart)
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ if (obj->is_smart)
{
- EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(obj), obj)
- evas_font_object_rehint(obj);
+ EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), obj)
+ evas_font_object_rehint(obj->object);
}
else
{
if (!strcmp(obj->type, "text"))
- _evas_object_text_rehint(obj);
+ _evas_object_text_rehint(eo_obj);
if (!strcmp(obj->type, "textblock"))
- _evas_object_textblock_rehint(obj);
+ _evas_object_textblock_rehint(eo_obj);
}
}
EAPI void
-evas_font_hinting_set(Evas *e, Evas_Font_Hinting_Flags hinting)
+evas_font_hinting_set(Evas *eo_e, Evas_Font_Hinting_Flags hinting)
{
- Evas_Layer *lay;
-
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_font_hinting_set(hinting));
+}
+
+void
+_canvas_font_hinting_set(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Font_Hinting_Flags hinting = va_arg(*list, Evas_Font_Hinting_Flags);
+ Evas_Layer *lay;
+
+ Evas_Public_Data *e = _pd;
if (e->hinting == hinting) return;
e->hinting = hinting;
EINA_INLIST_FOREACH(e->layers, lay)
{
- Evas_Object *obj;
+ Evas_Object_Protected_Data *obj;
EINA_INLIST_FOREACH(lay->objects, obj)
- evas_font_object_rehint(obj);
+ evas_font_object_rehint(obj->object);
}
}
EAPI Evas_Font_Hinting_Flags
-evas_font_hinting_get(const Evas *e)
+evas_font_hinting_get(const Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return EVAS_FONT_HINTING_BYTECODE;
MAGIC_CHECK_END();
- return e->hinting;
+ Evas_Font_Hinting_Flags ret = EVAS_FONT_HINTING_BYTECODE;
+ eo_do((Eo *)eo_e, evas_canvas_font_hinting_get(&ret));
+ return ret;
+}
+
+void
+_canvas_font_hinting_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Font_Hinting_Flags *ret = va_arg(*list, Evas_Font_Hinting_Flags *);
+ const Evas_Public_Data *e = _pd;
+ *ret = e->hinting;
}
EAPI Eina_Bool
-evas_font_hinting_can_hint(const Evas *e, Evas_Font_Hinting_Flags hinting)
+evas_font_hinting_can_hint(const Evas *eo_e, Evas_Font_Hinting_Flags hinting)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return 0;
MAGIC_CHECK_END();
+ Eina_Bool ret = 0;
+ eo_do((Eo *)eo_e, evas_canvas_font_hinting_can_hint(hinting, &ret));
+ return ret;
+}
+
+void
+_canvas_font_hinting_can_hint(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Font_Hinting_Flags hinting = va_arg(*list, Evas_Font_Hinting_Flags);
+ Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+ const Evas_Public_Data *e = _pd;
if (e->engine.func->font_hinting_can_hint)
- return e->engine.func->font_hinting_can_hint(e->engine.data.output,
+ *ret = e->engine.func->font_hinting_can_hint(e->engine.data.output,
hinting);
- return EINA_FALSE;
+ else *ret = EINA_FALSE;
}
EAPI void
-evas_font_cache_flush(Evas *e)
+evas_font_cache_flush(Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_font_cache_flush());
+}
+void
+_canvas_font_cache_flush(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list EINA_UNUSED)
+{
+ Evas_Public_Data *e = _pd;
e->engine.func->font_cache_flush(e->engine.data.output);
}
EAPI void
-evas_font_cache_set(Evas *e, int size)
+evas_font_cache_set(Evas *eo_e, int size)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_font_cache_set(size));
+}
+void
+_canvas_font_cache_set(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ int size = va_arg(*list, int);
+ Evas_Public_Data *e = _pd;
if (size < 0) size = 0;
e->engine.func->font_cache_set(e->engine.data.output, size);
}
EAPI int
-evas_font_cache_get(const Evas *e)
+evas_font_cache_get(const Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return 0;
MAGIC_CHECK_END();
+ int ret = 0;
+ eo_do((Eo *)eo_e, evas_canvas_font_cache_get(&ret));
+ return ret;
+}
- return e->engine.func->font_cache_get(e->engine.data.output);
+void
+_canvas_font_cache_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ int *ret = va_arg(*list, int *);
+ const Evas_Public_Data *e = _pd;
+ *ret = e->engine.func->font_cache_get(e->engine.data.output);
}
EAPI Eina_List *
-evas_font_available_list(const Evas *e)
+evas_font_available_list(const Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return NULL;
MAGIC_CHECK_END();
+ Eina_List *ret = NULL;
+ eo_do((Eo *)eo_e, evas_canvas_font_available_list(&ret));
+ return ret;
+}
- return evas_font_dir_available_list(e);
+void
+_canvas_font_available_list(Eo *eo_e, void *_pd EINA_UNUSED, va_list *list)
+{
+ Eina_List **ret = va_arg(*list, Eina_List **);
+ *ret = evas_font_dir_available_list(eo_e);
}
EAPI void
-evas_font_available_list_free(Evas *e, Eina_List *available)
+evas_font_available_list_free(Evas *eo_e, Eina_List *available)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
diff --git a/legacy/evas/src/lib/canvas/evas_gl.c b/legacy/evas/src/lib/canvas/evas_gl.c
index 58021dfc09..faf5280a8f 100644
--- a/legacy/evas/src/lib/canvas/evas_gl.c
+++ b/legacy/evas/src/lib/canvas/evas_gl.c
@@ -6,7 +6,7 @@
struct _Evas_GL
{
DATA32 magic;
- Evas *evas;
+ Evas_Public_Data *evas;
Eina_List *contexts;
Eina_List *surfaces;
@@ -35,7 +35,7 @@ evas_gl_new(Evas *e)
if (!evas_gl) return NULL;
evas_gl->magic = MAGIC_EVAS_GL;
- evas_gl->evas = e;
+ evas_gl->evas = eo_data_get(e, EVAS_CLASS);
if (!evas_gl->evas->engine.func->gl_context_create)
{
diff --git a/legacy/evas/src/lib/canvas/evas_key.c b/legacy/evas/src/lib/canvas/evas_key.c
index f74ef3498f..aef0fc4dae 100644
--- a/legacy/evas/src/lib/canvas/evas_key.c
+++ b/legacy/evas/src/lib/canvas/evas_key.c
@@ -32,21 +32,41 @@ evas_key_lock_number(const Evas_Lock *l, const char *keyname)
/* public calls */
EAPI const Evas_Modifier *
-evas_key_modifier_get(const Evas *e)
+evas_key_modifier_get(const Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return NULL;
MAGIC_CHECK_END();
- return &(e->modifiers);
+ const Evas_Modifier *ret = NULL;
+ eo_do((Eo *)eo_e, evas_canvas_key_modifier_get(&ret));
+ return ret;
+}
+
+void
+_canvas_key_modifier_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ const Evas_Modifier **ret = va_arg(*list, const Evas_Modifier **);
+ const Evas_Public_Data *e = _pd;
+ *ret = &(e->modifiers);
}
EAPI const Evas_Lock *
-evas_key_lock_get(const Evas *e)
+evas_key_lock_get(const Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return NULL;
MAGIC_CHECK_END();
- return &(e->locks);
+ const Evas_Lock *ret = NULL;
+ eo_do((Eo *)eo_e, evas_canvas_key_lock_get(&ret));
+ return ret;
+}
+
+void
+_canvas_key_lock_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ const Evas_Lock **ret = va_arg(*list, const Evas_Lock **);
+ const Evas_Public_Data *e = _pd;
+ *ret = &(e->locks);
}
EAPI Eina_Bool
@@ -82,14 +102,23 @@ evas_key_lock_is_set(const Evas_Lock *l, const char *keyname)
}
EAPI void
-evas_key_modifier_add(Evas *e, const char *keyname)
+evas_key_modifier_add(Evas *eo_e, const char *keyname)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_key_modifier_add(keyname));
+}
+
+void
+_canvas_key_modifier_add(Eo *eo_e, void *_pd, va_list *list)
+{
+ const char *keyname = va_arg(*list, const char *);
+
+ Evas_Public_Data *e = _pd;
if (!keyname) return;
if (e->modifiers.mod.count >= 64) return;
- evas_key_modifier_del(e, keyname);
+ evas_key_modifier_del(eo_e, keyname);
e->modifiers.mod.count++;
e->modifiers.mod.list = realloc(e->modifiers.mod.list, e->modifiers.mod.count * sizeof(char *));
e->modifiers.mod.list[e->modifiers.mod.count - 1] = strdup(keyname);
@@ -97,13 +126,23 @@ evas_key_modifier_add(Evas *e, const char *keyname)
}
EAPI void
-evas_key_modifier_del(Evas *e, const char *keyname)
+evas_key_modifier_del(Evas *eo_e, const char *keyname)
{
- int i;
-
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ if (!eo_e) return;
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_key_modifier_del(keyname));
+}
+
+void
+_canvas_key_modifier_del(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ const char *keyname = va_arg(*list, const char *);
+
+ Evas_Public_Data *e = _pd;
+ int i;
+
if (!keyname) return;
for (i = 0; i < e->modifiers.mod.count; i++)
{
@@ -122,14 +161,23 @@ evas_key_modifier_del(Evas *e, const char *keyname)
}
EAPI void
-evas_key_lock_add(Evas *e, const char *keyname)
+evas_key_lock_add(Evas *eo_e, const char *keyname)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_key_lock_add(keyname));
+}
+
+void
+_canvas_key_lock_add(Eo *eo_e, void *_pd, va_list *list)
+{
+ const char *keyname = va_arg(*list, const char *);
+
if (!keyname) return;
+ Evas_Public_Data *e = _pd;
if (e->locks.lock.count >= 64) return;
- evas_key_lock_del(e, keyname);
+ evas_key_lock_del(eo_e, keyname);
e->locks.lock.count++;
e->locks.lock.list = realloc(e->locks.lock.list, e->locks.lock.count * sizeof(char *));
e->locks.lock.list[e->locks.lock.count - 1] = strdup(keyname);
@@ -137,13 +185,21 @@ evas_key_lock_add(Evas *e, const char *keyname)
}
EAPI void
-evas_key_lock_del(Evas *e, const char *keyname)
+evas_key_lock_del(Evas *eo_e, const char *keyname)
{
- int i;
-
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_key_lock_del(keyname));
+}
+
+void
+_canvas_key_lock_del(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ const char *keyname = va_arg(*list, const char *);
+
+ int i;
+ Evas_Public_Data *e = _pd;
if (!keyname) return;
e->locks.mask = 0;
for (i = 0; i < e->locks.lock.count; i++)
@@ -163,14 +219,23 @@ evas_key_lock_del(Evas *e, const char *keyname)
}
EAPI void
-evas_key_modifier_on(Evas *e, const char *keyname)
+evas_key_modifier_on(Evas *eo_e, const char *keyname)
{
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
+ return;
+ MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_key_modifier_on(keyname));
+}
+
+void
+_canvas_key_modifier_on(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ const char *keyname = va_arg(*list, const char *);
+
Evas_Modifier_Mask num;
int n;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
- return;
- MAGIC_CHECK_END();
+ Evas_Public_Data *e = _pd;
n = (Evas_Modifier_Mask)evas_key_modifier_number(&(e->modifiers), keyname);
if (n < 0) return;
num = (Evas_Modifier_Mask)n;
@@ -179,14 +244,23 @@ evas_key_modifier_on(Evas *e, const char *keyname)
}
EAPI void
-evas_key_modifier_off(Evas *e, const char *keyname)
+evas_key_modifier_off(Evas *eo_e, const char *keyname)
{
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
+ return;
+ MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_key_modifier_off(keyname));
+}
+
+void
+_canvas_key_modifier_off(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ const char *keyname = va_arg(*list, const char *);
+
Evas_Modifier_Mask num;
int n;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
- return;
- MAGIC_CHECK_END();
+ Evas_Public_Data *e = _pd;
n = evas_key_modifier_number(&(e->modifiers), keyname);
if (n < 0) return;
num = (Evas_Modifier_Mask)n;
@@ -195,14 +269,23 @@ evas_key_modifier_off(Evas *e, const char *keyname)
}
EAPI void
-evas_key_lock_on(Evas *e, const char *keyname)
+evas_key_lock_on(Evas *eo_e, const char *keyname)
{
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
+ return;
+ MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_key_lock_on(keyname));
+}
+
+void
+_canvas_key_lock_on(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ const char *keyname = va_arg(*list, const char *);
+
Evas_Modifier_Mask num;
int n;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
- return;
- MAGIC_CHECK_END();
+ Evas_Public_Data *e = _pd;
n = evas_key_lock_number(&(e->locks), keyname);
if (n < 0) return;
num = (Evas_Modifier_Mask)n;
@@ -211,14 +294,23 @@ evas_key_lock_on(Evas *e, const char *keyname)
}
EAPI void
-evas_key_lock_off(Evas *e, const char *keyname)
+evas_key_lock_off(Evas *eo_e, const char *keyname)
{
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
+ return;
+ MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_key_lock_off(keyname));
+}
+
+void
+_canvas_key_lock_off(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ const char *keyname = va_arg(*list, const char *);
+
Evas_Modifier_Mask num;
int n;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
- return;
- MAGIC_CHECK_END();
+ Evas_Public_Data *e = _pd;
n = evas_key_lock_number(&(e->locks), keyname);
if (n < 0) return;
num = (Evas_Modifier_Mask)n;
@@ -229,17 +321,34 @@ evas_key_lock_off(Evas *e, const char *keyname)
/* errr need to add key grabbing/ungrabbing calls - missing modifier stuff. */
EAPI Evas_Modifier_Mask
-evas_key_modifier_mask_get(const Evas *e, const char *keyname)
+evas_key_modifier_mask_get(const Evas *eo_e, const char *keyname)
+{
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
+ return 0;
+ MAGIC_CHECK_END();
+ Evas_Modifier_Mask ret = 0;
+ eo_do((Eo *)eo_e, evas_canvas_key_modifier_mask_get(keyname, &ret));
+ return ret;
+}
+
+void
+_canvas_key_modifier_mask_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
{
+ const char *keyname = va_arg(*list, const char *);
+ Evas_Modifier_Mask *ret = va_arg(*list, Evas_Modifier_Mask *);
+
Evas_Modifier_Mask num;
int n;
+ *ret = 0;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
- return 0;
- MAGIC_CHECK_END();
- if (!keyname) return 0;
+ if (!keyname) return;
+ const Evas_Public_Data *e = _pd;
n = evas_key_modifier_number(&(e->modifiers), keyname);
- if (n < 0) return 0;
+ if (n < 0)
+ {
+ *ret = 0;
+ return;
+ }
num = (Evas_Modifier_Mask)n;
- return 1 << num;
+ *ret = 1 << num;
}
diff --git a/legacy/evas/src/lib/canvas/evas_key_grab.c b/legacy/evas/src/lib/canvas/evas_key_grab.c
index 3fc2172f35..85e1761b31 100644
--- a/legacy/evas/src/lib/canvas/evas_key_grab.c
+++ b/legacy/evas/src/lib/canvas/evas_key_grab.c
@@ -7,18 +7,18 @@
/* Evas and then a linked lists of grabs for that key and what */
/* modifiers/not_modifers they use */
-static Evas_Key_Grab *evas_key_grab_new (Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, Eina_Bool exclusive);
-static Evas_Key_Grab *evas_key_grab_find (Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, Eina_Bool exclusive);
+static Evas_Key_Grab *evas_key_grab_new (Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, Eina_Bool exclusive);
+static Evas_Key_Grab *evas_key_grab_find (Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, Eina_Bool exclusive);
static Evas_Key_Grab *
-evas_key_grab_new(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, Eina_Bool exclusive)
+evas_key_grab_new(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, Eina_Bool exclusive)
{
/* MEM OK */
Evas_Key_Grab *g;
g = evas_mem_calloc(sizeof(Evas_Key_Grab));
if (!g) return NULL;
- g->object = obj;
+ g->object = eo_obj;
g->modifiers = modifiers;
g->not_modifiers = not_modifiers;
g->exclusive = exclusive;
@@ -39,12 +39,12 @@ evas_key_grab_new(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modi
return NULL;
}
}
- g->object->grabs = eina_list_append(g->object->grabs, g);
+ obj->grabs = eina_list_append(obj->grabs, g);
if (eina_error_get())
{
MERR_BAD();
evas_mem_free(sizeof(Eina_List));
- g->object->grabs = eina_list_append(g->object->grabs, g);
+ obj->grabs = eina_list_append(obj->grabs, g);
if (eina_error_get())
{
MERR_FATAL();
@@ -62,7 +62,7 @@ evas_key_grab_new(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modi
if (eina_error_get())
{
MERR_FATAL();
- g->object->grabs = eina_list_remove(g->object->grabs, g);
+ obj->grabs = eina_list_remove(obj->grabs, g);
free(g->keyname);
free(g);
return NULL;
@@ -72,7 +72,7 @@ evas_key_grab_new(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modi
}
static Evas_Key_Grab *
-evas_key_grab_find(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, Eina_Bool exclusive)
+evas_key_grab_find(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, Eina_Bool exclusive)
{
/* MEM OK */
Eina_List *l;
@@ -84,7 +84,7 @@ evas_key_grab_find(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask mod
(g->not_modifiers == not_modifiers) &&
(!strcmp(g->keyname, keyname)))
{
- if ((exclusive) || (obj == g->object)) return g;
+ if ((exclusive) || (eo_obj == g->object)) return g;
}
}
return NULL;
@@ -93,7 +93,7 @@ evas_key_grab_find(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask mod
/* local calls */
void
-evas_object_grabs_cleanup(Evas_Object *obj)
+evas_object_grabs_cleanup(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj)
{
if (obj->layer->evas->walking_grabs)
{
@@ -118,14 +118,15 @@ evas_object_grabs_cleanup(Evas_Object *obj)
}
void
-evas_key_grab_free(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers)
+evas_key_grab_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers)
{
/* MEM OK */
Evas_Key_Grab *g;
- g = evas_key_grab_find(obj, keyname, modifiers, not_modifiers, 0);
+ g = evas_key_grab_find(eo_obj, obj, keyname, modifiers, not_modifiers, 0);
if (!g) return;
- g->object->grabs = eina_list_remove(g->object->grabs, g);
+ Evas_Object_Protected_Data *g_object = eo_data_get(g->object, EVAS_OBJ_CLASS);
+ g_object->grabs = eina_list_remove(g_object->grabs, g);
obj->layer->evas->grabs = eina_list_remove(obj->layer->evas->grabs, g);
if (g->keyname) free(g->keyname);
free(g);
@@ -134,46 +135,74 @@ evas_key_grab_free(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask mod
/* public calls */
EAPI Eina_Bool
-evas_object_key_grab(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, Eina_Bool exclusive)
+evas_object_key_grab(Evas_Object *eo_obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, Eina_Bool exclusive)
+{
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
+ return EINA_FALSE;
+ MAGIC_CHECK_END();
+ Eina_Bool ret = EINA_FALSE;
+ eo_do(eo_obj, evas_obj_key_grab(keyname, modifiers, not_modifiers, exclusive, &ret));
+ return ret;
+}
+
+void
+_key_grab(Eo *eo_obj, void *_pd, va_list *list)
{
+ const char *keyname = va_arg(*list, const char *);
+ Evas_Modifier_Mask modifiers = va_arg(*list, Evas_Modifier_Mask);
+ Evas_Modifier_Mask not_modifiers = va_arg(*list, Evas_Modifier_Mask);
+ Eina_Bool exclusive = va_arg(*list, int);
+ Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+
/* MEM OK */
Evas_Key_Grab *g;
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return EINA_FALSE;
- MAGIC_CHECK_END();
- if (!keyname) return EINA_FALSE;
+ Evas_Object_Protected_Data *obj = _pd;
+ if (!keyname)
+ *ret = EINA_FALSE;
if (exclusive)
{
- g = evas_key_grab_find(obj, keyname, modifiers, not_modifiers,
+ g = evas_key_grab_find(eo_obj, obj, keyname, modifiers, not_modifiers,
exclusive);
- if (g) return EINA_FALSE;
+ if (g)
+ *ret = EINA_FALSE;
}
- g = evas_key_grab_new(obj, keyname, modifiers, not_modifiers, exclusive);
- if (!g) return EINA_FALSE;
- return EINA_TRUE;
+ g = evas_key_grab_new(eo_obj, obj, keyname, modifiers, not_modifiers, exclusive);
+ *ret = (!g) ? EINA_FALSE : EINA_TRUE;
}
EAPI void
-evas_object_key_ungrab(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers)
+evas_object_key_ungrab(Evas_Object *eo_obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers)
{
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
+ return;
+ MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_key_ungrab(keyname, modifiers, not_modifiers));
+}
+
+void
+_key_ungrab(Eo *eo_obj, void *_pd, va_list *list)
+{
+ const char *keyname = va_arg(*list, const char *);
+ Evas_Modifier_Mask modifiers = va_arg(*list, Evas_Modifier_Mask);
+ Evas_Modifier_Mask not_modifiers = va_arg(*list, Evas_Modifier_Mask);
+
/* MEM OK */
Evas_Key_Grab *g;
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
if (!keyname) return;
- g = evas_key_grab_find(obj, keyname, modifiers, not_modifiers, 0);
+ Evas_Object_Protected_Data *obj = _pd;
+ g = evas_key_grab_find(eo_obj, obj, keyname, modifiers, not_modifiers, 0);
if (!g) return;
- if (g->object->layer->evas->walking_grabs)
+ Evas_Object_Protected_Data *g_object = eo_data_get(g->object, EVAS_OBJ_CLASS);
+ if (g_object->layer->evas->walking_grabs)
{
if (!g->delete_me)
{
- g->object->layer->evas->delete_grabs++;
+ g_object->layer->evas->delete_grabs++;
g->delete_me = EINA_TRUE;
}
}
else
- evas_key_grab_free(g->object, keyname, modifiers, not_modifiers);
+ evas_key_grab_free(g->object, g_object, keyname, modifiers, not_modifiers);
}
diff --git a/legacy/evas/src/lib/canvas/evas_layer.c b/legacy/evas/src/lib/canvas/evas_layer.c
index 7b89069655..fa86aa9334 100644
--- a/legacy/evas/src/lib/canvas/evas_layer.c
+++ b/legacy/evas/src/lib/canvas/evas_layer.c
@@ -4,7 +4,7 @@
static void _evas_layer_free(Evas_Layer *lay);
void
-evas_object_inject(Evas_Object *obj, Evas *e)
+evas_object_inject(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Evas *e)
{
Evas_Layer *lay;
@@ -16,17 +16,17 @@ evas_object_inject(Evas_Object *obj, Evas *e)
lay->layer = obj->cur.layer;
evas_layer_add(lay);
}
- lay->objects = (Evas_Object *)eina_inlist_append(EINA_INLIST_GET(lay->objects), EINA_INLIST_GET(obj));
+ lay->objects = (Evas_Object_Protected_Data *)eina_inlist_append(EINA_INLIST_GET(lay->objects), EINA_INLIST_GET(obj));
lay->usage++;
obj->layer = lay;
obj->in_layer = 1;
}
void
-evas_object_release(Evas_Object *obj, int clean_layer)
+evas_object_release(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, int clean_layer)
{
if (!obj->in_layer) return;
- obj->layer->objects = (Evas_Object *)eina_inlist_remove(EINA_INLIST_GET(obj->layer->objects), EINA_INLIST_GET(obj));
+ obj->layer->objects = (Evas_Object_Protected_Data *)eina_inlist_remove(EINA_INLIST_GET(obj->layer->objects), EINA_INLIST_GET(obj));
obj->layer->usage--;
if (clean_layer)
{
@@ -41,8 +41,9 @@ evas_object_release(Evas_Object *obj, int clean_layer)
}
Evas_Layer *
-evas_layer_new(Evas *e)
+evas_layer_new(Evas *eo_e)
{
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
Evas_Layer *lay;
lay = calloc(1, sizeof(Evas_Layer));
@@ -60,12 +61,12 @@ _evas_layer_free(Evas_Layer *lay)
void
evas_layer_pre_free(Evas_Layer *lay)
{
- Evas_Object *obj;
+ Evas_Object_Protected_Data *obj;
EINA_INLIST_FOREACH(lay->objects, obj)
{
if ((!obj->smart.parent) && (!obj->delete_me))
- evas_object_del(obj);
+ evas_object_del(obj->object);
}
}
@@ -74,16 +75,17 @@ evas_layer_free_objects(Evas_Layer *lay)
{
while (lay->objects)
{
- Evas_Object *obj;
+ Evas_Object_Protected_Data *obj;
- obj = (Evas_Object *)lay->objects;
- evas_object_free(obj, 0);
+ obj = (Evas_Object_Protected_Data *)lay->objects;
+ evas_object_free(obj->object, 0);
}
}
void
-evas_layer_clean(Evas *e)
+evas_layer_clean(Evas *eo_e)
{
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
Evas_Layer *tmp;
while (e->layers)
@@ -95,8 +97,9 @@ evas_layer_clean(Evas *e)
}
Evas_Layer *
-evas_layer_find(Evas *e, short layer_num)
+evas_layer_find(Evas *eo_e, short layer_num)
{
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
Evas_Layer *layer;
EINA_INLIST_FOREACH(e->layers, layer)
@@ -127,30 +130,33 @@ evas_layer_add(Evas_Layer *lay)
void
evas_layer_del(Evas_Layer *lay)
{
- Evas *e;
+ Evas_Public_Data *e;
e = lay->evas;
e->layers = (Evas_Layer *)eina_inlist_remove(EINA_INLIST_GET(e->layers), EINA_INLIST_GET(lay));
}
static void
-_evas_object_layer_set_child(Evas_Object *obj, Evas_Object *par, short l)
+_evas_object_layer_set_child(Evas_Object *eo_obj, Evas_Object *par, short l)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Object_Protected_Data *par_obj = eo_data_get(par, EVAS_OBJ_CLASS);
+
if (obj->delete_me) return;
if (obj->cur.layer == l) return;
- evas_object_release(obj, 1);
+ evas_object_release(eo_obj, obj, 1);
obj->cur.layer = l;
- obj->layer = par->layer;
+ obj->layer = par_obj->layer;
obj->layer->usage++;
- if (obj->smart.smart)
+ if (obj->is_smart)
{
Eina_Inlist *contained;
- Evas_Object *member;
+ Evas_Object_Protected_Data *member;
- contained = (Eina_Inlist *)evas_object_smart_members_get_direct(obj);
+ contained = (Eina_Inlist *)evas_object_smart_members_get_direct(eo_obj);
EINA_INLIST_FOREACH(contained, member)
{
- _evas_object_layer_set_child(member, obj, l);
+ _evas_object_layer_set_child(member->object, eo_obj, l);
}
}
}
@@ -158,41 +164,50 @@ _evas_object_layer_set_child(Evas_Object *obj, Evas_Object *par, short l)
/* public functions */
EAPI void
-evas_object_layer_set(Evas_Object *obj, short l)
+evas_object_layer_set(Evas_Object *eo_obj, short l)
{
- Evas *e;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_layer_set(l));
+}
+
+void
+_layer_set(Eo *eo_obj, void *_obj, va_list *list)
+{
+ short l = va_arg(*list, int);
+
+ Evas *eo_e;
+ Evas_Object_Protected_Data *obj = _obj;
+
if (obj->delete_me) return;
- if (evas_object_intercept_call_layer_set(obj, l)) return;
+ if (evas_object_intercept_call_layer_set(eo_obj, l)) return;
if (obj->smart.parent) return;
if (obj->cur.layer == l)
{
- evas_object_raise(obj);
+ evas_object_raise(eo_obj);
return;
}
- e = obj->layer->evas;
- evas_object_release(obj, 1);
+ eo_e = obj->layer->evas->evas;
+ evas_object_release(eo_obj, obj, 1);
obj->cur.layer = l;
- evas_object_inject(obj, e);
+ evas_object_inject(eo_obj, obj, eo_e);
obj->restack = 1;
- evas_object_change(obj);
+ evas_object_change(eo_obj, obj);
if (obj->clip.clipees)
{
- evas_object_inform_call_restack(obj);
+ evas_object_inform_call_restack(eo_obj);
return;
}
- evas_object_change(obj);
- if (!obj->smart.smart)
+ evas_object_change(eo_obj, obj);
+ if (!obj->is_smart)
{
- if (evas_object_is_in_output_rect(obj,
+ if (evas_object_is_in_output_rect(eo_obj, obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1) &&
obj->cur.visible)
if (eina_list_data_find(obj->layer->evas->pointer.object.in, obj))
- evas_event_feed_mouse_move(obj->layer->evas,
+ evas_event_feed_mouse_move(obj->layer->evas->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
@@ -201,26 +216,37 @@ evas_object_layer_set(Evas_Object *obj, short l)
else
{
Eina_Inlist *contained;
- Evas_Object *member;
-
- contained = (Eina_Inlist *)evas_object_smart_members_get_direct(obj);
+ Evas_Object_Protected_Data *member;
+
+ contained = (Eina_Inlist *)evas_object_smart_members_get_direct(eo_obj);
EINA_INLIST_FOREACH(contained, member)
{
- _evas_object_layer_set_child(member, obj, l);
+ _evas_object_layer_set_child(member->object, eo_obj, l);
}
}
- evas_object_inform_call_restack(obj);
+ evas_object_inform_call_restack(eo_obj);
}
EAPI short
-evas_object_layer_get(const Evas_Object *obj)
+evas_object_layer_get(const Evas_Object *eo_obj)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return 0;
MAGIC_CHECK_END();
+ short layer = 0;
+ eo_do((Eo *)eo_obj, evas_obj_layer_get(&layer));
+ return layer;
+}
+
+void
+_layer_get(Eo *eo_obj EINA_UNUSED, void *_obj, va_list *list)
+{
+ short *layer = va_arg(*list, short *);
+ const Evas_Object_Protected_Data *obj = _obj;
if (obj->smart.parent)
{
- return obj->smart.parent->cur.layer;
+ Evas_Object_Protected_Data *smart_parent_obj = eo_data_get(obj->smart.parent, EVAS_OBJ_CLASS);
+ *layer = smart_parent_obj->cur.layer;
}
- return obj->cur.layer;
+ *layer = obj->cur.layer;
}
diff --git a/legacy/evas/src/lib/canvas/evas_main.c b/legacy/evas/src/lib/canvas/evas_main.c
index 94b54bb595..8a7521d3d8 100644
--- a/legacy/evas/src/lib/canvas/evas_main.c
+++ b/legacy/evas/src/lib/canvas/evas_main.c
@@ -5,6 +5,12 @@
#include "evas_cs2_private.h"
#endif
+#include <Eo.h>
+
+EAPI Eo_Op EVAS_CANVAS_BASE_ID = EO_NOOP;
+
+#define MY_CLASS EVAS_CLASS
+
#ifdef LKDEBUG
EAPI Eina_Bool lockdebug = EINA_FALSE;
EAPI int lockmax = 0;
@@ -18,6 +24,8 @@ evas_init(void)
if (++_evas_init_count != 1)
return _evas_init_count;
+ eo_init();
+
#ifdef LKDEBUG
if (getenv("EVAS_LOCK_DEBUG"))
{
@@ -103,6 +111,8 @@ evas_shutdown(void)
evil_shutdown();
#endif
+ eo_shutdown();
+
return _evas_init_count;
}
@@ -110,12 +120,17 @@ evas_shutdown(void)
EAPI Evas *
evas_new(void)
{
- Evas *e;
+ Evas_Object *eo_obj = eo_add(EVAS_CLASS, NULL);
+ return eo_obj;
+}
- e = calloc(1, sizeof(Evas));
- if (!e) return NULL;
+static void
+_constructor(Eo *eo_obj, void *class_data, va_list *list EINA_UNUSED)
+{
+ eo_do_super(eo_obj, eo_constructor());
- e->magic = MAGIC_EVAS;
+ Evas_Public_Data *e = class_data;
+ e->evas = eo_obj;
e->output.render_method = RENDER_METHOD_INVALID;
e->viewport.w = 1;
e->viewport.h = 1;
@@ -142,28 +157,34 @@ evas_new(void)
EVAS_ARRAY_SET(e, clip_changes);
#undef EVAS_ARRAY_SET
-
- return e;
}
EAPI void
-evas_free(Evas *e)
+evas_free(Evas *eo_e)
{
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
+ return;
+ MAGIC_CHECK_END();
+ eo_unref(eo_e);
+}
+
+static void
+_destructor(Eo *eo_e, void *_pd, va_list *list EINA_UNUSED)
+{
+ Evas_Public_Data *e = _pd;
Eina_Rectangle *r;
Evas_Coord_Touch_Point *touch_point;
Evas_Layer *lay;
int i;
int del;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
- return;
- MAGIC_CHECK_END();
+ if (e->walking_list == 0) evas_render_idle_flush(eo_e);
if (e->walking_list > 0) return;
- evas_render_idle_flush(e);
+ evas_render_idle_flush(eo_e);
+
+ _evas_post_event_callback_free(eo_e);
- _evas_post_event_callback_free(e);
-
del = 1;
e->walking_list++;
e->cleanup = 1;
@@ -172,7 +193,7 @@ evas_free(Evas *e)
del = 0;
EINA_INLIST_FOREACH(e->layers, lay)
{
- Evas_Object *o;
+ Evas_Object_Protected_Data *o;
evas_layer_pre_free(lay);
@@ -192,11 +213,11 @@ evas_free(Evas *e)
}
EINA_INLIST_FOREACH(e->layers, lay)
evas_layer_free_objects(lay);
- evas_layer_clean(e);
+ evas_layer_clean(eo_e);
e->walking_list--;
- evas_font_path_clear(e);
+ evas_font_path_clear(eo_e);
e->pointer.object.in = eina_list_free(e->pointer.object.in);
if (e->name_hash) eina_hash_free(e->name_hash);
@@ -207,16 +228,16 @@ evas_free(Evas *e)
EINA_LIST_FREE(e->obscures, r)
eina_rectangle_free(r);
- evas_fonts_zero_free(e);
+ evas_fonts_zero_free(eo_e);
- evas_event_callback_all_del(e);
- evas_event_callback_cleanup(e);
+ evas_event_callback_all_del(eo_e);
+ evas_event_callback_cleanup(eo_e);
if (e->engine.func)
{
e->engine.func->context_free(e->engine.data.output, e->engine.data.context);
e->engine.func->output_free(e->engine.data.output);
- e->engine.func->info_free(e, e->engine.info);
+ e->engine.func->info_free(eo_e, e->engine.info);
}
for (i = 0; i < e->modifiers.mod.count; i++)
@@ -242,20 +263,28 @@ evas_free(Evas *e)
EINA_LIST_FREE(e->touch_points, touch_point)
free(touch_point);
- _evas_device_cleanup(e);
+ _evas_device_cleanup(eo_e);
e->magic = 0;
- free(e);
+ eo_do_super(eo_e, eo_destructor());
}
EAPI void
-evas_output_method_set(Evas *e, int render_method)
+evas_output_method_set(Evas *eo_e, int render_method)
{
- Evas_Module *em;
-
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_output_method_set(render_method));
+}
+
+static void
+_canvas_output_method_set(Eo *eo_e, void *_pd, va_list *list)
+{
+ int render_method = va_arg(*list, int);
+
+ Evas_Module *em;
+ Evas_Public_Data *e = _pd;
/* if our engine to set it to is invalid - abort */
if (render_method == RENDER_METHOD_INVALID) return;
@@ -275,55 +304,102 @@ evas_output_method_set(Evas *e, int render_method)
e->engine.module = em;
evas_module_ref(em);
/* get the engine info struct */
- if (e->engine.func->info) e->engine.info = e->engine.func->info(e);
+ if (e->engine.func->info) e->engine.info = e->engine.func->info(eo_e);
return;
}
EAPI int
-evas_output_method_get(const Evas *e)
+evas_output_method_get(const Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return RENDER_METHOD_INVALID;
MAGIC_CHECK_END();
+ int ret = RENDER_METHOD_INVALID;
+ eo_do((Eo *)eo_e, evas_canvas_output_method_get(&ret));
+ return ret;
+}
- return e->output.render_method;
+static void
+_canvas_output_method_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ int *ret = va_arg(*list, int *);
+ const Evas_Public_Data *e = _pd;
+ *ret = e->output.render_method;
}
EAPI Evas_Engine_Info *
-evas_engine_info_get(const Evas *e)
+evas_engine_info_get(const Evas *eo_e)
{
- Evas_Engine_Info *info;
-
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return NULL;
MAGIC_CHECK_END();
+ Evas_Engine_Info *ret = NULL;
+ eo_do((Eo *)eo_e, evas_canvas_engine_info_get(&ret));
+ return ret;
+}
+
+static void
+_canvas_engine_info_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Engine_Info **ret = va_arg(*list, Evas_Engine_Info **);
- if (!e->engine.info) return NULL;
+ Evas_Engine_Info *info;
+
+ const Evas_Public_Data *e = _pd;
+ if (!e->engine.info)
+ {
+ *ret = NULL;
+ return;
+ }
info = e->engine.info;
- ((Evas *)e)->engine.info_magic = info->magic;
+ ((Evas_Public_Data *)e)->engine.info_magic = info->magic;
- return info;
+ *ret = info;
}
EAPI Eina_Bool
-evas_engine_info_set(Evas *e, Evas_Engine_Info *info)
+evas_engine_info_set(Evas *eo_e, Evas_Engine_Info *info)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return EINA_FALSE;
MAGIC_CHECK_END();
- if (!info) return EINA_FALSE;
- if (info != e->engine.info) return EINA_FALSE;
- if (info->magic != e->engine.info_magic) return EINA_FALSE;
- return (Eina_Bool)e->engine.func->setup(e, info);
+ Eina_Bool ret = EINA_FALSE;
+ eo_do(eo_e, evas_canvas_engine_info_set(info, &ret));
+ return ret;
+}
+
+static void
+_canvas_engine_info_set(Eo *eo_e, void *_pd, va_list *list)
+{
+ Evas_Engine_Info *info = va_arg(*list, Evas_Engine_Info *);
+ Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+ if (ret) *ret = EINA_FALSE;
+ Evas_Public_Data *e = _pd;
+ if (!info) return;
+ if (info != e->engine.info) return;
+ if (info->magic != e->engine.info_magic) return;
+
+ Eina_Bool int_ret = (Eina_Bool)e->engine.func->setup(eo_e, info);
+ if (ret) *ret = int_ret;
}
EAPI void
-evas_output_size_set(Evas *e, int w, int h)
+evas_output_size_set(Evas *eo_e, int w, int h)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_output_size_set(w, h));
+}
+
+static void
+_canvas_output_size_set(Eo *eo_e, void *_pd, va_list *list)
+{
+ int w = va_arg(*list, int);
+ int h = va_arg(*list, int);
+
+ Evas_Public_Data *e = _pd;
if ((w == e->output.w) && (h == e->output.h)) return;
if (w < 1) w = 1;
@@ -334,28 +410,50 @@ evas_output_size_set(Evas *e, int w, int h)
e->output.changed = 1;
e->output_validity++;
e->changed = 1;
- evas_render_invalidate(e);
+ evas_render_invalidate(eo_e);
}
EAPI void
-evas_output_size_get(const Evas *e, int *w, int *h)
+evas_output_size_get(const Evas *eo_e, int *w, int *h)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
if (w) *w = 0;
if (h) *h = 0;
return;
MAGIC_CHECK_END();
+ eo_do((Eo *)eo_e, evas_canvas_output_size_get(w, h));
+}
+
+static void
+_canvas_output_size_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ int *w = va_arg(*list, int *);
+ int *h = va_arg(*list, int *);
+
+ const Evas_Public_Data *e = _pd;
if (w) *w = e->output.w;
if (h) *h = e->output.h;
}
EAPI void
-evas_output_viewport_set(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
+evas_output_viewport_set(Evas *eo_e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_output_viewport_set(x, y, w, h));
+}
+
+static void
+_canvas_output_viewport_set(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Coord x = va_arg(*list, Evas_Coord);
+ Evas_Coord y = va_arg(*list, Evas_Coord);
+ Evas_Coord w = va_arg(*list, Evas_Coord);
+ Evas_Coord h = va_arg(*list, Evas_Coord);
+
+ Evas_Public_Data *e = _pd;
if ((x == e->viewport.x) && (y == e->viewport.y) &&
(w == e->viewport.w) && (h == e->viewport.h)) return;
@@ -377,15 +475,27 @@ evas_output_viewport_set(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas
}
EAPI void
-evas_output_viewport_get(const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
+evas_output_viewport_get(const Evas *eo_e, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
if (x) *x = 0;
if (y) *y = 0;
if (w) *w = 0;
if (h) *h = 0;
return;
MAGIC_CHECK_END();
+ eo_do((Eo *)eo_e, evas_canvas_output_viewport_get(x, y, w, h));
+}
+
+static void
+_canvas_output_viewport_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Coord *x = va_arg(*list, Evas_Coord *);
+ Evas_Coord *y = va_arg(*list, Evas_Coord *);
+ Evas_Coord *w = va_arg(*list, Evas_Coord *);
+ Evas_Coord *h = va_arg(*list, Evas_Coord *);
+
+ const Evas_Public_Data *e = _pd;
if (x) *x = e->viewport.x;
if (y) *y = e->viewport.y;
@@ -393,12 +503,24 @@ evas_output_viewport_get(const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coord
if (h) *h = e->viewport.h;
}
-EAPI void
-evas_output_framespace_set(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
+EAPI void
+evas_output_framespace_set(Evas *eo_e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_output_framespace_set(x, y, w, h));
+}
+
+static void
+_canvas_output_framespace_set(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Coord x = va_arg(*list, Evas_Coord);
+ Evas_Coord y = va_arg(*list, Evas_Coord);
+ Evas_Coord w = va_arg(*list, Evas_Coord);
+ Evas_Coord h = va_arg(*list, Evas_Coord);
+
+ Evas_Public_Data *e = _pd;
if ((x == e->framespace.x) && (y == e->framespace.y) &&
(w == e->framespace.w) && (h == e->framespace.h)) return;
@@ -411,16 +533,28 @@ evas_output_framespace_set(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Ev
e->changed = 1;
}
-EAPI void
-evas_output_framespace_get(const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
+EAPI void
+evas_output_framespace_get(const Evas *eo_e, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
if (x) *x = 0;
if (y) *y = 0;
if (w) *w = 0;
if (h) *h = 0;
return;
MAGIC_CHECK_END();
+ eo_do((Eo *)eo_e, evas_canvas_output_framespace_get(x, y, w, h));
+}
+
+static void
+_canvas_output_framespace_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Coord *x = va_arg(*list, Evas_Coord *);
+ Evas_Coord *y = va_arg(*list, Evas_Coord *);
+ Evas_Coord *w = va_arg(*list, Evas_Coord *);
+ Evas_Coord *h = va_arg(*list, Evas_Coord *);
+
+ const Evas_Public_Data *e = _pd;
if (x) *x = e->framespace.x;
if (y) *y = e->framespace.y;
@@ -429,43 +563,91 @@ evas_output_framespace_get(const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coo
}
EAPI Evas_Coord
-evas_coord_screen_x_to_world(const Evas *e, int x)
+evas_coord_screen_x_to_world(const Evas *eo_e, int x)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return 0;
MAGIC_CHECK_END();
- if (e->output.w == e->viewport.w) return e->viewport.x + x;
- return (long long)e->viewport.x + (((long long)x * (long long)e->viewport.w) / (long long)e->output.w);
+ Evas_Coord ret = 0;
+ eo_do((Eo *)eo_e, evas_canvas_coord_screen_x_to_world(x, &ret));
+ return ret;
+}
+
+static void
+_canvas_coord_screen_x_to_world(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ int x = va_arg(*list, int);
+ Evas_Coord *ret = va_arg(*list, Evas_Coord *);
+
+ const Evas_Public_Data *e = _pd;
+ if (e->output.w == e->viewport.w) *ret = e->viewport.x + x;
+ else *ret = (long long)e->viewport.x + (((long long)x * (long long)e->viewport.w) / (long long)e->output.w);
}
EAPI Evas_Coord
-evas_coord_screen_y_to_world(const Evas *e, int y)
+evas_coord_screen_y_to_world(const Evas *eo_e, int y)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return 0;
MAGIC_CHECK_END();
- if (e->output.h == e->viewport.h) return e->viewport.y + y;
- return (long long)e->viewport.y + (((long long)y * (long long)e->viewport.h) / (long long)e->output.h);
+ Evas_Coord ret = 0;
+ eo_do((Eo *)eo_e, evas_canvas_coord_screen_y_to_world(y, &ret));
+ return ret;
+}
+
+static void
+_canvas_coord_screen_y_to_world(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ int y = va_arg(*list, int);
+ Evas_Coord *ret = va_arg(*list, Evas_Coord *);
+
+ const Evas_Public_Data *e = _pd;
+ if (e->output.h == e->viewport.h) *ret = e->viewport.y + y;
+ else *ret = (long long)e->viewport.y + (((long long)y * (long long)e->viewport.h) / (long long)e->output.h);
}
EAPI int
-evas_coord_world_x_to_screen(const Evas *e, Evas_Coord x)
+evas_coord_world_x_to_screen(const Evas *eo_e, Evas_Coord x)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return 0;
MAGIC_CHECK_END();
- if (e->output.w == e->viewport.w) return x - e->viewport.x;
- return (int)((((long long)x - (long long)e->viewport.x) * (long long)e->output.w) / (long long)e->viewport.w);
+ Evas_Coord ret = 0;
+ eo_do((Eo *)eo_e, evas_canvas_coord_world_x_to_screen(x, &ret));
+ return ret;
+}
+
+static void
+_canvas_coord_world_x_to_screen(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Coord x = va_arg(*list, Evas_Coord);
+ int *ret = va_arg(*list, int *);
+
+ const Evas_Public_Data *e = _pd;
+ if (e->output.w == e->viewport.w) *ret = x - e->viewport.x;
+ else *ret = (int)((((long long)x - (long long)e->viewport.x) * (long long)e->output.w) / (long long)e->viewport.w);
}
EAPI int
-evas_coord_world_y_to_screen(const Evas *e, Evas_Coord y)
+evas_coord_world_y_to_screen(const Evas *eo_e, Evas_Coord y)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return 0;
MAGIC_CHECK_END();
- if (e->output.h == e->viewport.h) return y - e->viewport.y;
- return (int)((((long long)y - (long long)e->viewport.y) * (long long)e->output.h) / (long long)e->viewport.h);
+ Evas_Coord ret = 0;
+ eo_do((Eo *)eo_e, evas_canvas_coord_world_y_to_screen(y, &ret));
+ return ret;
+}
+
+static void
+_canvas_coord_world_y_to_screen(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Coord y = va_arg(*list, Evas_Coord);
+ int *ret = va_arg(*list, int *);
+
+ const Evas_Public_Data *e = _pd;
+ if (e->output.h == e->viewport.h) *ret = y - e->viewport.y;
+ else *ret = (int)((((long long)y - (long long)e->viewport.y) * (long long)e->output.h) / (long long)e->viewport.h);
}
EAPI int
@@ -515,119 +697,216 @@ evas_object_image_extension_can_load_fast_get(const char *file)
}
EAPI void
-evas_pointer_output_xy_get(const Evas *e, int *x, int *y)
+evas_pointer_output_xy_get(const Evas *eo_e, int *x, int *y)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
if (x) *x = 0;
if (y) *y = 0;
return;
MAGIC_CHECK_END();
+ eo_do((Eo *)eo_e, evas_canvas_pointer_output_xy_get(x, y));
+}
+
+static void
+_canvas_pointer_output_xy_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ int *x = va_arg(*list, int *);
+ int *y = va_arg(*list, int *);
+ const Evas_Public_Data *e = _pd;
if (x) *x = e->pointer.x;
if (y) *y = e->pointer.y;
}
EAPI void
-evas_pointer_canvas_xy_get(const Evas *e, Evas_Coord *x, Evas_Coord *y)
+evas_pointer_canvas_xy_get(const Evas *eo_e, Evas_Coord *x, Evas_Coord *y)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
if (x) *x = 0;
if (y) *y = 0;
return;
MAGIC_CHECK_END();
+ eo_do((Eo *)eo_e, evas_canvas_pointer_canvas_xy_get(x, y));
+}
+
+static void
+_canvas_pointer_canvas_xy_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Coord *x = va_arg(*list, Evas_Coord *);
+ Evas_Coord *y = va_arg(*list, Evas_Coord *);
+
+ const Evas_Public_Data *e = _pd;
if (x) *x = e->pointer.x;
if (y) *y = e->pointer.y;
}
EAPI int
-evas_pointer_button_down_mask_get(const Evas *e)
+evas_pointer_button_down_mask_get(const Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return 0;
MAGIC_CHECK_END();
- return (int)e->pointer.button;
+ int ret = 0;
+ eo_do((Eo *)eo_e, evas_canvas_pointer_button_down_mask_get(&ret));
+ return ret;
+}
+
+static void
+_canvas_pointer_button_down_mask_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ int *ret = va_arg(*list, int *);
+
+ const Evas_Public_Data *e = _pd;
+ *ret = (int)e->pointer.button;
}
EAPI Eina_Bool
-evas_pointer_inside_get(const Evas *e)
+evas_pointer_inside_get(const Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return 0;
MAGIC_CHECK_END();
- return (int)e->pointer.inside;
+ Eina_Bool ret = EINA_FALSE;
+ eo_do((Eo *)eo_e, evas_canvas_pointer_inside_get(&ret));
+ return ret;
+}
+
+static void
+_canvas_pointer_inside_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+
+ const Evas_Public_Data *e = _pd;
+ *ret = (int)e->pointer.inside;
}
EAPI void
-evas_data_attach_set(Evas *e, void *data)
+evas_data_attach_set(Evas *eo_e, void *data)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_data_attach_set(data));
+}
+
+static void
+_canvas_data_attach_set(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ void *data = va_arg(*list, void *);
+ Evas_Public_Data *e = _pd;
e->attach_data = data;
}
EAPI void *
-evas_data_attach_get(const Evas *e)
+evas_data_attach_get(const Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return NULL;
MAGIC_CHECK_END();
- return e->attach_data;
+ void *ret = NULL;
+ eo_do((Eo *)eo_e, evas_canvas_data_attach_get(&ret));
+ return ret;
+}
+
+static void
+_canvas_data_attach_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ void **ret = va_arg(*list, void **);
+ const Evas_Public_Data *e = _pd;
+ *ret = e->attach_data;
}
EAPI void
-evas_focus_in(Evas *e)
+evas_focus_in(Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_focus_in());
+}
+
+static void
+_canvas_focus_in(Eo *eo_e, void *_pd, va_list *list EINA_UNUSED)
+{
+ Evas_Public_Data *e = _pd;
if (e->focus) return;
e->focus = 1;
- evas_event_callback_call(e, EVAS_CALLBACK_CANVAS_FOCUS_IN, NULL);
+ evas_event_callback_call(eo_e, EVAS_CALLBACK_CANVAS_FOCUS_IN, NULL);
}
EAPI void
-evas_focus_out(Evas *e)
+evas_focus_out(Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_focus_out());
+}
+
+static void
+_canvas_focus_out(Eo *eo_e, void *_pd, va_list *list EINA_UNUSED)
+{
+ Evas_Public_Data *e = _pd;
if (!e->focus) return;
e->focus = 0;
- evas_event_callback_call(e, EVAS_CALLBACK_CANVAS_FOCUS_OUT, NULL);
+ evas_event_callback_call(eo_e, EVAS_CALLBACK_CANVAS_FOCUS_OUT, NULL);
}
EAPI Eina_Bool
-evas_focus_state_get(const Evas *e)
+evas_focus_state_get(const Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return 0;
MAGIC_CHECK_END();
- return e->focus;
+ Eina_Bool ret = 0;
+ eo_do((Eo *)eo_e, evas_canvas_focus_state_get(&ret));
+ return ret;
+}
+
+static void
+_canvas_focus_state_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+ const Evas_Public_Data *e = _pd;
+ *ret = e->focus;
}
EAPI void
-evas_nochange_push(Evas *e)
+evas_nochange_push(Evas *eo_e)
+{
+ eo_do(eo_e, evas_canvas_nochange_push());
+}
+
+static void
+_canvas_nochange_push(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list EINA_UNUSED)
{
+ Evas_Public_Data *e = _pd;
e->nochange++;
}
EAPI void
-evas_nochange_pop(Evas *e)
+evas_nochange_pop(Evas *eo_e)
{
+ eo_do(eo_e, evas_canvas_nochange_pop());
+}
+
+static void
+_canvas_nochange_pop(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list EINA_UNUSED)
+{
+ Evas_Public_Data *e = _pd;
e->nochange--;
}
void
-_evas_walk(Evas *e)
+_evas_walk(Evas_Public_Data *e)
{
e->walking_list++;
}
void
-_evas_unwalk(Evas *e)
+_evas_unwalk(Evas_Public_Data *e)
{
e->walking_list--;
- if ((e->walking_list == 0) && (e->delete_me)) evas_free(e);
+ if ((e->walking_list == 0) && (e->delete_me)) evas_free(e->evas);
}
EAPI const char *
@@ -691,3 +970,225 @@ evas_data_argb_unpremul(unsigned int *data, unsigned int len)
if (!data || (len < 1)) return;
evas_common_convert_argb_unpremul(data, len);
}
+
+static void
+_evas_get(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list)
+{
+ Evas **evas = va_arg(*list, Evas **);
+ if (evas) *evas = (Evas *)eo_obj;
+}
+
+static void
+_class_constructor(Eo_Class *klass)
+{
+ const Eo_Op_Func_Description func_desc[] = {
+ EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
+ EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_DESTRUCTOR), _destructor),
+ EO_OP_FUNC(EVAS_COMMON_ID(EVAS_COMMON_SUB_ID_EVAS_GET), _evas_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OUTPUT_METHOD_SET), _canvas_output_method_set),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OUTPUT_METHOD_GET), _canvas_output_method_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_ENGINE_INFO_GET), _canvas_engine_info_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_ENGINE_INFO_SET), _canvas_engine_info_set),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OUTPUT_SIZE_SET), _canvas_output_size_set),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OUTPUT_SIZE_GET), _canvas_output_size_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OUTPUT_VIEWPORT_SET), _canvas_output_viewport_set),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OUTPUT_VIEWPORT_GET), _canvas_output_viewport_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OUTPUT_FRAMESPACE_SET), _canvas_output_framespace_set),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OUTPUT_FRAMESPACE_GET), _canvas_output_framespace_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_COORD_SCREEN_X_TO_WORLD), _canvas_coord_screen_x_to_world),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_COORD_SCREEN_Y_TO_WORLD), _canvas_coord_screen_y_to_world),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_COORD_WORLD_X_TO_SCREEN), _canvas_coord_world_x_to_screen),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_COORD_WORLD_Y_TO_SCREEN), _canvas_coord_world_y_to_screen),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_POINTER_OUTPUT_XY_GET), _canvas_pointer_output_xy_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_POINTER_CANVAS_XY_GET), _canvas_pointer_canvas_xy_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_POINTER_BUTTON_DOWN_MASK_GET), _canvas_pointer_button_down_mask_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_POINTER_INSIDE_GET), _canvas_pointer_inside_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_DATA_ATTACH_SET), _canvas_data_attach_set),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_DATA_ATTACH_GET), _canvas_data_attach_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FOCUS_IN), _canvas_focus_in),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FOCUS_OUT), _canvas_focus_out),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FOCUS_STATE_GET), _canvas_focus_state_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_NOCHANGE_PUSH), _canvas_nochange_push),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_NOCHANGE_POP), _canvas_nochange_pop),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_DEFAULT_FLAGS_SET), _canvas_event_default_flags_set),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_DEFAULT_FLAGS_GET), _canvas_event_default_flags_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_DOWN), _canvas_event_feed_mouse_down),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_UP), _canvas_event_feed_mouse_up),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_CANCEL), _canvas_event_feed_mouse_cancel),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_WHEEL), _canvas_event_feed_mouse_wheel),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_MOVE), _canvas_event_feed_mouse_move),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_IN), _canvas_event_feed_mouse_in),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_OUT), _canvas_event_feed_mouse_out),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_DOWN), _canvas_event_feed_multi_down),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_UP), _canvas_event_feed_multi_up),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_MOVE), _canvas_event_feed_multi_move),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_KEY_DOWN), _canvas_event_feed_key_down),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_KEY_UP), _canvas_event_feed_key_up),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_FEED_HOLD), _canvas_event_feed_hold),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_REFEED_EVENT), _canvas_event_refeed_event),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_EVENT_DOWN_COUNT_GET), _canvas_event_down_count_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FOCUS_GET), _canvas_focus_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_PATH_CLEAR), _canvas_font_path_clear),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_PATH_APPEND), _canvas_font_path_append),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_PATH_PREPEND), _canvas_font_path_prepend),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_PATH_LIST), _canvas_font_path_list),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_HINTING_SET), _canvas_font_hinting_set),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_HINTING_GET), _canvas_font_hinting_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_HINTING_CAN_HINT), _canvas_font_hinting_can_hint),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_CACHE_FLUSH), _canvas_font_cache_flush),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_CACHE_SET), _canvas_font_cache_set),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_CACHE_GET), _canvas_font_cache_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_FONT_AVAILABLE_LIST), _canvas_font_available_list),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_MODIFIER_GET), _canvas_key_modifier_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_LOCK_GET), _canvas_key_lock_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_MODIFIER_ADD), _canvas_key_modifier_add),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_MODIFIER_DEL), _canvas_key_modifier_del),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_LOCK_ADD), _canvas_key_lock_add),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_LOCK_DEL), _canvas_key_lock_del),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_MODIFIER_ON), _canvas_key_modifier_on),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_MODIFIER_OFF), _canvas_key_modifier_off),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_LOCK_ON), _canvas_key_lock_on),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_LOCK_OFF), _canvas_key_lock_off),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_KEY_MODIFIER_MASK_GET), _canvas_key_modifier_mask_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_DAMAGE_RECTANGLE_ADD), _canvas_damage_rectangle_add),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OBSCURED_RECTANGLE_ADD), _canvas_obscured_rectangle_add),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OBSCURED_CLEAR), _canvas_obscured_clear),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_RENDER_UPDATES), _canvas_render_updates),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_RENDER), _canvas_render),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_NORENDER), _canvas_norender),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_RENDER_IDLE_FLUSH), _canvas_render_idle_flush),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_SYNC), _canvas_sync),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_RENDER_DUMP), _canvas_render_dump),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OBJECT_BOTTOM_GET), _canvas_object_bottom_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OBJECT_TOP_GET), _canvas_object_top_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_TOUCH_POINT_LIST_COUNT), _canvas_touch_point_list_count),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_TOUCH_POINT_LIST_NTH_XY_GET), _canvas_touch_point_list_nth_xy_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_TOUCH_POINT_LIST_NTH_ID_GET), _canvas_touch_point_list_nth_id_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_TOUCH_POINT_LIST_NTH_STATE_GET), _canvas_touch_point_list_nth_state_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_IMAGE_CACHE_FLUSH), _canvas_image_cache_flush),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_IMAGE_CACHE_RELOAD), _canvas_image_cache_reload),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_IMAGE_CACHE_SET), _canvas_image_cache_set),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_IMAGE_CACHE_GET), _canvas_image_cache_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_IMAGE_MAX_SIZE_GET), _canvas_image_max_size_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OBJECT_NAME_FIND), _canvas_object_name_find),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OBJECT_TOP_AT_XY_GET), _canvas_object_top_at_xy_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OBJECT_TOP_IN_RECTANGLE_GET), _canvas_object_top_in_rectangle_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OBJECTS_AT_XY_GET), _canvas_objects_at_xy_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_OBJECTS_IN_RECTANGLE_GET), _canvas_objects_in_rectangle_get),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_SMART_OBJECTS_CALCULATE), _canvas_smart_objects_calculate),
+ EO_OP_FUNC(EVAS_CANVAS_ID(EVAS_CANVAS_SUB_ID_SMART_OBJECTS_CALCULATE_COUNT_GET), _canvas_smart_objects_calculate_count_get),
+ EO_OP_FUNC_SENTINEL
+ };
+
+ eo_class_funcs_set(klass, func_desc);
+}
+
+static const Eo_Op_Description op_desc[] = {
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OUTPUT_METHOD_SET, "Sets the output engine for the given evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OUTPUT_METHOD_GET, "Retrieves the number of the output engine used for the given evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_ENGINE_INFO_GET, "Retrieves the current render engine info struct from the given evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_ENGINE_INFO_SET, "Applies the engine settings for the given evas from the given Evas_Engine_Info structure."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OUTPUT_SIZE_SET, "Sets the output size of the render engine of the given evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OUTPUT_SIZE_GET, "Retrieve the output size of the render engine of the given evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OUTPUT_VIEWPORT_SET, "Sets the output viewport of the given evas in evas units."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OUTPUT_VIEWPORT_GET, "Get the render engine's output viewport co-ordinates in canvas units."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OUTPUT_FRAMESPACE_SET, "Sets the output framespace size of the render engine of the given evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OUTPUT_FRAMESPACE_GET, "Get the render engine's output framespace co-ordinates in canvas units."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_COORD_SCREEN_X_TO_WORLD, "Convert/scale an ouput screen co-ordinate into canvas co-ordinates"),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_COORD_SCREEN_Y_TO_WORLD, "Convert/scale an ouput screen co-ordinate into canvas co-ordinates"),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_COORD_WORLD_X_TO_SCREEN, "Convert/scale a canvas co-ordinate into output screen co-ordinates"),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_COORD_WORLD_Y_TO_SCREEN, "Convert/scale a canvas co-ordinate into output screen co-ordinates"),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_POINTER_OUTPUT_XY_GET, "This function returns the current known pointer co-ordinates"),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_POINTER_CANVAS_XY_GET, "This function returns the current known pointer co-ordinates"),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_POINTER_BUTTON_DOWN_MASK_GET, "Returns a bitmask with the mouse buttons currently pressed."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_POINTER_INSIDE_GET, "Returns whether the mouse pointer is logically inside the canvas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_DATA_ATTACH_SET, "Attaches a specific pointer to the evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_DATA_ATTACH_GET, "Returns the pointer attached by evas_data_attach_set()."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_FOCUS_IN, "Inform to the evas that it got the focus."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_FOCUS_OUT, "Inform to the evas that it lost the focus."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_FOCUS_STATE_GET, "Get the focus state known by the given evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_NOCHANGE_PUSH, "Push the nochange flag up 1."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_NOCHANGE_POP, "Pop the nochange flag down 1."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_DEFAULT_FLAGS_SET, "Set the default set of flags an event begins with."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_DEFAULT_FLAGS_GET, "Get the defaulty set of flags an event begins with."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_DOWN, "Mouse down event feed."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_UP, "Mouse up event feed."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_CANCEL, "Mouse cancel event feed."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_WHEEL, "Mouse wheel event feed."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_MOVE, "Mouse move event feed."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_IN, "Mouse in event feed."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MOUSE_OUT, "Mouse out event feed."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_DOWN, "Multi down event feed."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_UP, "Multi up event feed."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_MULTI_MOVE, "Multi move event feed."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_KEY_DOWN, "Key down event feed"),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_KEY_UP, "Key up event feed"),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_FEED_HOLD, "Hold event feed"),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_REFEED_EVENT, "Re feed event."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_EVENT_DOWN_COUNT_GET, "Get the number of mouse or multi presses currently active."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_FOCUS_GET, "Retrieve the object that currently has focus."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_FONT_PATH_CLEAR, "Removes all font paths loaded into memory for the given evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_FONT_PATH_APPEND, "Appends a font path to the list of font paths used by the given evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_FONT_PATH_PREPEND, "Prepends a font path to the list of font paths used by the given evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_FONT_PATH_LIST, "Retrieves the list of font paths used by the given evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_FONT_HINTING_SET, "Changes the font hinting for the given evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_FONT_HINTING_GET, "Retrieves the font hinting used by the given evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_FONT_HINTING_CAN_HINT, "Checks if the font hinting is supported by the given evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_FONT_CACHE_FLUSH, "Force the given evas and associated engine to flush its font cache."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_FONT_CACHE_SET, "Changes the size of font cache of the given evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_FONT_CACHE_GET, "Changes the size of font cache of the given evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_FONT_AVAILABLE_LIST, "List of available font descriptions known or found by this evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_KEY_MODIFIER_GET, "Returns a handle to the list of modifier keys registered."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_KEY_LOCK_GET, "Returns a handle to the list of lock keys registered in the canvas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_KEY_MODIFIER_ADD, "Adds the keyname key to the current list of modifier keys."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_KEY_MODIFIER_DEL, "Removes the keyname key from the current list of modifier keys."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_KEY_LOCK_ADD, "Adds the keyname key to the current list of lock keys."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_KEY_LOCK_DEL, "Removes the keyname key from the current list of lock keys."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_KEY_MODIFIER_ON, "Enables or turns on programmatically the modifier key with name keyname."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_KEY_MODIFIER_OFF, "Disables or turns off programmatically the modifier key with name keyname."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_KEY_LOCK_ON, "Enables or turns on programmatically the lock key with name keyname."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_KEY_LOCK_OFF, "Disables or turns off programmatically the lock key with name keyname."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_KEY_MODIFIER_MASK_GET, "Creates a bit mask from the keyname modifier key."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_DAMAGE_RECTANGLE_ADD, "Add a damage rectangle."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OBSCURED_RECTANGLE_ADD, "Add an obscured region to an Evas canvas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OBSCURED_CLEAR, "Remove all obscured regions from an Evas canvas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_RENDER_UPDATES, "Force immediate renderization of the given Evas canvas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_RENDER, "Force renderization of the given canvas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_NORENDER, "Update the canvas internal objects but not triggering immediate."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_RENDER_IDLE_FLUSH, "Make the canvas discard internally cached data used for rendering."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_SYNC, "? evas_sync"),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_RENDER_DUMP, "Make the canvas discard as much data as possible used by the engine at"),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OBJECT_BOTTOM_GET, "Get the lowest (stacked) Evas object on the canvas e."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OBJECT_TOP_GET, "Get the highest (stacked) Evas object on the canvas e."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_TOUCH_POINT_LIST_COUNT, "Get the number of touched point in the evas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_TOUCH_POINT_LIST_NTH_XY_GET, "This function returns the nth touch point's co-ordinates."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_TOUCH_POINT_LIST_NTH_ID_GET, "This function returns the id of nth touch point."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_TOUCH_POINT_LIST_NTH_STATE_GET, "This function returns the state of nth touch point."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_IMAGE_CACHE_FLUSH, "Flush the image cache of the canvas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_IMAGE_CACHE_RELOAD, "Reload the image cache"),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_IMAGE_CACHE_SET, "Set the image cache."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_IMAGE_CACHE_GET, "Get the image cache"),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_IMAGE_MAX_SIZE_GET, "Get the maximum image size evas can possibly handle"),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OBJECT_NAME_FIND, "Retrieves the object on the given evas with the given name."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OBJECT_TOP_AT_XY_GET, "Retrieve the Evas object stacked at the top of a given position in"),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OBJECT_TOP_IN_RECTANGLE_GET, "Retrieve the Evas object stacked at the top of a given rectangulari region in a canvas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OBJECTS_AT_XY_GET, "Retrieve a list of Evas objects lying over a given position in a canvas."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_OBJECTS_IN_RECTANGLE_GET, "Retrieves the objects in the given rectangle region."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_SMART_OBJECTS_CALCULATE, "Call user-provided calculate() smart functions."),
+ EO_OP_DESCRIPTION(EVAS_CANVAS_SUB_ID_SMART_OBJECTS_CALCULATE_COUNT_GET, "Get the internal counter that counts the number of smart calculations."),
+ EO_OP_DESCRIPTION_SENTINEL
+};
+
+static const Eo_Class_Description class_desc = {
+ EO_VERSION,
+ "Evas",
+ EO_CLASS_TYPE_REGULAR,
+ EO_CLASS_DESCRIPTION_OPS(&EVAS_CANVAS_BASE_ID, op_desc, EVAS_CANVAS_SUB_ID_LAST),
+ NULL,
+ sizeof(Evas_Public_Data),
+ _class_constructor,
+ NULL
+};
+
+EO_DEFINE_CLASS(evas_class_get, &class_desc, EO_BASE_CLASS, EVAS_COMMON_CLASS, NULL);
+
diff --git a/legacy/evas/src/lib/canvas/evas_map.c b/legacy/evas/src/lib/canvas/evas_map.c
index 4466d8a4dc..3338d37046 100644
--- a/legacy/evas/src/lib/canvas/evas_map.c
+++ b/legacy/evas/src/lib/canvas/evas_map.c
@@ -3,39 +3,40 @@
#include <math.h>
static void
-_evas_map_calc_geom_change(Evas_Object *obj)
+_evas_map_calc_geom_change(Evas_Object *eo_obj)
{
int is, was = 0;
-
- evas_object_change(obj);
- evas_object_clip_dirty(obj);
- if (obj->layer->evas->events_frozen <= 0)
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ evas_object_change(eo_obj, obj);
+ evas_object_clip_dirty(eo_obj, obj);
+ if (!(obj->layer->evas->is_frozen))
{
- evas_object_recalc_clippees(obj);
- if (!obj->smart.smart)
+ evas_object_recalc_clippees(eo_obj, obj);
+ if (!obj->is_smart)
{
- is = evas_object_is_in_output_rect(obj,
+ is = evas_object_is_in_output_rect(eo_obj, obj,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y, 1, 1);
if ((is ^ was) && obj->cur.visible)
- evas_event_feed_mouse_move(obj->layer->evas,
+ evas_event_feed_mouse_move(obj->layer->evas->evas,
obj->layer->evas->pointer.x,
obj->layer->evas->pointer.y,
obj->layer->evas->last_timestamp,
NULL);
}
}
- evas_object_inform_call_move(obj);
- evas_object_inform_call_resize(obj);
+ evas_object_inform_call_move(eo_obj, obj);
+ evas_object_inform_call_resize(eo_obj);
}
static void
-_evas_map_calc_map_geometry(Evas_Object *obj)
+_evas_map_calc_map_geometry(Evas_Object *eo_obj)
{
Evas_Coord x1, x2, yy1, yy2;
const Evas_Map_Point *p, *p_end;
Eina_Bool ch = EINA_FALSE;
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if (!obj->cur.map) return;
// WARN: Do not merge below code to SLP until it is fixed.
// It has an infinite loop bug.
@@ -99,8 +100,8 @@ _evas_map_calc_map_geometry(Evas_Object *obj)
// This shouldn't really be needed, but without it we do have case
// where the clip is wrong when a map doesn't change, so always forcing
// it, as long as someone doesn't find a better fix.
- evas_object_clip_dirty(obj);
- if (ch) _evas_map_calc_geom_change(obj);
+ evas_object_clip_dirty(eo_obj, obj);
+ if (ch) _evas_map_calc_geom_change(eo_obj);
}
static inline Evas_Map *
@@ -162,10 +163,11 @@ _evas_map_dup(const Evas_Map *orig)
}
static inline void
-_evas_map_free(Evas_Object *obj, Evas_Map *m)
+_evas_map_free(Evas_Object *eo_obj, Evas_Map *m)
{
- if (obj)
+ if (eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if (obj->spans)
{
obj->layer->evas->engine.func->image_map_clean(obj->layer->evas->engine.data.output, obj->spans);
@@ -367,13 +369,13 @@ evas_map_inside_get(const Evas_Map *m, Evas_Coord x, Evas_Coord y)
}
static Eina_Bool
-_evas_object_map_parent_check(Evas_Object *parent)
+_evas_object_map_parent_check(Evas_Object *eo_parent)
{
const Eina_Inlist *list;
- const Evas_Object *o;
-
- if (!parent) return EINA_FALSE;
+ const Evas_Object_Protected_Data *o;
+ if (!eo_parent) return EINA_FALSE;
+ Evas_Object_Protected_Data *parent = eo_data_get(eo_parent, EVAS_OBJ_CLASS);
list = evas_object_smart_members_get_direct(parent->smart.parent);
EINA_INLIST_FOREACH(list, o)
if (o->cur.usemap) break ;
@@ -384,12 +386,20 @@ _evas_object_map_parent_check(Evas_Object *parent)
}
EAPI void
-evas_object_map_enable_set(Evas_Object *obj, Eina_Bool enabled)
+evas_object_map_enable_set(Evas_Object *eo_obj, Eina_Bool enabled)
{
- Evas_Object *parents;
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_map_enable_set(enabled));
+}
+
+void
+_map_enable_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Eina_Bool enabled = va_arg(*list, int);
+
+ Evas_Object_Protected_Data *obj = _pd;
Eina_Bool pchange = EINA_FALSE;
enabled = !!enabled;
@@ -400,7 +410,7 @@ evas_object_map_enable_set(Evas_Object *obj, Eina_Bool enabled)
{
if (!obj->cur.map)
obj->cur.map = _evas_map_new(4);
- evas_object_mapped_clip_across_mark(obj);
+ evas_object_mapped_clip_across_mark(eo_obj, obj);
// obj->cur.map->normal_geometry = obj->cur.geometry;
}
else
@@ -414,44 +424,67 @@ evas_object_map_enable_set(Evas_Object *obj, Eina_Bool enabled)
}
if (obj->cur.map)
{
- _evas_map_calc_geom_change(obj);
- evas_object_mapped_clip_across_mark(obj);
+ _evas_map_calc_geom_change(eo_obj);
+ evas_object_mapped_clip_across_mark(eo_obj, obj);
}
}
- _evas_map_calc_map_geometry(obj);
+ _evas_map_calc_map_geometry(eo_obj);
/* This is a bit heavy handed, but it fixes the case of same geometry, but
* changed colour or UV settings. */
- evas_object_change(obj);
+ evas_object_change(eo_obj, obj);
if (!obj->changed_pchange) obj->changed_pchange = pchange;
obj->changed_map = EINA_TRUE;
if (enabled)
{
- for (parents = obj->smart.parent; parents; parents = parents->smart.parent)
- parents->child_has_map = EINA_TRUE;
+ Evas_Object *eo_parents;
+ Evas_Object_Protected_Data *parents = NULL;
+ for (eo_parents = obj->smart.parent; eo_parents; eo_parents = parents->smart.parent)
+ {
+ parents = eo_data_get(eo_parents, EVAS_OBJ_CLASS);
+ parents->child_has_map = EINA_TRUE;
+ }
}
else
{
if (_evas_object_map_parent_check(obj->smart.parent))
- evas_object_update_bounding_box(obj);
+ evas_object_update_bounding_box(eo_obj, obj);
}
}
EAPI Eina_Bool
-evas_object_map_enable_get(const Evas_Object *obj)
+evas_object_map_enable_get(const Evas_Object *eo_obj)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return EINA_FALSE;
MAGIC_CHECK_END();
- return obj->cur.usemap;
+ Eina_Bool enabled = EINA_FALSE;
+ eo_do((Eo *)eo_obj, evas_obj_map_enable_get(&enabled));
+ return enabled;
+}
+
+void
+_map_enable_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ Eina_Bool *enabled = va_arg(*list, Eina_Bool *);
+ const Evas_Object_Protected_Data *obj = _pd;
+ *enabled = obj->cur.usemap;
}
EAPI void
-evas_object_map_set(Evas_Object *obj, const Evas_Map *map)
+evas_object_map_set(Evas_Object *eo_obj, const Evas_Map *map)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_map_set(map));
+}
+
+void
+_map_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ const Evas_Map *map = va_arg(*list, const Evas_Map *);
+ Evas_Object_Protected_Data *obj = _pd;
if ((!map) || (map->count < 4))
{
@@ -476,20 +509,20 @@ evas_object_map_set(Evas_Object *obj, const Evas_Map *map)
}
else
{
- _evas_map_free(obj, obj->cur.map);
+ _evas_map_free(eo_obj, obj->cur.map);
obj->cur.map = NULL;
}
if (!obj->prev.map)
{
- evas_object_mapped_clip_across_mark(obj);
+ evas_object_mapped_clip_across_mark(eo_obj, obj);
return;
}
- if (!obj->cur.usemap) _evas_map_calc_geom_change(obj);
- else _evas_map_calc_map_geometry(obj);
+ if (!obj->cur.usemap) _evas_map_calc_geom_change(eo_obj);
+ else _evas_map_calc_map_geometry(eo_obj);
if (obj->cur.usemap)
- evas_object_mapped_clip_across_mark(obj);
+ evas_object_mapped_clip_across_mark(eo_obj, obj);
}
return;
}
@@ -508,23 +541,33 @@ evas_object_map_set(Evas_Object *obj, const Evas_Map *map)
_evas_map_copy(obj->cur.map, map);
else
{
- if (obj->cur.map) _evas_map_free(obj, obj->cur.map);
+ if (obj->cur.map) _evas_map_free(eo_obj, obj->cur.map);
obj->cur.map = _evas_map_dup(map);
if (obj->cur.usemap)
- evas_object_mapped_clip_across_mark(obj);
+ evas_object_mapped_clip_across_mark(eo_obj, obj);
}
- _evas_map_calc_map_geometry(obj);
+ _evas_map_calc_map_geometry(eo_obj);
}
EAPI const Evas_Map *
-evas_object_map_get(const Evas_Object *obj)
+evas_object_map_get(const Evas_Object *eo_obj)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return NULL;
MAGIC_CHECK_END();
+ const Evas_Map *map = NULL;
+ eo_do((Eo *)eo_obj, evas_obj_map_get(&map));
+ return map;
+}
+
+void
+_map_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ const Evas_Map **map = va_arg(*list, const Evas_Map **);
+ const Evas_Object_Protected_Data *obj = _pd;
- return obj->cur.map;
+ *map = obj->cur.map;
}
EAPI Evas_Map *
@@ -717,11 +760,12 @@ evas_map_point_color_get(const Evas_Map *m, int idx, int *r, int *g, int *b, int
}
EAPI void
-evas_map_util_points_populate_from_object_full(Evas_Map *m, const Evas_Object *obj, Evas_Coord z)
+evas_map_util_points_populate_from_object_full(Evas_Map *m, const Evas_Object *eo_obj, Evas_Coord z)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if (m->count != 4)
{
@@ -733,15 +777,16 @@ evas_map_util_points_populate_from_object_full(Evas_Map *m, const Evas_Object *o
}
EAPI void
-evas_map_util_points_populate_from_object(Evas_Map *m, const Evas_Object *obj)
+evas_map_util_points_populate_from_object(Evas_Map *m, const Evas_Object *eo_obj)
{
MAGIC_CHECK(m, Evas_Map, MAGIC_MAP);
return;
MAGIC_CHECK_END();
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if (m->count != 4)
{
@@ -1092,11 +1137,12 @@ evas_map_util_clockwise_get(Evas_Map *m)
}
void
-evas_object_map_update(Evas_Object *obj,
+evas_object_map_update(Evas_Object *eo_obj,
int x, int y,
int imagew, int imageh,
int uvw, int uvh)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
const Evas_Map_Point *p, *p_end;
RGBA_Map_Point *pts, *pt;
diff --git a/legacy/evas/src/lib/canvas/evas_name.c b/legacy/evas/src/lib/canvas/evas_name.c
index 1a9d20f8b9..5e2d92eede 100644
--- a/legacy/evas/src/lib/canvas/evas_name.c
+++ b/legacy/evas/src/lib/canvas/evas_name.c
@@ -2,31 +2,50 @@
#include "evas_private.h"
EAPI void
-evas_object_name_set(Evas_Object *obj, const char *name)
+evas_object_name_set(Evas_Object *eo_obj, const char *name)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_name_set(name));
+}
+
+void
+_name_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ const char *name = va_arg(*list, const char *);
+
+ Evas_Object_Protected_Data *obj = _pd;
if (obj->name)
{
- eina_hash_del(obj->layer->evas->name_hash, obj->name, obj);
+ eina_hash_del(obj->layer->evas->name_hash, obj->name, eo_obj);
free(obj->name);
}
if (!name) obj->name = NULL;
else
{
obj->name = strdup(name);
- eina_hash_add(obj->layer->evas->name_hash, obj->name, obj);
+ eina_hash_add(obj->layer->evas->name_hash, obj->name, eo_obj);
}
}
EAPI const char *
-evas_object_name_get(const Evas_Object *obj)
+evas_object_name_get(const Evas_Object *eo_obj)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return NULL;
MAGIC_CHECK_END();
- return obj->name;
+ const char *name = NULL;
+ eo_do((Eo *)eo_obj, evas_obj_name_get(&name));
+ return name;
+}
+
+void
+_name_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ const char **name = va_arg(*list, const char **);
+ const Evas_Object_Protected_Data *obj = _pd;
+ *name = obj->name;
}
EAPI Evas_Object *
@@ -35,38 +54,59 @@ evas_object_name_find(const Evas *e, const char *name)
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
return NULL;
MAGIC_CHECK_END();
- if (!name) return NULL;
- return (Evas_Object *)eina_hash_find(e->name_hash, name);
+ Evas_Object *ret = NULL;
+ eo_do((Eo *)e, evas_canvas_object_name_find(name, &ret));
+ return ret;
+}
+
+void
+_canvas_object_name_find(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ const char *name = va_arg(*list, const char *);
+ Evas_Object **ret = va_arg(*list, Evas_Object **);
+ const Evas_Public_Data *e = _pd;
+ if (!name) *ret = NULL;
+ else *ret = (Evas_Object *)eina_hash_find(e->name_hash, name);
}
static Evas_Object *
-_evas_object_name_child_find(const Evas_Object *obj, const char *name, int recurse)
+_evas_object_name_child_find(const Evas_Object *eo_obj, const char *name, int recurse)
{
const Eina_Inlist *lst;
- Evas_Object *child;
-
- if (!obj->smart.smart) return NULL;
- lst = evas_object_smart_members_get_direct(obj);
+ Evas_Object_Protected_Data *child;
+
+ if (!eo_isa(eo_obj, EVAS_OBJ_SMART_CLASS)) return NULL;
+ lst = evas_object_smart_members_get_direct(eo_obj);
EINA_INLIST_FOREACH(lst, child)
{
if (child->delete_me) continue;
if (!child->name) continue;
- if (!strcmp(name, child->name)) return child;
+ if (!strcmp(name, child->name)) return child->object;
if (recurse != 0)
{
- if ((obj = _evas_object_name_child_find(child, name, recurse - 1)))
- return (Evas_Object *)obj;
+ if ((eo_obj = _evas_object_name_child_find(child->object, name, recurse - 1)))
+ return (Evas_Object *)eo_obj;
}
}
return NULL;
}
EAPI Evas_Object *
-evas_object_name_child_find(const Evas_Object *obj, const char *name, int recurse)
+evas_object_name_child_find(const Evas_Object *eo_obj, const char *name, int recurse)
{
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return NULL;
MAGIC_CHECK_END();
- if (!name) return NULL;
- return _evas_object_name_child_find(obj, name, recurse);
+ Evas_Object *child = NULL;
+ eo_do((Eo *)eo_obj, evas_obj_name_child_find(name, recurse, &child));
+ return child;
+}
+
+void
+_name_child_find(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list)
+{
+ const char *name = va_arg(*list, const char *);
+ int recurse = va_arg(*list, int);
+ Evas_Object **child = va_arg(*list, Evas_Object **);
+ *child = (!name ? NULL : _evas_object_name_child_find(eo_obj, name, recurse));
}
diff --git a/legacy/evas/src/lib/canvas/evas_object_box.c b/legacy/evas/src/lib/canvas/evas_object_box.c
index e29c5f5d63..d2ab6e5235 100644
--- a/legacy/evas/src/lib/canvas/evas_object_box.c
+++ b/legacy/evas/src/lib/canvas/evas_object_box.c
@@ -1,9 +1,16 @@
#include "evas_common.h"
+#include "evas_private.h"
#ifdef _WIN32_WCE
# undef remove
#endif
+#include <Eo.h>
+
+EAPI Eo_Op EVAS_OBJ_BOX_BASE_ID = EO_NOOP;
+
+#define MY_CLASS EVAS_OBJ_BOX_CLASS
+
typedef struct _Evas_Object_Box_Iterator Evas_Object_Box_Iterator;
typedef struct _Evas_Object_Box_Accessor Evas_Object_Box_Accessor;
@@ -38,7 +45,7 @@ static const Evas_Smart_Cb_Description _signals[] =
static void _sizing_eval(Evas_Object *obj);
#define EVAS_OBJECT_BOX_DATA_GET(o, ptr) \
- Evas_Object_Box_Data *ptr = evas_object_smart_data_get(o)
+ Evas_Object_Box_Data *ptr = eo_data_get(o, MY_CLASS)
#define EVAS_OBJECT_BOX_DATA_GET_OR_RETURN(o, ptr) \
EVAS_OBJECT_BOX_DATA_GET(o, ptr); \
@@ -60,10 +67,6 @@ if (!ptr) \
return val; \
}
-EVAS_SMART_SUBCLASS_NEW(_evas_object_box_type, _evas_object_box,
- Evas_Object_Box_Api, Evas_Smart_Class,
- evas_object_smart_clipped_class_get, NULL)
-
static Eina_Bool
_evas_object_box_iterator_next(Evas_Object_Box_Iterator *it, void **data)
{
@@ -123,19 +126,11 @@ _on_child_resize(void *data, Evas *evas __UNUSED__, Evas_Object *o __UNUSED__, v
static void
_on_child_del(void *data, Evas *evas __UNUSED__, Evas_Object *o, void *einfo __UNUSED__)
{
- const Evas_Object_Box_Api *api;
Evas_Object *box = data;
- EVAS_OBJECT_BOX_DATA_GET(box, priv);
- api = priv->api;
-
- if ((!api) || (!api->remove))
- {
- ERR("no api->remove");
- return;
- }
-
- if (!api->remove(box, priv, o))
+ Evas_Object *ret = NULL;
+ eo_do(box, evas_obj_box_internal_remove(o, &ret));
+ if (!ret)
ERR("child removal failed");
evas_object_smart_changed(box);
}
@@ -158,19 +153,11 @@ _on_hints_changed(void *data __UNUSED__, Evas *evas __UNUSED__, Evas_Object *o ,
}
static Evas_Object_Box_Option *
-_evas_object_box_option_new(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child)
+_evas_object_box_option_new(Evas_Object *o, Evas_Object_Box_Data *priv EINA_UNUSED, Evas_Object *child)
{
- Evas_Object_Box_Option *opt;
- const Evas_Object_Box_Api *api;
-
- api = priv->api;
- if ((!api) || (!api->option_new))
- {
- ERR("no api->option_new");
- return NULL;
- }
+ Evas_Object_Box_Option *opt = NULL;
- opt = api->option_new(o, priv, child);
+ eo_do(o, evas_obj_box_internal_option_new(child, &opt));
if (!opt)
{
ERR("option_new failed");
@@ -192,19 +179,10 @@ _evas_object_box_child_callbacks_unregister(Evas_Object *obj)
}
static Evas_Object_Box_Option *
-_evas_object_box_option_callbacks_register(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object_Box_Option *opt)
+_evas_object_box_option_callbacks_register(Evas_Object *o, Evas_Object_Box_Data *priv EINA_UNUSED, Evas_Object_Box_Option *opt)
{
- const Evas_Object_Box_Api *api;
Evas_Object *obj = opt->obj;
- api = priv->api;
-
- if ((!api) || (!api->option_free))
- {
- WRN("api->option_free not set (may cause memory leaks, segfaults)");
- return NULL;
- }
-
evas_object_event_callback_add
(obj, EVAS_CALLBACK_RESIZE, _on_child_resize, o);
evas_object_event_callback_add
@@ -215,61 +193,79 @@ _evas_object_box_option_callbacks_register(Evas_Object *o, Evas_Object_Box_Data
return opt;
}
-static Evas_Object_Box_Option *
-_evas_object_box_option_new_default(Evas_Object *o __UNUSED__, Evas_Object_Box_Data *priv __UNUSED__, Evas_Object *child)
+static void
+_evas_object_box_option_new_default(Eo *o EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
{
+ Evas_Object *child = va_arg(*list, Evas_Object *);
+ Evas_Object_Box_Option **ret = va_arg(*list, Evas_Object_Box_Option **);
+ *ret = NULL;
+
Evas_Object_Box_Option *opt;
opt = (Evas_Object_Box_Option *)malloc(sizeof(*opt));
if (!opt)
- return NULL;
+ return;
opt->obj = child;
- return opt;
+ *ret = opt;
}
static void
-_evas_object_box_option_free_default(Evas_Object *o __UNUSED__, Evas_Object_Box_Data *priv __UNUSED__, Evas_Object_Box_Option *opt)
+_evas_object_box_option_free_default(Eo *o EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
{
+ Evas_Object_Box_Option *opt = va_arg(*list, Evas_Object_Box_Option *);
free(opt);
}
-static Evas_Object_Box_Option *
-_evas_object_box_append_default(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child)
+static void
+_evas_object_box_append_default(Eo *o, void *_pd, va_list *list)
{
+ Evas_Object *child = va_arg(*list, Evas_Object *);
+ Evas_Object_Box_Option **ret = va_arg(*list, Evas_Object_Box_Option **);
+ *ret = NULL;
+ Evas_Object_Box_Data *priv = _pd;
Evas_Object_Box_Option *opt;
opt = _evas_object_box_option_new(o, priv, child);
if (!opt)
- return NULL;
+ return;
priv->children = eina_list_append(priv->children, opt);
priv->children_changed = EINA_TRUE;
evas_object_smart_callback_call(o, SIG_CHILD_ADDED, opt);
- return opt;
+ *ret = opt;
}
-static Evas_Object_Box_Option *
-_evas_object_box_prepend_default(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child)
+static void
+_evas_object_box_prepend_default(Eo *o, void *_pd, va_list *list)
{
+ Evas_Object *child = va_arg(*list, Evas_Object *);
+ Evas_Object_Box_Option **ret = va_arg(*list, Evas_Object_Box_Option **);
+ *ret = NULL;
+ Evas_Object_Box_Data *priv = _pd;
Evas_Object_Box_Option *opt;
opt = _evas_object_box_option_new(o, priv, child);
if (!opt)
- return NULL;
+ return;
priv->children = eina_list_prepend(priv->children, opt);
priv->children_changed = EINA_TRUE;
evas_object_smart_callback_call(o, SIG_CHILD_ADDED, opt);
- return opt;
+ *ret = opt;
}
-static Evas_Object_Box_Option *
-_evas_object_box_insert_before_default(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, const Evas_Object *reference)
+static void
+_evas_object_box_insert_before_default(Eo *o, void *_pd, va_list *list)
{
+ Evas_Object *child = va_arg(*list, Evas_Object *);
+ const Evas_Object *reference = va_arg(*list, const Evas_Object *);
+ Evas_Object_Box_Option **ret = va_arg(*list, Evas_Object_Box_Option **);
+ *ret = NULL;
+ Evas_Object_Box_Data *priv = _pd;
Eina_List *l;
Evas_Object_Box_Option *opt;
@@ -281,22 +277,28 @@ _evas_object_box_insert_before_default(Evas_Object *o, Evas_Object_Box_Data *pri
new_opt = _evas_object_box_option_new(o, priv, child);
if (!new_opt)
- return NULL;
+ return;
priv->children = eina_list_prepend_relative
(priv->children, new_opt, opt);
priv->children_changed = EINA_TRUE;
evas_object_smart_callback_call(o, SIG_CHILD_ADDED, new_opt);
- return new_opt;
+ *ret = new_opt;
+ return;
}
}
- return NULL;
+ *ret = opt;
}
-static Evas_Object_Box_Option *
-_evas_object_box_insert_after_default(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, const Evas_Object *reference)
+static void
+_evas_object_box_insert_after_default(Eo *o, void *_pd, va_list *list)
{
+ Evas_Object *child = va_arg(*list, Evas_Object *);
+ const Evas_Object *reference = va_arg(*list, const Evas_Object *);
+ Evas_Object_Box_Option **ret = va_arg(*list, Evas_Object_Box_Option **);
+ *ret = NULL;
+ Evas_Object_Box_Data *priv = _pd;
Eina_List *l;
Evas_Object_Box_Option *opt;
@@ -308,22 +310,28 @@ _evas_object_box_insert_after_default(Evas_Object *o, Evas_Object_Box_Data *priv
new_opt = _evas_object_box_option_new(o, priv, child);
if (!new_opt)
- return NULL;
+ return;
priv->children = eina_list_append_relative
(priv->children, new_opt, opt);
priv->children_changed = EINA_TRUE;
evas_object_smart_callback_call(o, SIG_CHILD_ADDED, new_opt);
- return new_opt;
+ *ret = new_opt;
+ return;
}
}
- return NULL;
+ *ret = opt;
}
-static Evas_Object_Box_Option *
-_evas_object_box_insert_at_default(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, unsigned int pos)
+static void
+_evas_object_box_insert_at_default(Eo *o, void *_pd, va_list *list)
{
+ Evas_Object *child = va_arg(*list, Evas_Object *);
+ unsigned int pos = va_arg(*list, unsigned int);
+ Evas_Object_Box_Option **ret = va_arg(*list, Evas_Object_Box_Option **);
+ *ret = NULL;
+ Evas_Object_Box_Data *priv = _pd;
Eina_List *l;
unsigned int i;
@@ -333,12 +341,13 @@ _evas_object_box_insert_at_default(Evas_Object *o, Evas_Object_Box_Data *priv, E
new_opt = _evas_object_box_option_new(o, priv, child);
if (!new_opt)
- return NULL;
+ return;
priv->children = eina_list_prepend(priv->children, new_opt);
priv->children_changed = EINA_TRUE;
evas_object_smart_callback_call(o, SIG_CHILD_ADDED, new_opt);
- return new_opt;
+ *ret = new_opt;
+ return;
}
for (l = priv->children, i = 0; l; l = l->next, i++)
@@ -351,34 +360,28 @@ _evas_object_box_insert_at_default(Evas_Object *o, Evas_Object_Box_Data *priv, E
new_opt = _evas_object_box_option_new(o, priv, child);
if (!new_opt)
- return NULL;
+ return;
priv->children = eina_list_prepend_relative
(priv->children, new_opt, opt);
priv->children_changed = EINA_TRUE;
evas_object_smart_callback_call(o, SIG_CHILD_ADDED, new_opt);
- return new_opt;
+ *ret = new_opt;
+ return;
}
}
-
- return NULL;
}
-static Evas_Object *
-_evas_object_box_remove_default(Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child)
+static void
+_evas_object_box_remove_default(Eo *o, void *_pd, va_list *list)
{
- const Evas_Object_Box_Api *api;
+ Evas_Object *child = va_arg(*list, Evas_Object *);
+ Evas_Object **ret = va_arg(*list, Evas_Object **);
+ *ret = NULL;
+ Evas_Object_Box_Data *priv = _pd;
Evas_Object_Box_Option *opt;
Eina_List *l;
- api = priv->api;
-
- if ((!api) || (!api->option_free))
- {
- ERR("api->option_free not set (may cause memory leaks, segfaults)");
- return NULL;
- }
-
EINA_LIST_FOREACH(priv->children, l, opt)
{
Evas_Object *obj = opt->obj;
@@ -386,76 +389,49 @@ _evas_object_box_remove_default(Evas_Object *o, Evas_Object_Box_Data *priv, Evas
if (obj == child)
{
priv->children = eina_list_remove(priv->children, opt);
- api->option_free(o, priv, opt);
+ eo_do(o, evas_obj_box_internal_option_free(opt));
priv->children_changed = EINA_TRUE;
evas_object_smart_callback_call(o, SIG_CHILD_REMOVED, obj);
- return obj;
+ *ret = obj;
+ return;
}
}
-
- return NULL;
}
-static Evas_Object *
-_evas_object_box_remove_at_default(Evas_Object *o, Evas_Object_Box_Data *priv, unsigned int pos)
+static void
+_evas_object_box_remove_at_default(Eo *o, void *_pd, va_list *list)
{
- const Evas_Object_Box_Api *api;
+ unsigned int pos = va_arg(*list, unsigned int);
+ Evas_Object **ret = va_arg(*list, Evas_Object **);
+ *ret = NULL;
+ Evas_Object_Box_Data *priv = _pd;
Eina_List *node;
Evas_Object_Box_Option *opt;
Evas_Object *obj;
- api = priv->api;
-
- if ((!api) || (!api->option_free))
- {
- WRN("api->option_free not set (may cause memory leaks, segfaults)");
- return NULL;
- }
-
node = eina_list_nth_list(priv->children, pos);
if (!node)
{
ERR("No item to be removed at position %d", pos);
- return NULL;
+ return;
}
opt = node->data;
obj = opt->obj;
priv->children = eina_list_remove_list(priv->children, node);
- api->option_free(o, priv, opt);
+ eo_do(o, evas_obj_box_internal_option_free(opt));
priv->children_changed = EINA_TRUE;
evas_object_smart_callback_call(o, SIG_CHILD_REMOVED, obj);
- return obj;
+ *ret = obj;
}
static void
-_evas_object_box_smart_add(Evas_Object *o)
+_smart_add(Eo *o, void *_pd, va_list *list EINA_UNUSED)
{
- Evas_Object_Box_Data *priv;
-
- priv = evas_object_smart_data_get(o);
- if (!priv)
- {
- const Evas_Smart *smart;
- const Evas_Smart_Class *sc;
-
- priv = (Evas_Object_Box_Data *)calloc(1, sizeof(*priv));
- if (!priv)
- {
- ERR("Could not allocate object private data.");
- return;
- }
-
- smart = evas_object_smart_smart_get(o);
- sc = evas_smart_class_get(smart);
- priv->api = (const Evas_Object_Box_Api *)sc;
-
- evas_object_smart_data_set(o, priv);
- }
- _evas_object_box_parent_sc->add(o);
-
+ eo_do_super(o, evas_obj_smart_add());
+ Evas_Object_Box_Data *priv = _pd;
evas_object_event_callback_add
(o, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _on_hints_changed, o);
@@ -470,19 +446,11 @@ _evas_object_box_smart_add(Evas_Object *o)
}
static void
-_evas_object_box_smart_del(Evas_Object *o)
+_smart_del(Eo *o, void *_pd, va_list *list EINA_UNUSED)
{
- const Evas_Object_Box_Api *api;
Eina_List *l;
- EVAS_OBJECT_BOX_DATA_GET(o, priv);
-
- api = priv->api;
- if ((!api) || (!api->option_free))
- {
- WRN("api->option_free not set (may cause memory leaks, segfaults)");
- return;
- }
+ Evas_Object_Box_Data *priv = _pd;
l = priv->children;
while (l)
@@ -490,19 +458,21 @@ _evas_object_box_smart_del(Evas_Object *o)
Evas_Object_Box_Option *opt = l->data;
_evas_object_box_child_callbacks_unregister(opt->obj);
- api->option_free(o, priv, opt);
+ eo_do(o, evas_obj_box_internal_option_free(opt));
l = eina_list_remove_list(l, l);
}
if (priv->layout.data && priv->layout.free_data)
priv->layout.free_data(priv->layout.data);
- _evas_object_box_parent_sc->del(o);
+ eo_do_super(o, evas_obj_smart_del());
}
static void
-_evas_object_box_smart_resize(Evas_Object *o, Evas_Coord w, Evas_Coord h)
+_smart_resize(Eo *o, void *_pd EINA_UNUSED, va_list *list)
{
+ Evas_Coord w = va_arg(*list, Evas_Coord);
+ Evas_Coord h = va_arg(*list, Evas_Coord);
Evas_Coord ow, oh;
evas_object_geometry_get(o, NULL, NULL, &ow, &oh);
if ((ow == w) && (oh == h)) return;
@@ -510,9 +480,9 @@ _evas_object_box_smart_resize(Evas_Object *o, Evas_Coord w, Evas_Coord h)
}
static void
-_evas_object_box_smart_calculate(Evas_Object *o)
+_smart_calculate(Eo *o, void *_pd, va_list *list EINA_UNUSED)
{
- EVAS_OBJECT_BOX_DATA_GET_OR_RETURN(o, priv);
+ Evas_Object_Box_Data *priv = _pd;
if (priv->layout.cb)
{
priv->layouting = 1;
@@ -524,72 +494,79 @@ _evas_object_box_smart_calculate(Evas_Object *o)
ERR("No layout function set for %p box.", o);
}
-static void
-_evas_object_box_smart_set_user(Evas_Object_Box_Api *api)
+EAPI Evas_Object *
+evas_object_box_add(Evas *evas)
{
- api->base.add = _evas_object_box_smart_add;
- api->base.del = _evas_object_box_smart_del;
- api->base.resize = _evas_object_box_smart_resize;
- api->base.calculate = _evas_object_box_smart_calculate;
- api->base.callbacks = _signals;
+ Evas_Object *obj = eo_add(MY_CLASS, evas);
+ eo_unref(obj);
+ return obj;
+}
- api->append = _evas_object_box_append_default;
- api->prepend = _evas_object_box_prepend_default;
- api->insert_before = _evas_object_box_insert_before_default;
- api->insert_after = _evas_object_box_insert_after_default;
- api->insert_at = _evas_object_box_insert_at_default;
- api->remove = _evas_object_box_remove_default;
- api->remove_at = _evas_object_box_remove_at_default;
- api->option_new = _evas_object_box_option_new_default;
- api->option_free = _evas_object_box_option_free_default;
+static void
+_type_check(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+{
+ const char *type = va_arg(*list, const char *);
+ Eina_Bool *type_check = va_arg(*list, Eina_Bool *);
+ if (0 == strcmp(type, _evas_object_box_type))
+ *type_check = EINA_TRUE;
+ else
+ eo_do_super(obj, evas_obj_type_check(type, type_check));
}
-EAPI Evas_Object *
-evas_object_box_add(Evas *evas)
+static void
+_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED)
{
- return evas_object_smart_add(evas, _evas_object_box_smart_class_new());
+ eo_do_super(obj, eo_constructor());
+ eo_do(obj,
+ evas_obj_smart_callbacks_descriptions_set(_signals, NULL),
+ evas_obj_type_set(_evas_object_box_type));
}
EAPI Evas_Object *
evas_object_box_add_to(Evas_Object *parent)
{
+ Evas_Object *o = NULL;
+ eo_do(parent, evas_obj_box_add_to(&o));
+ return o;
+}
+
+static void
+_box_add_to(Eo *parent, void *_pd EINA_UNUSED, va_list *list)
+{
Evas *evas;
- Evas_Object *o;
+ Evas_Object **o = va_arg(*list, Evas_Object **);
evas = evas_object_evas_get(parent);
- o = evas_object_box_add(evas);
- evas_object_smart_member_add(o, parent);
- return o;
+ *o = evas_object_box_add(evas);
+ evas_object_smart_member_add(*o, parent);
}
EAPI void
-evas_object_box_smart_set(Evas_Object_Box_Api *api)
+evas_object_box_smart_set(Evas_Object_Box_Api *api EINA_UNUSED)
{
- if (!api)
- return;
- _evas_object_box_smart_set(api);
+ return;
}
EAPI const Evas_Object_Box_Api *
evas_object_box_smart_class_get(void)
{
- static Evas_Object_Box_Api _sc =
- EVAS_OBJECT_BOX_API_INIT_NAME_VERSION(_evas_object_box_type);
- static const Evas_Object_Box_Api *class = NULL;
-
- if (class)
- return class;
-
- evas_object_box_smart_set(&_sc);
- class = &_sc;
-
- return class;
+ return NULL;
}
EAPI void
evas_object_box_layout_set(Evas_Object *o, Evas_Object_Box_Layout cb, const void *data, void (*free_data)(void *data))
{
- EVAS_OBJECT_BOX_DATA_GET_OR_RETURN(o, priv);
+ eo_do(o, evas_obj_box_layout_set(cb, data, free_data));
+}
+
+static void
+_box_layout_set(Eo *o, void *_pd, va_list *list)
+{
+ Evas_Object_Box_Data *priv = _pd;
+
+ Evas_Object_Box_Layout cb = va_arg(*list, Evas_Object_Box_Layout);
+ const void *data = va_arg(*list, const void *);
+ void (*free_data)(void *data) = va_arg(*list, void (*)(void *data));
if ((priv->layout.cb == cb) && (priv->layout.data == data) &&
(priv->layout.free_data == free_data))
@@ -746,8 +723,16 @@ _evas_object_box_layout_horizontal_weight_apply(Evas_Object_Box_Data *priv, Evas
}
EAPI void
-evas_object_box_layout_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__)
+evas_object_box_layout_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv EINA_UNUSED, void *data EINA_UNUSED)
{
+ eo_do(o, evas_obj_box_layout_horizontal());
+}
+
+static void
+_box_layout_horizontal(Eo *o, void *_pd, va_list *list EINA_UNUSED)
+{
+ Evas_Object_Box_Data *priv = _pd;
+
int pad_inc = 0, sub_pixel = 0;
int req_w, global_pad, remaining, top_h = 0;
double weight_total = 0.0;
@@ -904,8 +889,16 @@ _evas_object_box_layout_vertical_weight_apply(Evas_Object_Box_Data *priv, Evas_O
}
EAPI void
-evas_object_box_layout_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__)
+evas_object_box_layout_vertical(Evas_Object *o, Evas_Object_Box_Data *priv EINA_UNUSED, void *data EINA_UNUSED)
{
+ eo_do(o, evas_obj_box_layout_vertical());
+}
+
+static void
+_box_layout_vertical(Eo *o, void *_pd, va_list *list EINA_UNUSED)
+{
+ Evas_Object_Box_Data *priv = _pd;
+
int pad_inc = 0, sub_pixel = 0;
int req_h, global_pad, remaining, top_w = 0;
double weight_total = 0.0;
@@ -1009,8 +1002,16 @@ evas_object_box_layout_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void
}
EAPI void
-evas_object_box_layout_homogeneous_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__)
+evas_object_box_layout_homogeneous_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv EINA_UNUSED, void *data EINA_UNUSED)
+{
+ eo_do(o, evas_obj_box_layout_homogeneous_horizontal());
+}
+
+static void
+_box_layout_homogeneous_horizontal(Eo *o, void *_pd, va_list *list EINA_UNUSED)
{
+ Evas_Object_Box_Data *priv = _pd;
+
int cell_sz, share, inc;
int sub_pixel = 0;
int x, y, w, h;
@@ -1070,8 +1071,16 @@ evas_object_box_layout_homogeneous_horizontal(Evas_Object *o, Evas_Object_Box_Da
}
EAPI void
-evas_object_box_layout_homogeneous_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__)
+evas_object_box_layout_homogeneous_vertical(Evas_Object *o, Evas_Object_Box_Data *priv EINA_UNUSED, void *data EINA_UNUSED)
{
+ eo_do(o, evas_obj_box_layout_homogeneous_vertical());
+}
+
+static void
+_box_layout_homogeneous_vertical(Eo *o, void *_pd, va_list *list EINA_UNUSED)
+{
+ Evas_Object_Box_Data *priv = _pd;
+
int cell_sz, share, inc;
int sub_pixel = 0;
int x, y, w, h;
@@ -1130,8 +1139,16 @@ evas_object_box_layout_homogeneous_vertical(Evas_Object *o, Evas_Object_Box_Data
}
EAPI void
-evas_object_box_layout_homogeneous_max_size_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__)
+evas_object_box_layout_homogeneous_max_size_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv EINA_UNUSED, void *data EINA_UNUSED)
{
+ eo_do(o, evas_obj_box_layout_homogeneous_max_size_horizontal());
+}
+
+static void
+_box_layout_homogeneous_max_size_horizontal(Eo *o, void *_pd, va_list *list EINA_UNUSED)
+{
+ Evas_Object_Box_Data *priv = _pd;
+
int remaining, global_pad, pad_inc = 0, sub_pixel = 0;
int cell_sz = 0;
int x, y, w, h;
@@ -1214,8 +1231,16 @@ evas_object_box_layout_homogeneous_max_size_horizontal(Evas_Object *o, Evas_Obje
}
EAPI void
-evas_object_box_layout_homogeneous_max_size_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__)
+evas_object_box_layout_homogeneous_max_size_vertical(Evas_Object *o, Evas_Object_Box_Data *priv EINA_UNUSED, void *data EINA_UNUSED)
{
+ eo_do(o, evas_obj_box_layout_homogeneous_max_size_vertical());
+}
+
+static void
+_box_layout_homogeneous_max_size_vertical(Eo *o, void *_pd, va_list *list EINA_UNUSED)
+{
+ Evas_Object_Box_Data *priv = _pd;
+
int remaining, global_pad, pad_inc = 0, sub_pixel = 0;
int cell_sz = 0;
int x, y, w, h;
@@ -1362,8 +1387,16 @@ _evas_object_box_layout_flow_horizontal_row_info_collect(Evas_Object_Box_Data *p
}
EAPI void
-evas_object_box_layout_flow_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__)
+evas_object_box_layout_flow_horizontal(Evas_Object *o, Evas_Object_Box_Data *priv EINA_UNUSED, void *data EINA_UNUSED)
+{
+ eo_do(o, evas_obj_box_layout_flow_horizontal());
+}
+
+static void
+_box_layout_flow_horizontal(Eo *o, void *_pd, va_list *list EINA_UNUSED)
{
+ Evas_Object_Box_Data *priv = _pd;
+
int n_children;
int r, row_count = 0;
int min_w = 0, min_h = 0;
@@ -1542,8 +1575,16 @@ _evas_object_box_layout_flow_vertical_col_info_collect(Evas_Object_Box_Data *pri
}
EAPI void
-evas_object_box_layout_flow_vertical(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__)
+evas_object_box_layout_flow_vertical(Evas_Object *o, Evas_Object_Box_Data *priv EINA_UNUSED, void *data EINA_UNUSED)
+{
+ eo_do(o, evas_obj_box_layout_flow_vertical());
+}
+
+static void
+_box_layout_flow_vertical(Eo *o, void *_pd, va_list *list EINA_UNUSED)
{
+ Evas_Object_Box_Data *priv = _pd;
+
int n_children;
int c, col_count;
int min_w = 0, min_h = 0;
@@ -1657,8 +1698,16 @@ evas_object_box_layout_flow_vertical(Evas_Object *o, Evas_Object_Box_Data *priv,
}
EAPI void
-evas_object_box_layout_stack(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__)
+evas_object_box_layout_stack(Evas_Object *o, Evas_Object_Box_Data *priv EINA_UNUSED, void *data EINA_UNUSED)
+{
+ eo_do(o, evas_obj_box_layout_stack());
+}
+
+static void
+_box_layout_stack(Eo *o, void *_pd, va_list *list EINA_UNUSED)
{
+ Evas_Object_Box_Data *priv = _pd;
+
Eina_List *l;
Evas_Coord ox, oy, ow, oh;
Evas_Coord top_w = 0, top_h = 0;
@@ -1707,7 +1756,16 @@ evas_object_box_layout_stack(Evas_Object *o, Evas_Object_Box_Data *priv, void *d
EAPI void
evas_object_box_align_set(Evas_Object *o, double horizontal, double vertical)
{
- EVAS_OBJECT_BOX_DATA_GET_OR_RETURN(o, priv);
+ eo_do(o, evas_obj_box_align_set(horizontal, vertical));
+}
+
+static void
+_box_align_set(Eo *o, void *_pd, va_list *list)
+{
+ Evas_Object_Box_Data *priv = _pd;
+ double horizontal = va_arg(*list, double);
+ double vertical = va_arg(*list, double);
+
if (priv->align.h == horizontal && priv->align.v == vertical)
return;
priv->align.h = horizontal;
@@ -1718,7 +1776,16 @@ evas_object_box_align_set(Evas_Object *o, double horizontal, double vertical)
EAPI void
evas_object_box_align_get(const Evas_Object *o, double *horizontal, double *vertical)
{
- EVAS_OBJECT_BOX_DATA_GET(o, priv);
+ eo_do((Eo *)o, evas_obj_box_align_get(horizontal, vertical));
+}
+
+static void
+_box_align_get(Eo *o EINA_UNUSED, void *_pd, va_list *list)
+{
+ const Evas_Object_Box_Data *priv = _pd;
+ double *horizontal = va_arg(*list, double *);
+ double *vertical = va_arg(*list, double *);
+
if (priv)
{
if (horizontal) *horizontal = priv->align.h;
@@ -1734,7 +1801,17 @@ evas_object_box_align_get(const Evas_Object *o, double *horizontal, double *vert
EAPI void
evas_object_box_padding_set(Evas_Object *o, Evas_Coord horizontal, Evas_Coord vertical)
{
- EVAS_OBJECT_BOX_DATA_GET_OR_RETURN(o, priv);
+ eo_do(o, evas_obj_box_padding_set(horizontal, vertical));
+}
+
+static void
+_box_padding_set(Eo *o, void *_pd, va_list *list)
+{
+ Evas_Object_Box_Data *priv = _pd;
+
+ Evas_Coord horizontal = va_arg(*list, Evas_Coord);
+ Evas_Coord vertical = va_arg(*list, Evas_Coord);
+
if (priv->pad.h == horizontal && priv->pad.v == vertical)
return;
priv->pad.h = horizontal;
@@ -1745,7 +1822,17 @@ evas_object_box_padding_set(Evas_Object *o, Evas_Coord horizontal, Evas_Coord ve
EAPI void
evas_object_box_padding_get(const Evas_Object *o, Evas_Coord *horizontal, Evas_Coord *vertical)
{
- EVAS_OBJECT_BOX_DATA_GET(o, priv);
+ eo_do((Eo *)o, evas_obj_box_padding_get(horizontal, vertical));
+}
+
+static void
+_box_padding_get(Eo *o EINA_UNUSED, void *_pd, va_list *list)
+{
+ const Evas_Object_Box_Data *priv = _pd;
+
+ Evas_Coord *horizontal = va_arg(*list, Evas_Coord *);
+ Evas_Coord *vertical = va_arg(*list, Evas_Coord *);
+
if (priv)
{
if (horizontal) *horizontal = priv->pad.h;
@@ -1761,200 +1848,241 @@ evas_object_box_padding_get(const Evas_Object *o, Evas_Coord *horizontal, Evas_C
EAPI Evas_Object_Box_Option *
evas_object_box_append(Evas_Object *o, Evas_Object *child)
{
- Evas_Object_Box_Option *opt;
- const Evas_Object_Box_Api *api;
+ Evas_Object_Box_Option *option = NULL;
+ eo_do(o, evas_obj_box_append(child, &option));
+ return option;
+}
- EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, 0);
- if (!child)
- return NULL;
+static void
+_box_append(Eo *o, void *_pd, va_list *list)
+{
+ Evas_Object_Box_Option *opt = NULL;
- api = priv->api;
- if ((!api) || (!api->append))
- return NULL;
+ Evas_Object_Box_Data *priv = _pd;
+ Evas_Object *child = va_arg(*list, Evas_Object *);
+ Evas_Object_Box_Option **option = va_arg(*list, Evas_Object_Box_Option **);
+ if (option) *option = NULL;
+ if (!child)
+ return;
- opt = api->append(o, priv, child);
+ eo_do(o, evas_obj_box_internal_append(child, &opt));
if (opt)
{
evas_object_smart_member_add(child, o);
evas_object_smart_changed(o);
- return _evas_object_box_option_callbacks_register(o, priv, opt);
+ if (option) *option = _evas_object_box_option_callbacks_register(o, priv, opt);
+ return;
}
-
- return NULL;
}
EAPI Evas_Object_Box_Option *
evas_object_box_prepend(Evas_Object *o, Evas_Object *child)
{
- Evas_Object_Box_Option *opt;
- const Evas_Object_Box_Api *api;
+ Evas_Object_Box_Option *option = NULL;
+ eo_do(o, evas_obj_box_prepend(child, &option));
+ return option;
+}
- EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, 0);
- if (!child)
- return NULL;
+static void
+_box_prepend(Eo *o, void *_pd, va_list *list)
+{
+ Evas_Object_Box_Option *opt = NULL;
- api = priv->api;
- if ((!api) || (!api->prepend))
- return NULL;
+ Evas_Object_Box_Data *priv = _pd;
+ Evas_Object *child = va_arg(*list, Evas_Object *);
+ Evas_Object_Box_Option **option = va_arg(*list, Evas_Object_Box_Option **);
+ if (option) *option = NULL;
+ if (!child)
+ return;
- opt = api->prepend(o, priv, child);
+ eo_do(o, evas_obj_box_internal_prepend(child, &opt));
if (opt)
{
evas_object_smart_member_add(child, o);
evas_object_smart_changed(o);
- return _evas_object_box_option_callbacks_register(o, priv, opt);
+ if (option) *option = _evas_object_box_option_callbacks_register(o, priv, opt);
+ return;
}
-
- return NULL;
}
EAPI Evas_Object_Box_Option *
evas_object_box_insert_before(Evas_Object *o, Evas_Object *child, const Evas_Object *reference)
{
- Evas_Object_Box_Option *opt;
- const Evas_Object_Box_Api *api;
+ Evas_Object_Box_Option *option = NULL;
+ eo_do(o, evas_obj_box_insert_before(child, reference, &option));
+ return option;
+}
- EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, 0);
- if (!child)
- return NULL;
+static void
+_box_insert_before(Eo *o, void *_pd, va_list *list)
+{
+ Evas_Object_Box_Option *opt = NULL;
- api = priv->api;
- if ((!api) || (!api->insert_before))
- return NULL;
+ Evas_Object_Box_Data *priv = _pd;
+ Evas_Object *child = va_arg(*list, Evas_Object *);
+ const Evas_Object *reference = va_arg(*list, const Evas_Object *);
+ Evas_Object_Box_Option **option = va_arg(*list, Evas_Object_Box_Option **);
+ if (option) *option = NULL;
+ if (!child)
+ return;
- opt = api->insert_before(o, priv, child, reference);
+ eo_do(o, evas_obj_box_internal_insert_before(child, reference, &opt));
if (opt)
{
evas_object_smart_member_add(child, o);
evas_object_smart_changed(o);
- return _evas_object_box_option_callbacks_register(o, priv, opt);
+ if (option) *option = _evas_object_box_option_callbacks_register(o, priv, opt);
+ return;
}
-
- return NULL;
}
EAPI Evas_Object_Box_Option *
evas_object_box_insert_after(Evas_Object *o, Evas_Object *child, const Evas_Object *reference)
{
- Evas_Object_Box_Option *opt;
- const Evas_Object_Box_Api *api;
+ Evas_Object_Box_Option *option = NULL;
+ eo_do(o, evas_obj_box_insert_after(child, reference, &option));
+ return option;
+}
- EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, NULL);
- if (!child)
- return NULL;
+static void
+_box_insert_after(Eo *o, void *_pd, va_list *list)
+{
+ Evas_Object_Box_Option *opt = NULL;
- api = priv->api;
- if ((!api) || (!api->insert_after))
- return NULL;
+ Evas_Object_Box_Data *priv = _pd;
+ Evas_Object *child = va_arg(*list, Evas_Object *);
+ const Evas_Object *reference = va_arg(*list, const Evas_Object *);
+ Evas_Object_Box_Option **option = va_arg(*list, Evas_Object_Box_Option **);
+ if (option) *option = NULL;
+ if (!child)
+ return;
- opt = api->insert_after(o, priv, child, reference);
+ eo_do(o, evas_obj_box_internal_insert_after(child, reference, &opt));
if (opt)
{
evas_object_smart_member_add(child, o);
evas_object_smart_changed(o);
- return _evas_object_box_option_callbacks_register(o, priv, opt);
+ if (option) *option = _evas_object_box_option_callbacks_register(o, priv, opt);
+ return;
}
-
- return NULL;
}
EAPI Evas_Object_Box_Option *
evas_object_box_insert_at(Evas_Object *o, Evas_Object *child, unsigned int pos)
{
- Evas_Object_Box_Option *opt;
- const Evas_Object_Box_Api *api;
+ Evas_Object_Box_Option *option = NULL;
+ eo_do(o, evas_obj_box_insert_at(child, pos, &option));
+ return option;
+}
- EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, 0);
- if (!child)
- return NULL;
+static void
+_box_insert_at(Eo *o, void *_pd, va_list *list)
+{
+ Evas_Object_Box_Option *opt = NULL;
- api = priv->api;
- if ((!api) || (!api->insert_at))
- return NULL;
+ Evas_Object_Box_Data *priv = _pd;
+ Evas_Object *child = va_arg(*list, Evas_Object *);
+ unsigned int pos = va_arg(*list, unsigned int);
+ Evas_Object_Box_Option **option = va_arg(*list, Evas_Object_Box_Option **);
+ if (option) *option = NULL;
+ if (!child)
+ return;
- opt = api->insert_at(o, priv, child, pos);
+ eo_do(o, evas_obj_box_internal_insert_at(child, pos, &opt));
if (opt)
{
evas_object_smart_member_add(child, o);
evas_object_smart_changed(o);
- return _evas_object_box_option_callbacks_register(o, priv, opt);
+ if (option) *option = _evas_object_box_option_callbacks_register(o, priv, opt);
+ return;
}
-
- return NULL;
}
EAPI Eina_Bool
evas_object_box_remove(Evas_Object *o, Evas_Object *child)
{
- const Evas_Object_Box_Api *api;
- Evas_Object *obj;
-
- EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, 0);
- if (!child) return EINA_FALSE;
+ Eina_Bool result = EINA_FALSE;
+ eo_do(o, evas_obj_box_remove(child, &result));
+ return result;
+}
- api = priv->api;
- if ((!api) || (!api->remove))
- return 0;
+static void
+_box_remove(Eo *o, void *_pd EINA_UNUSED, va_list *list)
+{
+ Evas_Object *child = va_arg(*list, Evas_Object *);
+ Eina_Bool *result = va_arg(*list, Eina_Bool *);
+ if (result) *result = EINA_FALSE;
+ Evas_Object *obj = NULL;
- obj = api->remove(o, priv, child);
+ eo_do(o, evas_obj_box_internal_remove(child, &obj));
if (obj)
{
_evas_object_box_child_callbacks_unregister(obj);
evas_object_smart_member_del(obj);
evas_object_smart_changed(o);
- return EINA_TRUE;
+ if (result) *result = EINA_TRUE;
+ return;
}
-
- return EINA_FALSE;
}
EAPI Eina_Bool
evas_object_box_remove_at(Evas_Object *o, unsigned int pos)
{
- const Evas_Object_Box_Api *api;
- Evas_Object *obj;
+ Eina_Bool result = EINA_FALSE;
+ eo_do(o, evas_obj_box_remove_at(pos, &result));
+ return result;
+}
- EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, 0);
- api = priv->api;
- if ((!api) || (!api->remove_at)) return EINA_FALSE;
+static void
+_box_remove_at(Eo *o, void *_pd EINA_UNUSED, va_list *list)
+{
+ unsigned int pos = va_arg(*list, unsigned int);
+ Eina_Bool *result = va_arg(*list, Eina_Bool *);
+ if (result) *result = EINA_FALSE;
+ Evas_Object *obj = NULL;
- obj = api->remove_at(o, priv, pos);
+ eo_do(o, evas_obj_box_internal_remove_at(pos, &obj));
if (obj)
{
_evas_object_box_child_callbacks_unregister(obj);
evas_object_smart_member_del(obj);
evas_object_smart_changed(o);
- return EINA_TRUE;
+ if (result) *result = EINA_TRUE;
+ return;
}
-
- return EINA_FALSE;
}
EAPI Eina_Bool
evas_object_box_remove_all(Evas_Object *o, Eina_Bool clear)
{
- const Evas_Object_Box_Api *api;
-
- EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, 0);
+ Eina_Bool result = EINA_FALSE;
+ eo_do(o, evas_obj_box_remove_all(clear, &result));
+ return result;
+}
- api = priv->api;
- if ((!api) || (!api->remove)) return EINA_FALSE;
+static void
+_box_remove_all(Eo *o, void *_pd, va_list *list)
+{
+ Evas_Object_Box_Data *priv = _pd;
+ Eina_Bool clear = va_arg(*list, int);
+ Eina_Bool *result = va_arg(*list, Eina_Bool *);
+ if (result) *result = EINA_FALSE;
evas_object_smart_changed(o);
while (priv->children)
{
Evas_Object_Box_Option *opt = priv->children->data;
- Evas_Object *obj;
+ Evas_Object *obj = NULL;
- obj = api->remove(o, priv, opt->obj);
+ eo_do(o, evas_obj_box_internal_remove(opt->obj, &obj));
if (obj)
{
_evas_object_box_child_callbacks_unregister(obj);
@@ -1962,23 +2090,33 @@ evas_object_box_remove_all(Evas_Object *o, Eina_Bool clear)
if (clear)
evas_object_del(obj);
}
- else return EINA_FALSE;
+ else return;
}
- return EINA_TRUE;
+ if (result) *result = EINA_TRUE;
}
EAPI Eina_Iterator *
evas_object_box_iterator_new(const Evas_Object *o)
{
- Evas_Object_Box_Iterator *it;
+ Eina_Iterator *itr = NULL;
+ eo_do((Eo *)o, evas_obj_box_iterator_new(&itr));
+ return itr;
+}
- EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, NULL);
+static void
+_box_iterator_new(Eo *o, void *_pd, va_list *list)
+{
+ const Evas_Object_Box_Data *priv = _pd;
+
+ Eina_Iterator **itr_ret = va_arg(*list, Eina_Iterator **);
+ Evas_Object_Box_Iterator *it;
+ *itr_ret = NULL;
- if (!priv->children) return NULL;
+ if (!priv->children) return;
it = calloc(1, sizeof(Evas_Object_Box_Iterator));
- if (!it) return NULL;
+ if (!it) return;
EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_ITERATOR);
@@ -1989,20 +2127,30 @@ evas_object_box_iterator_new(const Evas_Object *o)
it->iterator.get_container = FUNC_ITERATOR_GET_CONTAINER(_evas_object_box_iterator_get_container);
it->iterator.free = FUNC_ITERATOR_FREE(_evas_object_box_iterator_free);
- return &it->iterator;
+ *itr_ret = &it->iterator;
}
EAPI Eina_Accessor *
evas_object_box_accessor_new(const Evas_Object *o)
{
- Evas_Object_Box_Accessor *it;
+ Eina_Accessor * accessor = NULL;
+ eo_do((Eo *)o, evas_obj_box_accessor_new(&accessor));
+ return accessor;
+}
- EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, NULL);
+static void
+_box_accessor_new(Eo *o, void *_pd, va_list *list)
+{
+ const Evas_Object_Box_Data *priv = _pd;
- if (!priv->children) return NULL;
+ Eina_Accessor **accessor = va_arg(*list, Eina_Accessor **);
+ *accessor = NULL;
+ Evas_Object_Box_Accessor *it;
+ if (!priv->children) return;
+
it = calloc(1, sizeof(Evas_Object_Box_Accessor));
- if (!it) return NULL;
+ if (!it) return;
EINA_MAGIC_SET(&it->accessor, EINA_MAGIC_ACCESSOR);
@@ -2013,7 +2161,7 @@ evas_object_box_accessor_new(const Evas_Object *o)
it->accessor.get_container = FUNC_ACCESSOR_GET_CONTAINER(_evas_object_box_accessor_get_container);
it->accessor.free = FUNC_ACCESSOR_FREE(_evas_object_box_accessor_free);
- return &it->accessor;
+ *accessor = &it->accessor;
}
EAPI Eina_List *
@@ -2033,35 +2181,36 @@ evas_object_box_children_get(const Evas_Object *o)
EAPI const char *
evas_object_box_option_property_name_get(const Evas_Object *o, int property)
{
- const Evas_Object_Box_Api *api;
-
- EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, NULL);
-
- if (property < 0)
- return NULL;
-
- api = priv->api;
- if ((!api) || (!api->property_name_get))
- return NULL;
+ const char *name = NULL;
+ eo_do((Eo *)o, evas_obj_box_option_property_name_get(property, &name));
+ return name;
+}
- return api->property_name_get(o, property);
+static void
+_box_option_property_name_get(Eo *o EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
+{
+ va_arg(*list, int);
+ const char **name = va_arg(*list, const char **);
+ *name = NULL;
}
EAPI int
evas_object_box_option_property_id_get(const Evas_Object *o, const char *name)
{
- const Evas_Object_Box_Api *api;
+ int id = 0;
+ eo_do((Eo *)o, evas_obj_box_option_property_id_get(name, &id));
+ return id;
+}
- EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, -1);
+static void
+_box_option_property_id_get(Eo *o EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
+{
+ const char *name = va_arg(*list, const char *);
+ int *id = va_arg(*list, int *);
+ *id = -1;
if (!name)
- return -1;
-
- api = priv->api;
- if ((!api) || (!api->property_id_get))
- return -1;
-
- return api->property_id_get(o, name);
+ return;
}
EAPI Eina_Bool
@@ -2081,21 +2230,19 @@ evas_object_box_option_property_set(Evas_Object *o, Evas_Object_Box_Option *opt,
EAPI Eina_Bool
evas_object_box_option_property_vset(Evas_Object *o, Evas_Object_Box_Option *opt, int property, va_list args)
{
- const Evas_Object_Box_Api *api;
-
- EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, 0);
-
- if (!opt) return EINA_FALSE;
-
- api = priv->api;
- if ((!api) || (!api->property_set))
- return EINA_FALSE;
-
- if (!api->property_set(o, opt, property, args))
- return EINA_FALSE;
+ Eina_Bool ret = EINA_FALSE;
+ eo_do(o, evas_obj_box_option_property_vset(opt, property, args, &ret));
+ return ret;
+}
- evas_object_smart_changed(o);
- return EINA_TRUE;
+static void
+_box_option_property_vset(Eo *o EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
+{
+ va_arg(*list, Evas_Object_Box_Option *);
+ va_arg(*list, int);
+ va_arg(*list, va_list);
+ Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+ if (ret) *ret = EINA_FALSE;
}
EAPI Eina_Bool
@@ -2114,15 +2261,140 @@ evas_object_box_option_property_get(const Evas_Object *o, Evas_Object_Box_Option
EAPI Eina_Bool
evas_object_box_option_property_vget(const Evas_Object *o, Evas_Object_Box_Option *opt, int property, va_list args)
{
- const Evas_Object_Box_Api *api;
+ Eina_Bool ret = EINA_FALSE;
+ eo_do((Eo *)o, evas_obj_box_option_property_vget(opt, property, args, &ret));
+ return ret;
+}
+
+static void
+_box_option_property_vget(Eo *o EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
+{
+ va_arg(*list, Evas_Object_Box_Option *);
+ va_arg(*list, int);
+ va_arg(*list, va_list);
+ Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+ *ret = EINA_FALSE;
+}
+
+static void
+_smart_data_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ void **data = va_arg(*list, void **);
+ *data = (void *)_pd;
+}
- EVAS_OBJECT_BOX_DATA_GET_OR_RETURN_VAL(o, priv, 0);
+static void
+_class_constructor(Eo_Class *klass)
+{
+ const Eo_Op_Func_Description func_desc[] = {
+ EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
+
+ EO_OP_FUNC(EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_TYPE_CHECK), _type_check),
+ EO_OP_FUNC(EVAS_OBJ_ID(EVAS_OBJ_SUB_ID_SMART_DATA_GET), _smart_data_get),
+
+ EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_ADD), _smart_add),
+ EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL), _smart_del),
+ EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_RESIZE), _smart_resize),
+ EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_CALCULATE), _smart_calculate),
+
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INTERNAL_APPEND), _evas_object_box_append_default),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INTERNAL_PREPEND), _evas_object_box_prepend_default),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INTERNAL_INSERT_BEFORE), _evas_object_box_insert_before_default),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INTERNAL_INSERT_AFTER), _evas_object_box_insert_after_default),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INTERNAL_INSERT_AT), _evas_object_box_insert_at_default),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INTERNAL_REMOVE), _evas_object_box_remove_default),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INTERNAL_REMOVE_AT), _evas_object_box_remove_at_default),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INTERNAL_OPTION_NEW), _evas_object_box_option_new_default),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INTERNAL_OPTION_FREE), _evas_object_box_option_free_default),
+
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_ADD_TO), _box_add_to),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_SET), _box_layout_set),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_HORIZONTAL), _box_layout_horizontal),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_VERTICAL), _box_layout_vertical),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_HOMOGENEOUS_HORIZONTAL), _box_layout_homogeneous_horizontal),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_HOMOGENEOUS_VERTICAL), _box_layout_homogeneous_vertical),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_HOMOGENEOUS_MAX_SIZE_HORIZONTAL), _box_layout_homogeneous_max_size_horizontal),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_HOMOGENEOUS_MAX_SIZE_VERTICAL), _box_layout_homogeneous_max_size_vertical),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_FLOW_HORIZONTAL), _box_layout_flow_horizontal),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_FLOW_VERTICAL), _box_layout_flow_vertical),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_LAYOUT_STACK), _box_layout_stack),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_ALIGN_SET), _box_align_set),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_ALIGN_GET), _box_align_get),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_PADDING_SET), _box_padding_set),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_PADDING_GET), _box_padding_get),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_APPEND), _box_append),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_PREPEND), _box_prepend),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INSERT_BEFORE), _box_insert_before),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INSERT_AFTER), _box_insert_after),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_INSERT_AT), _box_insert_at),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_REMOVE), _box_remove),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_REMOVE_AT), _box_remove_at),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_REMOVE_ALL), _box_remove_all),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_ITERATOR_NEW), _box_iterator_new),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_ACCESSOR_NEW), _box_accessor_new),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_OPTION_PROPERTY_NAME_GET), _box_option_property_name_get),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_OPTION_PROPERTY_ID_GET), _box_option_property_id_get),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_OPTION_PROPERTY_VSET), _box_option_property_vset),
+ EO_OP_FUNC(EVAS_OBJ_BOX_ID(EVAS_OBJ_BOX_SUB_ID_OPTION_PROPERTY_VGET), _box_option_property_vget),
+ EO_OP_FUNC_SENTINEL
+ };
+
+ eo_class_funcs_set(klass, func_desc);
+}
+
+static const Eo_Op_Description op_desc[] = {
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_INTERNAL_APPEND, "Append a new child object to the given box object. Can be overrided."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_INTERNAL_PREPEND, "Prepend a new child object to the given box object. Can be overrided."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_INTERNAL_INSERT_BEFORE, "Insert a new child object before another existing one Can be overrided.."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_INTERNAL_INSERT_AFTER, "Insert a new child object after another existing one. Can be overrided."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_INTERNAL_INSERT_AT, "Insert a new child object at a given position. Can be overrided."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_INTERNAL_REMOVE, "Remove a given object from a box object, unparenting it again. Can be overrided."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_INTERNAL_REMOVE_AT, "Remove an object, bound to a given position in a box object. Can be overrided."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_INTERNAL_OPTION_NEW, "Create a new box option. Can be overrided."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_INTERNAL_OPTION_FREE, "Free a box option. Can be overrided."),
+
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_ADD_TO, "Add a new box as a child of a given smart object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_LAYOUT_SET, "Set a new layouting function to a given box object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_LAYOUT_HORIZONTAL, "Layout function which sets the box to a (basic) horizontal box."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_LAYOUT_VERTICAL, "Layout function which sets the box to a (basic) vertical box."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_LAYOUT_HOMOGENEOUS_HORIZONTAL, "Layout function which sets the box to a homogeneous horizontal box."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_LAYOUT_HOMOGENEOUS_VERTICAL, "Layout function which sets the box to a homogeneous vertical box."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_LAYOUT_HOMOGENEOUS_MAX_SIZE_HORIZONTAL, "Layout function which sets the box to a maximum size, homogeneous horizontal box."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_LAYOUT_HOMOGENEOUS_MAX_SIZE_VERTICAL, "Layout function which sets the box to a maximum size, homogeneous vertical box."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_LAYOUT_FLOW_HORIZONTAL, "Layout function which sets the box to a flow horizontal box."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_LAYOUT_FLOW_VERTICAL, "Layout function which sets the box to a flow vertical box."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_LAYOUT_STACK, "Layout function which sets the box to a stacking box."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_ALIGN_SET, "Set the alignment of the whole bounding box of contents."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_ALIGN_GET, "Get the alignment of the whole bounding box of contents."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_PADDING_SET, "Set the (space) padding between cells set for a given box object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_PADDING_GET, "Get the (space) padding between cells set for a given box object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_APPEND, "Append a new child object to the given box object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_PREPEND, "Prepend a new child object to the given box object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_INSERT_BEFORE, "Insert a new child object before another existing one."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_INSERT_AFTER, "Insert a new child object after another existing one."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_INSERT_AT, "Insert a new child object at a given position."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_REMOVE, "Remove a given object from a box object, unparenting it again."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_REMOVE_AT, "Remove an object, bound to a given position in a box object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_REMOVE_ALL, "Remove all child objects from a box object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_ITERATOR_NEW, "Get an iterator to walk the list of children of a given box object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_ACCESSOR_NEW, "Get an accessor (a structure providing random items access) to the list of children of a given box object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_OPTION_PROPERTY_NAME_GET, "Get the name of the property of the child elements of the box with specific id."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_OPTION_PROPERTY_ID_GET, "Get the numerical identifier of the property of the child elements of the box which have a specific name."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_OPTION_PROPERTY_VSET, "Set a property value (by its given numerical identifier), on a given box child element."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_BOX_SUB_ID_OPTION_PROPERTY_VGET, "Get a property's value (by its given numerical identifier), on a given box child element."),
+ EO_OP_DESCRIPTION_SENTINEL
+};
- if (!opt) return EINA_FALSE;
+static const Eo_Class_Description class_desc = {
+ EO_VERSION,
+ "Evas_Object_Box",
+ EO_CLASS_TYPE_REGULAR,
+ EO_CLASS_DESCRIPTION_OPS(&EVAS_OBJ_BOX_BASE_ID, op_desc, EVAS_OBJ_BOX_SUB_ID_LAST),
+ NULL,
+ sizeof(Evas_Object_Box_Data),
+ _class_constructor,
+ NULL
+};
- api = priv->api;
- if ((!api) || (!api->property_get))
- return EINA_FALSE;
+EO_DEFINE_CLASS(evas_object_box_class_get, &class_desc, EVAS_OBJ_SMART_CLIPPED_CLASS, NULL);
- return api->property_get(o, opt, property, args);
-}
diff --git a/legacy/evas/src/lib/canvas/evas_object_grid.c b/legacy/evas/src/lib/canvas/evas_object_grid.c
index c070b9cee9..7a440cb262 100644
--- a/legacy/evas/src/lib/canvas/evas_object_grid.c
+++ b/legacy/evas/src/lib/canvas/evas_object_grid.c
@@ -1,6 +1,13 @@
#include "evas_common.h"
+#include "evas_private.h"
#include <errno.h>
+#include <Eo.h>
+
+EAPI Eo_Op EVAS_OBJ_GRID_BASE_ID = EO_NOOP;
+
+#define MY_CLASS EVAS_OBJ_GRID_CLASS
+
typedef struct _Evas_Object_Grid_Data Evas_Object_Grid_Data;
typedef struct _Evas_Object_Grid_Option Evas_Object_Grid_Option;
typedef struct _Evas_Object_Grid_Iterator Evas_Object_Grid_Iterator;
@@ -40,7 +47,7 @@ struct _Evas_Object_Grid_Accessor
};
#define EVAS_OBJECT_GRID_DATA_GET(o, ptr) \
- Evas_Object_Grid_Data *ptr = evas_object_smart_data_get(o)
+ Evas_Object_Grid_Data *ptr = eo_data_get(o, MY_CLASS)
#define EVAS_OBJECT_GRID_DATA_GET_OR_RETURN(o, ptr) \
EVAS_OBJECT_GRID_DATA_GET(o, ptr); \
@@ -131,7 +138,7 @@ _evas_object_grid_option_del(Evas_Object *o)
}
static void
-_on_child_del(void *data, Evas *evas __UNUSED__, Evas_Object *child, void *einfo __UNUSED__)
+_on_child_del(void *data, Evas *evas EINA_UNUSED, Evas_Object *child, void *einfo EINA_UNUSED)
{
Evas_Object *grid = data;
evas_object_grid_unpack(grid, child);
@@ -158,7 +165,14 @@ EVAS_SMART_SUBCLASS_NEW("Evas_Object_Grid", _evas_object_grid,
static void
_evas_object_grid_smart_add(Evas_Object *o)
{
- EVAS_SMART_DATA_ALLOC(o, Evas_Object_Grid_Data)
+ Evas_Object_Grid_Data *priv;
+
+ priv = evas_object_smart_data_get(o);
+ if (!priv)
+ {
+ priv = eo_data_get(o, MY_CLASS);
+ evas_object_smart_data_set(o, priv);
+ }
priv->size.w = 100;
priv->size.h = 100;
@@ -238,25 +252,51 @@ _evas_object_grid_smart_set_user(Evas_Smart_Class *sc)
EAPI Evas_Object *
evas_object_grid_add(Evas *evas)
{
- return evas_object_smart_add(evas, _evas_object_grid_smart_class_new());
+ Evas_Object *obj = eo_add(MY_CLASS, evas);
+ eo_unref(obj);
+ return obj;
+}
+
+static void
+_constructor(Eo *obj, void *class_data EINA_UNUSED, va_list *list EINA_UNUSED)
+{
+ eo_do_super(obj, eo_constructor());
+ eo_do(obj, evas_obj_smart_attach(_evas_object_grid_smart_class_new()));
+
+// return evas_object_smart_add(evas, _evas_object_grid_smart_class_new());
}
EAPI Evas_Object *
evas_object_grid_add_to(Evas_Object *parent)
{
- Evas *evas;
- Evas_Object *o;
+ Evas_Object *o = NULL;
+ eo_do(parent, evas_obj_grid_add_to(&o));
+ return o;
+}
+static void
+_add_to(Eo *parent, void *_pd EINA_UNUSED, va_list *list)
+{
+ Evas *evas;
+ Evas_Object **ret = va_arg(*list, Evas_Object **);
evas = evas_object_evas_get(parent);
- o = evas_object_grid_add(evas);
- evas_object_smart_member_add(o, parent);
- return o;
+ *ret = evas_object_grid_add(evas);
+ evas_object_smart_member_add(*ret, parent);
}
EAPI void
evas_object_grid_size_set(Evas_Object *o, int w, int h)
{
- EVAS_OBJECT_GRID_DATA_GET_OR_RETURN(o, priv);
+ eo_do(o, evas_obj_grid_size_set(w, h));
+}
+
+static void
+_size_set(Eo *o, void *_pd, va_list *list)
+{
+ Evas_Object_Grid_Data *priv = _pd;
+ int w = va_arg(*list, int);
+ int h = va_arg(*list, int);
+
if ((priv->size.w == w) && (priv->size.h == h)) return;
priv->size.w = w;
priv->size.h = h;
@@ -266,9 +306,15 @@ evas_object_grid_size_set(Evas_Object *o, int w, int h)
EAPI void
evas_object_grid_size_get(const Evas_Object *o, int *w, int *h)
{
- if (w) *w = 0;
- if (h) *h = 0;
- EVAS_OBJECT_GRID_DATA_GET_OR_RETURN(o, priv);
+ eo_do((Eo *)o, evas_obj_grid_size_get(w, h));
+}
+
+static void
+_size_get(Eo *o EINA_UNUSED, void *_pd, va_list *list)
+{
+ const Evas_Object_Grid_Data *priv = _pd;
+ int *w = va_arg(*list, int *);
+ int *h = va_arg(*list, int *);
if (w) *w = priv->size.w;
if (h) *h = priv->size.h;
}
@@ -276,10 +322,26 @@ evas_object_grid_size_get(const Evas_Object *o, int *w, int *h)
EAPI Eina_Bool
evas_object_grid_pack(Evas_Object *o, Evas_Object *child, int x, int y, int w, int h)
{
+ Eina_Bool ret = EINA_FALSE;
+ eo_do(o, evas_obj_grid_pack(child, x, y, w, h, &ret));
+ return ret;
+}
+
+static void
+_pack(Eo *o, void *_pd, va_list *list)
+{
Evas_Object_Grid_Option *opt;
Eina_Bool newobj = EINA_FALSE;
- EVAS_OBJECT_GRID_DATA_GET_OR_RETURN_VAL(o, priv, 0);
+ Evas_Object_Grid_Data *priv = _pd;
+
+ Evas_Object *child = va_arg(*list, Evas_Object *);
+ int x = va_arg(*list, int);
+ int y = va_arg(*list, int);
+ int w = va_arg(*list, int);
+ int h = va_arg(*list, int);
+ Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+ if (ret) *ret = EINA_FALSE;
opt = _evas_object_grid_option_get(child);
if (!opt)
@@ -288,7 +350,7 @@ evas_object_grid_pack(Evas_Object *o, Evas_Object *child, int x, int y, int w, i
if (!opt)
{
ERR("could not allocate grid option data.");
- return EINA_FALSE;
+ return;
}
newobj = EINA_TRUE;
}
@@ -309,7 +371,7 @@ evas_object_grid_pack(Evas_Object *o, Evas_Object *child, int x, int y, int w, i
}
// FIXME: we could keep a changed list
evas_object_smart_changed(o);
- return EINA_TRUE;
+ if (ret) *ret = EINA_TRUE;
}
static void
@@ -322,36 +384,55 @@ _evas_object_grid_remove_opt(Evas_Object_Grid_Data *priv, Evas_Object_Grid_Optio
EAPI Eina_Bool
evas_object_grid_unpack(Evas_Object *o, Evas_Object *child)
{
+ Eina_Bool ret = EINA_FALSE;
+ eo_do(o, evas_obj_grid_unpack(child, &ret));
+ return ret;
+}
+
+static void
+_unpack(Eo *o, void *_pd, va_list *list)
+{
Evas_Object_Grid_Option *opt;
- EVAS_OBJECT_GRID_DATA_GET_OR_RETURN_VAL(o, priv, 0);
+ Evas_Object_Grid_Data *priv = _pd;
+
+ Evas_Object *child = va_arg(*list, Evas_Object *);
+ Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+ if (ret) *ret = EINA_FALSE;
if (o != evas_object_smart_parent_get(child))
{
ERR("cannot unpack child from incorrect grid!");
- return EINA_FALSE;
+ return;
}
opt = _evas_object_grid_option_del(child);
if (!opt)
{
ERR("cannot unpack child with no packing option!");
- return EINA_FALSE;
+ return;
}
_evas_object_grid_child_disconnect(o, child);
_evas_object_grid_remove_opt(priv, opt);
evas_object_smart_member_del(child);
free(opt);
- return EINA_TRUE;
+ if (ret) *ret = EINA_TRUE;
}
EAPI void
evas_object_grid_clear(Evas_Object *o, Eina_Bool clear)
{
+ eo_do(o, evas_obj_grid_clear(clear));
+}
+
+static void
+_clear(Eo *o, void *_pd, va_list *list)
+{
Evas_Object_Grid_Option *opt;
- EVAS_OBJECT_GRID_DATA_GET_OR_RETURN(o, priv);
+ Evas_Object_Grid_Data *priv = _pd;
+ Eina_Bool clear = va_arg(*list, int);
EINA_LIST_FREE(priv->children, opt)
{
@@ -367,33 +448,68 @@ evas_object_grid_clear(Evas_Object *o, Eina_Bool clear)
EAPI Eina_Bool
evas_object_grid_pack_get(const Evas_Object *o, Evas_Object *child, int *x, int *y, int *w, int *h)
{
+ Eina_Bool ret = EINA_FALSE;
+ eo_do((Eo *)o, evas_obj_grid_pack_get(child, x, y, w, h, &ret));
+ return ret;
+}
+
+static void
+_pack_get(Eo *o EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
+{
+ Evas_Object *child = va_arg(*list, Evas_Object *);
+ int *x = va_arg(*list, int *);
+ int *y = va_arg(*list, int *);
+ int *w = va_arg(*list, int *);
+ int *h = va_arg(*list, int *);
+ Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+
Evas_Object_Grid_Option *opt;
if (x) *x = 0;
if (y) *y = 0;
if (w) *w = 0;
if (h) *h = 0;
- EVAS_OBJECT_GRID_DATA_GET_OR_RETURN_VAL(o, priv, 0);
opt = _evas_object_grid_option_get(child);
- if (!opt) return 0;
+ if (!opt)
+ {
+ *ret = 0;
+ return;
+ }
if (x) *x = opt->x;
if (y) *y = opt->y;
if (w) *w = opt->w;
if (h) *h = opt->h;
- return 1;
+ *ret = 1;
}
EAPI Eina_Iterator *
evas_object_grid_iterator_new(const Evas_Object *o)
{
+ Eina_Iterator *ret = NULL;
+ eo_do((Eo *)o, evas_obj_grid_iterator_new(&ret));
+ return ret;
+}
+
+static void
+_iterator_new(Eo *o, void *_pd, va_list *list)
+{
+ Eina_Iterator **ret = va_arg(*list, Eina_Iterator **);
Evas_Object_Grid_Iterator *it;
- EVAS_OBJECT_GRID_DATA_GET_OR_RETURN_VAL(o, priv, NULL);
+ const Evas_Object_Grid_Data *priv = _pd;
- if (!priv->children) return NULL;
+ if (!priv->children)
+ {
+ *ret = NULL;
+ return;
+ }
it = calloc(1, sizeof(Evas_Object_Grid_Iterator));
- if (!it) return NULL;
+ if (!it)
+ {
+ *ret = NULL;
+ return;
+ }
EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_ITERATOR);
@@ -404,20 +520,37 @@ evas_object_grid_iterator_new(const Evas_Object *o)
it->iterator.get_container = FUNC_ITERATOR_GET_CONTAINER(_evas_object_grid_iterator_get_container);
it->iterator.free = FUNC_ITERATOR_FREE(_evas_object_grid_iterator_free);
- return &it->iterator;
+ *ret = &it->iterator;
}
EAPI Eina_Accessor *
evas_object_grid_accessor_new(const Evas_Object *o)
{
+ Eina_Accessor *ret = NULL;
+ eo_do((Eo *)o, evas_obj_grid_accessor_new(&ret));
+ return ret;
+}
+
+static void
+_accessor_new(Eo *o, void *_pd, va_list *list)
+{
+ Eina_Accessor **ret = va_arg(*list, Eina_Accessor **);
Evas_Object_Grid_Accessor *it;
- EVAS_OBJECT_GRID_DATA_GET_OR_RETURN_VAL(o, priv, NULL);
+ const Evas_Object_Grid_Data *priv = _pd;
- if (!priv->children) return NULL;
+ if (!priv->children)
+ {
+ *ret = NULL;
+ return;
+ }
it = calloc(1, sizeof(Evas_Object_Grid_Accessor));
- if (!it) return NULL;
+ if (!it)
+ {
+ *ret = NULL;
+ return;
+ }
EINA_MAGIC_SET(&it->accessor, EINA_MAGIC_ACCESSOR);
@@ -428,38 +561,117 @@ evas_object_grid_accessor_new(const Evas_Object *o)
it->accessor.get_container = FUNC_ACCESSOR_GET_CONTAINER(_evas_object_grid_accessor_get_container);
it->accessor.free = FUNC_ACCESSOR_FREE(_evas_object_grid_accessor_free);
- return &it->accessor;
+ *ret = &it->accessor;
}
EAPI Eina_List *
evas_object_grid_children_get(const Evas_Object *o)
{
+ Eina_List *ret = NULL;
+ eo_do((Eo *)o, evas_obj_grid_children_get(&ret));
+ return ret;
+}
+
+static void
+_children_get(Eo *o EINA_UNUSED, void *_pd, va_list *list)
+{
+ Eina_List **ret = va_arg(*list, Eina_List **);
+
Eina_List *new_list = NULL, *l;
Evas_Object_Grid_Option *opt;
- EVAS_OBJECT_GRID_DATA_GET_OR_RETURN_VAL(o, priv, NULL);
+ const Evas_Object_Grid_Data *priv = _pd;
EINA_LIST_FOREACH(priv->children, l, opt)
new_list = eina_list_append(new_list, opt->obj);
- return new_list;
+ *ret = new_list;
}
EAPI Eina_Bool
-evas_object_grid_mirrored_get(const Evas_Object *obj)
+evas_object_grid_mirrored_get(const Evas_Object *o)
+{
+ Eina_Bool ret = EINA_FALSE;
+ eo_do((Eo *)o, evas_obj_grid_mirrored_get(&ret));
+ return ret;
+}
+
+static void
+_mirrored_get(Eo *o EINA_UNUSED, void *_pd, va_list *list)
{
- EVAS_OBJECT_GRID_DATA_GET_OR_RETURN_VAL(obj, priv, EINA_FALSE);
- return priv->is_mirrored;
+ Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+ const Evas_Object_Grid_Data *priv = _pd;
+ *ret = priv->is_mirrored;
}
EAPI void
evas_object_grid_mirrored_set(Evas_Object *obj, Eina_Bool mirrored)
{
- EVAS_OBJECT_GRID_DATA_GET_OR_RETURN(obj, priv);
+ eo_do(obj, evas_obj_grid_mirrored_set(mirrored));
+}
+
+static void
+_mirrored_set(Eo *o EINA_UNUSED, void *_pd, va_list *list)
+{
+ Eina_Bool mirrored = va_arg(*list, int);
+
+ Evas_Object_Grid_Data *priv = _pd;
mirrored = !!mirrored;
if (priv->is_mirrored != mirrored)
{
priv->is_mirrored = mirrored;
- _evas_object_grid_smart_calculate(obj);
+ _evas_object_grid_smart_calculate(o);
}
}
+
+static void
+_class_constructor(Eo_Class *klass)
+{
+ const Eo_Op_Func_Description func_desc[] = {
+ EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
+ EO_OP_FUNC(EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_ADD_TO), _add_to),
+ EO_OP_FUNC(EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_SIZE_SET), _size_set),
+ EO_OP_FUNC(EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_SIZE_GET), _size_get),
+ EO_OP_FUNC(EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_PACK), _pack),
+ EO_OP_FUNC(EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_UNPACK), _unpack),
+ EO_OP_FUNC(EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_CLEAR), _clear),
+ EO_OP_FUNC(EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_PACK_GET), _pack_get),
+ EO_OP_FUNC(EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_ITERATOR_NEW), _iterator_new),
+ EO_OP_FUNC(EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_ACCESSOR_NEW), _accessor_new),
+ EO_OP_FUNC(EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_CHILDREN_GET), _children_get),
+ EO_OP_FUNC(EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_MIRRORED_GET), _mirrored_get),
+ EO_OP_FUNC(EVAS_OBJ_GRID_ID(EVAS_OBJ_GRID_SUB_ID_MIRRORED_SET), _mirrored_set),
+ EO_OP_FUNC_SENTINEL
+ };
+ eo_class_funcs_set(klass, func_desc);
+}
+
+static const Eo_Op_Description op_desc[] = {
+ EO_OP_DESCRIPTION(EVAS_OBJ_GRID_SUB_ID_ADD_TO, "Create a grid that is child of a given element parent."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_GRID_SUB_ID_SIZE_SET, "Set the virtual resolution for the grid."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_GRID_SUB_ID_SIZE_GET, "Get the current virtual resolution."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_GRID_SUB_ID_PACK, "Add a new child to a grid object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_GRID_SUB_ID_UNPACK, "Remove child from grid."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_GRID_SUB_ID_CLEAR, "Faster way to remove all child objects from a grid object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_GRID_SUB_ID_PACK_GET, "Get the pack options for a grid child."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_GRID_SUB_ID_ITERATOR_NEW, "Get an iterator to walk the list of children for the grid."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_GRID_SUB_ID_ACCESSOR_NEW, "Get an accessor to get random access to the list of children for the grid."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_GRID_SUB_ID_CHILDREN_GET, "Get the list of children for the grid."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_GRID_SUB_ID_MIRRORED_GET, "Gets the mirrored mode of the grid."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_GRID_SUB_ID_MIRRORED_SET, "Sets the mirrored mode of the grid."),
+ EO_OP_DESCRIPTION_SENTINEL
+};
+
+static const Eo_Class_Description class_desc = {
+ EO_VERSION,
+ "Evas_Object_Grid",
+ EO_CLASS_TYPE_REGULAR,
+ EO_CLASS_DESCRIPTION_OPS(&EVAS_OBJ_GRID_BASE_ID, op_desc, EVAS_OBJ_GRID_SUB_ID_LAST),
+ NULL,
+ sizeof(Evas_Object_Grid_Data),
+ _class_constructor,
+ NULL
+};
+
+EO_DEFINE_CLASS(evas_object_grid_class_get, &class_desc, EVAS_OBJ_SMART_CLIPPED_CLASS, NULL);
+
diff --git a/legacy/evas/src/lib/canvas/evas_object_image.c b/legacy/evas/src/lib/canvas/evas_object_image.c
index 66d52f61e4..4a1b3fafca 100644
--- a/legacy/evas/src/lib/canvas/evas_object_image.c
+++ b/legacy/evas/src/lib/canvas/evas_object_image.c
@@ -16,18 +16,22 @@
#include "../engines/common/evas_convert_colorspace.h"
#include "../engines/common/evas_convert_yuv.h"
+#include <Eo.h>
+
+EAPI Eo_Op EVAS_OBJ_IMAGE_BASE_ID = EO_NOOP;
+
+#define MY_CLASS EVAS_OBJ_IMAGE_CLASS
+
#define VERBOSE_PROXY_ERROR 1
/* private magic number for image objects */
static const char o_type[] = "image";
/* private struct for rectangle object internal data */
-typedef struct _Evas_Object_Image Evas_Object_Image;
+typedef struct _Evas_Object_Image Evas_Object_Image;
struct _Evas_Object_Image
{
- DATA32 magic;
-
struct {
int spread;
Evas_Coord_Rectangle fill;
@@ -93,42 +97,42 @@ struct _Evas_Object_Image
};
/* private methods for image objects */
-static void evas_object_image_unload(Evas_Object *obj, Eina_Bool dirty);
-static void evas_object_image_load(Evas_Object *obj);
-static Evas_Coord evas_object_image_figure_x_fill(Evas_Object *obj, Evas_Coord start, Evas_Coord size, Evas_Coord *size_ret);
-static Evas_Coord evas_object_image_figure_y_fill(Evas_Object *obj, Evas_Coord start, Evas_Coord size, Evas_Coord *size_ret);
-
-static void evas_object_image_init(Evas_Object *obj);
-static void *evas_object_image_new(void);
-static void evas_object_image_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y);
-static void evas_object_image_free(Evas_Object *obj);
-static void evas_object_image_render_pre(Evas_Object *obj);
-static void evas_object_image_render_post(Evas_Object *obj);
-
-static unsigned int evas_object_image_id_get(Evas_Object *obj);
-static unsigned int evas_object_image_visual_id_get(Evas_Object *obj);
-static void *evas_object_image_engine_data_get(Evas_Object *obj);
-
-static int evas_object_image_is_opaque(Evas_Object *obj);
-static int evas_object_image_was_opaque(Evas_Object *obj);
-static int evas_object_image_is_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
-static int evas_object_image_has_opaque_rect(Evas_Object *obj);
-static int evas_object_image_get_opaque_rect(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
-static int evas_object_image_can_map(Evas_Object *obj);
+static void evas_object_image_unload(Evas_Object *eo_obj, Eina_Bool dirty);
+static void evas_object_image_load(Evas_Object *eo_obj);
+static Evas_Coord evas_object_image_figure_x_fill(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Evas_Coord start, Evas_Coord size, Evas_Coord *size_ret);
+static Evas_Coord evas_object_image_figure_y_fill(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Evas_Coord start, Evas_Coord size, Evas_Coord *size_ret);
+
+static void evas_object_image_init(Evas_Object *eo_obj);
+static void evas_object_image_new(Evas_Object *eo_obj);
+static void evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y);
+static void evas_object_image_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
+static void evas_object_image_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
+static void evas_object_image_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
+
+static unsigned int evas_object_image_id_get(Evas_Object *eo_obj);
+static unsigned int evas_object_image_visual_id_get(Evas_Object *eo_obj);
+static void *evas_object_image_engine_data_get(Evas_Object *eo_obj);
+
+static int evas_object_image_is_opaque(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
+static int evas_object_image_was_opaque(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
+static int evas_object_image_is_inside(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Evas_Coord x, Evas_Coord y);
+static int evas_object_image_has_opaque_rect(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
+static int evas_object_image_get_opaque_rect(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
+static int evas_object_image_can_map(Evas_Object *eo_obj);
static void *evas_object_image_data_convert_internal(Evas_Object_Image *o, void *data, Evas_Colorspace to_cspace);
-static void evas_object_image_filled_resize_listener(void *data, Evas *e, Evas_Object *obj, void *einfo);
+static void evas_object_image_filled_resize_listener(void *data, Evas *eo_e, Evas_Object *eo_obj, void *einfo);
static void _proxy_unset(Evas_Object *proxy);
static void _proxy_set(Evas_Object *proxy, Evas_Object *src);
static void _proxy_error(Evas_Object *proxy, void *context, void *output, void *surface, int x, int y);
-static void _cleanup_tmpf(Evas_Object *obj);
+static void _cleanup_tmpf(Evas_Object *eo_obj);
static const Evas_Object_Func object_func =
{
/* methods (compulsory) */
- evas_object_image_free,
+ NULL,
evas_object_image_render,
evas_object_image_render_pre,
evas_object_image_render_post,
@@ -151,56 +155,63 @@ static const Evas_Object_Func object_func =
evas_object_image_can_map
};
-EVAS_MEMPOOL(_mp_obj);
-
static void
-_evas_object_image_cleanup(Evas_Object *obj, Evas_Object_Image *o)
+_evas_object_image_cleanup(Evas_Object *eo_obj, Evas_Object_Image *o)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if ((o->preloading) && (o->engine_data))
{
o->preloading = EINA_FALSE;
obj->layer->evas->engine.func->image_data_preload_cancel(obj->layer->evas->engine.data.output,
o->engine_data,
- obj);
+ eo_obj);
}
- if (o->tmpf) _cleanup_tmpf(obj);
- if (o->cur.source) _proxy_unset(obj);
+ if (o->tmpf) _cleanup_tmpf(eo_obj);
+ if (o->cur.source) _proxy_unset(eo_obj);
}
-EAPI Evas_Object *
-evas_object_image_add(Evas *e)
+static void
+_constructor(Eo *eo_obj, void *class_data, va_list *list EINA_UNUSED)
{
- Evas_Object *obj;
- Evas_Object_Image *o;
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Object_Image *o = class_data;
+ Evas *eo_e = evas_object_evas_get(eo_parent_get(eo_obj));
+
+ eo_do_super(eo_obj, eo_constructor());
+ evas_object_image_init(eo_obj);
+ evas_object_inject(eo_obj, obj, eo_e);
+ o->cur.cspace = obj->layer->evas->engine.func->image_colorspace_get(obj->layer->evas->engine.data.output, o->engine_data);
+}
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+EAPI Evas_Object *
+evas_object_image_add(Evas *eo_e)
+{
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return NULL;
MAGIC_CHECK_END();
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
EINA_SAFETY_ON_NULL_RETURN_VAL(e->engine.func, NULL);
- obj = evas_object_new(e);
- evas_object_image_init(obj);
- evas_object_inject(obj, e);
- o = (Evas_Object_Image *)(obj->object_data);
- o->cur.cspace = obj->layer->evas->engine.func->image_colorspace_get(obj->layer->evas->engine.data.output, o->engine_data);
- return obj;
+ Evas_Object *eo_obj = eo_add(EVAS_OBJ_IMAGE_CLASS, eo_e);
+ eo_unref(eo_obj);
+ return eo_obj;
}
EAPI Evas_Object *
-evas_object_image_filled_add(Evas *e)
+evas_object_image_filled_add(Evas *eo_e)
{
- Evas_Object *obj;
- obj = evas_object_image_add(e);
- evas_object_image_filled_set(obj, 1);
- return obj;
+ Evas_Object *eo_obj;
+ eo_obj = evas_object_image_add(eo_e);
+ evas_object_image_filled_set(eo_obj, 1);
+ return eo_obj;
}
static void
-_cleanup_tmpf(Evas_Object *obj)
+_cleanup_tmpf(Evas_Object *eo_obj)
{
#ifdef HAVE_SYS_MMAN_H
Evas_Object_Image *o;
- o = (Evas_Object_Image *)(obj->object_data);
+ o = eo_data_get(eo_obj, MY_CLASS);
if (!o->tmpf) return;
#ifdef __linux__
#else
@@ -211,20 +222,20 @@ _cleanup_tmpf(Evas_Object *obj)
o->tmpf_fd = -1;
o->tmpf = NULL;
#else
- (void) obj;
+ (void) eo_obj;
#endif
}
static void
-_create_tmpf(Evas_Object *obj, void *data, int size, char *format __UNUSED__)
+_create_tmpf(Evas_Object *eo_obj, void *data, int size, char *format EINA_UNUSED)
{
#ifdef HAVE_SYS_MMAN_H
Evas_Object_Image *o;
char buf[PATH_MAX];
void *dst;
int fd = -1;
-
- o = (Evas_Object_Image *)(obj->object_data);
+
+ o = eo_data_get(eo_obj, MY_CLASS);
#ifdef __linux__
snprintf(buf, sizeof(buf), "/dev/shm/.evas-tmpf-%i-%p-%i-XXXXXX",
(int)getpid(), data, (int)size);
@@ -277,7 +288,7 @@ _create_tmpf(Evas_Object *obj, void *data, int size, char *format __UNUSED__)
memcpy(dst, data, size);
munmap(dst, size);
#else
- (void) obj;
+ (void) eo_obj;
(void) data;
(void) size;
(void) format;
@@ -285,50 +296,63 @@ _create_tmpf(Evas_Object *obj, void *data, int size, char *format __UNUSED__)
}
EAPI void
-evas_object_image_memfile_set(Evas_Object *obj, void *data, int size, char *format, char *key)
+evas_object_image_memfile_set(Evas_Object *eo_obj, void *data, int size, char *format, char *key)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
- return;
- MAGIC_CHECK_END();
- _cleanup_tmpf(obj);
- evas_object_image_file_set(obj, NULL, NULL);
+ eo_do(eo_obj, evas_obj_image_memfile_set(data, size, format, key));
+}
+
+static void
+_image_memfile_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Image *o = _pd;
+
+ void *data = va_arg(*list, void *);
+ int size = va_arg(*list, int);
+ char *format = va_arg(*list, char*);
+ char *key = va_arg(*list, char*);
+
+ _cleanup_tmpf(eo_obj);
+ evas_object_image_file_set(eo_obj, NULL, NULL);
// invalidate the cache effectively
- evas_object_image_alpha_set(obj, !o->cur.has_alpha);
- evas_object_image_alpha_set(obj, o->cur.has_alpha);
+ evas_object_image_alpha_set(eo_obj, !o->cur.has_alpha);
+ evas_object_image_alpha_set(eo_obj, o->cur.has_alpha);
if ((size < 1) || (!data)) return;
- _create_tmpf(obj, data, size, format);
- evas_object_image_file_set(obj, o->tmpf, key);
+ _create_tmpf(eo_obj, data, size, format);
+ evas_object_image_file_set(eo_obj, o->tmpf, key);
if (!o->engine_data)
{
ERR("unable to load '%s' from memory", o->tmpf);
- _cleanup_tmpf(obj);
+ _cleanup_tmpf(eo_obj);
return;
}
}
EAPI void
-evas_object_image_file_set(Evas_Object *obj, const char *file, const char *key)
+evas_object_image_file_set(Evas_Object *eo_obj, const char *file, const char *key)
{
- Evas_Object_Image *o;
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
+ return;
+ MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_file_set(file, key));
+}
+
+static void
+_image_file_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Object_Image *o = _pd;
Evas_Image_Load_Opts lo;
Eina_Bool resize_call = EINA_FALSE;
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
- return;
- MAGIC_CHECK_END();
- if ((o->tmpf) && (file != o->tmpf)) _cleanup_tmpf(obj);
+ const char *file = va_arg(*list, const char*);
+ const char *key = va_arg(*list, const char*);
+
+ if ((o->tmpf) && (file != o->tmpf)) _cleanup_tmpf(eo_obj);
if ((o->cur.file) && (file) && (!strcmp(o->cur.file, file)))
{
if ((!o->cur.key) && (!key))
@@ -341,9 +365,9 @@ evas_object_image_file_set(Evas_Object *obj, const char *file, const char *key)
if (!o->engine_data)
obj->layer->evas->engine.func->image_data_preload_cancel(obj->layer->evas->engine.data.output,
o->engine_data,
- obj);
+ eo_obj);
*/
- if (o->cur.source) _proxy_unset(obj);
+ if (o->cur.source) _proxy_unset(eo_obj);
if (o->cur.file) eina_stringshare_del(o->cur.file);
if (o->cur.key) eina_stringshare_del(o->cur.key);
if (file) o->cur.file = eina_stringshare_add(file);
@@ -357,7 +381,7 @@ evas_object_image_file_set(Evas_Object *obj, const char *file, const char *key)
if (o->preloading)
{
o->preloading = EINA_FALSE;
- obj->layer->evas->engine.func->image_data_preload_cancel(obj->layer->evas->engine.data.output, o->engine_data, obj);
+ obj->layer->evas->engine.func->image_data_preload_cancel(obj->layer->evas->engine.data.output, o->engine_data, eo_obj);
}
obj->layer->evas->engine.func->image_free(obj->layer->evas->engine.data.output, o->engine_data);
}
@@ -412,120 +436,147 @@ evas_object_image_file_set(Evas_Object *obj, const char *file, const char *key)
}
o->changed = EINA_TRUE;
- if (resize_call) evas_object_inform_call_image_resize(obj);
- evas_object_change(obj);
+ if (resize_call) evas_object_inform_call_image_resize(eo_obj);
+ evas_object_change(eo_obj, obj);
}
EAPI void
-evas_object_image_file_get(const Evas_Object *obj, const char **file, const char **key)
+evas_object_image_file_get(const Evas_Object *eo_obj, const char **file, const char **key)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- if (file) *file = NULL;
- if (key) *key = NULL;
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
if (file) *file = NULL;
if (key) *key = NULL;
return;
MAGIC_CHECK_END();
+ eo_do((Eo *)eo_obj, evas_obj_image_file_get(file, key));
+}
+
+static void
+_image_file_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ const Evas_Object_Image *o = _pd;
+ const char **file = va_arg(*list, const char**);
+ const char **key = va_arg(*list, const char**);
if (file) *file = o->cur.file;
if (key) *key = o->cur.key;
}
EAPI Eina_Bool
-evas_object_image_source_set(Evas_Object *obj, Evas_Object *src)
+evas_object_image_source_set(Evas_Object *eo_obj, Evas_Object *src)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return EINA_FALSE;
- MAGIC_CHECK_END();
- o = obj->object_data;
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return EINA_FALSE;
MAGIC_CHECK_END();
+ Eina_Bool result = EINA_FALSE;
+ eo_do(eo_obj, evas_obj_image_source_set(src, &result));
+ return result;
+}
- if (obj->delete_me && src)
+static void
+_image_source_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Image *o = _pd;
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+
+ Evas_Object *eo_src = va_arg(*list, Evas_Object *);
+ Eina_Bool *result = va_arg(*list, Eina_Bool *);
+ if (result) *result = EINA_FALSE;
+
+ if (obj->delete_me && eo_src)
{
- WRN("Setting deleted object %p as image source %p", src, obj);
- return EINA_FALSE;
+ WRN("Setting deleted object %p as image source %p", eo_src, eo_obj);
+ return;
}
- if (src)
+ if (eo_src)
{
+ Evas_Object_Protected_Data *src = eo_data_get(eo_src, EVAS_OBJ_CLASS);
if (src->delete_me)
{
- WRN("Setting object %p to deleted image source %p", src, obj);
- return EINA_FALSE;
+ WRN("Setting object %p to deleted image source %p", eo_src, eo_obj);
+ return;
}
if (!src->layer)
{
- CRIT("No evas surface associated with source object (%p)", obj);
- return EINA_FALSE;
+ CRIT("No evas surface associated with source object (%p)", eo_obj);
+ return;
}
if ((obj->layer && src->layer) &&
(obj->layer->evas != src->layer->evas))
{
- CRIT("Setting object %p from Evas (%p) from another Evas (%p)", src, src->layer->evas, obj->layer->evas);
- return EINA_FALSE;
+ CRIT("Setting object %p from Evas (%p) from another Evas (%p)", eo_src, src->layer->evas, obj->layer->evas);
+ return;
}
- if (src == obj)
+ if (eo_src == eo_obj)
{
CRIT("Setting object %p as a source for itself", obj);
- return EINA_FALSE;
+ return;
}
}
- if (o->cur.source == src) return EINA_TRUE;
+ if (o->cur.source == eo_src)
+ {
+ if (result) *result = EINA_TRUE;
+ return;
+ }
- _evas_object_image_cleanup(obj, o);
+ _evas_object_image_cleanup(eo_obj, o);
/* Kill the image if any */
if (o->cur.file || o->cur.key)
- evas_object_image_file_set(obj, NULL, NULL);
+ evas_object_image_file_set(eo_obj, NULL, NULL);
- if (src) _proxy_set(obj, src);
- else _proxy_unset(obj);
+ if (eo_src) _proxy_set(eo_obj, eo_src);
+ else _proxy_unset(eo_obj);
- return EINA_TRUE;
+ if (result) *result = EINA_TRUE;
}
EAPI Evas_Object *
-evas_object_image_source_get(const Evas_Object *obj)
+evas_object_image_source_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return NULL;
- MAGIC_CHECK_END();
- o = obj->object_data;
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return NULL;
MAGIC_CHECK_END();
+ Evas_Object *source = NULL;
+ eo_do((Eo *)eo_obj, evas_obj_image_source_get(&source));
+ return source;
+}
- return o->cur.source;
+static void
+_image_source_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ const Evas_Object_Image *o = _pd;
+ Evas_Object **source = va_arg(*list, Evas_Object **);
+ if (source) *source = o->cur.source;
}
EAPI Eina_Bool
-evas_object_image_source_unset(Evas_Object *obj)
+evas_object_image_source_unset(Evas_Object *eo_obj)
{
- return evas_object_image_source_set(obj, NULL);
+ Eina_Bool result = EINA_FALSE;
+ eo_do(eo_obj, evas_obj_image_source_set(NULL, &result));
+ return result;
}
EAPI void
-evas_object_image_border_set(Evas_Object *obj, int l, int r, int t, int b)
+evas_object_image_border_set(Evas_Object *eo_obj, int l, int r, int t, int b)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_border_set(l, r, t, b));
+}
+
+static void
+_image_border_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Object_Image *o = _pd;
+
+ int l = va_arg(*list, int);
+ int r = va_arg(*list, int);
+ int t = va_arg(*list, int);
+ int b = va_arg(*list, int);
+
if (l < 0) l = 0;
if (r < 0) r = 0;
if (t < 0) t = 0;
@@ -540,29 +591,30 @@ evas_object_image_border_set(Evas_Object *obj, int l, int r, int t, int b)
o->cur.border.b = b;
o->cur.opaque_valid = 0;
o->changed = EINA_TRUE;
- evas_object_change(obj);
+ evas_object_change(eo_obj, obj);
}
EAPI void
-evas_object_image_border_get(const Evas_Object *obj, int *l, int *r, int *t, int *b)
+evas_object_image_border_get(const Evas_Object *eo_obj, int *l, int *r, int *t, int *b)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- if (l) *l = 0;
- if (r) *r = 0;
- if (t) *t = 0;
- if (b) *b = 0;
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
if (l) *l = 0;
if (r) *r = 0;
if (t) *t = 0;
if (b) *b = 0;
return;
MAGIC_CHECK_END();
+ eo_do((Eo *)eo_obj, evas_obj_image_border_get(l, r, t, b));
+}
+
+static void
+_image_border_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ const Evas_Object_Image *o = _pd;
+ int *l = va_arg(*list, int *);
+ int *r = va_arg(*list, int *);
+ int *t = va_arg(*list, int *);
+ int *b = va_arg(*list, int *);
if (l) *l = o->cur.border.l;
if (r) *r = o->cur.border.r;
if (t) *t = o->cur.border.t;
@@ -570,138 +622,165 @@ evas_object_image_border_get(const Evas_Object *obj, int *l, int *r, int *t, int
}
EAPI void
-evas_object_image_border_center_fill_set(Evas_Object *obj, Evas_Border_Fill_Mode fill)
+evas_object_image_border_center_fill_set(Evas_Object *eo_obj, Evas_Border_Fill_Mode fill)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_border_center_fill_set(fill));
+}
+
+static void
+_image_border_center_fill_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Border_Fill_Mode fill = va_arg(*list, Evas_Border_Fill_Mode);
+ Evas_Object_Image *o = _pd;
if (fill == o->cur.border.fill) return;
o->cur.border.fill = fill;
o->changed = EINA_TRUE;
- evas_object_change(obj);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ evas_object_change(eo_obj, obj);
}
EAPI Evas_Border_Fill_Mode
-evas_object_image_border_center_fill_get(const Evas_Object *obj)
+evas_object_image_border_center_fill_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return 0;
MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
- return 0;
- MAGIC_CHECK_END();
- return o->cur.border.fill;
+ Evas_Border_Fill_Mode fill = 0;
+ eo_do((Eo *)eo_obj, evas_obj_image_border_center_fill_get(&fill));
+ return fill;
}
-EAPI void
-evas_object_image_filled_set(Evas_Object *obj, Eina_Bool setting)
+static void
+_image_border_center_fill_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ Evas_Border_Fill_Mode *fill = va_arg(*list, Evas_Border_Fill_Mode *);
+ const Evas_Object_Image *o = _pd;
+ if (fill) *fill = o->cur.border.fill;
return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+}
+
+EAPI void
+evas_object_image_filled_set(Evas_Object *eo_obj, Eina_Bool setting)
+{
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_filled_set(setting));
+}
+static void
+_image_filled_set(Eo *eo_obj, void* _pd, va_list *list)
+{
+ Evas_Object_Image *o = _pd;
+
+ Eina_Bool setting = va_arg(*list, int);
setting = !!setting;
if (o->filled == setting) return;
o->filled = setting;
if (!o->filled)
- evas_object_event_callback_del(obj, EVAS_CALLBACK_RESIZE,
+ evas_object_event_callback_del(eo_obj, EVAS_CALLBACK_RESIZE,
evas_object_image_filled_resize_listener);
else
{
Evas_Coord w, h;
- evas_object_geometry_get(obj, NULL, NULL, &w, &h);
- evas_object_image_fill_set(obj, 0, 0, w, h);
+ evas_object_geometry_get(eo_obj, NULL, NULL, &w, &h);
+ evas_object_image_fill_set(eo_obj, 0, 0, w, h);
- evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE,
+ evas_object_event_callback_add(eo_obj, EVAS_CALLBACK_RESIZE,
evas_object_image_filled_resize_listener,
NULL);
}
}
EAPI Eina_Bool
-evas_object_image_filled_get(const Evas_Object *obj)
+evas_object_image_filled_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return 0;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return 0;
MAGIC_CHECK_END();
+ Eina_Bool fill = EINA_FALSE;
+ eo_do((Eo *)eo_obj, evas_obj_image_filled_get(&fill));
+ return fill;
+}
- return o->filled;
+static void
+_image_filled_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ const Evas_Object_Image *o = _pd;
+ Eina_Bool *fill = va_arg(*list, Eina_Bool *);
+ if (fill) *fill = o->filled;
}
EAPI void
-evas_object_image_border_scale_set(Evas_Object *obj, double scale)
+evas_object_image_border_scale_set(Evas_Object *eo_obj, double scale)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_border_scale_set(scale));
+}
+
+static void
+_image_border_scale_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Image *o = _pd;
+
+ double scale = va_arg(*list, double);
if (scale == o->cur.border.scale) return;
o->cur.border.scale = scale;
o->changed = EINA_TRUE;
- evas_object_change(obj);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ evas_object_change(eo_obj, obj);
}
EAPI double
-evas_object_image_border_scale_get(const Evas_Object *obj)
+evas_object_image_border_scale_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return 1.0;
MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
- return 1.0;
- MAGIC_CHECK_END();
- return o->cur.border.scale;
+ double scale = 1.0;
+ eo_do((Eo *)eo_obj, evas_obj_image_border_scale_get(&scale));
+ return scale;
+}
+
+static void
+_image_border_scale_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ const Evas_Object_Image *o = _pd;
+ double *scale = va_arg(list, double *);
+ if (scale) *scale = o->cur.border.scale;
}
EAPI void
-evas_object_image_fill_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
+evas_object_image_fill_set(Evas_Object *eo_obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
{
- Evas_Object_Image *o;
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
+ return;
+ MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_fill_set(x, y, w, h));
+}
+
+static void
+_image_fill_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Image *o = _pd;
+
+ Evas_Coord x = va_arg(*list, Evas_Coord);
+ Evas_Coord y = va_arg(*list, Evas_Coord);
+ Evas_Coord w = va_arg(*list, Evas_Coord);
+ Evas_Coord h = va_arg(*list, Evas_Coord);
if (w == 0) return;
if (h == 0) return;
if (w < 0) w = -w;
if (h < 0) h = -h;
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
- return;
- MAGIC_CHECK_END();
-
if ((o->cur.fill.x == x) &&
(o->cur.fill.y == y) &&
(o->cur.fill.w == w) &&
@@ -712,29 +791,33 @@ evas_object_image_fill_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Co
o->cur.fill.h = h;
o->cur.opaque_valid = 0;
o->changed = EINA_TRUE;
- evas_object_change(obj);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ evas_object_change(eo_obj, obj);
}
EAPI void
-evas_object_image_fill_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
+evas_object_image_fill_get(const Evas_Object *eo_obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- if (x) *x = 0;
- if (y) *y = 0;
- if (w) *w = 0;
- if (h) *h = 0;
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
if (x) *x = 0;
if (y) *y = 0;
if (w) *w = 0;
if (h) *h = 0;
return;
MAGIC_CHECK_END();
+ eo_do((Eo *)eo_obj, evas_obj_image_fill_get(x, y, w, h));
+}
+
+static void
+_image_fill_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ const Evas_Object_Image *o = _pd;
+
+ Evas_Coord *x = va_arg(*list, Evas_Coord *);
+ Evas_Coord *y = va_arg(*list, Evas_Coord *);
+ Evas_Coord *w = va_arg(*list, Evas_Coord *);
+ Evas_Coord *h = va_arg(*list, Evas_Coord *);
+
if (x) *x = o->cur.fill.x;
if (y) *y = o->cur.fill.y;
if (w) *w = o->cur.fill.w;
@@ -743,52 +826,64 @@ evas_object_image_fill_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y,
EAPI void
-evas_object_image_fill_spread_set(Evas_Object *obj, Evas_Fill_Spread spread)
+evas_object_image_fill_spread_set(Evas_Object *eo_obj, Evas_Fill_Spread spread)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_fill_spread_set(spread));
+}
+
+static void
+_image_fill_spread_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Image *o = _pd;
+ Evas_Fill_Spread spread = va_arg(*list, Evas_Fill_Spread);
if (spread == (Evas_Fill_Spread)o->cur.spread) return;
o->cur.spread = spread;
o->changed = EINA_TRUE;
- evas_object_change(obj);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ evas_object_change(eo_obj, obj);
}
EAPI Evas_Fill_Spread
-evas_object_image_fill_spread_get(const Evas_Object *obj)
+evas_object_image_fill_spread_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return EVAS_TEXTURE_REPEAT;
MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
- return EVAS_TEXTURE_REPEAT;
- MAGIC_CHECK_END();
- return (Evas_Fill_Spread)o->cur.spread;
+ Evas_Fill_Spread spread = EVAS_TEXTURE_REPEAT;
+ eo_do((Eo *)eo_obj, evas_obj_image_fill_spread_get(&spread));
+ return spread;
}
-EAPI void
-evas_object_image_size_set(Evas_Object *obj, int w, int h)
+static void
+_image_fill_spread_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
{
- Evas_Object_Image *o;
- int stride = 0;
+ const Evas_Object_Image *o = _pd;
+ Evas_Fill_Spread *spread = va_arg(*list, Evas_Fill_Spread *);
+ if (spread) *spread = (Evas_Fill_Spread)o->cur.spread;
+}
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+EAPI void
+evas_object_image_size_set(Evas_Object *eo_obj, int w, int h)
+{
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
- _evas_object_image_cleanup(obj, o);
+ eo_do(eo_obj, evas_obj_image_size_set(w, h));
+}
+
+static void
+_image_size_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ int w = va_arg(*list, int);
+ int h = va_arg(*list, int);
+
+ Evas_Object_Image *o = _pd;
+ int stride = 0;
+
+ _evas_object_image_cleanup(eo_obj, o);
if (w < 1) w = 1;
if (h < 1) h = 1;
if (w > 32768) return;
@@ -797,6 +892,7 @@ evas_object_image_size_set(Evas_Object *obj, int w, int h)
(h == o->cur.image.h)) return;
o->cur.image.w = w;
o->cur.image.h = h;
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if (o->engine_data)
o->engine_data = obj->layer->evas->engine.func->image_size_set(obj->layer->evas->engine.data.output, o->engine_data, w, h);
else
@@ -833,83 +929,100 @@ evas_object_image_size_set(Evas_Object *obj, int w, int h)
*/
EVAS_OBJECT_IMAGE_FREE_FILE_AND_KEY(o);
o->changed = EINA_TRUE;
- evas_object_inform_call_image_resize(obj);
- evas_object_change(obj);
+ evas_object_inform_call_image_resize(eo_obj);
+ evas_object_change(eo_obj, obj);
}
EAPI void
-evas_object_image_size_get(const Evas_Object *obj, int *w, int *h)
+evas_object_image_size_get(const Evas_Object *eo_obj, int *w, int *h)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- if (w) *w = 0;
- if (h) *h = 0;
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
if (w) *w = 0;
if (h) *h = 0;
return;
MAGIC_CHECK_END();
+ eo_do((Eo *)eo_obj, evas_obj_image_size_get(w, h));
+}
+
+static void
+_image_size_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ const Evas_Object_Image *o = _pd;
+ int *w = va_arg(*list, int *);
+ int *h = va_arg(*list, int *);
if (w) *w = o->cur.image.w;
if (h) *h = o->cur.image.h;
}
EAPI int
-evas_object_image_stride_get(const Evas_Object *obj)
+evas_object_image_stride_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return 0;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return 0;
MAGIC_CHECK_END();
- return o->cur.image.stride;
+ int stride = 0;
+ eo_do((Eo *)eo_obj, evas_obj_image_stride_get(&stride));
+ return stride;
}
-EAPI Evas_Load_Error
-evas_object_image_load_error_get(const Evas_Object *obj)
+static void
+_image_stride_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
{
- Evas_Object_Image *o;
+ int *stride = va_arg(*list, int *);
+ const Evas_Object_Image *o = _pd;
+ if (stride) *stride = o->cur.image.stride;
+}
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return 0;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+EAPI Evas_Load_Error
+evas_object_image_load_error_get(const Evas_Object *eo_obj)
+{
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return 0;
MAGIC_CHECK_END();
- return o->load_error;
+ Evas_Load_Error load_error = 0;
+ eo_do((Eo *)eo_obj, evas_obj_image_load_error_get(&load_error));
+ return load_error;
+}
+
+static void
+_image_load_error_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Load_Error *load_error = va_arg(*list, Evas_Load_Error *);
+ const Evas_Object_Image *o = _pd;
+ if (load_error) *load_error = o->load_error;
}
EAPI void *
-evas_object_image_data_convert(Evas_Object *obj, Evas_Colorspace to_cspace)
+evas_object_image_data_convert(Evas_Object *eo_obj, Evas_Colorspace to_cspace)
{
- Evas_Object_Image *o;
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
+ return NULL;
+ MAGIC_CHECK_END();
+ void *data = NULL;
+ eo_do(eo_obj, evas_obj_image_data_convert(to_cspace, &data));
+ return data;
+}
+
+static void
+_image_data_convert(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Object_Image *o = _pd;
+ Evas_Colorspace to_cspace = va_arg(*list, Evas_Colorspace);
+ void **ret_data = va_arg(*list, void **);
+ if (ret_data) *ret_data = NULL;
DATA32 *data;
void* result = NULL;
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return NULL;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
- return NULL;
- MAGIC_CHECK_END();
if ((o->preloading) && (o->engine_data))
{
o->preloading = EINA_FALSE;
- obj->layer->evas->engine.func->image_data_preload_cancel(obj->layer->evas->engine.data.output, o->engine_data, obj);
+ obj->layer->evas->engine.func->image_data_preload_cancel(obj->layer->evas->engine.data.output, o->engine_data, eo_obj);
}
- if (!o->engine_data) return NULL;
+ if (!o->engine_data) return;
if (o->video_surface)
- o->video.update_pixels(o->video.data, obj, &o->video);
- if (o->cur.cspace == to_cspace) return NULL;
+ o->video.update_pixels(o->video.data, eo_obj, &o->video);
+ if (o->cur.cspace == to_cspace) return;
data = NULL;
o->engine_data = obj->layer->evas->engine.func->image_data_get(obj->layer->evas->engine.data.output, o->engine_data, 0, &data, &o->load_error);
result = evas_object_image_data_convert_internal(o, data, to_cspace);
@@ -918,23 +1031,29 @@ evas_object_image_data_convert(Evas_Object *obj, Evas_Colorspace to_cspace)
o->engine_data = obj->layer->evas->engine.func->image_data_put(obj->layer->evas->engine.data.output, o->engine_data, data);
}
- return result;
+ if (ret_data) *ret_data = result;
}
+
EAPI void
-evas_object_image_data_set(Evas_Object *obj, void *data)
+evas_object_image_data_set(Evas_Object *eo_obj, void *data)
{
- Evas_Object_Image *o;
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
+ return;
+ MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_data_set(data));
+}
+
+static void
+_image_data_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Object_Image *o = _pd;
void *p_data;
Eina_Bool resize_call = EINA_FALSE;
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
- return;
- MAGIC_CHECK_END();
- _evas_object_image_cleanup(obj, o);
+ void *data = va_arg(*list, void *);
+
+ _evas_object_image_cleanup(eo_obj, o);
p_data = o->engine_data;
if (data)
{
@@ -1001,25 +1120,39 @@ evas_object_image_data_set(Evas_Object *obj, void *data)
o->pixels_checked_out = 0;
}
o->changed = EINA_TRUE;
- if (resize_call) evas_object_inform_call_image_resize(obj);
- evas_object_change(obj);
+ if (resize_call) evas_object_inform_call_image_resize(eo_obj);
+ evas_object_change(eo_obj, obj);
}
EAPI void *
-evas_object_image_data_get(const Evas_Object *obj, Eina_Bool for_writing)
+evas_object_image_data_get(const Evas_Object *eo_obj, Eina_Bool for_writing)
{
- Evas_Object_Image *o;
- DATA32 *data;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return NULL;
MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
- return NULL;
- MAGIC_CHECK_END();
- if (!o->engine_data) return NULL;
+ void *data = NULL;
+ eo_do((Eo *)eo_obj, evas_obj_image_data_get(for_writing, &data));
+ return data;
+}
+
+static void
+_image_data_get(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Image *o = (Evas_Object_Image *) _pd;
+ Eina_Bool for_writing = va_arg(*list, int);
+ void **ret_data = va_arg(*list, void **);
+ DATA32 *data;
+ if (!o->engine_data)
+ {
+ if (ret_data) *ret_data = NULL;
+ return;
+ }
+#ifdef EVAS_FRAME_QUEUING
+ evas_common_pipe_op_image_flush(o->engine_data);
+#endif
+
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
data = NULL;
if (obj->layer->evas->engine.func->image_scale_hint_set)
obj->layer->evas->engine.func->image_scale_hint_set
@@ -1032,7 +1165,11 @@ evas_object_image_data_get(const Evas_Object *obj, Eina_Bool for_writing)
o->engine_data = obj->layer->evas->engine.func->image_data_get(obj->layer->evas->engine.data.output, o->engine_data, for_writing, &data, &o->load_error);
/* if we fail to get engine_data, we have to return NULL */
- if (!o->engine_data) return NULL;
+ if (!o->engine_data)
+ {
+ if (ret_data) *ret_data = NULL;
+ return;
+ }
if (o->engine_data)
{
@@ -1052,29 +1189,33 @@ evas_object_image_data_get(const Evas_Object *obj, Eina_Bool for_writing)
EVAS_OBJECT_IMAGE_FREE_FILE_AND_KEY(o);
}
- return data;
+ if (ret_data) *ret_data = data;
}
EAPI void
-evas_object_image_preload(Evas_Object *obj, Eina_Bool cancel)
+evas_object_image_preload(Evas_Object *eo_obj, Eina_Bool cancel)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return ;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return ;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_preload(cancel));
+}
+
+static void
+_image_preload(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Image *o = _pd;
+
if (!o->engine_data)
{
o->preloading = EINA_TRUE;
- evas_object_inform_call_image_preloaded(obj);
+ evas_object_inform_call_image_preloaded(eo_obj);
return;
}
// FIXME: if already busy preloading, then dont request again until
// preload done
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Eina_Bool cancel = va_arg(*list, int);
if (cancel)
{
if (o->preloading)
@@ -1082,7 +1223,7 @@ evas_object_image_preload(Evas_Object *obj, Eina_Bool cancel)
o->preloading = EINA_FALSE;
obj->layer->evas->engine.func->image_data_preload_cancel(obj->layer->evas->engine.data.output,
o->engine_data,
- obj);
+ eo_obj);
}
}
else
@@ -1092,27 +1233,31 @@ evas_object_image_preload(Evas_Object *obj, Eina_Bool cancel)
o->preloading = EINA_TRUE;
obj->layer->evas->engine.func->image_data_preload_request(obj->layer->evas->engine.data.output,
o->engine_data,
- obj);
+ eo_obj);
}
}
}
EAPI void
-evas_object_image_data_copy_set(Evas_Object *obj, void *data)
+evas_object_image_data_copy_set(Evas_Object *eo_obj, void *data)
{
- Evas_Object_Image *o;
-
- if (!data) return;
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
- return;
- MAGIC_CHECK_END();
- _evas_object_image_cleanup(obj, o);
+ eo_do(eo_obj, evas_obj_image_data_copy_set(data));
+}
+
+static void
+_image_data_copy_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Image *o = _pd;
+ void *data = va_arg(*list, void *);
+
+ if (!data) return;
+ _evas_object_image_cleanup(eo_obj, o);
if ((o->cur.image.w <= 0) ||
(o->cur.image.h <= 0)) return;
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if (o->engine_data)
obj->layer->evas->engine.func->image_free(obj->layer->evas->engine.data.output,
o->engine_data);
@@ -1152,44 +1297,55 @@ evas_object_image_data_copy_set(Evas_Object *obj, void *data)
}
EAPI void
-evas_object_image_data_update_add(Evas_Object *obj, int x, int y, int w, int h)
+evas_object_image_data_update_add(Evas_Object *eo_obj, int x, int y, int w, int h)
{
- Evas_Object_Image *o;
- Eina_Rectangle *r;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_data_update_add(x, y, w, h));
+}
+
+static void
+_image_data_update_add(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Image *o = _pd;
+ Eina_Rectangle *r;
+
+ int x = va_arg(*list, int);
+ int y = va_arg(*list, int);
+ int w = va_arg(*list, int);
+ int h = va_arg(*list, int);
RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, o->cur.image.w, o->cur.image.h);
if ((w <= 0) || (h <= 0)) return;
NEW_RECT(r, x, y, w, h);
if (r) o->pixel_updates = eina_list_append(o->pixel_updates, r);
o->changed = EINA_TRUE;
- evas_object_change(obj);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ evas_object_change(eo_obj, obj);
}
EAPI void
-evas_object_image_alpha_set(Evas_Object *obj, Eina_Bool has_alpha)
+evas_object_image_alpha_set(Evas_Object *eo_obj, Eina_Bool has_alpha)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_alpha_set(has_alpha));
+}
+
+static void
+_image_alpha_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Object_Image *o = _pd;
+ Eina_Bool has_alpha = va_arg(*list, int);
+
if ((o->preloading) && (o->engine_data))
{
o->preloading = EINA_FALSE;
obj->layer->evas->engine.func->image_data_preload_cancel(obj->layer->evas->engine.data.output,
o->engine_data,
- obj);
+ eo_obj);
}
if (((has_alpha) && (o->cur.has_alpha)) ||
((!has_alpha) && (!o->cur.has_alpha)))
@@ -1219,110 +1375,133 @@ evas_object_image_alpha_set(Evas_Object *obj, Eina_Bool has_alpha)
stride = o->cur.image.w * 4;
o->cur.image.stride = stride;
}
- evas_object_image_data_update_add(obj, 0, 0, o->cur.image.w, o->cur.image.h);
+ evas_object_image_data_update_add(eo_obj, 0, 0, o->cur.image.w, o->cur.image.h);
EVAS_OBJECT_IMAGE_FREE_FILE_AND_KEY(o);
}
EAPI Eina_Bool
-evas_object_image_alpha_get(const Evas_Object *obj)
+evas_object_image_alpha_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return 0;
MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
- return 0;
- MAGIC_CHECK_END();
- return o->cur.has_alpha;
+ Eina_Bool has_alpha = EINA_FALSE;
+ eo_do((Eo *)eo_obj, evas_obj_image_alpha_get(&has_alpha));
+ return has_alpha;
}
-EAPI void
-evas_object_image_smooth_scale_set(Evas_Object *obj, Eina_Bool smooth_scale)
+static void
+_image_alpha_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
{
- Evas_Object_Image *o;
+ Eina_Bool *has_alpha = va_arg(*list, Eina_Bool *);
+ const Evas_Object_Image *o = _pd;
+ *has_alpha = o->cur.has_alpha;
+}
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+EAPI void
+evas_object_image_smooth_scale_set(Evas_Object *eo_obj, Eina_Bool smooth_scale)
+{
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_smooth_scale_set(smooth_scale));
+}
+
+static void
+_image_smooth_scale_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Eina_Bool smooth_scale = va_arg(*list, int);
+ Evas_Object_Image *o = _pd;
+
if (((smooth_scale) && (o->cur.smooth_scale)) ||
((!smooth_scale) && (!o->cur.smooth_scale)))
return;
o->cur.smooth_scale = smooth_scale;
o->changed = EINA_TRUE;
- evas_object_change(obj);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ evas_object_change(eo_obj, obj);
}
EAPI Eina_Bool
-evas_object_image_smooth_scale_get(const Evas_Object *obj)
+evas_object_image_smooth_scale_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return 0;
MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
- return 0;
- MAGIC_CHECK_END();
- return o->cur.smooth_scale;
+ Eina_Bool smooth_scale = EINA_FALSE;
+ eo_do((Eo *)eo_obj, evas_obj_image_smooth_scale_get(&smooth_scale));
+ return smooth_scale;
}
-EAPI void
-evas_object_image_reload(Evas_Object *obj)
+static void
+_image_smooth_scale_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
{
- Evas_Object_Image *o;
+ Eina_Bool *smooth_scale = va_arg(*list, Eina_Bool *);
+ const Evas_Object_Image *o = _pd;
+ if (smooth_scale) *smooth_scale = o->cur.smooth_scale;
+}
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+EAPI void
+evas_object_image_reload(Evas_Object *eo_obj)
+{
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_reload());
+}
+
+static void
+_image_reload(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED)
+{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Object_Image *o = _pd;
+
if ((o->preloading) && (o->engine_data))
{
o->preloading = EINA_FALSE;
obj->layer->evas->engine.func->image_data_preload_cancel(obj->layer->evas->engine.data.output,
o->engine_data,
- obj);
+ eo_obj);
}
if ((!o->cur.file) ||
(o->pixels_checked_out > 0)) return;
if (o->engine_data)
o->engine_data = obj->layer->evas->engine.func->image_dirty_region(obj->layer->evas->engine.data.output, o->engine_data, 0, 0, o->cur.image.w, o->cur.image.h);
- evas_object_image_unload(obj, 1);
- evas_object_inform_call_image_unloaded(obj);
- evas_object_image_load(obj);
+ evas_object_image_unload(eo_obj, 1);
+ evas_object_inform_call_image_unloaded(eo_obj);
+ evas_object_image_load(eo_obj);
o->prev.file = NULL;
o->prev.key = NULL;
o->changed = EINA_TRUE;
- evas_object_change(obj);
+ evas_object_change(eo_obj, obj);
}
EAPI Eina_Bool
-evas_object_image_save(const Evas_Object *obj, const char *file, const char *key, const char *flags)
+evas_object_image_save(const Evas_Object *eo_obj, const char *file, const char *key, const char *flags)
{
- Evas_Object_Image *o;
- DATA32 *data = NULL;
- int quality = 80, compress = 9, ok = 0;
- RGBA_Image *im;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return 0;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return 0;
MAGIC_CHECK_END();
+ Eina_Bool result = EINA_FALSE;
+ eo_do((Eo *)eo_obj, evas_obj_image_save(file, key, flags, &result));
+ return result;
+}
- if (!o->engine_data) return 0;
+static void _image_save(Eo *eo_obj, void *_pd, va_list *list)
+{
+ const char *file = va_arg(*list, const char *);
+ const char *key = va_arg(*list, const char *);
+ const char *flags = va_arg(*list, const char *);
+ Eina_Bool *result = va_arg(*list, Eina_Bool *);
+ if (result) *result = 0;
+
+ DATA32 *data = NULL;
+ int quality = 80, compress = 9, ok = 0;
+ RGBA_Image *im;
+ Evas_Object_Image *o = _pd;
+ if (!o->engine_data) return;
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
o->engine_data = obj->layer->evas->engine.func->image_data_get(obj->layer->evas->engine.data.output, o->engine_data, 0, &data, &o->load_error);
if (flags)
{
@@ -1369,23 +1548,32 @@ evas_object_image_save(const Evas_Object *obj, const char *file, const char *key
o->engine_data = obj->layer->evas->engine.func->image_data_put(obj->layer->evas->engine.data.output,
o->engine_data,
data);
- return ok;
+ if (result) *result = ok;
}
EAPI Eina_Bool
-evas_object_image_pixels_import(Evas_Object *obj, Evas_Pixel_Import_Source *pixels)
+evas_object_image_pixels_import(Evas_Object *eo_obj, Evas_Pixel_Import_Source *pixels)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return 0;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
- return 0;
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
+ return EINA_FALSE;
MAGIC_CHECK_END();
- _evas_object_image_cleanup(obj, o);
- if ((pixels->w != o->cur.image.w) || (pixels->h != o->cur.image.h)) return 0;
+ Eina_Bool result = EINA_FALSE;
+ eo_do(eo_obj, evas_obj_image_pixels_import(pixels, &result));
+ return result;
+}
+
+static void
+_image_pixels_import(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Image *o = _pd;
+
+ Evas_Pixel_Import_Source *pixels = va_arg(*list, Evas_Pixel_Import_Source *);
+ Eina_Bool *result = va_arg(*list, Eina_Bool *);
+ if (result) *result = 0;
+
+ _evas_object_image_cleanup(eo_obj, o);
+ if ((pixels->w != o->cur.image.w) || (pixels->h != o->cur.image.h)) return;
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
switch (pixels->format)
{
#if 0
@@ -1414,7 +1602,7 @@ evas_object_image_pixels_import(Evas_Object *obj, Evas_Pixel_Import_Source *pixe
o->engine_data,
o->cur.has_alpha);
o->changed = EINA_TRUE;
- evas_object_change(obj);
+ evas_object_change(eo_obj, obj);
}
}
break;
@@ -1437,199 +1625,247 @@ evas_object_image_pixels_import(Evas_Object *obj, Evas_Pixel_Import_Source *pixe
o->engine_data =
obj->layer->evas->engine.func->image_alpha_set(obj->layer->evas->engine.data.output, o->engine_data, o->cur.has_alpha);
o->changed = EINA_TRUE;
- evas_object_change(obj);
+ evas_object_change(eo_obj, obj);
}
}
break;
#endif
default:
- return 0;
+ return;
break;
}
- return 1;
+ if (result) *result = 1;
+ return;
}
EAPI void
-evas_object_image_pixels_get_callback_set(Evas_Object *obj, Evas_Object_Image_Pixels_Get_Cb func, void *data)
+evas_object_image_pixels_get_callback_set(Evas_Object *eo_obj, Evas_Object_Image_Pixels_Get_Cb func, void *data)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_pixels_get_callback_set(func, data));
+}
+
+static void
+_image_pixels_get_callback_set(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ Evas_Object_Image_Pixels_Get_Cb func = va_arg(*list, Evas_Object_Image_Pixels_Get_Cb);
+ void *data = va_arg(*list, void *);
+ Evas_Object_Image *o = _pd;
+
o->func.get_pixels = func;
o->func.get_pixels_data = data;
}
EAPI void
-evas_object_image_pixels_dirty_set(Evas_Object *obj, Eina_Bool dirty)
+evas_object_image_pixels_dirty_set(Evas_Object *eo_obj, Eina_Bool dirty)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_pixels_dirty_set(dirty));
+}
+
+static void
+_image_pixels_dirty_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Eina_Bool dirty = va_arg(*list, int);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Object_Image *o = _pd;
+
if (dirty) o->dirty_pixels = EINA_TRUE;
else o->dirty_pixels = EINA_FALSE;
o->changed = EINA_TRUE;
- evas_object_change(obj);
+ evas_object_change(eo_obj, obj);
}
EAPI Eina_Bool
-evas_object_image_pixels_dirty_get(const Evas_Object *obj)
+evas_object_image_pixels_dirty_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return 0;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return 0;
MAGIC_CHECK_END();
- if (o->dirty_pixels) return 1;
- return 0;
+ Eina_Bool dirty = EINA_FALSE;
+ eo_do((Eo *)eo_obj, evas_obj_image_pixels_dirty_get(&dirty));
+ return dirty;
}
-EAPI void
-evas_object_image_load_dpi_set(Evas_Object *obj, double dpi)
+static void
+_image_pixels_dirty_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
{
- Evas_Object_Image *o;
+ Eina_Bool *dirty = va_arg(*list, Eina_Bool *);
+ const Evas_Object_Image *o = _pd;
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ *dirty = (o->dirty_pixels ? 1 : 0);
+}
+
+EAPI void
+evas_object_image_load_dpi_set(Evas_Object *eo_obj, double dpi)
+{
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_load_dpi_set(dpi));
+}
+
+static void
+_image_load_dpi_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ double dpi = va_arg(*list, double);
+
+ Evas_Object_Image *o = _pd;
+
if (dpi == o->load_opts.dpi) return;
o->load_opts.dpi = dpi;
if (o->cur.file)
{
- evas_object_image_unload(obj, 0);
- evas_object_inform_call_image_unloaded(obj);
- evas_object_image_load(obj);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ evas_object_image_unload(eo_obj, 0);
+ evas_object_inform_call_image_unloaded(eo_obj);
+ evas_object_image_load(eo_obj);
o->changed = EINA_TRUE;
- evas_object_change(obj);
+ evas_object_change(eo_obj, obj);
}
}
EAPI double
-evas_object_image_load_dpi_get(const Evas_Object *obj)
+evas_object_image_load_dpi_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return 0.0;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return 0.0;
MAGIC_CHECK_END();
- return o->load_opts.dpi;
+ double dpi = 0.0;
+ eo_do((Eo *)eo_obj, evas_obj_image_load_dpi_get(&dpi));
+ return dpi;
}
-EAPI void
-evas_object_image_load_size_set(Evas_Object *obj, int w, int h)
+static void
+_image_load_dpi_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
{
- Evas_Object_Image *o;
+ const Evas_Object_Image *o = _pd;
+ double *dpi = va_arg(*list, double *);
+ *dpi = o->load_opts.dpi;
+}
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+EAPI void
+evas_object_image_load_size_set(Evas_Object *eo_obj, int w, int h)
+{
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_load_size_set(w, h));
+}
+
+static void
+_image_load_size_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ int w = va_arg(*list, int);
+ int h = va_arg(*list, int);
+
+ Evas_Object_Image *o = _pd;
+
if ((o->load_opts.w == w) && (o->load_opts.h == h)) return;
o->load_opts.w = w;
o->load_opts.h = h;
if (o->cur.file)
{
- evas_object_image_unload(obj, 0);
- evas_object_inform_call_image_unloaded(obj);
- evas_object_image_load(obj);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ evas_object_image_unload(eo_obj, 0);
+ evas_object_inform_call_image_unloaded(eo_obj);
+ evas_object_image_load(eo_obj);
o->changed = EINA_TRUE;
- evas_object_change(obj);
+ evas_object_change(eo_obj, obj);
}
}
EAPI void
-evas_object_image_load_size_get(const Evas_Object *obj, int *w, int *h)
+evas_object_image_load_size_get(const Evas_Object *eo_obj, int *w, int *h)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do((Eo *)eo_obj, evas_obj_image_load_size_get(w, h));
+}
+
+static void
+_image_load_size_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ int *w = va_arg(*list, int *);
+ int *h = va_arg(*list, int *);
+ const Evas_Object_Image *o = _pd;
+
if (w) *w = o->load_opts.w;
if (h) *h = o->load_opts.h;
}
EAPI void
-evas_object_image_load_scale_down_set(Evas_Object *obj, int scale_down)
+evas_object_image_load_scale_down_set(Evas_Object *eo_obj, int scale_down)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_load_scale_down_set(scale_down));
+}
+
+static void
+_image_load_scale_down_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ int scale_down = va_arg(*list, int);
+
+ Evas_Object_Image *o = _pd;
+
if (o->load_opts.scale_down_by == scale_down) return;
o->load_opts.scale_down_by = scale_down;
if (o->cur.file)
{
- evas_object_image_unload(obj, 0);
- evas_object_inform_call_image_unloaded(obj);
- evas_object_image_load(obj);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ evas_object_image_unload(eo_obj, 0);
+ evas_object_inform_call_image_unloaded(eo_obj);
+ evas_object_image_load(eo_obj);
o->changed = EINA_TRUE;
- evas_object_change(obj);
+ evas_object_change(eo_obj, obj);
}
}
EAPI int
-evas_object_image_load_scale_down_get(const Evas_Object *obj)
+evas_object_image_load_scale_down_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return 0;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return 0;
MAGIC_CHECK_END();
- return o->load_opts.scale_down_by;
+ int scale_down = 0;
+ eo_do((Eo *)eo_obj, evas_obj_image_load_scale_down_get(&scale_down));
+ return scale_down;
}
-EAPI void
-evas_object_image_load_region_set(Evas_Object *obj, int x, int y, int w, int h)
+static void
+_image_load_scale_down_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
{
- Evas_Object_Image *o;
+ int *scale_down = va_arg(*list, int *);
+ const Evas_Object_Image *o = _pd;
+ *scale_down = o->load_opts.scale_down_by;
+}
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+EAPI void
+evas_object_image_load_region_set(Evas_Object *eo_obj, int x, int y, int w, int h)
+{
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_load_region_set(x, y, w, h));
+}
+
+static void
+_image_load_region_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ int x = va_arg(*list, int);
+ int y = va_arg(*list, int);
+ int w = va_arg(*list, int);
+ int h = va_arg(*list, int);
+
+ Evas_Object_Image *o = _pd;
+
if ((o->load_opts.region.x == x) && (o->load_opts.region.y == y) &&
(o->load_opts.region.w == w) && (o->load_opts.region.h == h)) return;
o->load_opts.region.x = x;
@@ -1638,26 +1874,33 @@ evas_object_image_load_region_set(Evas_Object *obj, int x, int y, int w, int h)
o->load_opts.region.h = h;
if (o->cur.file)
{
- evas_object_image_unload(obj, 0);
- evas_object_inform_call_image_unloaded(obj);
- evas_object_image_load(obj);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ evas_object_image_unload(eo_obj, 0);
+ evas_object_inform_call_image_unloaded(eo_obj);
+ evas_object_image_load(eo_obj);
o->changed = EINA_TRUE;
- evas_object_change(obj);
+ evas_object_change(eo_obj, obj);
}
}
EAPI void
-evas_object_image_load_region_get(const Evas_Object *obj, int *x, int *y, int *w, int *h)
+evas_object_image_load_region_get(const Evas_Object *eo_obj, int *x, int *y, int *w, int *h)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do((Eo *)eo_obj, evas_obj_image_load_region_get(x, y, w, h));
+}
+
+static void
+_image_load_region_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ int *x = va_arg(*list, int *);
+ int *y = va_arg(*list, int *);
+ int *w = va_arg(*list, int *);
+ int *h = va_arg(*list, int *);
+ const Evas_Object_Image *o = _pd;
+
if (x) *x = o->load_opts.region.x;
if (y) *y = o->load_opts.region.y;
if (w) *w = o->load_opts.region.w;
@@ -1665,49 +1908,58 @@ evas_object_image_load_region_get(const Evas_Object *obj, int *x, int *y, int *w
}
EAPI void
-evas_object_image_load_orientation_set(Evas_Object *obj, Eina_Bool enable)
+evas_object_image_load_orientation_set(Evas_Object *eo_obj, Eina_Bool enable)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_load_orientation_set(enable));
+}
+
+static void
+_image_load_orientation_set(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
+{
+ Eina_Bool enable = va_arg(*list, int);
+ Evas_Object_Image *o = _pd;
o->load_opts.orientation = !!enable;
}
EAPI Eina_Bool
-evas_object_image_load_orientation_get(const Evas_Object *obj)
+evas_object_image_load_orientation_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return EINA_FALSE;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return EINA_FALSE;
MAGIC_CHECK_END();
- return o->load_opts.orientation;
+ Eina_Bool enable = EINA_FALSE;
+ eo_do((Eo *)eo_obj, evas_obj_image_load_orientation_get(&enable));
+ return enable;
}
-EAPI void
-evas_object_image_colorspace_set(Evas_Object *obj, Evas_Colorspace cspace)
+static void
+_image_load_orientation_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
{
- Evas_Object_Image *o;
+ Eina_Bool *enable = va_arg(*list, Eina_Bool *);
+ const Evas_Object_Image *o = _pd;
+ *enable = o->load_opts.orientation;
+}
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+EAPI void
+evas_object_image_colorspace_set(Evas_Object *eo_obj, Evas_Colorspace cspace)
+{
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_colorspace_set(cspace));
+}
+
+static void
+_image_colorspace_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Colorspace cspace = va_arg(*list, Evas_Colorspace);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Object_Image *o = _pd;
- _evas_object_image_cleanup(obj, o);
+ _evas_object_image_cleanup(eo_obj, o);
o->cur.cspace = cspace;
if (o->engine_data)
@@ -1715,37 +1967,45 @@ evas_object_image_colorspace_set(Evas_Object *obj, Evas_Colorspace cspace)
}
EAPI Evas_Colorspace
-evas_object_image_colorspace_get(const Evas_Object *obj)
+evas_object_image_colorspace_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return EVAS_COLORSPACE_ARGB8888;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return EVAS_COLORSPACE_ARGB8888;
MAGIC_CHECK_END();
- return o->cur.cspace;
+ Evas_Colorspace cspace = EVAS_COLORSPACE_ARGB8888;
+ eo_do((Eo *)eo_obj, evas_obj_image_colorspace_get(&cspace));
+ return cspace;
}
-EAPI void
-evas_object_image_video_surface_set(Evas_Object *obj, Evas_Video_Surface *surf)
+static void
+_image_colorspace_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
{
- Evas_Object_Image *o;
+ Evas_Colorspace *cspace = va_arg(*list, Evas_Colorspace *);
+ const Evas_Object_Image *o = _pd;
+ *cspace = o->cur.cspace;
+}
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+EAPI void
+evas_object_image_video_surface_set(Evas_Object *eo_obj, Evas_Video_Surface *surf)
+{
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
- _evas_object_image_cleanup(obj, o);
+ eo_do(eo_obj, evas_obj_image_video_surface_set(surf));
+}
+
+static void
+_image_video_surface_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Video_Surface *surf = va_arg(*list, Evas_Video_Surface *);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Object_Image *o = _pd;
+
+ _evas_object_image_cleanup(eo_obj, o);
if (o->video_surface)
{
o->video_surface = EINA_FALSE;
- obj->layer->evas->video_objects = eina_list_remove(obj->layer->evas->video_objects, obj);
+ obj->layer->evas->video_objects = eina_list_remove(obj->layer->evas->video_objects, eo_obj);
}
if (surf)
@@ -1763,7 +2023,7 @@ evas_object_image_video_surface_set(Evas_Object *obj, Evas_Video_Surface *surf)
o->video_surface = EINA_TRUE;
o->video = *surf;
- obj->layer->evas->video_objects = eina_list_append(obj->layer->evas->video_objects, obj);
+ obj->layer->evas->video_objects = eina_list_append(obj->layer->evas->video_objects, eo_obj);
}
else
{
@@ -1778,34 +2038,43 @@ evas_object_image_video_surface_set(Evas_Object *obj, Evas_Video_Surface *surf)
}
EAPI const Evas_Video_Surface *
-evas_object_image_video_surface_get(const Evas_Object *obj)
+evas_object_image_video_surface_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return NULL;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return NULL;
MAGIC_CHECK_END();
- if (!o->video_surface) return NULL;
- return &o->video;
+ const Evas_Video_Surface *surf = NULL;
+ eo_do((Eo *)eo_obj, evas_obj_image_video_surface_get(&surf));
+ return surf;
}
-EAPI void
-evas_object_image_native_surface_set(Evas_Object *obj, Evas_Native_Surface *surf)
+static void
+_image_video_surface_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
{
- Evas_Object_Image *o;
+ const Evas_Video_Surface **surf = va_arg(*list, const Evas_Video_Surface **);
+ const Evas_Object_Image *o = _pd;
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ *surf = (!o->video_surface ? NULL : &o->video);
+}
+
+EAPI void
+evas_object_image_native_surface_set(Evas_Object *eo_obj, Evas_Native_Surface *surf)
+{
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
- _evas_object_image_cleanup(obj, o);
+ eo_do(eo_obj, evas_obj_image_native_surface_set(surf));
+}
+
+static void
+_image_native_surface_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Native_Surface *surf = va_arg(*list, Evas_Native_Surface *);
+
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Object_Image *o = _pd;
+
+ _evas_object_image_cleanup(eo_obj, o);
if (!obj->layer->evas->engine.func->image_native_set) return;
if ((surf) &&
((surf->version < 2) ||
@@ -1814,33 +2083,44 @@ evas_object_image_native_surface_set(Evas_Object *obj, Evas_Native_Surface *surf
}
EAPI Evas_Native_Surface *
-evas_object_image_native_surface_get(const Evas_Object *obj)
+evas_object_image_native_surface_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return NULL;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return NULL;
MAGIC_CHECK_END();
- if (!obj->layer->evas->engine.func->image_native_get) return NULL;
- return obj->layer->evas->engine.func->image_native_get(obj->layer->evas->engine.data.output, o->engine_data);
+ Evas_Native_Surface *surf = NULL;
+ eo_do((Eo *)eo_obj, evas_obj_image_native_surface_get(&surf));
+ return surf;
}
-EAPI void
-evas_object_image_scale_hint_set(Evas_Object *obj, Evas_Image_Scale_Hint hint)
+static void
+_image_native_surface_get(Eo *eo_obj, void *_pd, va_list *list)
{
- Evas_Object_Image *o;
+ Evas_Native_Surface **surf = va_arg(*list, Evas_Native_Surface **);
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ const Evas_Object_Image *o = _pd;
+
+ *surf =
+ (!obj->layer->evas->engine.func->image_native_get ? NULL :
+ obj->layer->evas->engine.func->image_native_get(obj->layer->evas->engine.data.output, o->engine_data));
+}
+
+EAPI void
+evas_object_image_scale_hint_set(Evas_Object *eo_obj, Evas_Image_Scale_Hint hint)
+{
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_scale_hint_set(hint));
+}
+
+static void
+_image_scale_hint_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Image *o = _pd;
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Image_Scale_Hint hint = va_arg(*list, Evas_Image_Scale_Hint);
if (o->scale_hint == hint) return;
o->scale_hint = hint;
if (o->engine_data)
@@ -1862,32 +2142,39 @@ evas_object_image_scale_hint_set(Evas_Object *obj, Evas_Image_Scale_Hint hint)
}
EAPI Evas_Image_Scale_Hint
-evas_object_image_scale_hint_get(const Evas_Object *obj)
+evas_object_image_scale_hint_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return EVAS_IMAGE_SCALE_HINT_NONE;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return EVAS_IMAGE_SCALE_HINT_NONE;
MAGIC_CHECK_END();
- return o->scale_hint;
+ Evas_Image_Scale_Hint hint = EVAS_IMAGE_SCALE_HINT_NONE;
+ eo_do((Eo *)eo_obj, evas_obj_image_scale_hint_get(&hint));
+ return hint;
}
-EAPI void
-evas_object_image_content_hint_set(Evas_Object *obj, Evas_Image_Content_Hint hint)
+static void
+_image_scale_hint_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
{
- Evas_Object_Image *o;
+ const Evas_Object_Image *o = _pd;
+ Evas_Image_Scale_Hint *hint = va_arg(*list, Evas_Image_Scale_Hint *);
+ *hint = o->scale_hint;
+}
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+EAPI void
+evas_object_image_content_hint_set(Evas_Object *eo_obj, Evas_Image_Content_Hint hint)
+{
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_content_hint_set(hint));
+}
+
+static void
+_image_content_hint_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Image *o = _pd;
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Image_Content_Hint hint = va_arg(*list, Evas_Image_Content_Hint);
if (o->content_hint == hint) return;
o->content_hint = hint;
if (o->engine_data)
@@ -1909,20 +2196,12 @@ evas_object_image_content_hint_set(Evas_Object *obj, Evas_Image_Content_Hint hin
}
EAPI void
-evas_object_image_alpha_mask_set(Evas_Object *obj, Eina_Bool ismask)
+evas_object_image_alpha_mask_set(Evas_Object *eo_obj, Eina_Bool ismask)
{
- Evas_Object_Image *o;
-
- if (!ismask) return;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
-
+ if (!ismask) return;
/* Convert to A8 if not already */
/* done */
@@ -1931,165 +2210,205 @@ evas_object_image_alpha_mask_set(Evas_Object *obj, Eina_Bool ismask)
#define FRAME_MAX 1024
EAPI Evas_Image_Content_Hint
-evas_object_image_content_hint_get(const Evas_Object *obj)
+evas_object_image_content_hint_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return EVAS_IMAGE_CONTENT_HINT_NONE;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return EVAS_IMAGE_CONTENT_HINT_NONE;
MAGIC_CHECK_END();
- return o->content_hint;
+ Evas_Image_Content_Hint hint = EVAS_IMAGE_CONTENT_HINT_NONE;
+ eo_do((Eo *)eo_obj, evas_obj_image_content_hint_get(&hint));
+ return hint;
}
-EAPI Eina_Bool
-evas_object_image_region_support_get(const Evas_Object *obj)
+static void
+_image_content_hint_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
{
- Evas_Object_Image *o;
+ const Evas_Object_Image *o = _pd;
+ Evas_Image_Content_Hint *hint = va_arg(*list, Evas_Image_Content_Hint *);
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return EINA_FALSE;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *) (obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ *hint = o->content_hint;
+}
+
+EAPI Eina_Bool
+evas_object_image_region_support_get(const Evas_Object *eo_obj)
+{
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return EINA_FALSE;
MAGIC_CHECK_END();
+ Eina_Bool region = EINA_FALSE;
+ eo_do((Eo *)eo_obj, evas_obj_image_region_support_get(&region));
+ return region;
+}
+
+static void
+_image_region_support_get(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ const Evas_Object_Image *o = _pd;
- return obj->layer->evas->engine.func->image_can_region_get(
+ Eina_Bool *region = va_arg(*list, Eina_Bool *);
+ *region = obj->layer->evas->engine.func->image_can_region_get(
obj->layer->evas->engine.data.output,
o->engine_data);
}
/* animated feature */
EAPI Eina_Bool
-evas_object_image_animated_get(const Evas_Object *obj)
+evas_object_image_animated_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return EINA_FALSE;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return EINA_FALSE;
MAGIC_CHECK_END();
+ Eina_Bool animated = EINA_FALSE;
+ eo_do((Eo *)eo_obj, evas_obj_image_animated_get(&animated));
+ return animated;
+}
- if (obj->layer->evas->engine.func->image_animated_get)
- return obj->layer->evas->engine.func->image_animated_get(obj->layer->evas->engine.data.output, o->engine_data);
- return EINA_FALSE;
+static void
+_image_animated_get(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Eina_Bool *animated = va_arg(*list, Eina_Bool *);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ const Evas_Object_Image *o = _pd;
+
+ *animated =
+ obj->layer->evas->engine.func->image_animated_get ?
+ obj->layer->evas->engine.func->image_animated_get(obj->layer->evas->engine.data.output, o->engine_data) :
+ EINA_FALSE;
}
EAPI int
-evas_object_image_animated_frame_count_get(const Evas_Object *obj)
+evas_object_image_animated_frame_count_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return -1;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return -1;
MAGIC_CHECK_END();
+ int frame_count = -1;
+ eo_do((Eo *)eo_obj, evas_obj_image_animated_frame_count_get(&frame_count));
+ return frame_count;
+}
+
+static void
+_image_animated_frame_count_get(Eo *eo_obj, void *_pd, va_list *list)
+{
+ const Evas_Object_Image *o = _pd;
+ int *frame_count = va_arg(*list, int *);
+ *frame_count = -1;
+
+ if (!evas_object_image_animated_get(eo_obj)) return;
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
- if (!evas_object_image_animated_get(obj)) return -1;
if (obj->layer->evas->engine.func->image_animated_frame_count_get)
- return obj->layer->evas->engine.func->image_animated_frame_count_get(obj->layer->evas->engine.data.output, o->engine_data);
- return -1;
+ *frame_count = obj->layer->evas->engine.func->image_animated_frame_count_get(obj->layer->evas->engine.data.output, o->engine_data);
}
EAPI Evas_Image_Animated_Loop_Hint
-evas_object_image_animated_loop_type_get(const Evas_Object *obj)
+evas_object_image_animated_loop_type_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return EVAS_IMAGE_ANIMATED_HINT_NONE;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return EVAS_IMAGE_ANIMATED_HINT_NONE;
MAGIC_CHECK_END();
+ Evas_Image_Animated_Loop_Hint hint = EVAS_IMAGE_ANIMATED_HINT_NONE;
+ eo_do((Eo *)eo_obj, evas_obj_image_animated_loop_type_get(&hint));
+ return hint;
+}
+
+static void
+_image_animated_loop_type_get(Eo *eo_obj, void *_pd, va_list *list)
+{
+ const Evas_Object_Image *o = _pd;
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
- if (!evas_object_image_animated_get(obj)) return EVAS_IMAGE_ANIMATED_HINT_NONE;
+ Evas_Image_Animated_Loop_Hint *hint = va_arg(*list, Evas_Image_Animated_Loop_Hint *);
+ *hint = EVAS_IMAGE_ANIMATED_HINT_NONE;
+ if (!evas_object_image_animated_get(eo_obj)) return;
if (obj->layer->evas->engine.func->image_animated_loop_type_get)
- return obj->layer->evas->engine.func->image_animated_loop_type_get(obj->layer->evas->engine.data.output, o->engine_data);
- return EVAS_IMAGE_ANIMATED_HINT_NONE;
+ *hint = obj->layer->evas->engine.func->image_animated_loop_type_get(obj->layer->evas->engine.data.output, o->engine_data);
}
EAPI int
-evas_object_image_animated_loop_count_get(const Evas_Object *obj)
+evas_object_image_animated_loop_count_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return -1;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return -1;
MAGIC_CHECK_END();
+ int loop_count = -1;
+ eo_do((Eo *)eo_obj, evas_obj_image_animated_loop_count_get(&loop_count));
+ return loop_count;
+}
- if (!evas_object_image_animated_get(obj)) return -1;
+static void
+_image_animated_loop_count_get(Eo *eo_obj, void *_pd, va_list *list)
+{
+ const Evas_Object_Image *o = _pd;
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
- if (obj->layer->evas->engine.func->image_animated_loop_count_get)
- return obj->layer->evas->engine.func->image_animated_loop_count_get(obj->layer->evas->engine.data.output, o->engine_data);
- return -1;
+ int *loop_count = va_arg(*list, int *);
+ *loop_count = -1;
+ if (!evas_object_image_animated_get(eo_obj)) return;
+
+ *loop_count =
+ obj->layer->evas->engine.func->image_animated_loop_count_get ?
+ obj->layer->evas->engine.func->image_animated_loop_count_get(obj->layer->evas->engine.data.output, o->engine_data) :
+ -1;
}
EAPI double
-evas_object_image_animated_frame_duration_get(const Evas_Object *obj, int start_frame, int frame_num)
+evas_object_image_animated_frame_duration_get(const Evas_Object *eo_obj, int start_frame, int frame_num)
{
- Evas_Object_Image *o;
- int frame_count = 0;
-
- if (start_frame < 1) return -1;
- if (frame_num < 0) return -1;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return -1;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return -1;
MAGIC_CHECK_END();
+ double frame_duration = -1;
+ eo_do((Eo *)eo_obj, evas_obj_image_animated_frame_duration_get(start_frame, frame_num, &frame_duration));
+ return frame_duration;
+}
+
+static void
+_image_animated_frame_duration_get(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ const Evas_Object_Image *o = _pd;
+ int frame_count = 0;
- if (!evas_object_image_animated_get(obj)) return -1;
+ int start_frame = va_arg(*list, int);
+ int frame_num = va_arg(*list, int);
+ double *frame_duration = va_arg(*list, double *);
+ *frame_duration = -1;
- if (!obj->layer->evas->engine.func->image_animated_frame_count_get) return -1;
+ if (!obj->layer->evas->engine.func->image_animated_frame_count_get) return;
frame_count = obj->layer->evas->engine.func->image_animated_frame_count_get(obj->layer->evas->engine.data.output, o->engine_data);
- if ((start_frame + frame_num) > frame_count) return -1;
+ if ((start_frame + frame_num) > frame_count) return;
if (obj->layer->evas->engine.func->image_animated_frame_duration_get)
- return obj->layer->evas->engine.func->image_animated_frame_duration_get(obj->layer->evas->engine.data.output, o->engine_data, start_frame, frame_num);
- return -1;
+ *frame_duration = obj->layer->evas->engine.func->image_animated_frame_duration_get(obj->layer->evas->engine.data.output, o->engine_data, start_frame, frame_num);
}
EAPI void
-evas_object_image_animated_frame_set(Evas_Object *obj, int frame_index)
+evas_object_image_animated_frame_set(Evas_Object *eo_obj, int frame_index)
{
- Evas_Object_Image *o;
- int frame_count = 0;
-
- MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
- return;
- MAGIC_CHECK_END();
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+ MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
+ eo_do(eo_obj, evas_obj_image_animated_frame_set(frame_index));
+}
+
+static void
+_image_animated_frame_set(Eo *eo_obj, void *_pd, va_list *list)
+{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Object_Image *o = _pd;
+ int frame_count = 0;
if (!o->cur.file) return;
+ int frame_index = va_arg(*list, int);
if (o->cur.frame == frame_index) return;
- if (!evas_object_image_animated_get(obj)) return;
+ if (!evas_object_image_animated_get(eo_obj)) return;
- frame_count = evas_object_image_animated_frame_count_get(obj);
+ frame_count = evas_object_image_animated_frame_count_get(eo_obj);
/* limit the size of frame to FRAME_MAX */
if ((frame_count > FRAME_MAX) || (frame_count < 0) || (frame_index > frame_count))
@@ -2103,115 +2422,149 @@ evas_object_image_animated_frame_set(Evas_Object *obj, int frame_index)
o->cur.frame = frame_index;
o->changed = EINA_TRUE;
- evas_object_change(obj);
+ evas_object_change(eo_obj, obj);
}
EAPI void
-evas_image_cache_flush(Evas *e)
+evas_image_cache_flush(Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_image_cache_flush());
+}
+void
+_canvas_image_cache_flush(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list EINA_UNUSED)
+{
+ Evas_Public_Data *e = _pd;
e->engine.func->image_cache_flush(e->engine.data.output);
}
EAPI void
-evas_image_cache_reload(Evas *e)
+evas_image_cache_reload(Evas *eo_e)
{
- Evas_Layer *layer;
+ eo_do(eo_e, evas_canvas_image_cache_reload());
+}
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
- return;
- MAGIC_CHECK_END();
+void
+_canvas_image_cache_reload(Eo *eo_e, void *_pd, va_list *list EINA_UNUSED)
+{
+ Evas_Public_Data *e = _pd;
+ Evas_Layer *layer;
- evas_image_cache_flush(e);
+ evas_image_cache_flush(eo_e);
EINA_INLIST_FOREACH(e->layers, layer)
{
- Evas_Object *obj;
-
- EINA_INLIST_FOREACH(layer->objects, obj)
- {
- Evas_Object_Image *o;
+ Evas_Object_Protected_Data *obj;
- o = (Evas_Object_Image *)(obj->object_data);
- if (o->magic == MAGIC_OBJ_IMAGE)
+ EINA_INLIST_FOREACH(layer->objects, obj)
+ {
+ if (eo_isa(obj->object, MY_CLASS))
{
- evas_object_image_unload(obj, 1);
- evas_object_inform_call_image_unloaded(obj);
+ evas_object_image_unload(obj->object, 1);
+ evas_object_inform_call_image_unloaded(obj->object);
}
- }
+ }
}
- evas_image_cache_flush(e);
+ evas_image_cache_flush(eo_e);
EINA_INLIST_FOREACH(e->layers, layer)
{
- Evas_Object *obj;
+ Evas_Object_Protected_Data *obj;
- EINA_INLIST_FOREACH(layer->objects, obj)
- {
- Evas_Object_Image *o;
-
- o = (Evas_Object_Image *)(obj->object_data);
- if (o->magic == MAGIC_OBJ_IMAGE)
+ EINA_INLIST_FOREACH(layer->objects, obj)
+ {
+ if (eo_isa(obj->object, MY_CLASS))
{
- evas_object_image_load(obj);
+ Evas_Object_Image *o = eo_data_get(obj->object, MY_CLASS);
+ evas_object_image_load(obj->object);
o->changed = EINA_TRUE;
- evas_object_change(obj);
+ evas_object_change(obj->object, obj);
}
- }
+ }
}
- evas_image_cache_flush(e);
+ evas_image_cache_flush(eo_e);
}
EAPI void
-evas_image_cache_set(Evas *e, int size)
+evas_image_cache_set(Evas *eo_e, int size)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return;
MAGIC_CHECK_END();
+ eo_do(eo_e, evas_canvas_image_cache_set(size));
+}
+void
+_canvas_image_cache_set(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ int size = va_arg(*list, int);
+ Evas_Public_Data *e = _pd;
if (size < 0) size = 0;
e->engine.func->image_cache_set(e->engine.data.output, size);
}
EAPI int
-evas_image_cache_get(const Evas *e)
+evas_image_cache_get(const Evas *eo_e)
{
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return 0;
MAGIC_CHECK_END();
+ int ret = 0;
+ eo_do((Eo *)eo_e, evas_canvas_image_cache_get(&ret));
+ return ret;
+}
- return e->engine.func->image_cache_get(e->engine.data.output);
+void
+_canvas_image_cache_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ int *ret = va_arg(*list, int *);
+ const Evas_Public_Data *e = _pd;
+ *ret = e->engine.func->image_cache_get(e->engine.data.output);
}
EAPI Eina_Bool
-evas_image_max_size_get(const Evas *e, int *maxw, int *maxh)
+evas_image_max_size_get(const Evas *eo_e, int *maxw, int *maxh)
{
- int w = 0, h = 0;
- MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+ MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
return EINA_FALSE;
MAGIC_CHECK_END();
+ Eina_Bool ret = EINA_FALSE;
+ eo_do((Eo *)eo_e, evas_canvas_image_max_size_get(maxw, maxh, &ret));
+ return ret;
+}
+
+void
+_canvas_image_max_size_get(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
+{
+ int *maxw = va_arg(*list, int *);
+ int *maxh = va_arg(*list, int *);
+ Eina_Bool *ret = va_arg(*list, Eina_Bool *);
+ if (ret) *ret = EINA_FALSE;
+ int w = 0, h = 0;
+ const Evas_Public_Data *e = _pd;
if (maxw) *maxw = 0xffff;
if (maxh) *maxh = 0xffff;
- if (!e->engine.func->image_max_size_get) return EINA_FALSE;
+ if (!e->engine.func->image_max_size_get) return;
e->engine.func->image_max_size_get(e->engine.data.output, &w, &h);
if (maxw) *maxw = w;
if (maxh) *maxh = h;
- return EINA_TRUE;
+ if (ret) *ret = EINA_TRUE;
}
/* all nice and private */
static void
_proxy_unset(Evas_Object *proxy)
{
- Evas_Object_Image *o;
+ Evas_Object_Image *o = eo_data_get(proxy, MY_CLASS);
- o = proxy->object_data;
if (!o->cur.source) return;
- o->cur.source->proxy.proxies = eina_list_remove(o->cur.source->proxy.proxies, proxy);
+ Evas_Object_Protected_Data *cur_source = eo_data_get(o->cur.source, EVAS_OBJ_CLASS);
+
+ cur_source->proxy.proxies = eina_list_remove(cur_source->proxy.proxies, proxy);
o->cur.source = NULL;
if (o->cur.defmap)
@@ -2223,18 +2576,17 @@ _proxy_unset(Evas_Object *proxy)
static void
-_proxy_set(Evas_Object *proxy, Evas_Object *src)
+_proxy_set(Evas_Object *eo_proxy, Evas_Object *eo_src)
{
- Evas_Object_Image *o;
-
- o = proxy->object_data;
+ Evas_Object_Protected_Data *src = eo_data_get(eo_src, EVAS_OBJ_CLASS);
+ Evas_Object_Image *o = eo_data_get(eo_proxy, MY_CLASS);
- evas_object_image_file_set(proxy, NULL, NULL);
+ evas_object_image_file_set(eo_proxy, NULL, NULL);
- o->cur.source = src;
+ o->cur.source = eo_src;
o->load_error = EVAS_LOAD_ERROR_NONE;
- src->proxy.proxies = eina_list_append(src->proxy.proxies, proxy);
+ src->proxy.proxies = eina_list_append(src->proxy.proxies, eo_proxy);
src->proxy.redraw = EINA_TRUE;
}
@@ -2242,7 +2594,7 @@ _proxy_set(Evas_Object *proxy, Evas_Object *src)
* Give them some pixels. A random color
*/
static void
-_proxy_error(Evas_Object *proxy, void *context, void *output, void *surface,
+_proxy_error(Evas_Object *eo_proxy, void *context, void *output, void *surface,
int x, int y)
{
Evas_Func *func;
@@ -2254,6 +2606,7 @@ _proxy_error(Evas_Object *proxy, void *context, void *output, void *surface,
* If it bugs you, just fix it. Don't tell me */
if (VERBOSE_PROXY_ERROR) printf("Err: Argh! Recursive proxies.\n");
+ Evas_Object_Protected_Data *proxy = eo_data_get(eo_proxy, EVAS_OBJ_CLASS);
func = proxy->layer->evas->engine.func;
func->context_color_set(output, context, r, g, b, 255);
func->context_multiplier_unset(output, context);
@@ -2267,10 +2620,10 @@ _proxy_error(Evas_Object *proxy, void *context, void *output, void *surface,
/*
static void
-_proxy_subrender_recurse(Evas_Object *obj, Evas_Object *clip, void *output, void *surface, void *ctx, int x, int y)
+_proxy_subrender_recurse(Evas_Object *eo_obj, Evas_Object *clip, void *output, void *surface, void *ctx, int x, int y)
{
- Evas_Object *obj2;
- Evas *e = obj->layer->evas;
+ Evas_Object *eo_obj2;
+ Evas *eo_e = obj->layer->evas;
if (obj->clip.clipees) return;
if (!obj->cur.visible) return;
@@ -2280,21 +2633,21 @@ _proxy_subrender_recurse(Evas_Object *obj, Evas_Object *clip, void *output, void
if ((obj->cur.cache.clip.a == 0) &&
(obj->cur.render_op == EVAS_RENDER_BLEND)) return;
}
- if ((obj->func->is_visible) && (!obj->func->is_visible(obj))) return;
+ if ((obj->func->is_visible) && (!obj->func->is_visible(eo_obj))) return;
if (!obj->pre_render_done)
- obj->func->render_pre(obj);
+ obj->func->render_pre(eo_obj);
ctx = e->engine.func->context_new(output);
- if (obj->smart.smart)
+ if (obj->is_smart)
{
- EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(obj), obj2)
+ EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), obj2)
{
_proxy_subrender_recurse(obj2, clip, output, surface, ctx, x, y);
}
}
else
{
- obj->func->render(obj, output, ctx, surface, x, y);
+ obj->func->render(eo_obj, output, ctx, surface, x, y);
}
e->engine.func->context_free(output, ctx);
}
@@ -2306,13 +2659,15 @@ _proxy_subrender_recurse(Evas_Object *obj, Evas_Object *clip, void *output, void
* Used to force a draw if necessary, else just makes sures it's available.
*/
static void
-_proxy_subrender(Evas *e, Evas_Object *source)
+_proxy_subrender(Evas *eo_e, Evas_Object *eo_source)
{
+ Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
void *ctx;
-/* Evas_Object *obj2, *clip;*/
+/* Evas_Object *eo_obj2, *clip;*/
int w, h;
- if (!source) return;
+ if (!eo_source) return;
+ Evas_Object_Protected_Data *source = eo_data_get(eo_source, EVAS_OBJ_CLASS);
w = source->cur.geometry.w;
h = source->cur.geometry.h;
@@ -2348,7 +2703,7 @@ _proxy_subrender(Evas *e, Evas_Object *source)
e->engine.func->context_free(e->engine.data.output, ctx);
ctx = e->engine.func->context_new(e->engine.data.output);
- evas_render_mapped(e, source, ctx, source->proxy.surface,
+ evas_render_mapped(eo_e, eo_source, source, ctx, source->proxy.surface,
-source->cur.geometry.x,
-source->cur.geometry.y,
1, 0, 0, e->output.w, e->output.h
@@ -2361,7 +2716,7 @@ _proxy_subrender(Evas *e, Evas_Object *source)
(e->engine.data.output, source->proxy.surface, 0, 0, w, h);
/*
ctx = e->engine.func->context_new(e->engine.data.output);
- if (source->smart.smart)
+ if (eo_isa(source, EVAS_OBJ_SMART_CLASS))
{
clip = evas_object_smart_clipped_clipper_get(source);
EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(source), obj2)
@@ -2396,27 +2751,27 @@ _proxy_subrender(Evas *e, Evas_Object *source)
* possible to merge I guess
*/
static void
-image_filter_draw_under_recurse(Evas *e, Evas_Object *obj, Evas_Object *stop,
+image_filter_draw_under_recurse(Evas *eo_e, Evas_Object *eo_obj, Evas_Object *stop,
void *output, void *ctx, void *surface,
int x, int y)
{
- Evas_Object *obj2;
+ Evas_Object *eo_obj2;
if (obj->clip.clipees) return;
/* FIXME: Doing bounding box test */
- if (!evas_object_is_in_output_rect(obj, stop->cur.geometry.x,
+ if (!evas_object_is_in_output_rect(eo_obj, stop->cur.geometry.x,
stop->cur.geometry.y,
stop->cur.geometry.w,
stop->cur.geometry.h))
return;
- if (!evas_object_is_visible(obj)) return;
+ if (!evas_object_is_visible(eo_obj)) return;
obj->pre_render_done = 1;
ctx = e->engine.func->context_new(output);
- if (obj->smart.smart)
+ if (obj->is_smart)
{
- EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(obj), obj2)
+ EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), obj2)
{
if (obj2 == stop) return;
image_filter_draw_under_recurse(e, obj2, stop, output, surface,
@@ -2424,7 +2779,7 @@ image_filter_draw_under_recurse(Evas *e, Evas_Object *obj, Evas_Object *stop,
}
}
else
- obj->func->render(obj, output, ctx, surface, x ,y);
+ obj->func->render(eo_obj, output, ctx, surface, x ,y);
e->engine.func->context_free(output, ctx);
}
@@ -2432,7 +2787,7 @@ image_filter_draw_under_recurse(Evas *e, Evas_Object *obj, Evas_Object *stop,
* Draw all visible objects intersecting an object which are _beneath_ it.
*/
static void
-image_filter_draw_under(Evas *e, Evas_Object *stop, void *output, void *ctx, void *surface, int dx, int dy)
+image_filter_draw_under(Evas *eo_e, Evas_Object *stop, void *output, void *ctx, void *surface, int dx, int dy)
{
Evas_Layer *lay;
int x, y;
@@ -2442,7 +2797,7 @@ image_filter_draw_under(Evas *e, Evas_Object *stop, void *output, void *ctx, voi
EINA_INLIST_FOREACH(e->layers, lay)
{
- Evas_Object *obj;
+ Evas_Object *eo_obj;
EINA_INLIST_FOREACH(lay->objects, obj)
{
if (obj->delete_me) continue;
@@ -2462,7 +2817,7 @@ image_filter_draw_under(Evas *e, Evas_Object *stop, void *output, void *ctx, voi
* Creates a new context, and renders stuff (filtered) onto that.
*/
Filtered_Image *
-image_filter_update(Evas *e, Evas_Object *obj, void *src, int imagew, int imageh, int *outw, int *outh)
+image_filter_update(Evas *eo_e, Evas_Object *eo_obj, void *src, int imagew, int imageh, int *outw, int *outh)
{
int w, h;
void *ctx;
@@ -2542,15 +2897,16 @@ image_filter_update(Evas *e, Evas_Object *obj, void *src, int imagew, int imageh
#endif
static void
-evas_object_image_unload(Evas_Object *obj, Eina_Bool dirty)
+evas_object_image_unload(Evas_Object *eo_obj, Eina_Bool dirty)
{
Evas_Object_Image *o;
Eina_Bool resize_call = EINA_FALSE;
- o = (Evas_Object_Image *)(obj->object_data);
-
+ o = eo_data_get(eo_obj, MY_CLASS);
if ((!o->cur.file) ||
(o->pixels_checked_out > 0)) return;
+
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if (dirty)
{
if (o->engine_data)
@@ -2567,7 +2923,7 @@ evas_object_image_unload(Evas_Object *obj, Eina_Bool dirty)
o->preloading = EINA_FALSE;
obj->layer->evas->engine.func->image_data_preload_cancel(obj->layer->evas->engine.data.output,
o->engine_data,
- obj);
+ eo_obj);
}
obj->layer->evas->engine.func->image_free(obj->layer->evas->engine.data.output,
o->engine_data);
@@ -2580,18 +2936,18 @@ evas_object_image_unload(Evas_Object *obj, Eina_Bool dirty)
o->cur.image.w = 0;
o->cur.image.h = 0;
o->cur.image.stride = 0;
- if (resize_call) evas_object_inform_call_image_resize(obj);
+ if (resize_call) evas_object_inform_call_image_resize(eo_obj);
}
static void
-evas_object_image_load(Evas_Object *obj)
+evas_object_image_load(Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
Evas_Image_Load_Opts lo;
- o = (Evas_Object_Image *)(obj->object_data);
if (o->engine_data) return;
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
lo.scale_down_by = o->load_opts.scale_down_by;
lo.dpi = o->load_opts.dpi;
lo.w = o->load_opts.w;
@@ -2633,7 +2989,7 @@ evas_object_image_load(Evas_Object *obj)
o->cur.image.w = w;
o->cur.image.h = h;
o->cur.image.stride = stride;
- if (resize_call) evas_object_inform_call_image_resize(obj);
+ if (resize_call) evas_object_inform_call_image_resize(eo_obj);
}
else
{
@@ -2642,7 +2998,7 @@ evas_object_image_load(Evas_Object *obj)
}
static Evas_Coord
-evas_object_image_figure_x_fill(Evas_Object *obj, Evas_Coord start, Evas_Coord size, Evas_Coord *size_ret)
+evas_object_image_figure_x_fill(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Evas_Coord start, Evas_Coord size, Evas_Coord *size_ret)
{
Evas_Coord w;
@@ -2664,7 +3020,7 @@ evas_object_image_figure_x_fill(Evas_Object *obj, Evas_Coord start, Evas_Coord s
}
static Evas_Coord
-evas_object_image_figure_y_fill(Evas_Object *obj, Evas_Coord start, Evas_Coord size, Evas_Coord *size_ret)
+evas_object_image_figure_y_fill(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Evas_Coord start, Evas_Coord size, Evas_Coord *size_ret)
{
Evas_Coord h;
@@ -2686,10 +3042,10 @@ evas_object_image_figure_y_fill(Evas_Object *obj, Evas_Coord start, Evas_Coord s
}
static void
-evas_object_image_init(Evas_Object *obj)
+evas_object_image_init(Evas_Object *eo_obj)
{
- /* alloc image ob, setup methods and default values */
- obj->object_data = evas_object_image_new();
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ evas_object_image_new(eo_obj);
/* set up default settings for this kind of object */
obj->cur.color.r = 255;
obj->cur.color.g = 255;
@@ -2709,17 +3065,10 @@ evas_object_image_init(Evas_Object *obj)
obj->type = o_type;
}
-static void *
-evas_object_image_new(void)
+static void
+evas_object_image_new(Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- /* alloc obj private data */
- EVAS_MEMPOOL_INIT(_mp_obj, "evas_object_image", Evas_Object_Image, 16, NULL);
- o = EVAS_MEMPOOL_ALLOC(_mp_obj, Evas_Object_Image);
- if (!o) return NULL;
- EVAS_MEMPOOL_PREP(_mp_obj, o, Evas_Object_Image);
- o->magic = MAGIC_OBJ_IMAGE;
+ Evas_Object_Image *o = eo_data_get(eo_obj, EVAS_OBJ_IMAGE_CLASS);
o->cur.fill.w = 0;
o->cur.fill.h = 0;
o->cur.smooth_scale = 1;
@@ -2731,25 +3080,27 @@ evas_object_image_new(void)
o->cur.source = NULL;
o->prev = o->cur;
o->tmpf_fd = -1;
- return o;
}
static void
-evas_object_image_free(Evas_Object *obj)
+_destructor(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
{
- Evas_Object_Image *o;
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ evas_object_image_free(eo_obj, obj);
+ eo_do_super(eo_obj, eo_destructor());
+}
+
+static void
+evas_object_image_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
+{
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
Eina_Rectangle *r;
- /* frees private object data. very simple here */
- o = (Evas_Object_Image *)(obj->object_data);
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
- return;
- MAGIC_CHECK_END();
/* free obj */
- _cleanup_tmpf(obj);
+ _cleanup_tmpf(eo_obj);
if (o->cur.file) eina_stringshare_del(o->cur.file);
if (o->cur.key) eina_stringshare_del(o->cur.key);
- if (o->cur.source) _proxy_unset(obj);
+ if (o->cur.source) _proxy_unset(eo_obj);
if (o->engine_data)
{
if (o->preloading)
@@ -2757,7 +3108,7 @@ evas_object_image_free(Evas_Object *obj)
o->preloading = EINA_FALSE;
obj->layer->evas->engine.func->image_data_preload_cancel(obj->layer->evas->engine.data.output,
o->engine_data,
- obj);
+ eo_obj);
}
obj->layer->evas->engine.func->image_free(obj->layer->evas->engine.data.output,
o->engine_data);
@@ -2765,32 +3116,27 @@ evas_object_image_free(Evas_Object *obj)
if (o->video_surface)
{
o->video_surface = EINA_FALSE;
- obj->layer->evas->video_objects = eina_list_remove(obj->layer->evas->video_objects, obj);
+ obj->layer->evas->video_objects = eina_list_remove(obj->layer->evas->video_objects, eo_obj);
}
o->engine_data = NULL;
- o->magic = 0;
EINA_LIST_FREE(o->pixel_updates, r)
eina_rectangle_free(r);
- EVAS_MEMPOOL_FREE(_mp_obj, o);
}
static void
-evas_object_image_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y)
+evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y)
{
- Evas_Object_Image *o;
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
int imagew, imageh, uvw, uvh;
void *pixels;
- /* render object to surface with context, and offset by x,y */
- o = (Evas_Object_Image *)(obj->object_data);
-
if ((o->cur.fill.w < 1) || (o->cur.fill.h < 1))
return; /* no error message, already printed in pre_render */
/* Proxy sanity */
if (o->proxyrendering)
{
- _proxy_error(obj, context, output, surface, x, y);
+ _proxy_error(eo_obj, context, output, surface, x, y);
return;
}
@@ -2839,6 +3185,10 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
obj->layer->evas->engine.func->context_render_op_set(output, context,
obj->cur.render_op);
+ Evas_Object_Protected_Data *source =
+ (o->cur.source ?
+ eo_data_get(o->cur.source, EVAS_OBJ_CLASS):
+ NULL);
if (!o->cur.source)
{
pixels = o->engine_data;
@@ -2847,32 +3197,32 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
uvw = imagew;
uvh = imageh;
}
- else if (o->cur.source->proxy.surface && !o->cur.source->proxy.redraw)
+ else if (source->proxy.surface && !source->proxy.redraw)
{
- pixels = o->cur.source->proxy.surface;
- imagew = o->cur.source->proxy.w;
- imageh = o->cur.source->proxy.h;
+ pixels = source->proxy.surface;
+ imagew = source->proxy.w;
+ imageh = source->proxy.h;
uvw = imagew;
uvh = imageh;
}
- else if (o->cur.source->type == o_type &&
- ((Evas_Object_Image *)o->cur.source->object_data)->engine_data)
+ else if (source->type == o_type &&
+ ((Evas_Object_Image *)eo_data_get(o->cur.source, MY_CLASS))->engine_data)
{
Evas_Object_Image *oi;
- oi = o->cur.source->object_data;
+ oi = eo_data_get(o->cur.source, MY_CLASS);
pixels = oi->engine_data;
imagew = oi->cur.image.w;
imageh = oi->cur.image.h;
- uvw = o->cur.source->cur.geometry.w;
- uvh = o->cur.source->cur.geometry.h;
+ uvw = source->cur.geometry.w;
+ uvh = source->cur.geometry.h;
}
else
{
o->proxyrendering = EINA_TRUE;
- _proxy_subrender(obj->layer->evas, o->cur.source);
- pixels = o->cur.source->proxy.surface;
- imagew = o->cur.source->proxy.w;
- imageh = o->cur.source->proxy.h;
+ _proxy_subrender(obj->layer->evas->evas, o->cur.source);
+ pixels = source->proxy.surface;
+ imagew = source->proxy.w;
+ imageh = source->proxy.h;
uvw = imagew;
uvh = imageh;
o->proxyrendering = EINA_FALSE;
@@ -2953,12 +3303,12 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
{
if (obj->layer->evas->engine.func->gl_img_obj_set)
{
- obj->layer->evas->engine.func->gl_img_obj_set(output, obj, o->cur.has_alpha);
+ obj->layer->evas->engine.func->gl_img_obj_set(output, eo_obj, o->cur.has_alpha);
img_set = 1;
}
}
- o->func.get_pixels(o->func.get_pixels_data, obj);
+ o->func.get_pixels(o->func.get_pixels_data, eo_obj);
if (o->engine_data != pixels)
pixels = o->engine_data;
o->engine_data = obj->layer->evas->engine.func->image_dirty_region
@@ -2969,7 +3319,7 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
}
if ((obj->cur.map) && (obj->cur.map->count > 3) && (obj->cur.usemap))
{
- evas_object_map_update(obj, x, y, imagew, imageh, uvw, uvh);
+ evas_object_map_update(eo_obj, x, y, imagew, imageh, uvw, uvh);
obj->layer->evas->engine.func->image_map_draw
(output, context, surface, pixels, obj->spans,
@@ -2986,8 +3336,8 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
obj->layer->evas->engine.func->image_border_set(output, pixels,
o->cur.border.l, o->cur.border.r,
o->cur.border.t, o->cur.border.b);
- idx = evas_object_image_figure_x_fill(obj, o->cur.fill.x, o->cur.fill.w, &idw);
- idy = evas_object_image_figure_y_fill(obj, o->cur.fill.y, o->cur.fill.h, &idh);
+ idx = evas_object_image_figure_x_fill(eo_obj, obj, o->cur.fill.x, o->cur.fill.w, &idw);
+ idy = evas_object_image_figure_y_fill(eo_obj, obj, o->cur.fill.y, o->cur.fill.h, &idh);
if (idw < 1) idw = 1;
if (idh < 1) idh = 1;
if (idx > 0) idx -= idw;
@@ -3181,11 +3531,10 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
}
static void
-evas_object_image_render_pre(Evas_Object *obj)
+evas_object_image_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
{
- Evas_Object_Image *o;
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
int is_v = 0, was_v = 0;
- Evas *e;
/* dont pre-render the obj twice! */
if (obj->pre_render_done) return;
@@ -3195,54 +3544,57 @@ evas_object_image_render_pre(Evas_Object *obj)
/* elsewhere, decoding video etc. */
/* then when this is done the object needs to figure if it changed and */
/* if so what and where and add the appropriate redraw rectangles */
- o = (Evas_Object_Image *)(obj->object_data);
- e = obj->layer->evas;
+ Evas_Public_Data *e = obj->layer->evas;
if ((o->cur.fill.w < 1) || (o->cur.fill.h < 1))
{
ERR("%p has invalid fill size: %dx%d. Ignored",
- obj, o->cur.fill.w, o->cur.fill.h);
+ eo_obj, o->cur.fill.w, o->cur.fill.h);
return;
}
/* if someone is clipping this obj - go calculate the clipper */
if (obj->cur.clipper)
{
- if (obj->cur.cache.clip.dirty)
- evas_object_clip_recalc(obj->cur.clipper);
- obj->cur.clipper->func->render_pre(obj->cur.clipper);
+ Evas_Object_Protected_Data *clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
+ if (obj->cur.cache.clip.dirty)
+ evas_object_clip_recalc(obj->cur.clipper, clipper);
+ clipper->func->render_pre(obj->cur.clipper, clipper);
}
/* Proxy: Do it early */
- if (o->cur.source &&
- (o->cur.source->proxy.redraw || o->cur.source->changed))
+ if (o->cur.source)
{
- /* XXX: Do I need to sort out the map here? */
- evas_object_render_pre_prev_cur_add(&e->clip_changes, obj);
- goto done;
+ Evas_Object_Protected_Data *source = eo_data_get(o->cur.source, EVAS_OBJ_CLASS);
+ if (source->proxy.redraw || source->changed)
+ {
+ /* XXX: Do I need to sort out the map here? */
+ evas_object_render_pre_prev_cur_add(&e->clip_changes, eo_obj, obj);
+ goto done;
+ }
}
/* now figure what changed and add draw rects */
/* if it just became visible or invisible */
- is_v = evas_object_is_visible(obj);
- was_v = evas_object_was_visible(obj);
+ is_v = evas_object_is_visible(eo_obj, obj);
+ was_v = evas_object_was_visible(eo_obj, obj);
if (is_v != was_v)
{
- evas_object_render_pre_visible_change(&e->clip_changes, obj, is_v, was_v);
+ evas_object_render_pre_visible_change(&e->clip_changes, eo_obj, is_v, was_v);
if (!o->pixel_updates) goto done;
}
if (obj->changed_map)
{
- evas_object_render_pre_prev_cur_add(&e->clip_changes, obj);
+ evas_object_render_pre_prev_cur_add(&e->clip_changes, eo_obj, obj);
goto done;
}
/* it's not visible - we accounted for it appearing or not so just abort */
if (!is_v) goto done;
/* clipper changed this is in addition to anything else for obj */
- evas_object_render_pre_clipper_change(&e->clip_changes, obj);
+ evas_object_render_pre_clipper_change(&e->clip_changes, eo_obj);
/* if we restacked (layer or just within a layer) and don't clip anyone */
if (obj->restack)
{
- evas_object_render_pre_prev_cur_add(&e->clip_changes, obj);
+ evas_object_render_pre_prev_cur_add(&e->clip_changes, eo_obj, obj);
if (!o->pixel_updates) goto done;
}
/* if it changed color */
@@ -3251,19 +3603,19 @@ evas_object_image_render_pre(Evas_Object *obj)
(obj->cur.color.b != obj->prev.color.b) ||
(obj->cur.color.a != obj->prev.color.a))
{
- evas_object_render_pre_prev_cur_add(&e->clip_changes, obj);
+ evas_object_render_pre_prev_cur_add(&e->clip_changes, eo_obj, obj);
if (!o->pixel_updates) goto done;
}
/* if it changed render op */
if (obj->cur.render_op != obj->prev.render_op)
{
- evas_object_render_pre_prev_cur_add(&e->clip_changes, obj);
+ evas_object_render_pre_prev_cur_add(&e->clip_changes, eo_obj, obj);
if (!o->pixel_updates) goto done;
}
/* if it changed anti_alias */
if (obj->cur.anti_alias != obj->prev.anti_alias)
{
- evas_object_render_pre_prev_cur_add(&e->clip_changes, obj);
+ evas_object_render_pre_prev_cur_add(&e->clip_changes, eo_obj, obj);
if (!o->pixel_updates) goto done;
}
if (o->changed)
@@ -3274,7 +3626,7 @@ evas_object_image_render_pre(Evas_Object *obj)
((!o->cur.key) && (o->prev.key))
)
{
- evas_object_render_pre_prev_cur_add(&e->clip_changes, obj);
+ evas_object_render_pre_prev_cur_add(&e->clip_changes, eo_obj, obj);
if (!o->pixel_updates) goto done;
}
if ((o->cur.image.w != o->prev.image.w) ||
@@ -3283,7 +3635,7 @@ evas_object_image_render_pre(Evas_Object *obj)
(o->cur.cspace != o->prev.cspace) ||
(o->cur.smooth_scale != o->prev.smooth_scale))
{
- evas_object_render_pre_prev_cur_add(&e->clip_changes, obj);
+ evas_object_render_pre_prev_cur_add(&e->clip_changes, eo_obj, obj);
if (!o->pixel_updates) goto done;
}
if ((o->cur.border.l != o->prev.border.l) ||
@@ -3293,17 +3645,17 @@ evas_object_image_render_pre(Evas_Object *obj)
(o->cur.border.fill != o->prev.border.fill) ||
(o->cur.border.scale != o->prev.border.scale))
{
- evas_object_render_pre_prev_cur_add(&e->clip_changes, obj);
+ evas_object_render_pre_prev_cur_add(&e->clip_changes, eo_obj, obj);
if (!o->pixel_updates) goto done;
}
if (o->dirty_pixels)
{
- evas_object_render_pre_prev_cur_add(&e->clip_changes, obj);
+ evas_object_render_pre_prev_cur_add(&e->clip_changes, eo_obj, obj);
if (!o->pixel_updates) goto done;
}
if (o->cur.frame != o->prev.frame)
{
- evas_object_render_pre_prev_cur_add(&e->clip_changes, obj);
+ evas_object_render_pre_prev_cur_add(&e->clip_changes, eo_obj, obj);
if (!o->pixel_updates) goto done;
}
@@ -3341,7 +3693,7 @@ evas_object_image_render_pre(Evas_Object *obj)
(obj->cur.geometry.h != obj->prev.geometry.h))
)
{
- evas_object_render_pre_prev_cur_add(&e->clip_changes, obj);
+ evas_object_render_pre_prev_cur_add(&e->clip_changes, eo_obj, obj);
if (!o->pixel_updates) goto done;
}
if (o->changed)
@@ -3351,7 +3703,7 @@ evas_object_image_render_pre(Evas_Object *obj)
(o->cur.fill.w != o->prev.fill.w) ||
(o->cur.fill.h != o->prev.fill.h))
{
- evas_object_render_pre_prev_cur_add(&e->clip_changes, obj);
+ evas_object_render_pre_prev_cur_add(&e->clip_changes, eo_obj, obj);
if (!o->pixel_updates) goto done;
}
if (o->pixel_updates)
@@ -3373,8 +3725,8 @@ evas_object_image_render_pre(Evas_Object *obj)
e->engine.func->image_dirty_region(e->engine.data.output, o->engine_data, rr->x, rr->y, rr->w, rr->h);
- idx = evas_object_image_figure_x_fill(obj, o->cur.fill.x, o->cur.fill.w, &idw);
- idy = evas_object_image_figure_y_fill(obj, o->cur.fill.y, o->cur.fill.h, &idh);
+ idx = evas_object_image_figure_x_fill(eo_obj, obj, o->cur.fill.x, o->cur.fill.w, &idw);
+ idy = evas_object_image_figure_y_fill(eo_obj, obj, o->cur.fill.y, o->cur.fill.h, &idh);
if (idw < 1) idw = 1;
if (idh < 1) idh = 1;
@@ -3419,11 +3771,11 @@ evas_object_image_render_pre(Evas_Object *obj)
EINA_LIST_FREE(o->pixel_updates, r)
eina_rectangle_free(r);
- e->engine.func->image_dirty_region(e->engine.data.output, o->engine_data, 0, 0, o->cur.image.w, o->cur.image.h);
- evas_object_render_pre_prev_cur_add(&e->clip_changes, obj);
- goto done;
- }
- }
+ e->engine.func->image_dirty_region(e->engine.data.output, o->engine_data, 0, 0, o->cur.image.w, o->cur.image.h);
+ evas_object_render_pre_prev_cur_add(&e->clip_changes, eo_obj, obj);
+ goto done;
+ }
+ }
}
#if 0 // filtering disabled
if (obj->filter && obj->filter->dirty)
@@ -3434,8 +3786,8 @@ evas_object_image_render_pre(Evas_Object *obj)
/* it obviously didn't change - add a NO obscure - this "unupdates" this */
/* area so if there were updates for it they get wiped. don't do it if we */
/* aren't fully opaque and we are visible */
- if (evas_object_is_visible(obj) &&
- evas_object_is_opaque(obj))
+ if (evas_object_is_visible(eo_obj, obj) &&
+ evas_object_is_opaque(eo_obj, obj))
{
Evas_Coord x, y, w, h;
@@ -3445,75 +3797,68 @@ evas_object_image_render_pre(Evas_Object *obj)
h = obj->cur.cache.clip.h;
if (obj->cur.clipper)
{
+ Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
RECTS_CLIP_TO_RECT(x, y, w, h,
- obj->cur.clipper->cur.cache.clip.x,
- obj->cur.clipper->cur.cache.clip.y,
- obj->cur.clipper->cur.cache.clip.w,
- obj->cur.clipper->cur.cache.clip.h);
+ cur_clipper->cur.cache.clip.x,
+ cur_clipper->cur.cache.clip.y,
+ cur_clipper->cur.cache.clip.w,
+ cur_clipper->cur.cache.clip.h);
}
e->engine.func->output_redraws_rect_del(e->engine.data.output,
x, y, w, h);
}
done:
- evas_object_render_pre_effect_updates(&e->clip_changes, obj, is_v, was_v);
+ evas_object_render_pre_effect_updates(&e->clip_changes, eo_obj, is_v, was_v);
}
static void
-evas_object_image_render_post(Evas_Object *obj)
+evas_object_image_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj EINA_UNUSED)
{
- Evas_Object_Image *o;
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
Eina_Rectangle *r;
/* this moves the current data to the previous state parts of the object */
/* in whatever way is safest for the object. also if we don't need object */
/* data anymore we can free it if the object deems this is a good idea */
- o = (Evas_Object_Image *)(obj->object_data);
/* remove those pesky changes */
- evas_object_clip_changes_clean(obj);
+ evas_object_clip_changes_clean(eo_obj);
EINA_LIST_FREE(o->pixel_updates, r)
eina_rectangle_free(r);
/* move cur to prev safely for object data */
- evas_object_cur_prev(obj);
+ evas_object_cur_prev(eo_obj);
o->prev = o->cur;
o->changed = EINA_FALSE;
/* FIXME: copy strings across */
}
-static unsigned int evas_object_image_id_get(Evas_Object *obj)
+static unsigned int evas_object_image_id_get(Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- o = (Evas_Object_Image *)(obj->object_data);
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
if (!o) return 0;
return MAGIC_OBJ_IMAGE;
}
-static unsigned int evas_object_image_visual_id_get(Evas_Object *obj)
+static unsigned int evas_object_image_visual_id_get(Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- o = (Evas_Object_Image *)(obj->object_data);
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
if (!o) return 0;
return MAGIC_OBJ_IMAGE;
}
-static void *evas_object_image_engine_data_get(Evas_Object *obj)
+static void *evas_object_image_engine_data_get(Evas_Object *eo_obj)
{
- Evas_Object_Image *o;
-
- o = (Evas_Object_Image *)(obj->object_data);
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
if (!o) return NULL;
return o->engine_data;
}
static int
-evas_object_image_is_opaque(Evas_Object *obj)
+evas_object_image_is_opaque(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
{
- Evas_Object_Image *o;
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
/* this returns 1 if the internal object data implies that the object is */
/* currently fully opaque over the entire rectangle it occupies */
- o = (Evas_Object_Image *)(obj->object_data);
/* disable caching due tyo maps screwing with this
o->cur.opaque_valid = 0;
if (o->cur.opaque_valid)
@@ -3539,7 +3884,8 @@ evas_object_image_is_opaque(Evas_Object *obj)
// FIXME: use proxy
if (o->cur.source)
{
- o->cur.opaque = evas_object_is_opaque(o->cur.source);
+ Evas_Object_Protected_Data *cur_source = eo_data_get(o->cur.source, EVAS_OBJ_CLASS);
+ o->cur.opaque = evas_object_is_opaque(o->cur.source, cur_source);
return o->cur.opaque; /* FIXME: Should go poke at the object */
}
if (o->cur.has_alpha)
@@ -3583,13 +3929,12 @@ evas_object_image_is_opaque(Evas_Object *obj)
}
static int
-evas_object_image_was_opaque(Evas_Object *obj)
+evas_object_image_was_opaque(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
{
- Evas_Object_Image *o;
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
/* this returns 1 if the internal object data implies that the object was */
/* previously fully opaque over the entire rectangle it occupies */
- o = (Evas_Object_Image *)(obj->object_data);
if (o->prev.opaque_valid)
{
if (!o->prev.opaque) return 0;
@@ -3618,16 +3963,14 @@ evas_object_image_was_opaque(Evas_Object *obj)
}
static int
-evas_object_image_is_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
+evas_object_image_is_inside(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Evas_Coord x, Evas_Coord y)
{
- Evas_Object_Image *o;
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
DATA32 *data;
int w, h, stride, iw, ih;
int a;
int return_value;
- o = (Evas_Object_Image *)(obj->object_data);
-
x -= obj->cur.cache.clip.x;
y -= obj->cur.cache.clip.y;
w = obj->cur.cache.clip.w;
@@ -3764,11 +4107,10 @@ evas_object_image_is_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
}
static int
-evas_object_image_has_opaque_rect(Evas_Object *obj)
+evas_object_image_has_opaque_rect(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
{
- Evas_Object_Image *o;
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
- o = (Evas_Object_Image *)(obj->object_data);
if ((obj->cur.map) && (obj->cur.usemap)) return 0;
if (((o->cur.border.l | o->cur.border.r | o->cur.border.t | o->cur.border.b) != 0) &&
(o->cur.border.fill == EVAS_BORDER_FILL_SOLID) &&
@@ -3783,11 +4125,10 @@ evas_object_image_has_opaque_rect(Evas_Object *obj)
}
static int
-evas_object_image_get_opaque_rect(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
+evas_object_image_get_opaque_rect(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
{
- Evas_Object_Image *o;
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
- o = (Evas_Object_Image *)(obj->object_data);
if (o->cur.border.scale == 1.0)
{
*x = obj->cur.geometry.x + o->cur.border.l;
@@ -3884,56 +4225,53 @@ evas_object_image_filled_resize_listener(void *data __UNUSED__, Evas *e __UNUSED
Eina_Bool
-_evas_object_image_preloading_get(const Evas_Object *obj)
+_evas_object_image_preloading_get(const Evas_Object *eo_obj)
{
- Evas_Object_Image *o = (Evas_Object_Image *)(obj->object_data);
- if (!o) return EINA_FALSE;
- MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
- return EINA_FALSE;
- MAGIC_CHECK_END();
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
return o->preloading;
}
void
-_evas_object_image_preloading_set(Evas_Object *obj, Eina_Bool preloading)
+_evas_object_image_preloading_set(Evas_Object *eo_obj, Eina_Bool preloading)
{
- Evas_Object_Image *o = (Evas_Object_Image *)(obj->object_data);
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
o->preloading = preloading;
}
void
-_evas_object_image_preloading_check(Evas_Object *obj)
+_evas_object_image_preloading_check(Evas_Object *eo_obj)
{
- Evas_Object_Image *o = (Evas_Object_Image *)(obj->object_data);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
if (obj->layer->evas->engine.func->image_load_error_get)
o->load_error = obj->layer->evas->engine.func->image_load_error_get
(obj->layer->evas->engine.data.output, o->engine_data);
}
Evas_Object *
-_evas_object_image_video_parent_get(Evas_Object *obj)
+_evas_object_image_video_parent_get(Evas_Object *eo_obj)
{
- Evas_Object_Image *o = (Evas_Object_Image *)(obj->object_data);
-
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
return o->video_surface ? o->video.parent : NULL;
}
void
-_evas_object_image_video_overlay_show(Evas_Object *obj)
+_evas_object_image_video_overlay_show(Evas_Object *eo_obj)
{
- Evas_Object_Image *o = (Evas_Object_Image *)(obj->object_data);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
if (obj->cur.cache.clip.x != obj->prev.cache.clip.x ||
obj->cur.cache.clip.y != obj->prev.cache.clip.y ||
o->created || !o->video_visible)
- o->video.move(o->video.data, obj, &o->video, obj->cur.cache.clip.x, obj->cur.cache.clip.y);
+ o->video.move(o->video.data, eo_obj, &o->video, obj->cur.cache.clip.x, obj->cur.cache.clip.y);
if (obj->cur.cache.clip.w != obj->prev.cache.clip.w ||
obj->cur.cache.clip.h != obj->prev.cache.clip.h ||
o->created || !o->video_visible)
- o->video.resize(o->video.data, obj, &o->video, obj->cur.cache.clip.w, obj->cur.cache.clip.h);
+ o->video.resize(o->video.data, eo_obj, &o->video, obj->cur.cache.clip.w, obj->cur.cache.clip.h);
if (!o->video_visible || o->created)
{
- o->video.show(o->video.data, obj, &o->video);
+ o->video.show(o->video.data, eo_obj, &o->video);
}
else
{
@@ -3949,16 +4287,174 @@ _evas_object_image_video_overlay_show(Evas_Object *obj)
}
void
-_evas_object_image_video_overlay_hide(Evas_Object *obj)
+_evas_object_image_video_overlay_hide(Evas_Object *eo_obj)
{
- Evas_Object_Image *o = (Evas_Object_Image *)(obj->object_data);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
if (o->video_visible || o->created)
- o->video.hide(o->video.data, obj, &o->video);
- if (evas_object_is_visible(obj))
- o->video.update_pixels(o->video.data, obj, &o->video);
+ o->video.hide(o->video.data, eo_obj, &o->video);
+ if (evas_object_is_visible(eo_obj, obj))
+ o->video.update_pixels(o->video.data, eo_obj, &o->video);
o->video_visible = EINA_FALSE;
o->created = EINA_FALSE;
}
+static void
+_class_constructor(Eo_Class *klass)
+{
+ const Eo_Op_Func_Description func_desc[] = {
+ EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
+ EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_DESTRUCTOR), _destructor),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_MEMFILE_SET), _image_memfile_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_FILE_SET), _image_file_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_FILE_GET), _image_file_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_SOURCE_SET), _image_source_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_SOURCE_GET), _image_source_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_BORDER_SET), _image_border_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_BORDER_GET), _image_border_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_BORDER_CENTER_FILL_SET), _image_border_center_fill_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_BORDER_CENTER_FILL_GET), _image_border_center_fill_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_FILLED_SET), _image_filled_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_FILLED_GET), _image_filled_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_BORDER_SCALE_SET), _image_border_scale_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_BORDER_SCALE_GET), _image_border_scale_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_FILL_SET), _image_fill_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_FILL_GET), _image_fill_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_FILL_SPREAD_SET), _image_fill_spread_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_FILL_SPREAD_GET), _image_fill_spread_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_SIZE_SET), _image_size_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_SIZE_GET), _image_size_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_STRIDE_GET), _image_stride_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_ERROR_GET), _image_load_error_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_DATA_CONVERT), _image_data_convert),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_DATA_SET), _image_data_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_DATA_GET), _image_data_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_PRELOAD), _image_preload),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_DATA_COPY_SET), _image_data_copy_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_DATA_UPDATE_ADD), _image_data_update_add),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_ALPHA_SET), _image_alpha_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_ALPHA_GET), _image_alpha_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_SMOOTH_SCALE_SET), _image_smooth_scale_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_SMOOTH_SCALE_GET), _image_smooth_scale_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_RELOAD), _image_reload),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_SAVE), _image_save),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_PIXELS_IMPORT), _image_pixels_import),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_PIXELS_GET_CALLBACK_SET), _image_pixels_get_callback_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_PIXELS_DIRTY_SET), _image_pixels_dirty_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_PIXELS_DIRTY_GET), _image_pixels_dirty_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_DPI_SET), _image_load_dpi_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_DPI_GET), _image_load_dpi_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_SIZE_SET), _image_load_size_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_SIZE_GET), _image_load_size_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_SCALE_DOWN_SET), _image_load_scale_down_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_SCALE_DOWN_GET), _image_load_scale_down_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_REGION_SET), _image_load_region_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_REGION_GET), _image_load_region_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_ORIENTATION_SET), _image_load_orientation_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_LOAD_ORIENTATION_GET), _image_load_orientation_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_COLORSPACE_SET), _image_colorspace_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_COLORSPACE_GET), _image_colorspace_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_VIDEO_SURFACE_SET), _image_video_surface_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_VIDEO_SURFACE_GET), _image_video_surface_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_NATIVE_SURFACE_SET), _image_native_surface_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_NATIVE_SURFACE_GET), _image_native_surface_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_SCALE_HINT_SET), _image_scale_hint_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_SCALE_HINT_GET), _image_scale_hint_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_CONTENT_HINT_SET), _image_content_hint_set),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_CONTENT_HINT_GET), _image_content_hint_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_REGION_SUPPORT_GET), _image_region_support_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_GET), _image_animated_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_FRAME_COUNT_GET), _image_animated_frame_count_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_LOOP_TYPE_GET), _image_animated_loop_type_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_LOOP_COUNT_GET), _image_animated_loop_count_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_FRAME_DURATION_GET), _image_animated_frame_duration_get),
+ EO_OP_FUNC(EVAS_OBJ_IMAGE_ID(EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_FRAME_SET), _image_animated_frame_set),
+ EO_OP_FUNC_SENTINEL
+ };
+
+ eo_class_funcs_set(klass, func_desc);
+}
+
+static const Eo_Op_Description op_desc[] = {
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_MEMFILE_SET, "Sets the data for an image from memory to be loaded"),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_FILE_SET, "Set the source file from where an image object must fetch the real"),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_FILE_GET, "Retrieve the source file from where an image object is to fetch the"),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_SOURCE_SET, "Set the source object on an image object to used as a @b proxy."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_SOURCE_GET, "Get the current source object of an image object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_BORDER_SET, "Set the dimensions for an image object's border."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_BORDER_GET, "Retrieve the dimensions for an image object's border, a region."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_BORDER_CENTER_FILL_SET, "Sets how the center part of the given image object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_BORDER_CENTER_FILL_GET, "Retrieves how the center part of the given image object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_FILLED_SET, "Set whether the image object's fill property should track the object's size."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_FILLED_GET, "Retrieve whether the image object's fill property should track the object's size."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_BORDER_SCALE_SET, "Sets the scaling factor (multiplier) for the borders of an image object"),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_BORDER_SCALE_GET, "Retrieves the scaling factor (multiplier) for the borders of an image object"),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_FILL_SET, "Set how to fill an image object's drawing rectangle given the (real) image bound to it."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_FILL_GET, "Retrieve how an image object is to fill its drawing rectangle, given the (real) image bound to it."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_FILL_SPREAD_SET, "Sets the tiling mode for the given evas image object's fill."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_FILL_SPREAD_GET, "Retrieves the spread (tiling mode) for the given image object's fill."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_SIZE_SET, "Sets the size of the given image object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_SIZE_GET, "Retrieves the size of the given image object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_STRIDE_GET, "Retrieves the row stride of the given image object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_LOAD_ERROR_GET, "Retrieves a number representing any error."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_DATA_CONVERT, "Converts the raw image data of the given image object to the specified colorspace."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_DATA_SET, "Sets the raw image data of the given image object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_DATA_GET, "Get a pointer to the raw image data of the given image object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_PRELOAD, "Preload an image object's image data in the background."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_DATA_COPY_SET, "Replaces the raw image data of the given image object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_DATA_UPDATE_ADD, "Mark a sub-region of the given image object to be redrawn."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_ALPHA_SET, "Enable or disable alpha channel usage on the given image object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_ALPHA_GET, "Retrieve whether alpha channel data is being used on the given image object"),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_SMOOTH_SCALE_SET, "Sets whether to use high-quality image scaling algorithm on the given image object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_SMOOTH_SCALE_GET, "Retrieves whether the given image object is using high-quality image scaling algorithm."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_RELOAD, "Reload an image object's image data."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_SAVE, "Save the given image object's contents to an (image) file."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_PIXELS_IMPORT, "Import pixels from given source to a given canvas image object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_PIXELS_GET_CALLBACK_SET, "Set the callback function to get pixels from a canvas' image."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_PIXELS_DIRTY_SET, "Mark whether the given image object is dirty and needs to request its pixels."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_PIXELS_DIRTY_GET, "Retrieves whether the given image object is dirty (needs to be redrawn)."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_LOAD_DPI_SET, "Set the DPI resolution of an image object's source image."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_LOAD_DPI_GET, "Get the DPI resolution of a loaded image object in the canvas."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_LOAD_SIZE_SET, "Set the size of a given image object's source image, when loading it."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_LOAD_SIZE_GET, "Get the size of a given image object's source image, when loading it."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_LOAD_SCALE_DOWN_SET, "Set the scale down factor of a given image object's source image, when loading it."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_LOAD_SCALE_DOWN_GET, "get the scale down factor of a given image object's source image, when loading it."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_LOAD_REGION_SET, "Inform a given image object to load a selective region of its source image."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_LOAD_REGION_GET, "Retrieve the coordinates of a given image object's selective load region."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_LOAD_ORIENTATION_SET, "Define if the orientation information in the image file should be honored."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_LOAD_ORIENTATION_GET, "Get if the orientation information in the image file should be honored."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_COLORSPACE_SET, "Set the colorspace of a given image of the canvas."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_COLORSPACE_GET, "Get the colorspace of a given image of the canvas."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_VIDEO_SURFACE_SET, "Set the video surface linked to a given image of the canvas."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_VIDEO_SURFACE_GET, "Get the video surface linekd to a given image of the canvas."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_NATIVE_SURFACE_SET, "Set the native surface of a given image of the canvas."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_NATIVE_SURFACE_GET, "Get the native surface of a given image of the canvas."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_SCALE_HINT_SET, "Set the scale hint of a given image of the canvas."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_SCALE_HINT_GET, "Get the scale hint of a given image of the canvas."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_CONTENT_HINT_SET, "Set the content hint setting of a given image object of the canvas."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_CONTENT_HINT_GET, "Get the content hint setting of a given image object of the canvas."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_REGION_SUPPORT_GET, "Get the support state of a given image"),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_GET, "Check if an image object can be animated (have multiple frames)"),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_FRAME_COUNT_GET, "Get the total number of frames of the image object."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_LOOP_TYPE_GET, "Get the kind of looping the image object does."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_LOOP_COUNT_GET, "Get the number times the animation of the object loops."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_FRAME_DURATION_GET, "Get the duration of a sequence of frames."),
+ EO_OP_DESCRIPTION(EVAS_OBJ_IMAGE_SUB_ID_ANIMATED_FRAME_SET, "Set the frame to current frame of an image object."),
+ EO_OP_DESCRIPTION_SENTINEL
+};
+
+static const Eo_Class_Description class_desc = {
+ EO_VERSION,
+ "Evas_Object_Image",
+ EO_CLASS_TYPE_REGULAR,
+ EO_CLASS_DESCRIPTION_OPS(&EVAS_OBJ_IMAGE_BASE_ID, op_desc, EVAS_OBJ_IMAGE_SUB_ID_LAST),
+ NULL,
+ sizeof(Evas_Object_Image),
+ _class_constructor,
+ NULL
+};
+
+EO_DEFINE_CLASS(evas_object_image_class_get, &class_desc, EVAS_OBJ_CLASS, NULL);
+
/* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/
diff --git a/legacy/evas/src/lib/canvas/evas_object_inform.c b/legacy/evas/src/lib/canvas/evas_object_inform.c
index ef1328f627..848012d98b 100644
--- a/legacy/evas/src/lib/canvas/evas_object_inform.c
+++ b/legacy/evas/src/lib/canvas/evas_object_inform.c
@@ -4,84 +4,92 @@
/* local calls */
void
-evas_object_inform_call_show(Evas_Object *obj)
+evas_object_inform_call_show(Evas_Object *eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
_evas_object_event_new();
- evas_object_event_callback_call(obj, EVAS_CALLBACK_SHOW, NULL, _evas_event_counter);
- _evas_post_event_callback_call(obj->layer->evas);
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_SHOW, NULL, _evas_event_counter);
+ _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
}
void
-evas_object_inform_call_hide(Evas_Object *obj)
+evas_object_inform_call_hide(Evas_Object *eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
_evas_object_event_new();
- evas_object_event_callback_call(obj, EVAS_CALLBACK_HIDE, NULL, _evas_event_counter);
- _evas_post_event_callback_call(obj->layer->evas);
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_HIDE, NULL, _evas_event_counter);
+ _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
}
void
-evas_object_inform_call_move(Evas_Object *obj)
+evas_object_inform_call_move(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
{
_evas_object_event_new();
- evas_object_event_callback_call(obj, EVAS_CALLBACK_MOVE, NULL, _evas_event_counter);
- _evas_post_event_callback_call(obj->layer->evas);
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_MOVE, NULL, _evas_event_counter);
+ _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
}
void
-evas_object_inform_call_resize(Evas_Object *obj)
+evas_object_inform_call_resize(Evas_Object *eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
_evas_object_event_new();
- evas_object_event_callback_call(obj, EVAS_CALLBACK_RESIZE, NULL, _evas_event_counter);
- _evas_post_event_callback_call(obj->layer->evas);
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_RESIZE, NULL, _evas_event_counter);
+ _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
}
void
-evas_object_inform_call_restack(Evas_Object *obj)
+evas_object_inform_call_restack(Evas_Object *eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
_evas_object_event_new();
- evas_object_event_callback_call(obj, EVAS_CALLBACK_RESTACK, NULL, _evas_event_counter);
- _evas_post_event_callback_call(obj->layer->evas);
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_RESTACK, NULL, _evas_event_counter);
+ _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
}
void
-evas_object_inform_call_changed_size_hints(Evas_Object *obj)
+evas_object_inform_call_changed_size_hints(Evas_Object *eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
_evas_object_event_new();
- evas_object_event_callback_call(obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, NULL, _evas_event_counter);
- _evas_post_event_callback_call(obj->layer->evas);
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, NULL, _evas_event_counter);
+ _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
}
void
-evas_object_inform_call_image_preloaded(Evas_Object *obj)
+evas_object_inform_call_image_preloaded(Evas_Object *eo_obj)
{
- if (!_evas_object_image_preloading_get(obj)) return;
- _evas_object_image_preloading_check(obj);
- _evas_object_image_preloading_set(obj, 0);
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
+ if (!_evas_object_image_preloading_get(eo_obj)) return;
+ _evas_object_image_preloading_check(eo_obj);
+ _evas_object_image_preloading_set(eo_obj, 0);
_evas_object_event_new();
- evas_object_event_callback_call(obj, EVAS_CALLBACK_IMAGE_PRELOADED, NULL, _evas_event_counter);
- _evas_post_event_callback_call(obj->layer->evas);
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_IMAGE_PRELOADED, NULL, _evas_event_counter);
+ _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
}
void
-evas_object_inform_call_image_unloaded(Evas_Object *obj)
+evas_object_inform_call_image_unloaded(Evas_Object *eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
_evas_object_event_new();
- evas_object_event_callback_call(obj, EVAS_CALLBACK_IMAGE_UNLOADED, NULL, _evas_event_counter);
- _evas_post_event_callback_call(obj->layer->evas);
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_IMAGE_UNLOADED, NULL, _evas_event_counter);
+ _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
}
void
-evas_object_inform_call_image_resize(Evas_Object *obj)
+evas_object_inform_call_image_resize(Evas_Object *eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
_evas_object_event_new();
- evas_object_event_callback_call(obj, EVAS_CALLBACK_IMAGE_RESIZE, NULL, _evas_event_counter);
- _evas_post_event_callback_call(obj->layer->evas);
+ evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_IMAGE_RESIZE, NULL, _evas_event_counter);
+ _evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas);
}
diff --git a/legacy/evas/src/lib/canvas/evas_object_intercept.c b/legacy/evas/src/lib/canvas/evas_object_intercept.c
index 54f7265744..4c31cd8628 100644
--- a/legacy/evas/src/lib/canvas/evas_object_intercept.c
+++ b/legacy/evas/src/lib/canvas/evas_object_intercept.c
@@ -3,19 +3,21 @@
/* local calls */
-static void evas_object_intercept_init(Evas_Object *obj);
-static void evas_object_intercept_deinit(Evas_Object *obj);
+static void evas_object_intercept_init(Evas_Object *eo_obj);
+static void evas_object_intercept_deinit(Evas_Object *eo_obj);
static void
-evas_object_intercept_init(Evas_Object *obj)
+evas_object_intercept_init(Evas_Object *eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if (!obj->interceptors)
obj->interceptors = evas_mem_calloc(sizeof(Evas_Intercept_Func));
}
static void
-evas_object_intercept_deinit(Evas_Object *obj)
+evas_object_intercept_deinit(Evas_Object *eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if (!obj->interceptors) return;
if ((obj->interceptors->show.func) ||
(obj->interceptors->hide.func) ||
@@ -37,14 +39,16 @@ evas_object_intercept_deinit(Evas_Object *obj)
/* private calls */
void
-evas_object_intercept_cleanup(Evas_Object *obj)
+evas_object_intercept_cleanup(Evas_Object *eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
if (obj->interceptors) free(obj->interceptors);
}
int
-evas_object_intercept_call_show(Evas_Object *obj)
+evas_object_intercept_call_show(Evas_Object *eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
int ret;
if (!obj->interceptors) return 0;
@@ -52,14 +56,15 @@ evas_object_intercept_call_show(Evas_Object *obj)
obj->intercepted = EINA_TRUE;
ret = !!(obj->interceptors->show.func);
if (ret)
- obj->interceptors->show.func(obj->interceptors->show.data, obj);
+ obj->interceptors->show.func(obj->interceptors->show.data, eo_obj);
obj->intercepted = EINA_FALSE;
return ret;
}
int
-evas_object_intercept_call_hide(Evas_Object *obj)
+evas_object_intercept_call_hide(Evas_Object *eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
int ret;
if (!obj->interceptors) return 0;
@@ -67,13 +72,13 @@ evas_object_intercept_call_hide(Evas_Object *obj)
obj->intercepted = EINA_TRUE;
ret = !!(obj->interceptors->hide.func);
if (ret)
- obj->interceptors->hide.func(obj->interceptors->hide.data, obj);
+ obj->interceptors->hide.func(obj->interceptors->hide.data, eo_obj);
obj->intercepted = EINA_FALSE;
return ret;
}
int
-evas_object_intercept_call_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
+evas_object_intercept_call_move(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Evas_Coord x, Evas_Coord y)
{
int ret;
@@ -82,14 +87,15 @@ evas_object_intercept_call_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
obj->intercepted = EINA_TRUE;
ret = !!(obj->interceptors->move.func);
if (ret)
- obj->interceptors->move.func(obj->interceptors->move.data, obj, x, y);
+ obj->interceptors->move.func(obj->interceptors->move.data, eo_obj, x, y);
obj->intercepted = EINA_FALSE;
return ret;
}
int
-evas_object_intercept_call_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
+evas_object_intercept_call_resize(Evas_Object *eo_obj, Evas_Coord w, Evas_Coord h)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
int ret;
if (!obj->interceptors) return 0;
@@ -97,14 +103,15 @@ evas_object_intercept_call_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
obj->intercepted = EINA_TRUE;
ret = !!(obj->interceptors->resize.func);
if (ret)
- obj->interceptors->resize.func(obj->interceptors->resize.data, obj, w, h);
+ obj->interceptors->resize.func(obj->interceptors->resize.data, eo_obj, w, h);
obj->intercepted = EINA_FALSE;
return ret;
}
int
-evas_object_intercept_call_raise(Evas_Object *obj)
+evas_object_intercept_call_raise(Evas_Object *eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
int ret;
if (!obj->interceptors) return 0;
@@ -112,14 +119,15 @@ evas_object_intercept_call_raise(Evas_Object *obj)
obj->intercepted = EINA_TRUE;
ret = !!(obj->interceptors->raise.func);
if (ret)
- obj->interceptors->raise.func(obj->interceptors->raise.data, obj);
+ obj->interceptors->raise.func(obj->interceptors->raise.data, eo_obj);
obj->intercepted = EINA_FALSE;
return ret;
}
int
-evas_object_intercept_call_lower(Evas_Object *obj)
+evas_object_intercept_call_lower(Evas_Object *eo_obj)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
int ret;
if (!obj->interceptors) return 0;
@@ -127,14 +135,15 @@ evas_object_intercept_call_lower(Evas_Object *obj)
obj->intercepted = EINA_TRUE;
ret = !!(obj->interceptors->lower.func);
if (ret)
- obj->interceptors->lower.func(obj->interceptors->lower.data, obj);
+ obj->interceptors->lower.func(obj->interceptors->lower.data, eo_obj);
obj->intercepted = EINA_FALSE;
return ret;
}
int
-evas_object_intercept_call_stack_above(Evas_Object *obj, Evas_Object *above)
+evas_object_intercept_call_stack_above(Evas_Object *eo_obj, Evas_Object *above)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
int ret;
if (!obj->interceptors) return 0;
@@ -142,14 +151,15 @@ evas_object_intercept_call_stack_above(Evas_Object *obj, Evas_Object *above)
obj->intercepted = EINA_TRUE;
ret = !!(obj->interceptors->stack_above.func);
if (ret)
- obj->interceptors->stack_above.func(obj->interceptors->stack_above.data, obj, above);
+ obj->interceptors->stack_above.func(obj->interceptors->stack_above.data, eo_obj, above);
obj->intercepted = EINA_FALSE;
return ret;
}
int
-evas_object_intercept_call_stack_below(Evas_Object *obj, Evas_Object *below)
+evas_object_intercept_call_stack_below(Evas_Object *eo_obj, Evas_Object *below)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
int ret;
if (!obj->interceptors) return 0;
@@ -157,14 +167,15 @@ evas_object_intercept_call_stack_below(Evas_Object *obj, Evas_Object *below)
obj->intercepted = EINA_TRUE;
ret = !!(obj->interceptors->stack_below.func);
if (ret)
- obj->interceptors->stack_below.func(obj->interceptors->stack_below.data, obj, below);
+ obj->interceptors->stack_below.func(obj->interceptors->stack_below.data, eo_obj, below);
obj->intercepted = EINA_FALSE;
return ret;
}
int
-evas_object_intercept_call_layer_set(Evas_Object *obj, int l)
+evas_object_intercept_call_layer_set(Evas_Object *eo_obj, int l)
{
+ Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
int ret;
if (!obj->interceptors) return 0;
@@ -172,14 +183,15 @@ evas_object_intercept_call_layer_set(Evas_Object *obj, int l)
obj->intercepted = EINA_TRUE;
ret = !!(obj->interceptors->layer_set.func);
if (ret)
- obj->interceptors->layer_set.func(obj->interceptors->layer_set.data, obj, l);
+ obj->interceptors->layer_set.func(obj->interceptors->layer_set.data, eo_obj, l);
obj->intercepted = EINA_FALSE;
return ret;
}
int
-evas_object_intercept_call_color_set(Evas_Object *obj, int r, int g, int b, int a)
+evas_object_intercept_call_color_set(Evas_Object *eo_obj, int r, int g, int b, int