*/
#define MAGIC_OBJ_ANIMATOR 0x40777770
-struct _Animator
+struct _Elm_Animator
{
int magic;
Evas_Object *parent;
};
static double _animator_curve_linear(double frame);
-static double _animator_curve_out_in(double frame);
static double _animator_curve_in_out(double frame);
static double _animator_curve_in(double frame);
static double _animator_curve_out(double frame);
static unsigned int _animator_compute_no_reverse_repeat_count(unsigned int cnt);
static Eina_Bool _animator_animate_cb(void *data);
static void _delete_animator(Elm_Animator *animator);
-static void _animator_parent_del(void *data, Evas *evas __UNUSED__,
- Evas_Object *obj __UNUSED__,
- void *event __UNUSED__);
+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)
static double
_animator_curve_in_out(double frame)
{
- if (frame < 0.5)
- return _animator_curve_in(frame * 2) * 0.5;
- else
- return (_animator_curve_out(frame * 2 - 1) * 0.5) + 0.5;
+ if (frame < 0.5) return _animator_curve_in(frame * 2) * 0.5;
+ else return (_animator_curve_out(frame * 2 - 1) * 0.5) + 0.5;
}
static double
static void
_delete_animator(Elm_Animator *animator)
{
- if (animator->animator)
- {
- ecore_animator_del(animator->animator);
- animator->animator = NULL;
- }
+ if (!animator->animator) return;
+ ecore_animator_del(animator->animator);
+ animator->animator = NULL;
}
static Eina_Bool
_animator_animate_cb(void *data)
{
double elapsed_time, frame;
- Elm_Animator *animator = (Elm_Animator *) data;
+ Elm_Animator *animator = (Elm_Animator *) 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;
-
+ if (elapsed_time > animator->duration) elapsed_time = animator->duration;
frame = animator->curve_op(elapsed_time / animator->duration);
-
//Reverse?
if (animator->auto_reverse)
{
- if (!(animator->cur_repeat_cnt % 2))
- frame = 1 - frame;
+ if (!(animator->cur_repeat_cnt % 2)) frame = 1 - frame;
}
if (animator->duration > 0)
animator->animator_op(animator->animator_arg, animator, frame);
-
//Not end. Keep going.
- if (elapsed_time < animator->duration)
- return ECORE_CALLBACK_RENEW;
+ if (elapsed_time < animator->duration) return ECORE_CALLBACK_RENEW;
//Repeat and reverse and time done!
if (!animator->cur_repeat_cnt)
}
//Repeat Case
- --animator->cur_repeat_cnt;
+ animator->cur_repeat_cnt--;
animator->begin_time = ecore_loop_time_get();
return ECORE_CALLBACK_RENEW;
EAPI Eina_Bool
elm_animator_auto_reverse_get(const Elm_Animator *animator)
{
- if (!animator || (animator->magic != MAGIC_OBJ_ANIMATOR))
- return EINA_FALSE;
+ if ((!animator) || (animator->magic != MAGIC_OBJ_ANIMATOR)) return EINA_FALSE;
return animator->auto_reverse;
}
EAPI unsigned int
elm_animator_repeat_get(const Elm_Animator *animator)
{
- if (!animator || (animator->magic != MAGIC_OBJ_ANIMATOR))
- return 0;
+ if ((!animator) || (animator->magic != MAGIC_OBJ_ANIMATOR)) return 0;
return animator->repeat_cnt;
}
EAPI void
elm_animator_auto_reverse_set(Elm_Animator *animator, Eina_Bool reverse)
{
- if (!animator || (animator->magic != MAGIC_OBJ_ANIMATOR))
- return;
- if (animator->auto_reverse == reverse)
- return;
+ if ((!animator) || (animator->magic != MAGIC_OBJ_ANIMATOR)) return;
+ if (animator->auto_reverse == reverse) return;
animator->auto_reverse = reverse;
if (reverse)
animator->repeat_cnt =
elm_animator_curve_style_set(Elm_Animator *animator,
Elm_Animator_Curve_Style cs)
{
- if (!animator || (animator->magic != MAGIC_OBJ_ANIMATOR))
- return;
-
+ if ((!animator) || (animator->magic != MAGIC_OBJ_ANIMATOR)) return;
switch (cs)
{
case ELM_ANIMATOR_CURVE_LINEAR:
EAPI void
elm_animator_duration_set(Elm_Animator *animator, double duration)
{
- if (!animator || (animator->magic != MAGIC_OBJ_ANIMATOR))
- return;
- if (animator->on_animating)
- return;
+ if ((!animator) || (animator->magic != MAGIC_OBJ_ANIMATOR)) return;
+ if (animator->on_animating) return;
animator->duration = duration;
}
*/
EAPI void
elm_animator_operation_callback_set(Elm_Animator *animator,
- void (*func) (void *data,
- Elm_Animator * animator,
- double frame), void *data)
+ Elm_Animator_Operation_Cb func,
+ void *data)
{
- if (!animator || (animator->magic != MAGIC_OBJ_ANIMATOR))
- return;
- if (animator->on_animating)
- return;
+ if ((!animator) || (animator->magic != MAGIC_OBJ_ANIMATOR)) return;
+ if (animator->on_animating) return;
animator->animator_op = func;
animator->animator_arg = data;
}
elm_animator_add(Evas_Object *parent)
{
Elm_Animator *animator = ELM_NEW(Elm_Animator);
-
- if (!animator)
- return NULL;
-
+ 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)
evas_object_event_callback_add(parent, EVAS_CALLBACK_DEL,
_animator_parent_del, animator);
EAPI Eina_Bool
elm_animator_operating_get(const Elm_Animator *animator)
{
- if (!animator || (animator->magic != MAGIC_OBJ_ANIMATOR))
- return EINA_FALSE;
+ if ((!animator) || (animator->magic != MAGIC_OBJ_ANIMATOR)) return EINA_FALSE;
return animator->on_animating;
}
EAPI void
elm_animator_del(Elm_Animator *animator)
{
- if (!animator || (animator->magic != MAGIC_OBJ_ANIMATOR))
- return;
-
+ if ((!animator) || (animator->magic != MAGIC_OBJ_ANIMATOR)) return;
_delete_animator(animator);
-
if (animator->parent)
evas_object_event_callback_del(animator->parent, EVAS_CALLBACK_DEL,
_animator_parent_del);
*/
EAPI void
elm_animator_completion_callback_set(Elm_Animator *animator,
- void (*func) (void *data), void *data)
+ Elm_Animator_Completion_Cb func,
+ void *data)
{
- if (!animator || (animator->magic != MAGIC_OBJ_ANIMATOR))
- return;
- if (animator->on_animating)
- return;
+ if (!animator || (animator->magic != MAGIC_OBJ_ANIMATOR)) return;
+ if (animator->on_animating) return;
animator->completion_op = func;
animator->completion_arg = data;
}
EAPI void
elm_animator_pause(Elm_Animator *animator)
{
- if (!animator || (animator->magic != MAGIC_OBJ_ANIMATOR))
- return;
-
- if (!animator->on_animating)
- return;
-
+ if ((!animator) || (animator->magic != MAGIC_OBJ_ANIMATOR)) return;
+ if (!animator->on_animating) return;
ecore_animator_freeze(animator->animator);
}
EAPI void
elm_animator_resume(Elm_Animator *animator)
{
- if (!animator || (animator->magic != MAGIC_OBJ_ANIMATOR))
- return;
-
- if (!animator->on_animating)
- return;
-
+ if ((!animator) || (animator->magic != MAGIC_OBJ_ANIMATOR)) return;
+ if (!animator->on_animating) return;
ecore_animator_thaw(animator->animator);
}
EAPI void
elm_animator_stop(Elm_Animator *animator)
{
- if (!animator || (animator->magic != MAGIC_OBJ_ANIMATOR))
- return;
+ if ((!animator) || (animator->magic != MAGIC_OBJ_ANIMATOR)) return;
animator->on_animating = EINA_FALSE;
_delete_animator(animator);
}
EAPI void
elm_animator_repeat_set(Elm_Animator *animator, unsigned int repeat_cnt)
{
- if (!animator || (animator->magic != MAGIC_OBJ_ANIMATOR))
- return;
- if (!animator->auto_reverse)
- animator->repeat_cnt = repeat_cnt;
+ if ((!animator) || (animator->magic != MAGIC_OBJ_ANIMATOR)) return;
+ if (!animator->auto_reverse) animator->repeat_cnt = repeat_cnt;
else
animator->repeat_cnt = _animator_compute_reverse_repeat_count(repeat_cnt);
}
EAPI void
elm_animator_animate(Elm_Animator *animator)
{
- if (!animator || (animator->magic != MAGIC_OBJ_ANIMATOR))
- return;
- if (!animator->animator_op)
- return;
+ if ((!animator) || (animator->magic != MAGIC_OBJ_ANIMATOR)) return;
+ if (!animator->animator_op) return;
animator->begin_time = ecore_loop_time_get();
animator->cur_repeat_cnt = animator->repeat_cnt;
if (!animator->animator)
animator->animator = ecore_animator_add(_animator_animate_cb, animator);
- if (animator->animator)
- animator->on_animating = EINA_TRUE;
+ if (animator->animator) animator->on_animating = EINA_TRUE;
}