1 #include <Elementary.h>
3 #include "elm_widget_icon.h"
6 #define NON_EXISTING (void *)-1
7 static const char *icon_theme = NULL;
10 EAPI const char ELM_ICON_SMART_NAME[] = "elm_icon";
12 #ifdef HAVE_ELEMENTARY_ETHUMB
13 static Eina_List *_elm_icon_retry = NULL;
14 static int _icon_pending_request = 0;
17 static const char SIG_THUMB_DONE[] = "thumb,done";
18 static const char SIG_THUMB_ERROR[] = "thumb,error";
19 static const Evas_Smart_Cb_Description _smart_callbacks[] = {
21 {SIG_THUMB_ERROR, ""},
25 EVAS_SMART_SUBCLASS_NEW
26 (ELM_ICON_SMART_NAME, _elm_icon, Elm_Icon_Smart_Class,
27 Elm_Image_Smart_Class, elm_image_smart_class_get, _smart_callbacks);
29 /* FIXME: move this code to ecore */
32 _path_is_absolute(const char *path)
34 //TODO: Check if this works with all absolute paths in windows
35 return (isalpha(*path)) && (*(path + 1) == ':') &&
36 ((*(path + 2) == '\\') || (*(path + 2) == '/'));
41 _path_is_absolute(const char *path)
49 _icon_size_min_get(Evas_Object *icon)
53 elm_image_object_size_get(icon, &size, NULL);
55 return (size < 16) ? 16 : size;
58 #ifdef HAVE_ELEMENTARY_ETHUMB
60 _icon_thumb_stop(Elm_Icon_Smart_Data *sd,
63 if (sd->thumb.request)
65 ethumb_client_thumb_async_cancel(ethumbd, sd->thumb.request);
66 sd->thumb.request = NULL;
67 _icon_pending_request--;
72 _elm_icon_retry = eina_list_remove(_elm_icon_retry, sd);
73 sd->thumb.retry = EINA_FALSE;
78 _icon_thumb_display(Elm_Icon_Smart_Data *sd)
80 Eina_Bool ret = EINA_FALSE;
82 if (sd->thumb.format == ETHUMB_THUMB_EET)
85 const char **ext, *ptr;
86 static const char *extensions[] =
88 ".avi", ".mp4", ".ogv", ".mov", ".mpg", ".wmv", NULL
91 prefix_size = eina_stringshare_strlen(sd->thumb.file.path) - 4;
94 ptr = sd->thumb.file.path + prefix_size;
95 for (ext = extensions; *ext; ++ext)
96 if (!strcasecmp(ptr, *ext))
98 sd->is_video = EINA_TRUE;
103 ret = elm_image_file_set
104 (ELM_WIDGET_DATA(sd)->obj, sd->thumb.thumb.path,
105 sd->thumb.thumb.key);
107 sd->is_video = EINA_FALSE;
111 ret = elm_image_file_set
112 (ELM_WIDGET_DATA(sd)->obj, sd->thumb.thumb.path, sd->thumb.thumb.key);
115 evas_object_smart_callback_call
116 (ELM_WIDGET_DATA(sd)->obj, SIG_THUMB_DONE, NULL);
118 evas_object_smart_callback_call
119 (ELM_WIDGET_DATA(sd)->obj, SIG_THUMB_ERROR, NULL);
125 _icon_thumb_retry(Elm_Icon_Smart_Data *sd)
127 return _icon_thumb_display(sd);
131 _icon_thumb_cleanup(Ethumb_Client *ethumbd)
134 Elm_Icon_Smart_Data *sd;
136 EINA_LIST_FOREACH_SAFE(_elm_icon_retry, l, ll, sd)
137 if (_icon_thumb_retry(sd))
139 _elm_icon_retry = eina_list_remove_list(_elm_icon_retry, l);
140 sd->thumb.retry = EINA_FALSE;
143 if (_icon_pending_request == 0)
144 EINA_LIST_FREE (_elm_icon_retry, sd)
145 _icon_thumb_stop(sd, ethumbd);
149 _icon_thumb_finish(Elm_Icon_Smart_Data *sd,
150 Ethumb_Client *ethumbd)
152 const char *file = NULL, *group = NULL;
155 elm_image_file_get(ELM_WIDGET_DATA(sd)->obj, &file, &group);
156 file = eina_stringshare_ref(file);
157 group = eina_stringshare_ref(group);
159 ret = _icon_thumb_display(sd);
163 if (!sd->thumb.retry)
165 _elm_icon_retry = eina_list_append(_elm_icon_retry, sd);
166 sd->thumb.retry = EINA_TRUE;
169 /* Back to previous image */
170 elm_image_file_set(ELM_WIDGET_DATA(sd)->obj, file, group);
173 _icon_thumb_cleanup(ethumbd);
175 eina_stringshare_del(file);
176 eina_stringshare_del(group);
180 _icon_thumb_done(Ethumb_Client *client,
181 const char *thumb_path,
182 const char *thumb_key,
185 Elm_Icon_Smart_Data *sd = data;
187 if (EINA_UNLIKELY(!sd->thumb.request))
189 ERR("Something odd happened with a thumbnail request");
193 _icon_pending_request--;
194 sd->thumb.request = NULL;
196 eina_stringshare_replace(&sd->thumb.thumb.path, thumb_path);
197 eina_stringshare_replace(&sd->thumb.thumb.key, thumb_key);
198 sd->thumb.format = ethumb_client_format_get(client);
200 _icon_thumb_finish(sd, client);
204 _icon_thumb_error(Ethumb_Client *client,
207 Elm_Icon_Smart_Data *sd = data;
209 if (EINA_UNLIKELY(!sd->thumb.request))
211 ERR("Something odd happened with a thumbnail request");
215 _icon_pending_request--;
216 sd->thumb.request = NULL;
218 ERR("could not generate thumbnail for %s (key: %s)",
219 sd->thumb.file.path, sd->thumb.file.key);
221 evas_object_smart_callback_call(ELM_WIDGET_DATA(sd)->obj, SIG_THUMB_ERROR, NULL);
223 _icon_thumb_cleanup(client);
227 _icon_thumb_apply(Elm_Icon_Smart_Data *sd)
229 Ethumb_Client *ethumbd;
232 ethumbd = elm_thumb_ethumb_client_get();
234 _icon_thumb_stop(sd, ethumbd);
236 if (!sd->thumb.file.path) return;
238 _icon_pending_request++;
239 if (!ethumb_client_file_set
240 (ethumbd, sd->thumb.file.path, sd->thumb.file.key)) return;
242 min_size = _icon_size_min_get(ELM_WIDGET_DATA(sd)->obj);
243 ethumb_client_size_set(ethumbd, min_size, min_size);
245 sd->thumb.request = ethumb_client_thumb_async_get
246 (ethumbd, _icon_thumb_done, _icon_thumb_error, sd);
250 _icon_thumb_apply_cb(void *data,
254 Elm_Icon_Smart_Data *sd = data;
256 _icon_thumb_apply(sd);
258 return ECORE_CALLBACK_RENEW;
265 _icon_freedesktop_set(Evas_Object *obj,
269 _icon_freedesktop_set(Evas_Object * obj __UNUSED__,
270 const char *name __UNUSED__,
277 ELM_ICON_DATA_GET(obj, sd);
281 if (icon_theme == NON_EXISTING) return EINA_FALSE;
285 Efreet_Icon_Theme *theme;
286 /* TODO: Listen for EFREET_EVENT_ICON_CACHE_UPDATE */
287 theme = efreet_icon_theme_find(getenv("E_ICON_THEME"));
291 static const char *themes[] = {
292 "gnome", "Human", "oxygen", "hicolor", NULL
294 for (itr = themes; *itr; itr++)
296 theme = efreet_icon_theme_find(*itr);
303 icon_theme = NON_EXISTING;
307 icon_theme = eina_stringshare_add(theme->name.internal);
309 path = efreet_icon_path_find(icon_theme, name, size);
310 sd->freedesktop.use = !!path;
311 if (sd->freedesktop.use)
313 sd->freedesktop.requested_size = size;
314 elm_image_file_set(obj, path, NULL);
322 _elm_icon_smart_sizing_eval(Evas_Object *obj)
326 ELM_ICON_DATA_GET(obj, sd);
328 if (sd->in_eval) return;
331 elm_image_object_size_get(obj, &w, &h);
334 if (sd->freedesktop.use && sd->stdicon)
337 /* This icon has been set to a freedesktop icon, and the requested
338 appears to have a different size than the requested size, so try to
339 request another, higher resolution, icon.
340 FIXME: Find a better heuristic to determine if there should be
341 an icon with a different resolution. */
342 size = ((w / 16) + 1) * 16;
343 _icon_freedesktop_set(obj, sd->stdicon, size);
347 _elm_icon_parent_sc->sizing_eval(obj);
353 _edje_signal_callback(void *data,
354 Evas_Object *obj __UNUSED__,
355 const char *emission,
358 Edje_Signal_Data *esd = data;
360 esd->func(esd->data, esd->obj, emission, source);
364 _edje_signals_free(Elm_Icon_Smart_Data *sd)
366 Edje_Signal_Data *esd;
368 EINA_LIST_FREE (sd->edje_signals, esd)
370 edje_object_signal_callback_del_full
371 (ELM_IMAGE_DATA(sd)->img, esd->emission, esd->source,
372 _edje_signal_callback, esd);
373 eina_stringshare_del(esd->emission);
374 eina_stringshare_del(esd->source);
380 _elm_icon_smart_file_set(Evas_Object *obj,
386 ELM_ICON_DATA_GET(obj, sd);
388 EINA_SAFETY_ON_NULL_RETURN_VAL(file, EINA_FALSE);
390 _edje_signals_free(sd);
393 if (!sd->freedesktop.use)
395 if (sd->stdicon) eina_stringshare_del(sd->stdicon);
400 if (!sd->is_video) return _elm_icon_parent_sc->file_set(obj, file, key);
402 /* parent's edje file setting path replicated here (we got .eet
403 * extension, so bypassing it) */
404 if (ELM_IMAGE_DATA(sd)->prev_img)
405 evas_object_del(ELM_IMAGE_DATA(sd)->prev_img);
406 ELM_IMAGE_DATA(sd)->prev_img = NULL;
408 if (!ELM_IMAGE_DATA(sd)->edje)
410 pclip = evas_object_clip_get(ELM_IMAGE_DATA(sd)->img);
411 if (ELM_IMAGE_DATA(sd)->img) evas_object_del(ELM_IMAGE_DATA(sd)->img);
413 /* Edje object instead */
414 ELM_IMAGE_DATA(sd)->img = edje_object_add(evas_object_evas_get(obj));
415 evas_object_smart_member_add(ELM_IMAGE_DATA(sd)->img, obj);
416 if (ELM_IMAGE_DATA(sd)->show)
417 evas_object_show(ELM_IMAGE_DATA(sd)->img);
418 evas_object_clip_set(ELM_IMAGE_DATA(sd)->img, pclip);
421 ELM_IMAGE_DATA(sd)->edje = EINA_TRUE;
422 if (!edje_object_file_set(ELM_IMAGE_DATA(sd)->img, file, key))
424 ERR("failed to set edje file '%s', group '%s': %s", file, key,
426 (edje_object_load_error_get(ELM_IMAGE_DATA(sd)->img)));
430 evas_object_move(ELM_IMAGE_DATA(sd)->img, ELM_IMAGE_DATA(sd)->img_x,
431 ELM_IMAGE_DATA(sd)->img_y);
432 evas_object_resize(ELM_IMAGE_DATA(sd)->img, ELM_IMAGE_DATA(sd)->img_w,
433 ELM_IMAGE_DATA(sd)->img_h);
439 _elm_icon_smart_memfile_set(Evas_Object *obj,
445 ELM_ICON_DATA_GET(obj, sd);
449 EINA_SAFETY_ON_NULL_RETURN_VAL(img, EINA_FALSE);
450 EINA_SAFETY_ON_TRUE_RETURN_VAL(!size, EINA_FALSE);
451 eina_stringshare_del(sd->stdicon);
454 _edje_signals_free(sd);
456 ret = _elm_icon_parent_sc->memfile_set(obj, img, size, format, key);
462 _elm_icon_smart_theme(Evas_Object *obj)
464 ELM_ICON_DATA_GET(obj, sd);
467 _elm_theme_object_icon_set(obj, sd->stdicon, elm_widget_style_get(obj));
469 if (!ELM_WIDGET_CLASS(_elm_icon_parent_sc)->theme(obj))
476 _icon_standard_set(Evas_Object *obj,
479 ELM_ICON_DATA_GET(obj, sd);
481 if (_elm_theme_object_icon_set(obj, name, "default"))
484 /* TODO: elm_unneed_efreet() */
485 sd->freedesktop.use = EINA_FALSE;
495 _icon_file_set(Elm_Icon_Smart_Data *sd,
499 _icon_file_set(Elm_Icon_Smart_Data * sd __UNUSED__,
504 if (elm_image_file_set(obj, path, NULL))
507 /* TODO: elm_unneed_efreet() */
508 sd->freedesktop.use = EINA_FALSE;
516 _elm_icon_standard_set(Evas_Object *obj,
523 ELM_ICON_DATA_GET(obj, sd);
525 /* try locating the icon using the specified lookup order */
526 switch (sd->lookup_order)
528 case ELM_ICON_LOOKUP_FDO:
529 ret = _icon_freedesktop_set(obj, name, _icon_size_min_get(obj));
530 if (ret && fdo) *fdo = EINA_TRUE;
533 case ELM_ICON_LOOKUP_THEME:
534 ret = _icon_standard_set(obj, name);
537 case ELM_ICON_LOOKUP_THEME_FDO:
538 ret = _icon_standard_set(obj, name);
541 ret = _icon_freedesktop_set(obj, name, _icon_size_min_get(obj));
542 if (ret && fdo) *fdo = EINA_TRUE;
546 case ELM_ICON_LOOKUP_FDO_THEME:
548 ret = _icon_freedesktop_set(obj, name, _icon_size_min_get(obj));
550 ret = _icon_standard_set(obj, name);
558 eina_stringshare_replace(&sd->stdicon, name);
559 _elm_icon_smart_sizing_eval(obj);
563 if (_path_is_absolute(name))
564 return _icon_file_set(sd, obj, name);
566 /* if that fails, see if icon name is in the format size/name. if so,
567 try locating a fallback without the size specification */
568 if (!(tmp = strchr(name, '/'))) return EINA_FALSE;
570 if (*tmp) return elm_icon_standard_set(obj, tmp);
576 _elm_icon_standard_resize_cb(void *data,
579 void *event_info __UNUSED__)
581 Elm_Icon_Smart_Data *sd = data;
582 const char *refup = eina_stringshare_ref(sd->stdicon);
583 Eina_Bool fdo = EINA_FALSE;
585 if (!_elm_icon_standard_set(obj, sd->stdicon, &fdo) || (!fdo))
586 evas_object_event_callback_del_full
587 (obj, EVAS_CALLBACK_RESIZE, _elm_icon_standard_resize_cb, sd);
588 eina_stringshare_del(refup);
591 #ifdef HAVE_ELEMENTARY_ETHUMB
593 _elm_icon_thumb_resize_cb(void *data,
596 void *event_info __UNUSED__)
598 Elm_Icon_Smart_Data *sd = data;
600 if (sd->thumb.file.path)
601 elm_icon_thumb_set(obj, sd->thumb.file.path, sd->thumb.file.key);
607 _elm_icon_smart_add(Evas_Object *obj)
609 EVAS_SMART_DATA_ALLOC(obj, Elm_Icon_Smart_Data);
611 ELM_WIDGET_CLASS(_elm_icon_parent_sc)->base.add(obj);
613 priv->lookup_order = ELM_ICON_LOOKUP_THEME_FDO;
615 #ifdef HAVE_ELEMENTARY_ETHUMB
616 priv->thumb.request = NULL;
621 _elm_icon_smart_del(Evas_Object *obj)
623 #ifdef HAVE_ELEMENTARY_ETHUMB
624 Ethumb_Client *ethumbd;
627 ELM_ICON_DATA_GET(obj, sd);
629 if (sd->stdicon) eina_stringshare_del(sd->stdicon);
631 #ifdef HAVE_ELEMENTARY_ETHUMB
632 ethumbd = elm_thumb_ethumb_client_get();
633 _icon_thumb_stop(sd, ethumbd);
635 eina_stringshare_del(sd->thumb.file.path);
636 eina_stringshare_del(sd->thumb.file.key);
637 eina_stringshare_del(sd->thumb.thumb.path);
638 eina_stringshare_del(sd->thumb.thumb.key);
641 ecore_event_handler_del(sd->thumb.eeh);
644 _edje_signals_free(sd);
646 ELM_WIDGET_CLASS(_elm_icon_parent_sc)->base.del(obj);
649 /* WARNING: to be deprecated */
651 _elm_icon_signal_emit(Evas_Object *obj,
652 const char *emission,
655 ELM_ICON_DATA_GET(obj, sd);
657 if (!ELM_IMAGE_DATA(sd)->edje) return;
659 edje_object_signal_emit(ELM_IMAGE_DATA(sd)->img, emission, source);
662 /* WARNING: to be deprecated */
664 _elm_icon_signal_callback_add(Evas_Object *obj,
665 const char *emission,
667 Edje_Signal_Cb func_cb,
670 Edje_Signal_Data *esd;
672 ELM_ICON_DATA_GET(obj, sd);
674 if (!ELM_IMAGE_DATA(sd)->edje) return;
676 esd = ELM_NEW(Edje_Signal_Data);
681 esd->emission = eina_stringshare_add(emission);
682 esd->source = eina_stringshare_add(source);
685 eina_list_append(sd->edje_signals, esd);
687 edje_object_signal_callback_add
688 (ELM_IMAGE_DATA(sd)->img, emission, source, _edje_signal_callback, esd);
691 /* WARNING: to be deprecated */
693 _elm_icon_signal_callback_del(Evas_Object *obj,
694 const char *emission,
696 Edje_Signal_Cb func_cb)
698 Edje_Signal_Data *esd = NULL;
702 ELM_ICON_DATA_GET(obj, sd);
704 if (!ELM_IMAGE_DATA(sd)->edje) return NULL;
706 EINA_LIST_FOREACH(sd->edje_signals, l, esd)
708 if ((esd->func == func_cb) && (!strcmp(esd->emission, emission)) &&
709 (!strcmp(esd->source, source)))
711 sd->edje_signals = eina_list_remove_list(sd->edje_signals, l);
712 eina_stringshare_del(esd->emission);
713 eina_stringshare_del(esd->source);
716 edje_object_signal_callback_del_full
717 (ELM_IMAGE_DATA(sd)->img, emission, source,
718 _edje_signal_callback, esd);
720 return data; /* stop at 1st match */
728 _elm_icon_smart_set_user(Elm_Icon_Smart_Class *sc)
730 ELM_WIDGET_CLASS(sc)->base.add = _elm_icon_smart_add;
731 ELM_WIDGET_CLASS(sc)->base.del = _elm_icon_smart_del;
733 ELM_WIDGET_CLASS(sc)->theme = _elm_icon_smart_theme;
735 ELM_IMAGE_CLASS(sc)->file_set = _elm_icon_smart_file_set;
736 ELM_IMAGE_CLASS(sc)->memfile_set = _elm_icon_smart_memfile_set;
737 ELM_IMAGE_CLASS(sc)->sizing_eval = _elm_icon_smart_sizing_eval;
740 EAPI const Elm_Icon_Smart_Class *
741 elm_icon_smart_class_get(void)
743 static Elm_Icon_Smart_Class _sc =
744 ELM_ICON_SMART_CLASS_INIT_NAME_VERSION(ELM_ICON_SMART_NAME);
745 static const Elm_Icon_Smart_Class *class = NULL;
746 Evas_Smart_Class *esc = (Evas_Smart_Class *)&_sc;
748 if (class) return class;
750 _elm_icon_smart_set(&_sc);
751 esc->callbacks = _smart_callbacks;
758 elm_icon_add(Evas_Object *parent)
762 EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
764 obj = elm_widget_add(_elm_icon_smart_class_new(), parent);
765 if (!obj) return NULL;
767 if (!elm_widget_sub_object_add(parent, obj))
768 ERR("could not add %p as sub object of %p", obj, parent);
770 //Tizen Only: This should be removed when eo is applied.
771 ELM_WIDGET_DATA_GET(obj, sd);
772 sd->on_create = EINA_FALSE;
778 elm_icon_memfile_set(Evas_Object *obj,
784 ELM_ICON_CHECK(obj) EINA_FALSE;
786 return elm_image_memfile_set(obj, img, size, format, key);
790 elm_icon_file_set(Evas_Object *obj,
794 ELM_ICON_CHECK(obj) EINA_FALSE;
796 return elm_image_file_set(obj, file, group);
800 elm_icon_file_get(const Evas_Object *obj,
806 elm_image_file_get(obj, file, group);
810 elm_icon_thumb_set(Evas_Object *obj,
816 #ifdef HAVE_ELEMENTARY_ETHUMB
817 ELM_ICON_DATA_GET(obj, sd);
819 evas_object_event_callback_del_full
820 (obj, EVAS_CALLBACK_RESIZE, _elm_icon_standard_resize_cb, sd);
821 evas_object_event_callback_del_full
822 (obj, EVAS_CALLBACK_RESIZE, _elm_icon_thumb_resize_cb, sd);
824 evas_object_event_callback_add
825 (obj, EVAS_CALLBACK_RESIZE, _elm_icon_thumb_resize_cb, sd);
827 eina_stringshare_replace(&sd->thumb.file.path, file);
828 eina_stringshare_replace(&sd->thumb.file.key, group);
830 if (elm_thumb_ethumb_client_connected_get())
832 _icon_thumb_apply(sd);
838 sd->thumb.eeh = ecore_event_handler_add
839 (ELM_ECORE_EVENT_ETHUMB_CONNECT, _icon_thumb_apply_cb, sd);
849 elm_icon_animated_available_get(const Evas_Object *obj)
851 ELM_ICON_CHECK(obj) EINA_FALSE;
853 return elm_image_animated_available_get(obj);
857 elm_icon_animated_set(Evas_Object *obj,
862 return elm_image_animated_set(obj, anim);
866 elm_icon_animated_get(const Evas_Object *obj)
868 ELM_ICON_CHECK(obj) EINA_FALSE;
870 return elm_image_animated_get(obj);
874 elm_icon_animated_play_set(Evas_Object *obj,
879 elm_image_animated_play_set(obj, play);
883 elm_icon_animated_play_get(const Evas_Object *obj)
885 ELM_ICON_CHECK(obj) EINA_FALSE;
887 return elm_image_animated_play_get(obj);
891 elm_icon_standard_set(Evas_Object *obj,
894 ELM_ICON_CHECK(obj) EINA_FALSE;
895 ELM_ICON_DATA_GET(obj, sd);
897 Eina_Bool fdo = EINA_FALSE;
900 if (!name) return EINA_FALSE;
902 evas_object_event_callback_del_full
903 (obj, EVAS_CALLBACK_RESIZE, _elm_icon_standard_resize_cb, sd);
905 ret = _elm_icon_standard_set(obj, name, &fdo);
908 evas_object_event_callback_add
909 (obj, EVAS_CALLBACK_RESIZE, _elm_icon_standard_resize_cb, sd);
915 elm_icon_standard_get(const Evas_Object *obj)
917 ELM_ICON_CHECK(obj) NULL;
918 ELM_ICON_DATA_GET(obj, sd);
924 elm_icon_order_lookup_set(Evas_Object *obj,
925 Elm_Icon_Lookup_Order order)
928 ELM_ICON_DATA_GET(obj, sd);
930 sd->lookup_order = order;
933 EAPI Elm_Icon_Lookup_Order
934 elm_icon_order_lookup_get(const Evas_Object *obj)
936 ELM_ICON_CHECK(obj) ELM_ICON_LOOKUP_THEME_FDO;
937 ELM_ICON_DATA_GET(obj, sd);
939 return sd->lookup_order;
943 elm_icon_smooth_set(Evas_Object *obj,
948 elm_image_smooth_set(obj, smooth);
952 elm_icon_smooth_get(const Evas_Object *obj)
954 ELM_ICON_CHECK(obj) EINA_FALSE;
956 return elm_image_smooth_get(obj);
960 elm_icon_no_scale_set(Evas_Object *obj,
965 elm_image_no_scale_set(obj, no_scale);
969 elm_icon_no_scale_get(const Evas_Object *obj)
971 ELM_ICON_CHECK(obj) EINA_FALSE;
973 return elm_image_no_scale_get(obj);
977 elm_icon_resizable_set(Evas_Object *obj,
983 elm_image_resizable_set(obj, size_up, size_down);
987 elm_icon_resizable_get(const Evas_Object *obj,
989 Eina_Bool *size_down)
993 elm_image_resizable_get(obj, size_up, size_down);
997 elm_icon_fill_outside_set(Evas_Object *obj,
998 Eina_Bool fill_outside)
1000 ELM_ICON_CHECK(obj);
1002 elm_image_fill_outside_set(obj, fill_outside);
1006 elm_icon_fill_outside_get(const Evas_Object *obj)
1008 ELM_ICON_CHECK(obj) EINA_FALSE;
1010 return elm_image_fill_outside_get(obj);
1014 elm_icon_size_get(const Evas_Object *obj,
1018 ELM_ICON_CHECK(obj);
1020 elm_image_object_size_get(obj, w, h);
1024 elm_icon_prescale_set(Evas_Object *obj,
1027 ELM_ICON_CHECK(obj);
1029 elm_image_prescale_set(obj, size);
1033 elm_icon_prescale_get(const Evas_Object *obj)
1035 ELM_ICON_CHECK(obj) 0;
1037 return elm_image_prescale_get(obj);
1041 elm_icon_object_get(Evas_Object *obj)
1043 ELM_ICON_CHECK(obj) 0;
1045 return elm_image_object_get(obj);
1049 elm_icon_preload_disabled_set(Evas_Object *obj,
1052 ELM_ICON_CHECK(obj);
1054 elm_image_preload_disabled_set(obj, disabled);
1058 elm_icon_aspect_fixed_set(Evas_Object *obj,
1061 ELM_ICON_CHECK(obj);
1063 elm_image_aspect_fixed_set(obj, fixed);
1067 elm_icon_aspect_fixed_get(const Evas_Object *obj)
1069 ELM_ICON_CHECK(obj) EINA_FALSE;
1071 return elm_image_aspect_fixed_get(obj);