[elm_animator.c] .
authorChunEon Park <chuneon.park@samsung.com>
Mon, 13 Sep 2010 09:47:44 +0000 (18:47 +0900)
committerChunEon Park <chuneon.park@samsung.com>
Mon, 13 Sep 2010 09:47:44 +0000 (18:47 +0900)
src/lib/elm_animator.c

index 601b0c0..3fc8909 100644 (file)
@@ -1,4 +1,5 @@
 #include <Elementary.h>
+#include "elm_priv.h"
 
 /**
  * @addtogroup Animator Animator
@@ -6,6 +7,7 @@
  *
  * Support normalized frame value for animation.  
 */
+#define MAGIC_OBJ_ANIMATOR 0x40777770
 
 struct _Animator
 {
@@ -21,6 +23,7 @@ struct _Animator
    void *animator_arg;
    void (*completion_op) (void *data);
    void *completion_arg;
+   int magic;
    Eina_Bool auto_reverse:1;
    Eina_Bool on_animating:1;
 };
@@ -33,7 +36,7 @@ static unsigned int _animator_compute_reverse_repeat_count(unsigned int cnt);
 static unsigned int _animator_compute_no_reverse_repeat_count(unsigned int cnt);
 static int _animator_animate_cb(void *data);
 static void _delete_animator(Elm_Animator *animator);
-//static void _animator_parent_del(void *data);
+static void _animator_parent_del(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event __UNUSED__);
 
 static unsigned int
 _animator_compute_reverse_repeat_count(unsigned int cnt)
@@ -88,7 +91,7 @@ static int
 _animator_animate_cb(void *data)
 {
    Elm_Animator *animator = (Elm_Animator *) data;
-   double elapsed_time, frame, cur_time;
+   double elapsed_time, frame;
 
    animator->cur_time = ecore_loop_time_get();
 
@@ -129,14 +132,14 @@ _animator_animate_cb(void *data)
 
    return ECORE_CALLBACK_RENEW;
 }
-/*
+
 static void
-_animator_parent_del(void *data)
+_animator_parent_del(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event __UNUSED__)
 {
        Elm_Animator *animator = data; 
        elm_animator_del(data);
 }
-*/
+
 /**
  * Get the value of reverse mode. 
  *
@@ -148,7 +151,7 @@ _animator_parent_del(void *data)
 EAPI Eina_Bool
 elm_animator_auto_reverse_get(Elm_Animator *animator)
 {
-   if (!animator)
+   if (animator->magic != MAGIC_OBJ_ANIMATOR)
       return EINA_FALSE;
    return animator->auto_reverse;
 }
@@ -164,7 +167,7 @@ elm_animator_auto_reverse_get(Elm_Animator *animator)
 EAPI unsigned int
 elm_animator_repeat_get(Elm_Animator *animator)
 {
-   if (!animator)
+       if (animator->magic != MAGIC_OBJ_ANIMATOR)
       return EINA_FALSE;
    return animator->repeat_cnt;
 }
@@ -180,7 +183,7 @@ elm_animator_repeat_get(Elm_Animator *animator)
 EAPI void
 elm_animator_auto_reverse_set(Elm_Animator *animator, Eina_Bool reverse)
 {
-   if (!animator)
+       if (animator->magic != MAGIC_OBJ_ANIMATOR)
       return;
    if (animator->auto_reverse == reverse)
       return;
@@ -205,7 +208,7 @@ EAPI void
 elm_animator_curve_style_set(Elm_Animator *animator,
                             Elm_Animator_Curve_Style cs)
 {
-   if (!animator)
+       if (animator->magic != MAGIC_OBJ_ANIMATOR)
       return;
 
    switch (cs)
@@ -239,7 +242,7 @@ elm_animator_curve_style_set(Elm_Animator *animator,
 EAPI void
 elm_animator_duration_set(Elm_Animator *animator, double duration)
 {
-   if (!animator)
+       if (animator->magic != MAGIC_OBJ_ANIMATOR)
       return;
    if (animator->on_animating)
       return;
@@ -262,7 +265,7 @@ elm_animator_operation_callback_set(Elm_Animator *animator,
                                                  Elm_Animator *animator,
                                                  double frame), void *data)
 {
-   if (!animator)
+       if (animator->magic != MAGIC_OBJ_ANIMATOR)
       return;
    if (animator->on_animating)
       return;
@@ -281,19 +284,21 @@ elm_animator_operation_callback_set(Elm_Animator *animator,
 EAPI Elm_Animator *
 elm_animator_add(Evas_Object *parent)
 {
-   Elm_Animator *animator = calloc(1, sizeof(Elm_Animator));
+   Elm_Animator *animator = ELM_NEW(Elm_Animator);
 
    if (!animator)
       return NULL;
+
+   animator->parent = parent;
+   animator->magic = MAGIC_OBJ_ANIMATOR;
+
    elm_animator_auto_reverse_set(animator, EINA_FALSE);
    elm_animator_curve_style_set(animator, ELM_ANIMATOR_CURVE_LINEAR);
 
-/* if (parent) {
+   if (parent) {
                evas_object_event_callback_add(parent, EVAS_CALLBACK_DEL,
                                     _animator_parent_del, animator);
-       } */
-
-   animator->parent = parent;
+       }
 
    return animator;
 }
