{
h = custom_effect->from.h + custom_effect->to.h;
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)
- evas_object_resize(obj, w, h);
+ evas_object_resize(obj, w, h);
}
{
Elm_Transit *trans;
- trans = elm_transit_add(5.0);
+ trans = elm_transit_add();
elm_transit_object_add(trans, obj);
elm_transit_auto_reverse_set(trans, EINA_TRUE);
elm_transit_repeat_times_set(trans, 2);
/* Rotation Effect */
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
{
Elm_Transit *trans;
- trans = elm_transit_add(5.0);
+ trans = elm_transit_add();
elm_transit_object_add(trans, obj);
elm_transit_auto_reverse_set(trans, EINA_TRUE);
elm_transit_effect_wipe_add(trans,
ELM_TRANSIT_EFFECT_WIPE_TYPE_HIDE,
ELM_TRANSIT_EFFECT_WIPE_DIR_RIGHT);
+
+ elm_transit_duration_set(trans, 5.0);
+ elm_transit_go(trans);
}
static void
snprintf(buf, sizeof(buf), "%s/images/logo_small.png", PACKAGE_DATA_DIR);
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_effect_image_animation_add(trans, images);
+
+ elm_transit_duration_set(trans, 5.0);
+ elm_transit_go(trans);
}
static void
{
Elm_Transit *trans;
- trans = elm_transit_add(5.0);
+ trans = elm_transit_add();
elm_transit_object_add(trans, obj);
+
elm_transit_effect_resizing_add(trans, 100, 50, 300, 150);
+
+ elm_transit_duration_set(trans, 5.0);
+ elm_transit_go(trans);
}
static void
Elm_Transit *trans;
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, obj2);
+
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
{
Elm_Transit *trans;
- trans = elm_transit_add(5.0);
+ trans = elm_transit_add();
elm_transit_object_add(trans, obj);
+
elm_transit_effect_zoom_add(trans, 1.0, 3.0);
+
+ elm_transit_duration_set(trans, 5.0);
+ elm_transit_go(trans);
}
static void
Elm_Transit *trans;
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, obj2);
+
elm_transit_effect_blend_add(trans);
+
+ elm_transit_duration_set(trans, 5.0);
+ elm_transit_go(trans);
}
static void
Elm_Transit *trans;
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, obj2);
+
elm_transit_effect_fade_add(trans);
+
+ elm_transit_duration_set(trans, 5.0);
+ elm_transit_go(trans);
}
static void
Elm_Transit *trans;
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, obj2);
+
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 */
evas_object_show(bt);
evas_object_move(bt, 50, 100);
evas_object_resize(bt, 200, 30);
-
+
bt2 = elm_button_add(win);
elm_button_label_set(bt2, "Back Button - Resizable Flip Effect");
evas_object_move(bt2, 50, 100);
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_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 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 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_translation_add(Elm_Transit* transit, Evas_Coord from_dx, Evas_Coord dy, Evas_Coord to_dx, Evas_Coord to_dy);
*
* Example:
* @code
- * Elm_Transit *trans = elm_transit_add(5.0);
+ * Elm_Transit *trans = elm_transit_add();
* elm_transit_object_add(trans, obj);
* void *effect_context = elm_transit_effect_translation_context_new(0.0, 0.0,
* 280.0, 280.0);
* elm_transit_effect_add(transit,
* elm_transit_effect_translation_op, effect_context,
* elm_transit_effect_translation_context_free);
+ * elm_transit_duration_set(transit, 5);
* elm_transit_auto_reverse_set(transit, EINA_TRUE);
* elm_transit_tween_mode_set(transit, ELM_TRANSIT_TWEEN_MODE_DECELERATE);
* elm_transit_repeat_times_set(transit, -1);
* @ingroup Transit
*/
EAPI Elm_Transit *
-elm_transit_add(double duration)
+elm_transit_add()
{
Elm_Transit *transit = ELM_NEW(Elm_Transit);
-
if (!transit) return NULL;
EINA_MAGIC_SET(transit, ELM_TRANSIT_MAGIC);
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;
}
-
/**
* Stops the animation and delete the @p transit object.
*
*
* Exemple:
* @code
- * Elm_Transit *transit = elm_transit_add(5.0);
+ * Elm_Transit *transit = elm_transit_add();
* elm_transit_effect_add(transit,
* elm_transit_effect_blend_op,
* elm_transit_effect_blend_context_new(),
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
///////////////////////////////////////////////////////////////////////////////
* @code
* char buf[PATH_MAX];
* 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);
* images = eina_list_append(images, eina_stringshare_add(buf));