[Elementary.h.in]
authorChunEon Park <chuneon.park@samsung.com>
Wed, 1 Dec 2010 00:08:38 +0000 (09:08 +0900)
committerChunEon Park <chuneon.park@samsung.com>
Wed, 1 Dec 2010 00:08:38 +0000 (09:08 +0900)
[elm_animator.c] added elm_animator_curve_style_get
[elm_transit.c]  syncronize with upstream

src/lib/Elementary.h.in
src/lib/elm_animator.c
src/lib/elm_transit.c

index 590873d..fa345fb 100644 (file)
@@ -1804,21 +1804,22 @@ extern "C" {
    */
    typedef void (*Elm_Animator_Completion_Cb) (void *data);
 
-   EAPI Elm_Animator* elm_animator_add(Evas_Object *parent);
-   EAPI void          elm_animator_del(Elm_Animator *animator);
-   EAPI void          elm_animator_duration_set(Elm_Animator *animator, double duration);
-   EAPI void          elm_animator_operation_callback_set(Elm_Animator *animator, Elm_Animator_Operation_Cb func, void *data);
-   EAPI void          elm_animator_completion_callback_set(Elm_Animator *animator, Elm_Animator_Completion_Cb func, void *data);
-   EAPI void          elm_animator_stop(Elm_Animator *animator);
-   EAPI void          elm_animator_repeat_set(Elm_Animator *animator, unsigned int repeat_cnt);
-   EAPI void          elm_animator_animate(Elm_Animator *animator);
-   EAPI void          elm_animator_curve_style_set(Elm_Animator *animator, Elm_Animator_Curve_Style cs);
-   EAPI void          elm_animator_auto_reverse_set(Elm_Animator *animator, Eina_Bool reverse);
-   EAPI Eina_Bool     elm_animator_auto_reverse_get(const Elm_Animator *animator);
-   EAPI Eina_Bool     elm_animator_operating_get(const Elm_Animator *animator);
-   EAPI unsigned int  elm_animator_repeat_get(const Elm_Animator *animator);
-   EAPI void          elm_animator_pause(Elm_Animator *animator);
-   EAPI void          elm_animator_resume(Elm_Animator *animator);
+   EAPI Elm_Animator*            elm_animator_add(Evas_Object *parent);
+   EAPI void                     elm_animator_del(Elm_Animator *animator);
+   EAPI void                     elm_animator_duration_set(Elm_Animator *animator, double duration);
+   EAPI void                     elm_animator_operation_callback_set(Elm_Animator *animator, Elm_Animator_Operation_Cb func, void *data);
+   EAPI void                     elm_animator_completion_callback_set(Elm_Animator *animator, Elm_Animator_Completion_Cb func, void *data);
+   EAPI void                     elm_animator_stop(Elm_Animator *animator);
+   EAPI void                     elm_animator_repeat_set(Elm_Animator *animator, unsigned int repeat_cnt);
+   EAPI void                     elm_animator_animate(Elm_Animator *animator);
+   EAPI void                     elm_animator_curve_style_set(Elm_Animator *animator, Elm_Animator_Curve_Style cs);
+   EAPI void                     elm_animator_auto_reverse_set(Elm_Animator *animator, Eina_Bool reverse);
+   EAPI Elm_Animator_Curve_Style elm_animator_curve_style_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool                elm_animator_auto_reverse_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool                elm_animator_operating_get(const Elm_Animator *animator) EINA_ARG_NONNULL(1);
+   EAPI unsigned int             elm_animator_repeat_get(const Elm_Animator *animator);
+   EAPI void                     elm_animator_pause(Elm_Animator *animator);
+   EAPI void                     elm_animator_resume(Elm_Animator *animator);
 
    /* calendar */
    typedef enum 
@@ -2097,23 +2098,33 @@ extern "C" {
    EINA_DEPRECATED EAPI Eina_Bool     elm_tab_edit_disable_get(Evas_Object *obj);
 
    /* tansit */
+   typedef enum 
+     {
+        ELM_TRANSIT_TWEEN_MODE_LINEAR,
+        ELM_TRANSIT_TWEEN_MODE_SINUSODIAL,
+        ELM_TRANSIT_TWEEN_MODE_DECELERATE,
+        ELM_TRANSIT_TWEEN_MODE_ACCELERATE
+     } Elm_Transit_Tween_Mode;
+   
    typedef struct _transit Elm_Transit;
    typedef struct _effect Elm_Effect;
 
-   EAPI Elm_Transit *elm_transit_add(Evas_Object *parent);
-   EAPI void         elm_transit_del(Elm_Transit *transit);
-   EAPI void         elm_transit_run(Elm_Transit *transit, double duration);
-   EAPI void         elm_transit_stop(Elm_Transit *transit);
-   EAPI void         elm_transit_completion_callback_set(Elm_Transit *transit, void (*op)(void *data,Elm_Transit* transit), void *data);
-   EAPI void         elm_transit_repeat_set(Elm_Transit *transit, unsigned int repeat);
-   EAPI void         elm_transit_auto_reverse_set(Elm_Transit *transit, Eina_Bool reverse);
-   EAPI void         elm_transit_curve_style_set(Elm_Transit *transit, Elm_Animator_Curve_Style cs);
-   EAPI void         elm_transit_event_block_disabled_set(Elm_Transit *transit, Eina_Bool disabled);
-   EAPI Eina_Bool    elm_transit_fx_insert(Elm_Transit *transit, Elm_Effect *effect);
-   EAPI void         elm_transit_fx_clear(Elm_Transit *transit);
-   EAPI Eina_Bool    elm_transit_event_block_disabled_get(Elm_Transit *transit);  
-   EAPI void         elm_transit_pause(Elm_Transit *transit);
-   EAPI void         elm_transit_resume(Elm_Transit *transit);
+   EAPI Elm_Transit           *elm_transit_add(Evas_Object *parent);
+   EAPI void                   elm_transit_del(Elm_Transit *transit);
+   EAPI void                   elm_transit_run(Elm_Transit *transit, double duration);
+   EAPI void                   elm_transit_stop(Elm_Transit *transit);
+   EAPI void                   elm_transit_completion_callback_set(Elm_Transit *transit, void (*op)(void *data,Elm_Transit* transit), void *data);
+   EAPI void                   elm_transit_repeat_set(Elm_Transit *transit, unsigned int repeat);
+   EAPI void                   elm_transit_auto_reverse_set(Elm_Transit *transit, Eina_Bool reverse);
+   EAPI void                   elm_transit_tween_mode_set(Elm_Transit *transit, Elm_Transit_Tween_Mode tween_mode);
+   EAPI void                   elm_transit_event_block_disabled_set(Elm_Transit *transit, Eina_Bool disabled);
+   EAPI Eina_Bool              elm_transit_fx_insert(Elm_Transit *transit, Elm_Effect *effect);
+   EAPI void                   elm_transit_fx_clear(Elm_Transit *transit);
+   EAPI Eina_Bool              elm_transit_event_block_disabled_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
+   EAPI void                   elm_transit_pause(Elm_Transit *transit);
+   EAPI void                   elm_transit_resume(Elm_Transit *transit);
+   EAPI Elm_Transit_Tween_Mode elm_transit_tween_mode_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI void   elm_transit_curve_style_set(Elm_Transit *transit, Elm_Animator_Curve_Style cs);
 
    /* Translation FX */
    EAPI Elm_Effect  *elm_fx_translation_add(Evas_Object *obj, Evas_Coord from_x, Evas_Coord from_y, Evas_Coord to_x, Evas_Coord to_y);
index 20a1d1c..1c642c8 100644 (file)
@@ -38,11 +38,11 @@ struct _Elm_Animator
    double duration;
    unsigned int repeat_cnt;
    unsigned int cur_repeat_cnt;
-   double (*curve_op) (double frame);
    void (*animator_op) (void *data, Elm_Animator *animator, double frame);
    void *animator_arg;
    void (*completion_op) (void *data);
    void *completion_arg;
+   Elm_Animator_Curve_Style curve_style;
    Eina_Bool auto_reverse:1;
    Eina_Bool on_animating:1;
 };
@@ -111,7 +111,24 @@ _animator_animate_cb(void *data)
    animator->cur_time = ecore_loop_time_get();
    elapsed_time = animator->cur_time - animator->begin_time;
    if (elapsed_time > animator->duration) elapsed_time = animator->duration;
-   frame = animator->curve_op(elapsed_time / animator->duration);
+
+   //Compute current frame
+   switch (animator->curve_style)
+     {
+       case ELM_ANIMATOR_CURVE_IN_OUT:
+             frame = _animator_curve_in_out(elapsed_time / animator->duration);
+             break;
+       case ELM_ANIMATOR_CURVE_IN:
+             frame = _animator_curve_in(elapsed_time / animator->duration);
+             break;
+       case ELM_ANIMATOR_CURVE_OUT:
+             frame = _animator_curve_out(elapsed_time / animator->duration);
+             break;
+       default:
+         frame = _animator_curve_linear(elapsed_time / animator->duration);
+             break;
+     }
+       
    //Reverse?
    if (animator->auto_reverse)
      {
@@ -178,6 +195,22 @@ elm_animator_repeat_get(const Elm_Animator *animator)
 }
 
 /**
+ * Set the animation acceleration style.
+ *
+ * @param[in] animator Animator object
+ * @param[in] cs Curve style. Default is ELM_ANIMATOR_CURVE_LINEAR
+ *
+ * @ingroup Animator
+ */
+EAPI Elm_Animator_Curve_Style 
+elm_animator_curve_style_get(const Elm_Animator *animator)
+{
+   ELM_ANIMATOR_CHECK_OR_RETURN(animator, ELM_ANIMATOR_CURVE_LINEAR);
+  
+       return animator->curve_style;
+}
+
+/**
  * Set auto reverse function.
  *
  * @param[in] animator Animator object
@@ -212,24 +245,8 @@ elm_animator_curve_style_set(Elm_Animator *animator,
                             Elm_Animator_Curve_Style cs)
 {
    ELM_ANIMATOR_CHECK_OR_RETURN(animator);
-   switch (cs)
-     {
-     case ELM_ANIMATOR_CURVE_LINEAR:
-       animator->curve_op = _animator_curve_linear;
-       break;
-     case ELM_ANIMATOR_CURVE_IN_OUT:
-       animator->curve_op = _animator_curve_in_out;
-       break;
-     case ELM_ANIMATOR_CURVE_IN:
-       animator->curve_op = _animator_curve_in;
-       break;
-     case ELM_ANIMATOR_CURVE_OUT:
-       animator->curve_op = _animator_curve_out;
-       break;
-     default:
-       animator->curve_op = _animator_curve_linear;
-       break;
-     }
+
+       animator->curve_style = cs;
 }
 
 /**
index 3f4a404..5be1e51 100644 (file)
@@ -1,25 +1,52 @@
 #include <Elementary.h>
 #include "elm_priv.h"
 
+#define ELM_TRANSIT_CHECK_OR_RETURN(transit, ...) \
+   do { \
+      if (!transit) { \
+         CRITICAL("Elm_Transit " # transit " is NULL!"); \
+         return __VA_ARGS__; \
+      } \
+      if (!EINA_MAGIC_CHECK(transit, ELM_TRANSIT_MAGIC)) { \
+         EINA_MAGIC_FAIL(transit, ELM_TRANSIT_MAGIC); \
+         return __VA_ARGS__; \
+      } \
+      if (transit->deleted){ \
+         ERR("Elm_Transit " # transit " has already been deleted!"); \
+         return __VA_ARGS__; \
+      } \
+   } while (0)
+
+
 /**
  *
  * @defgroup Transit Transit
  * @ingroup Elementary
  *
- * Transit is designed to set the various effects for the Evas_Object such like translation, 
- * rotation, etc. For using Effects, Create transit and insert the some of effects which are 
- * interested. Each effects has the type of Elm_Effect and those can be inserted into transit. 
- * Once effects are inserted into transit, transit will manage those effects.(ex) deleting). 
-*/
+ * Transit (see Warning below) is designed to set the various effects for the
+ * Evas_Object such like translation, rotation, etc. For using Effects, Create
+ * transit and insert effects which are interesting.
+ * Once effects are inserted into transit, transit will manage those effects.
+ * (ex deleting).
+ *
+ * @warning We strongly recomend to use elm_transit just when edje can not do
+ * the trick. Edje has more advantage than Elm_Transit, it has more flexibility and
+ * animations can be manipulated inside the theme.
+ */
+
 struct _transit
 {
-   Evas_Object *parent;
+#define ELM_TRANSIT_MAGIC 0xd27f190a
+   EINA_MAGIC;
+
+       Evas_Object *parent;
    Elm_Animator *animator;
    Eina_List *effect_list;
-   Evas_Object *block_rect;
+       Elm_Transit_Tween_Mode tween_mode;
+       Evas_Object *block_rect;
    void (*completion_op) (void *data, Elm_Transit *transit);
    void *completion_arg;
-   Eina_Bool reserved_del:1;
+   Eina_Bool deleted:1;
 };
 
 struct _effect
@@ -39,16 +66,30 @@ static void _transit_fx_begin(Elm_Transit *transit);
 static void _transit_fx_end(Elm_Transit *transit);
 static void _transit_complete_cb(void *data);
 static void _transit_fx_del(Elm_Effect *effect);
-//static void _transit_parent_del(void *data); 
 
-/*
+
+//NEW
+static void _elm_transit_del(Elm_Transit *transit);
+
+
 static void
-_animator_parent_del(void *data)
+_elm_transit_del(Elm_Transit *transit)
 {
-       Elm_Transit *transit = data; 
-       elm_transit_del(data);
+       if (elm_animator_operating_get(transit->animator))
+     {
+        transit->deleted = EINA_TRUE;
+                 return;
+     }
+
+   if (transit->block_rect)
+      evas_object_del(transit->block_rect);
+
+   elm_animator_del(transit->animator);
+   elm_transit_fx_clear(transit);
+       
+       EINA_MAGIC_SET(transit, EINA_MAGIC_NONE);
+   free(transit);
 }
-*/
 
 static Evas_Object *
 _create_block_rect(Evas_Object *parent)
@@ -136,9 +177,9 @@ _transit_complete_cb(void *data)
    if (transit->completion_op)
       transit->completion_op(transit->completion_arg, transit);
 
-   if (transit->reserved_del)
+   if (transit->deleted)
      {
-       transit->reserved_del = EINA_FALSE;
+       transit->deleted = EINA_FALSE;
        elm_transit_del(transit);
      }
 }
