forked from enlightenment/efl
From: ChunEon Park <chuneon.park@samsung.com>
Even it looks somewhat alien elm, I hope EFL supports basic effect by using c and edc. In some cases, it is useful for app developers. They want to use effects easily and quickly as Other F/W does providing. Here is patch again. Added two lines for elm_transit_duration_set exception handling. I guess there are possibilities still to add/modify some functions to the transit. So, currently the exception cases does not defined yet. But I will try patches soon as perfect things. Please consider about transit. And.. if this transit is acceptable, How about deprecate elm_animator as soon as possible? SVN revision: 55966
This commit is contained in:
parent
a01faf4d87
commit
7a3aa60910
|
@ -34,11 +34,11 @@ _custom_op(void *data, Elm_Transit *transit, double progress)
|
||||||
{
|
{
|
||||||
h = custom_effect->from.h + custom_effect->to.h;
|
h = custom_effect->from.h + custom_effect->to.h;
|
||||||
w = custom_effect->from.w + \
|
w = custom_effect->from.w + \
|
||||||
(custom_effect->to.w * (progress - 0.5) * 2);
|
(custom_effect->to.w * (progress - 0.5) * 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
EINA_LIST_FOREACH(objs, elist, obj)
|
EINA_LIST_FOREACH(objs, elist, obj)
|
||||||
evas_object_resize(obj, w, h);
|
evas_object_resize(obj, w, h);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ _transit_rotation_translation_color(void *data __UNUSED__, Evas_Object *obj, voi
|
||||||
{
|
{
|
||||||
Elm_Transit *trans;
|
Elm_Transit *trans;
|
||||||
|
|
||||||
trans = elm_transit_add(5.0);
|
trans = elm_transit_add();
|
||||||
elm_transit_object_add(trans, obj);
|
elm_transit_object_add(trans, obj);
|
||||||
elm_transit_auto_reverse_set(trans, EINA_TRUE);
|
elm_transit_auto_reverse_set(trans, EINA_TRUE);
|
||||||
elm_transit_repeat_times_set(trans, 2);
|
elm_transit_repeat_times_set(trans, 2);
|
||||||
|
@ -82,6 +82,9 @@ _transit_rotation_translation_color(void *data __UNUSED__, Evas_Object *obj, voi
|
||||||
|
|
||||||
/* Rotation Effect */
|
/* Rotation Effect */
|
||||||
elm_transit_effect_rotation_add(trans, 0.0, 135.0, EINA_FALSE);
|
elm_transit_effect_rotation_add(trans, 0.0, 135.0, EINA_FALSE);
|
||||||
|
|
||||||
|
elm_transit_duration_set(trans, 5.0);
|
||||||
|
elm_transit_go(trans);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -89,13 +92,16 @@ _transit_wipe(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED
|
||||||
{
|
{
|
||||||
Elm_Transit *trans;
|
Elm_Transit *trans;
|
||||||
|
|
||||||
trans = elm_transit_add(5.0);
|
trans = elm_transit_add();
|
||||||
elm_transit_object_add(trans, obj);
|
elm_transit_object_add(trans, obj);
|
||||||
elm_transit_auto_reverse_set(trans, EINA_TRUE);
|
elm_transit_auto_reverse_set(trans, EINA_TRUE);
|
||||||
|
|
||||||
elm_transit_effect_wipe_add(trans,
|
elm_transit_effect_wipe_add(trans,
|
||||||
ELM_TRANSIT_EFFECT_WIPE_TYPE_HIDE,
|
ELM_TRANSIT_EFFECT_WIPE_TYPE_HIDE,
|
||||||
ELM_TRANSIT_EFFECT_WIPE_DIR_RIGHT);
|
ELM_TRANSIT_EFFECT_WIPE_DIR_RIGHT);
|
||||||
|
|
||||||
|
elm_transit_duration_set(trans, 5.0);
|
||||||
|
elm_transit_go(trans);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -118,10 +124,13 @@ _transit_image_animation(void *data, Evas_Object *obj __UNUSED__, void *event_in
|
||||||
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
|
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
|
||||||
images = eina_list_append(images, eina_stringshare_add(buf));
|
images = eina_list_append(images, eina_stringshare_add(buf));
|
||||||
|
|
||||||
trans = elm_transit_add(5.0);
|
trans = elm_transit_add();
|
||||||
elm_transit_object_add(trans, ic);
|
elm_transit_object_add(trans, ic);
|
||||||
|
|
||||||
elm_transit_effect_image_animation_add(trans, images);
|
elm_transit_effect_image_animation_add(trans, images);
|
||||||
|
|
||||||
|
elm_transit_duration_set(trans, 5.0);
|
||||||
|
elm_transit_go(trans);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -129,9 +138,13 @@ _transit_resizing(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *even
|
||||||
{
|
{
|
||||||
Elm_Transit *trans;
|
Elm_Transit *trans;
|
||||||
|
|
||||||
trans = elm_transit_add(5.0);
|
trans = elm_transit_add();
|
||||||
elm_transit_object_add(trans, obj);
|
elm_transit_object_add(trans, obj);
|
||||||
|
|
||||||
elm_transit_effect_resizing_add(trans, 100, 50, 300, 150);
|
elm_transit_effect_resizing_add(trans, 100, 50, 300, 150);
|
||||||
|
|
||||||
|
elm_transit_duration_set(trans, 5.0);
|
||||||
|
elm_transit_go(trans);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -140,10 +153,14 @@ _transit_flip(void *data, Evas_Object *obj, void *event_info __UNUSED__)
|
||||||
Elm_Transit *trans;
|
Elm_Transit *trans;
|
||||||
Evas_Object *obj2 = data;
|
Evas_Object *obj2 = data;
|
||||||
|
|
||||||
trans = elm_transit_add(5.0);
|
trans = elm_transit_add();
|
||||||
elm_transit_object_add(trans, obj);
|
elm_transit_object_add(trans, obj);
|
||||||
elm_transit_object_add(trans, obj2);
|
elm_transit_object_add(trans, obj2);
|
||||||
|
|
||||||
elm_transit_effect_flip_add(trans, ELM_TRANSIT_EFFECT_FLIP_AXIS_X, EINA_TRUE);
|
elm_transit_effect_flip_add(trans, ELM_TRANSIT_EFFECT_FLIP_AXIS_X, EINA_TRUE);
|
||||||
|
|
||||||
|
elm_transit_duration_set(trans, 5.0);
|
||||||
|
elm_transit_go(trans);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -151,9 +168,13 @@ _transit_zoom(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
|
||||||
{
|
{
|
||||||
Elm_Transit *trans;
|
Elm_Transit *trans;
|
||||||
|
|
||||||
trans = elm_transit_add(5.0);
|
trans = elm_transit_add();
|
||||||
elm_transit_object_add(trans, obj);
|
elm_transit_object_add(trans, obj);
|
||||||
|
|
||||||
elm_transit_effect_zoom_add(trans, 1.0, 3.0);
|
elm_transit_effect_zoom_add(trans, 1.0, 3.0);
|
||||||
|
|
||||||
|
elm_transit_duration_set(trans, 5.0);
|
||||||
|
elm_transit_go(trans);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -162,10 +183,14 @@ _transit_blend(void *data, Evas_Object *obj, void *event_info __UNUSED__)
|
||||||
Elm_Transit *trans;
|
Elm_Transit *trans;
|
||||||
Evas_Object *obj2 = data;
|
Evas_Object *obj2 = data;
|
||||||
|
|
||||||
trans = elm_transit_add(5.0);
|
trans = elm_transit_add();
|
||||||
elm_transit_object_add(trans, obj);
|
elm_transit_object_add(trans, obj);
|
||||||
elm_transit_object_add(trans, obj2);
|
elm_transit_object_add(trans, obj2);
|
||||||
|
|
||||||
elm_transit_effect_blend_add(trans);
|
elm_transit_effect_blend_add(trans);
|
||||||
|
|
||||||
|
elm_transit_duration_set(trans, 5.0);
|
||||||
|
elm_transit_go(trans);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -174,10 +199,14 @@ _transit_fade(void *data, Evas_Object *obj, void *event_info __UNUSED__)
|
||||||
Elm_Transit *trans;
|
Elm_Transit *trans;
|
||||||
Evas_Object *obj2 = data;
|
Evas_Object *obj2 = data;
|
||||||
|
|
||||||
trans = elm_transit_add(5.0);
|
trans = elm_transit_add();
|
||||||
elm_transit_object_add(trans, obj);
|
elm_transit_object_add(trans, obj);
|
||||||
elm_transit_object_add(trans, obj2);
|
elm_transit_object_add(trans, obj2);
|
||||||
|
|
||||||
elm_transit_effect_fade_add(trans);
|
elm_transit_effect_fade_add(trans);
|
||||||
|
|
||||||
|
elm_transit_duration_set(trans, 5.0);
|
||||||
|
elm_transit_go(trans);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -186,10 +215,14 @@ _transit_resizable_flip(void *data, Evas_Object *obj, void *event_info __UNUSED_
|
||||||
Elm_Transit *trans;
|
Elm_Transit *trans;
|
||||||
Evas_Object *obj2 = data;
|
Evas_Object *obj2 = data;
|
||||||
|
|
||||||
trans = elm_transit_add(5.0);
|
trans = elm_transit_add();
|
||||||
elm_transit_object_add(trans, obj);
|
elm_transit_object_add(trans, obj);
|
||||||
elm_transit_object_add(trans, obj2);
|
elm_transit_object_add(trans, obj2);
|
||||||
|
|
||||||
elm_transit_effect_resizable_flip_add(trans, ELM_TRANSIT_EFFECT_FLIP_AXIS_Y, EINA_TRUE);
|
elm_transit_effect_resizable_flip_add(trans, ELM_TRANSIT_EFFECT_FLIP_AXIS_Y, EINA_TRUE);
|
||||||
|
|
||||||
|
elm_transit_duration_set(trans, 5.0);
|
||||||
|
elm_transit_go(trans);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Translation, Rotation, Color, Wipe, ImagemAnimation Effect */
|
/* Translation, Rotation, Color, Wipe, ImagemAnimation Effect */
|
||||||
|
|
|
@ -2470,7 +2470,7 @@ extern "C" {
|
||||||
|
|
||||||
typedef struct _Elm_Transit Elm_Transit;
|
typedef struct _Elm_Transit Elm_Transit;
|
||||||
|
|
||||||
EAPI Elm_Transit *elm_transit_add(double duration);
|
EAPI Elm_Transit *elm_transit_add();
|
||||||
EAPI void elm_transit_del(Elm_Transit *transit) EINA_ARG_NONNULL(1);
|
EAPI void elm_transit_del(Elm_Transit *transit) EINA_ARG_NONNULL(1);
|
||||||
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)) EINA_ARG_NONNULL(1, 2);
|
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)) EINA_ARG_NONNULL(1, 2);
|
||||||
EAPI void elm_transit_effect_del(Elm_Transit *transit, void (*cb)(void *data, Elm_Transit *transit, double progress), void *data) EINA_ARG_NONNULL(1, 2);
|
EAPI void elm_transit_effect_del(Elm_Transit *transit, void (*cb)(void *data, Elm_Transit *transit, double progress), void *data) EINA_ARG_NONNULL(1, 2);
|
||||||
|
@ -2488,6 +2488,9 @@ extern "C" {
|
||||||
EAPI int elm_transit_repeat_times_get(Elm_Transit *transit) EINA_ARG_NONNULL(1);
|
EAPI int elm_transit_repeat_times_get(Elm_Transit *transit) EINA_ARG_NONNULL(1);
|
||||||
EAPI void elm_transit_tween_mode_set(Elm_Transit *transit, Elm_Transit_Tween_Mode tween_mode) EINA_ARG_NONNULL(1);
|
EAPI void elm_transit_tween_mode_set(Elm_Transit *transit, Elm_Transit_Tween_Mode tween_mode) EINA_ARG_NONNULL(1);
|
||||||
EAPI Elm_Transit_Tween_Mode elm_transit_tween_mode_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1) EINA_ARG_NONNULL(1);
|
EAPI Elm_Transit_Tween_Mode elm_transit_tween_mode_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1) EINA_ARG_NONNULL(1);
|
||||||
|
EAPI void elm_transit_duration_set(Elm_Transit *transit, double duration) EINA_ARG_NONNULL(1);
|
||||||
|
EAPI double elm_transit_duration_get(const Elm_Transit *transit) EINA_ARG_NONNULL(1);
|
||||||
|
EAPI void elm_transit_go(Elm_Transit *transit) EINA_ARG_NONNULL(1);
|
||||||
|
|
||||||
EAPI void *elm_transit_effect_resizing_add(Elm_Transit* transit, Evas_Coord from_w, Evas_Coord from_h, Evas_Coord to_w, Evas_Coord to_h);
|
EAPI void *elm_transit_effect_resizing_add(Elm_Transit* transit, Evas_Coord from_w, Evas_Coord from_h, Evas_Coord to_w, Evas_Coord to_h);
|
||||||
EAPI void *elm_transit_effect_translation_add(Elm_Transit* transit, Evas_Coord from_dx, Evas_Coord dy, Evas_Coord to_dx, Evas_Coord to_dy);
|
EAPI void *elm_transit_effect_translation_add(Elm_Transit* transit, Evas_Coord from_dx, Evas_Coord dy, Evas_Coord to_dx, Evas_Coord to_dy);
|
||||||
|
|
|
@ -30,13 +30,14 @@
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* @code
|
* @code
|
||||||
* Elm_Transit *trans = elm_transit_add(5.0);
|
* Elm_Transit *trans = elm_transit_add();
|
||||||
* elm_transit_object_add(trans, obj);
|
* elm_transit_object_add(trans, obj);
|
||||||
* void *effect_context = elm_transit_effect_translation_context_new(0.0, 0.0,
|
* void *effect_context = elm_transit_effect_translation_context_new(0.0, 0.0,
|
||||||
* 280.0, 280.0);
|
* 280.0, 280.0);
|
||||||
* elm_transit_effect_add(transit,
|
* elm_transit_effect_add(transit,
|
||||||
* elm_transit_effect_translation_op, effect_context,
|
* elm_transit_effect_translation_op, effect_context,
|
||||||
* elm_transit_effect_translation_context_free);
|
* elm_transit_effect_translation_context_free);
|
||||||
|
* elm_transit_duration_set(transit, 5);
|
||||||
* elm_transit_auto_reverse_set(transit, EINA_TRUE);
|
* elm_transit_auto_reverse_set(transit, EINA_TRUE);
|
||||||
* elm_transit_tween_mode_set(transit, ELM_TRANSIT_TWEEN_MODE_DECELERATE);
|
* elm_transit_tween_mode_set(transit, ELM_TRANSIT_TWEEN_MODE_DECELERATE);
|
||||||
* elm_transit_repeat_times_set(transit, -1);
|
* elm_transit_repeat_times_set(transit, -1);
|
||||||
|
@ -263,23 +264,17 @@ _animator_animate_cb(void *data)
|
||||||
* @ingroup Transit
|
* @ingroup Transit
|
||||||
*/
|
*/
|
||||||
EAPI Elm_Transit *
|
EAPI Elm_Transit *
|
||||||
elm_transit_add(double duration)
|
elm_transit_add()
|
||||||
{
|
{
|
||||||
Elm_Transit *transit = ELM_NEW(Elm_Transit);
|
Elm_Transit *transit = ELM_NEW(Elm_Transit);
|
||||||
|
|
||||||
if (!transit) return NULL;
|
if (!transit) return NULL;
|
||||||
|
|
||||||
EINA_MAGIC_SET(transit, ELM_TRANSIT_MAGIC);
|
EINA_MAGIC_SET(transit, ELM_TRANSIT_MAGIC);
|
||||||
|
|
||||||
elm_transit_tween_mode_set(transit, ELM_TRANSIT_TWEEN_MODE_LINEAR);
|
elm_transit_tween_mode_set(transit, ELM_TRANSIT_TWEEN_MODE_LINEAR);
|
||||||
|
|
||||||
transit->time.duration = duration;
|
|
||||||
transit->time.begin = ecore_loop_time_get();
|
|
||||||
transit->animator = ecore_animator_add(_animator_animate_cb, transit);
|
|
||||||
|
|
||||||
return transit;
|
return transit;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stops the animation and delete the @p transit object.
|
* Stops the animation and delete the @p transit object.
|
||||||
*
|
*
|
||||||
|
@ -316,7 +311,7 @@ elm_transit_del(Elm_Transit *transit)
|
||||||
*
|
*
|
||||||
* Exemple:
|
* Exemple:
|
||||||
* @code
|
* @code
|
||||||
* Elm_Transit *transit = elm_transit_add(5.0);
|
* Elm_Transit *transit = elm_transit_add();
|
||||||
* elm_transit_effect_add(transit,
|
* elm_transit_effect_add(transit,
|
||||||
* elm_transit_effect_blend_op,
|
* elm_transit_effect_blend_op,
|
||||||
* elm_transit_effect_blend_context_new(),
|
* elm_transit_effect_blend_context_new(),
|
||||||
|
@ -741,6 +736,64 @@ elm_transit_tween_mode_get(const Elm_Transit *transit)
|
||||||
return transit->tween_mode;
|
return transit->tween_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the transit animation time
|
||||||
|
*
|
||||||
|
* @note @p transit can not be NULL
|
||||||
|
*
|
||||||
|
* @param transit The transit object.
|
||||||
|
* @param duration The animation time.
|
||||||
|
*
|
||||||
|
* @ingroup Transit
|
||||||
|
*/
|
||||||
|
EAPI void
|
||||||
|
elm_transit_duration_set(Elm_Transit *transit, double duration)
|
||||||
|
{
|
||||||
|
ELM_TRANSIT_CHECK_OR_RETURN(transit);
|
||||||
|
if (transit->animator) return;
|
||||||
|
transit->time.duration = duration;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the transit animation time
|
||||||
|
*
|
||||||
|
* @note @p transit can not be NULL
|
||||||
|
*
|
||||||
|
* @param transit The transit object.
|
||||||
|
*
|
||||||
|
* @return The transit animation time.
|
||||||
|
*
|
||||||
|
* @ingroup Transit
|
||||||
|
*/
|
||||||
|
EAPI double
|
||||||
|
elm_transit_duration_get(const Elm_Transit *transit)
|
||||||
|
{
|
||||||
|
ELM_TRANSIT_CHECK_OR_RETURN(transit);
|
||||||
|
return transit->time.duration;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Starts the transition.
|
||||||
|
* Once this API is called, the transit begins to measure the time.
|
||||||
|
*
|
||||||
|
* @note @p transit can not be NULL
|
||||||
|
*
|
||||||
|
* @param transit The transit object.
|
||||||
|
*
|
||||||
|
* @ingroup Transit
|
||||||
|
*/
|
||||||
|
EAPI void
|
||||||
|
elm_transit_go(Elm_Transit *transit)
|
||||||
|
{
|
||||||
|
ELM_TRANSIT_CHECK_OR_RETURN(transit);
|
||||||
|
|
||||||
|
if (transit->animator)
|
||||||
|
ecore_animator_del(transit->animator);
|
||||||
|
|
||||||
|
transit->time.begin = ecore_loop_time_get();
|
||||||
|
transit->animator = ecore_animator_add(_animator_animate_cb, transit);
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
//Resizing FX
|
//Resizing FX
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -2496,7 +2549,7 @@ _transit_effect_image_animation_context_new(Eina_List *images)
|
||||||
* @code
|
* @code
|
||||||
* char buf[PATH_MAX];
|
* char buf[PATH_MAX];
|
||||||
* Eina_List *images = NULL;
|
* Eina_List *images = NULL;
|
||||||
* Elm_Transit *transi = elm_transit_add(4.0);
|
* Elm_Transit *transi = elm_transit_add();
|
||||||
*
|
*
|
||||||
* snprintf(buf, sizeof(buf), "%s/images/icon_11.png", PACKAGE_DATA_DIR);
|
* snprintf(buf, sizeof(buf), "%s/images/icon_11.png", PACKAGE_DATA_DIR);
|
||||||
* images = eina_list_append(images, eina_stringshare_add(buf));
|
* images = eina_list_append(images, eina_stringshare_add(buf));
|
||||||
|
|
Loading…
Reference in New Issue