1 #ifndef ELM_WIDGET_SLIDESHOW_H 2 #define ELM_WIDGET_SLIDESHOW_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-slideshow-class The Elementary Slideshow Class 17 * 18 * Elementary, besides having the @ref Slideshow widget, exposes its 19 * foundation -- the Elementary Slideshow Class -- in order to create other 20 * widgets which are a slideshow with some more logic on top. 21 */ 22 23 /** 24 * Base layout smart data extended with slideshow instance data. 25 */ 26 typedef struct _Elm_Slideshow_Data Elm_Slideshow_Data; 27 typedef struct _Elm_Slideshow_Item_Data Elm_Slideshow_Item_Data; 28 29 struct _Elm_Slideshow_Item_Data 30 { 31 Elm_Widget_Item_Data *base; 32 33 Eina_List *l, *l_built; 34 35 const Elm_Slideshow_Item_Class *itc; 36 }; 37 38 struct _Elm_Slideshow_Data 39 { 40 // list of Elm_Slideshow_Item* 41 Eina_List *items; 42 Eina_List *items_built; 43 44 Elm_Slideshow_Item_Data *current; 45 Elm_Slideshow_Item_Data *previous; 46 47 Eina_List *transitions; 48 const char *transition; 49 50 int count_item_pre_before; 51 int count_item_pre_after; 52 Ecore_Timer *timer; 53 double timeout; 54 Eina_Bool loop : 1; 55 56 struct 57 { 58 const char *current; 59 Eina_List *list; //list of const char * 60 } layout; 61 }; 62 63 /** 64 * @} 65 */ 66 67 #define ELM_SLIDESHOW_DATA_GET(o, sd) \ 68 Elm_Slideshow_Data * sd = efl_data_scope_get(o, ELM_SLIDESHOW_CLASS) 69 70 #define ELM_SLIDESHOW_DATA_GET_OR_RETURN(o, ptr) \ 71 ELM_SLIDESHOW_DATA_GET(o, ptr); \ 72 if (EINA_UNLIKELY(!ptr)) \ 73 { \ 74 ERR("No widget data for object %p (%s)", \ 75 o, evas_object_type_get(o)); \ 76 return; \ 77 } 78 79 #define ELM_SLIDESHOW_DATA_GET_OR_RETURN_VAL(o, ptr, val) \ 80 ELM_SLIDESHOW_DATA_GET(o, ptr); \ 81 if (EINA_UNLIKELY(!ptr)) \ 82 { \ 83 ERR("No widget data for object %p (%s)", \ 84 o, evas_object_type_get(o)); \ 85 return val; \ 86 } 87 88 #define ELM_SLIDESHOW_CHECK(obj) \ 89 if (EINA_UNLIKELY(!efl_isa((obj), ELM_SLIDESHOW_CLASS))) \ 90 return 91 92 #define ELM_SLIDESHOW_ITEM_CHECK(obj) \ 93 if (EINA_UNLIKELY(!efl_isa(EO_OBJ(obj), ELM_SLIDESHOW_ITEM_CLASS))) \ 94 return 95 96 #define ELM_SLIDESHOW_ITEM_CHECK_OR_RETURN(obj, ...) \ 97 if (EINA_UNLIKELY(!efl_isa(EO_OBJ(obj), ELM_SLIDESHOW_ITEM_CLASS))) \ 98 return __VA_ARGS__; 99 100 #define ELM_SLIDESHOW_ITEM_DATA_GET(o, sd) \ 101 Elm_Slideshow_Item_Data *sd = efl_data_scope_get(o, ELM_SLIDESHOW_ITEM_CLASS) 102 103 #endif 104