1 #ifndef EFL_UI_WIDGET_FLIP_H 2 #define EFL_UI_WIDGET_FLIP_H 3 4 #include "Elementary.h" 5 6 /* DO NOT USE THIS HEADER UNLESS YOU ARE PREPARED FOR BREAKING OF YOUR 7 * CODE. THIS IS ELEMENTARY'S INTERNAL WIDGET API (for now) AND IS NOT 8 * FINAL. CALL elm_widget_api_check(ELM_INTERNAL_API_VERSION) TO CHECK 9 * IT AT RUNTIME. 10 */ 11 12 /** 13 * @addtogroup Widget 14 * @{ 15 * 16 * @section elm-flip-class The Elementary Flip Class 17 * 18 * Elementary, besides having the @ref Flip widget, exposes its 19 * foundation -- the Elementary Flip Class -- in order to create other 20 * widgets which are a flip with some more logic on top. 21 */ 22 23 typedef struct _Slice Slice; 24 25 /** 26 * Base widget smart data extended with flip instance data. 27 */ 28 typedef struct _Efl_Ui_Flip_Data Efl_Ui_Flip_Data; 29 struct _Efl_Ui_Flip_Data 30 { 31 Evas_Object *obj; 32 Evas_Object *clip; 33 Evas_Object *event[4]; 34 struct 35 { 36 Evas_Object *content, *clip; 37 } front, back; 38 39 Eina_List *content_list; 40 41 Ecore_Animator *animator; 42 double start, len; 43 Ecore_Job *job; 44 Evas_Coord down_x, down_y, x, y, ox, oy, w, h; 45 Efl_Ui_Flip_Interaction intmode; 46 Elm_Flip_Mode mode; 47 int dir; 48 double dir_hitsize[4]; 49 Eina_Bool dir_enabled[4]; 50 int slices_w, slices_h; 51 Slice **slices, **slices2; 52 53 Eina_Bool state : 1; 54 Eina_Bool next_state : 1; 55 Eina_Bool mouse_down : 1; 56 Eina_Bool finish : 1; 57 Eina_Bool started : 1; 58 Eina_Bool backflip : 1; 59 Eina_Bool pageflip : 1; 60 Eina_Bool manual : 1; 61 }; 62 63 typedef struct _Vertex2 Vertex2; 64 typedef struct _Vertex3 Vertex3; 65 66 struct _Slice 67 { 68 Evas_Object *obj; 69 double u[4], v[4], x[4], y[4], z[4]; 70 }; 71 72 struct _Vertex2 73 { 74 double x, y; 75 }; 76 77 struct _Vertex3 78 { 79 double x, y, z; 80 }; 81 82 /** 83 * @} 84 */ 85 86 #define EFL_UI_FLIP_DATA_GET(o, sd) \ 87 Efl_Ui_Flip_Data * sd = efl_data_scope_get(o, EFL_UI_FLIP_CLASS) 88 89 #define EFL_UI_FLIP_DATA_GET_OR_RETURN(o, ptr) \ 90 EFL_UI_FLIP_DATA_GET(o, ptr); \ 91 if (EINA_UNLIKELY(!ptr)) \ 92 { \ 93 ERR("No widget data for object %p (%s)", \ 94 o, evas_object_type_get(o)); \ 95 return; \ 96 } 97 98 #define EFL_UI_FLIP_DATA_GET_OR_RETURN_VAL(o, ptr, val) \ 99 EFL_UI_FLIP_DATA_GET(o, ptr); \ 100 if (EINA_UNLIKELY(!ptr)) \ 101 { \ 102 ERR("No widget data for object %p (%s)", \ 103 o, evas_object_type_get(o)); \ 104 return val; \ 105 } 106 107 #define EFL_UI_FLIP_CHECK(obj) \ 108 if (EINA_UNLIKELY(!efl_isa((obj), EFL_UI_FLIP_CLASS))) \ 109 return 110 111 #endif 112