1 #ifndef ELM_WIDGET_PHOTO_H 2 #define ELM_WIDGET_PHOTO_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-photo-class The Elementary Photo Class 17 * 18 * Elementary, besides having the @ref Photo widget, exposes its 19 * foundation -- the Elementary Photo Class -- in order to create 20 * other widgets which are a photo with some more logic on top. 21 */ 22 23 /** 24 * Base widget smart data extended with photo instance data. 25 */ 26 typedef struct _Elm_Photo_Data Elm_Photo_Data; 27 28 struct _Elm_Photo_Data 29 { 30 Evas_Object *icon; 31 int size; 32 Ecore_Timer *long_press_timer; 33 34 struct 35 { 36 struct 37 { 38 const char *path; 39 const char *key; 40 } file, thumb; 41 } thumb; 42 43 Eina_Bool fill_inside: 1; 44 Eina_Bool drag_started: 1; /**< set true when drag started */ 45 }; 46 47 /** 48 * @} 49 */ 50 51 #define ELM_PHOTO_DATA_GET(o, sd) \ 52 Elm_Photo_Data * sd = efl_data_scope_get(o, ELM_PHOTO_CLASS) 53 54 #define ELM_PHOTO_DATA_GET_OR_RETURN(o, ptr) \ 55 ELM_PHOTO_DATA_GET(o, ptr); \ 56 if (EINA_UNLIKELY(!ptr)) \ 57 { \ 58 ERR("No widget data for object %p (%s)", \ 59 o, evas_object_type_get(o)); \ 60 return; \ 61 } 62 63 #define ELM_PHOTO_DATA_GET_OR_RETURN_VAL(o, ptr, val) \ 64 ELM_PHOTO_DATA_GET(o, ptr); \ 65 if (EINA_UNLIKELY(!ptr)) \ 66 { \ 67 ERR("No widget data for object %p (%s)", \ 68 o, evas_object_type_get(o)); \ 69 return val; \ 70 } 71 72 #define ELM_PHOTO_CHECK(obj) \ 73 if (EINA_UNLIKELY(!efl_isa((obj), ELM_PHOTO_CLASS))) \ 74 return 75 76 #endif 77