@@ -173,8 +214,7 @@ _transit_fx_del(Elm_Effect *effect)
 EAPI void
 elm_transit_event_block_disabled_set(Elm_Transit *transit, Eina_Bool disabled)
 {
-   if (!transit)
-      return;
+   ELM_TRANSIT_CHECK_OR_RETURN(transit);
 
    if (disabled)
      {
@@ -192,19 +232,22 @@ elm_transit_event_block_disabled_set(Elm_Transit *transit, Eina_Bool disabled)
 }
 
 /**
- * Get the value of event blockd status.
+ * Get the value of event blocked status.
  *
- * @param[in] transit Transit
- * @return EINA_TRUE, when event block is disabled
+ * @see elm_transit_event_block_set()
  *
- * @ingroup Transit 
+ * @param[in] transit The Transit object
+ * @return EINA_TRUE, when event block is enabled. If @p transit is NULL
+ * EINA_FALSE is returned
+ *
+ * @ingroup Transit
  */
 EAPI Eina_Bool
-elm_transit_event_block_disabled_get(Elm_Transit *transit)
+elm_transit_event_block_disabled_get(const Elm_Transit *transit)
 {
-   if (!transit)
-      return EINA_FALSE;
-   return transit->block_rect ? EINA_TRUE : EINA_FALSE;
+       ELM_TRANSIT_CHECK_OR_RETURN(transit, EINA_FALSE);
+   
+       return transit->block_rect ? EINA_TRUE : EINA_FALSE;
 }
 
 /**
@@ -220,12 +263,11 @@ elm_transit_event_block_disabled_get(Elm_Transit *transit)
 EAPI Eina_Bool
 elm_transit_fx_remove(Elm_Transit *transit, Elm_Effect *effect)
 {
-   Eina_List *elist;
+       ELM_TRANSIT_CHECK_OR_RETURN(transit, EINA_FALSE);
 
-   Elm_Effect *_effect;
+       Eina_List *elist;
 
-   if (!transit)
-      return EINA_FALSE;
+   Elm_Effect *_effect;
 
    EINA_LIST_FOREACH(transit->effect_list, elist, _effect)
    {
@@ -250,12 +292,11 @@ elm_transit_fx_remove(Elm_Transit *transit, Elm_Effect *effect)
 EAPI void
 elm_transit_fx_clear(Elm_Transit *transit)
 {
-   Eina_List *elist;
+       ELM_TRANSIT_CHECK_OR_RETURN(transit);
 
-   Elm_Effect *effect;
+       Eina_List *elist;
 
-   if (!transit)
-      return;
+   Elm_Effect *effect;
 
    EINA_LIST_FOREACH(transit->effect_list, elist, effect)
    {
@@ -275,8 +316,8 @@ elm_transit_fx_clear(Elm_Transit *transit)
 EAPI const Eina_List *
 elm_transit_fx_get(Elm_Transit *transit)
 {
-   if (!transit)
-      return NULL;
+   ELM_TRANSIT_CHECK_OR_RETURN(transit, NULL);
+
    return transit->effect_list;
 }
 
@@ -295,12 +336,16 @@ elm_transit_completion_callback_set(Elm_Transit *transit,
                                                Elm_Transit *transit),
                                    void *data)
 {
-   if (!transit)
-      return;
-   transit->completion_op = op;
+   ELM_TRANSIT_CHECK_OR_RETURN(transit);
+
+       transit->completion_op = op;
    transit->completion_arg = data;
 }
 
+
+
+
+
 /**
  * Delete transit. 
  *
@@ -311,26 +356,11 @@ elm_transit_completion_callback_set(Elm_Transit *transit,
 EAPI void
 elm_transit_del(Elm_Transit *transit)
 {
-   if (!transit)
-      return;
-   if (elm_animator_operating_get(transit->animator))
-     {
-       transit->reserved_del = EINA_TRUE;
-       return;
-     }
+       ELM_TRANSIT_CHECK_OR_RETURN(transit);
 
-   if (transit->block_rect)
-      evas_object_del(transit->block_rect);
-
-   elm_animator_del(transit->animator);
-   elm_transit_fx_clear(transit);
-
-//     if(transit->parent) 
-//     {
-//             evas_object_event_callback_del(transit->parent, EVAS_CALLBACK_DEL, _transit_parent_del);
-//     }
-
-   free(transit);
+       _elm_transit_del(transit);
+//     if (transit->walking) transit->deleted = EINA_TRUE;
+//   else _elm_transit_del(transit);
 }
 
 /**
@@ -344,11 +374,69 @@ elm_transit_del(Elm_Transit *transit)
 EAPI void
 elm_transit_curve_style_set(Elm_Transit *transit, Elm_Animator_Curve_Style cs)
 {
-   if (!transit)
-      return;
+   ELM_TRANSIT_CHECK_OR_RETURN(transit);
    elm_animator_curve_style_set(transit->animator, cs);
 }
 
+/**
+ * Set the transit animation acceleration type.
+ *
+ * This function sets the tween mode of the transit that can be:
+ * ELM_TRANSIT_TWEEN_MODE_LINEAR - The default mode.
+ * ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL - Starts in accelerate mode and ends decelerating.
+ * ELM_TRANSIT_TWEEN_MODE_DECELERATE - The animation will be slowed over time.
+ * ELM_TRANSIT_TWEEN_MODE_ACCELERATE - The animation will accelerate over time.
+ *
+ * @param[in] transit The transit object.
+ * @param[in] tween_mode The tween type.
+ *
+ * @ingroup Transit
+ */
+EAPI void
+elm_transit_tween_mode_set(Elm_Transit *transit, Elm_Transit_Tween_Mode tween_mode)
+{
+   ELM_TRANSIT_CHECK_OR_RETURN(transit);
+
+   transit->tween_mode = tween_mode;
+
+       switch(tween_mode) 
+       {
+               case ELM_TRANSIT_TWEEN_MODE_LINEAR:
+                       elm_animator_curve_style_set(transit->animator, ELM_ANIMATOR_CURVE_LINEAR);
+                       break;
+               case ELM_TRANSIT_TWEEN_MODE_SINUSODIAL:
+                       elm_animator_curve_style_set(transit->animator, ELM_ANIMATOR_CURVE_IN_OUT);
+                       break;
+               case ELM_TRANSIT_TWEEN_MODE_DECELERATE:
+                       elm_animator_curve_style_set(transit->animator, ELM_ANIMATOR_CURVE_OUT);
+                       break;
+               case ELM_TRANSIT_TWEEN_MODE_ACCELERATE:
+                       elm_animator_curve_style_set(transit->animator, ELM_ANIMATOR_CURVE_IN);
+                       break;
+               default:
+                       break;
+       }
+
+}
+
+/**
+ * Get the transit animation acceleration type.
+ *
+ * @note @p transit can not be NULL
+ *
+ * @param[in] transit The transit object.
+ * @return The tween type. If @p transit is NULL
+ * ELM_TRANSIT_TWEEN_MODE_LINEAR is returned.
+ *
+ * @ingroup Transit
+ */
+EAPI Elm_Transit_Tween_Mode
+elm_transit_tween_mode_get(const Elm_Transit *transit)
+{
+   ELM_TRANSIT_CHECK_OR_RETURN(transit, ELM_TRANSIT_TWEEN_MODE_LINEAR);
+
+   return transit->tween_mode;
+}
 
 /**
  * Add new transit. 
@@ -361,12 +449,21 @@ elm_transit_curve_style_set(Elm_Transit *transit, Elm_Animator_Curve_Style cs)
 EAPI Elm_Transit *
 elm_transit_add(Evas_Object *parent)
 {
-   Elm_Transit *transit = calloc(1, sizeof(Elm_Transit));
+   Elm_Transit *transit = ELM_NEW(Elm_Transit);
 
-   if (!transit)
-      return NULL;
+   if (!transit) return NULL;
+
+   EINA_MAGIC_SET(transit, ELM_TRANSIT_MAGIC);
+
+   //elm_transit_tween_mode_set(transit, ELM_TRANSIT_TWEEN_MODE_LINEAR);
 
-   transit->animator = elm_animator_add(parent);
+   //transit->time.duration = duration;
+
+       //transit->time.begin = ecore_loop_time_get();
+   
+       //transit->animator = ecore_animator_add(_animator_animate_cb, transit);
+
+       transit->animator = elm_animator_add(parent);
 
    if (!transit->animator)
      {
@@ -401,8 +498,7 @@ elm_transit_add(Evas_Object *parent)
 EAPI void
 elm_transit_auto_reverse_set(Elm_Transit *transit, Eina_Bool reverse)
 {
-   if (!transit)
-      return;
+   ELM_TRANSIT_CHECK_OR_RETURN(transit);
    elm_animator_auto_reverse_set(transit->animator, reverse);
 }
 
@@ -415,15 +511,16 @@ elm_transit_auto_reverse_set(Elm_Transit *transit, Eina_Bool reverse)
  *
  * @ingroup Transit 
  */
+//EAPI void 
+//elm_transit_effect_add(Elm_Transit *transit, void (*cb)(void *data, Elm_Transit *transit, double progress), void *data, void (*data_free_cb)(void *data, Elm_Transit *transit))
 EAPI Eina_Bool
 elm_transit_fx_insert(Elm_Transit *transit, Elm_Effect *effect)
 {
-   Eina_List *elist;
-
+   ELM_TRANSIT_CHECK_OR_RETURN(transit, EINA_FALSE);
+       
    Elm_Effect *_effect;
 
-   if (!transit)
-      return EINA_FALSE;
+       Eina_List *elist;
 
    EINA_LIST_FOREACH(transit->effect_list, elist, _effect)
    {
@@ -448,9 +545,8 @@ elm_transit_fx_insert(Elm_Transit *transit, Elm_Effect *effect)
 EAPI void
 elm_transit_repeat_set(Elm_Transit *transit, unsigned int repeat)
 {
-   if (!transit)
-      return;
-   elm_animator_repeat_set(transit->animator, repeat);
+       ELM_TRANSIT_CHECK_OR_RETURN(transit);
+       elm_animator_repeat_set(transit->animator, repeat);
 }
 
 /**
@@ -463,8 +559,7 @@ elm_transit_repeat_set(Elm_Transit *transit, unsigned int repeat)
 EAPI void
 elm_transit_stop(Elm_Transit *transit)
 {
-   if (!transit)
-      return;
+       ELM_TRANSIT_CHECK_OR_RETURN(transit);
    elm_animator_stop(transit->animator);
 }
 
@@ -479,8 +574,7 @@ elm_transit_stop(Elm_Transit *transit)
 EAPI void
 elm_transit_run(Elm_Transit *transit, double duration)
 {
-   if (!transit)
-      return;
+       ELM_TRANSIT_CHECK_OR_RETURN(transit);
    _transit_fx_begin(transit);
    elm_animator_duration_set(transit->animator, duration);
 
@@ -509,8 +603,7 @@ elm_transit_run(Elm_Transit *transit, double duration)
 EAPI void
 elm_transit_pause(Elm_Transit *transit)
 {
-       if(!transit)
-               return;
+       ELM_TRANSIT_CHECK_OR_RETURN(transit);
 
        elm_animator_pause(transit->animator);
 }
@@ -525,8 +618,7 @@ elm_transit_pause(Elm_Transit *transit)
 EAPI void
 elm_transit_resume(Elm_Transit *transit)
 {
-       if(!transit)
-               return;
+       ELM_TRANSIT_CHECK_OR_RETURN(transit);
 
        elm_animator_resume(transit->animator);
 }