+/**
+ * Get the flag related with elm icon can support animation
+ *
+ * @param obj The icon object
+ * @return The flag of animation available
+ *
+ *
+ * @ingroup Icon
+ */
+EAPI Eina_Bool
+elm_icon_anim_available_get(const Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Evas_Object *img_obj ;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+
+ img_obj = _els_smart_icon_object_get(wd->img);
+
+ return evas_object_image_animated_get(img_obj);
+}
+
+/**
+ * Set animation mode of the icon.
+ *
+ * @param obj The icon object
+ * @param anim @c EINA_TRUE if the object do animation job,
+ * @c EINA_FALSE otherwise. Default is @c EINA_FALSE.
+ *
+ * @ingroup Icon
+ */
+EAPI void
+elm_icon_anim_set(Evas_Object *obj, Eina_Bool anim)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Evas_Object *img_obj ;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ if (wd->anim == anim) return;
+
+ img_obj = _els_smart_icon_object_get(wd->img);
+ if (!evas_object_image_animated_get(img_obj)) return;
+ if (anim)
+ {
+ wd->frame_count = evas_object_image_animated_frame_count_get(img_obj);
+ wd->cur_frame = 1;
+ wd->duration = evas_object_image_animated_frame_duration_get(img_obj, wd->cur_frame, 0);
+ evas_object_image_animated_frame_set(img_obj, wd->cur_frame);
+ }
+ else
+ {
+ wd->frame_count = -1;
+ wd->cur_frame = -1;
+ wd->duration = -1;
+ }
+ wd->anim = anim;
+ return;
+}
+
+/**
+ * Get animation mode of the icon.
+ *
+ * @param obj The icon object
+ * @return The animation mode of the icon object
+ *
+ * @ingroup Icon
+ */
+EAPI Eina_Bool
+elm_icon_anim_get(const Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+ return wd->anim;
+}
+
+/**
+ * Set animation play mode of the icon.
+ *
+ * @param obj The icon object
+ * @param play @c EINA_TRUE the object play animation images,
+ * @c EINA_FALSE otherwise. Default is @c EINA_FALSE.
+ *
+ * @ingroup Icon
+ */
+EAPI void
+elm_icon_anim_play_set(Evas_Object *obj, Eina_Bool play)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype);
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ if (!wd->anim) return;
+ if (wd->play == play) return;
+
+ if (play)
+ {
+ wd->timer = ecore_timer_add(wd->duration, _elm_icon_animate_cb, wd);
+ }
+ else
+ {
+ if (wd->timer)
+ {
+ ecore_timer_del(wd->timer);
+ wd->timer = NULL;
+ }
+ }
+ wd->play = play;
+
+}
+
+/**
+ * Get animation play mode of the icon.
+ *
+ * @param obj The icon object
+ * @return The play mode of the icon object
+ *
+ * @ingroup Icon
+ */
+EAPI Eina_Bool
+elm_icon_anim_play_get(const Evas_Object *obj)
+{
+ ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return EINA_FALSE;
+ return wd->play;
+}
+