From 41ad07a7190a6fd5c58d5aa022bd36b3fef2081e Mon Sep 17 00:00:00 2001 From: ChunEon Park Date: Mon, 13 Sep 2010 18:47:44 +0900 Subject: [PATCH] [elm_animator.c] . --- src/lib/elm_animator.c | 61 ++++++++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 27 deletions(-) diff --git a/src/lib/elm_animator.c b/src/lib/elm_animator.c index 601b0c0..3fc8909 100644 --- a/src/lib/elm_animator.c +++ b/src/lib/elm_animator.c @@ -1,4 +1,5 @@ #include +#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; -- 2.7.4