@@ -309,7 +314,7 @@ elm_animator_add(Evas_Object *parent)
 EAPI Eina_Bool
 elm_animator_operating_get(Elm_Animator *animator)
 {
-   if (!animator)
+       if (animator->magic != MAGIC_OBJ_ANIMATOR)
       return EINA_FALSE;
    return animator->on_animating;
 }
@@ -324,15 +329,17 @@ elm_animator_operating_get(Elm_Animator *animator)
 EAPI void
 elm_animator_del(Elm_Animator *animator)
 {
-   if (!animator)
-      return;
+   if(animator->magic != MAGIC_OBJ_ANIMATOR) {
+          return;
+   }
 
        _delete_animator(animator);
 
-/*   if(animator->parent) {
+   if(animator->parent) {
        evas_object_event_callback_del(animator->parent, EVAS_CALLBACK_DEL, _animator_parent_del);
-       } */
+       }
 
+   memset(animator, 0x0, sizeof(Elm_Animator));
    free(animator);
 }
 
@@ -349,7 +356,7 @@ EAPI void
 elm_animator_completion_callback_set(Elm_Animator *animator,
                                     void (*func) (void *data), void *data)
 {
-   if (!animator)
+       if (animator->magic != MAGIC_OBJ_ANIMATOR)
       return;
    if (animator->on_animating)
       return;
@@ -367,7 +374,7 @@ elm_animator_completion_callback_set(Elm_Animator *animator,
 EAPI void
 elm_animator_pause(Elm_Animator *animator)
 {
-       if(!animator)
+       if (animator->magic != MAGIC_OBJ_ANIMATOR)
                return;
 
        if(!animator->on_animating)
@@ -386,7 +393,7 @@ elm_animator_pause(Elm_Animator *animator)
 EAPI void
 elm_animator_resume(Elm_Animator *animator)
 {
-       if(!animator)
+       if (animator->magic != MAGIC_OBJ_ANIMATOR)
                return;
 
        if(!animator->on_animating)
@@ -405,7 +412,7 @@ elm_animator_resume(Elm_Animator *animator)
 EAPI void
 elm_animator_stop(Elm_Animator *animator)
 {
-   if (!animator)
+       if (animator->magic != MAGIC_OBJ_ANIMATOR)
       return;
    animator->on_animating = EINA_FALSE;
        _delete_animator(animator);
@@ -422,7 +429,7 @@ elm_animator_stop(Elm_Animator *animator)
 EAPI void
 elm_animator_repeat_set(Elm_Animator *animator, unsigned int repeat_cnt)
 {
-   if (!animator)
+       if (animator->magic != MAGIC_OBJ_ANIMATOR)
       return;
    if (!animator->auto_reverse)
       animator->repeat_cnt = repeat_cnt;
@@ -440,7 +447,7 @@ elm_animator_repeat_set(Elm_Animator *animator, unsigned int repeat_cnt)
 EAPI void
 elm_animator_animate(Elm_Animator *animator)
 {
-   if (!animator)
+       if (animator->magic != MAGIC_OBJ_ANIMATOR)
       return;
    if (!animator->animator_op)
       return;