hermet pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=d8151cc4dafab60e2f831e2c3a8eaefa89596586
commit d8151cc4dafab60e2f831e2c3a8eaefa89596586 Author: Jee-Yong Um <jc9...@samsung.com> Date: Fri Dec 26 10:27:15 2014 +0900 elm_transit: Append Elm_Transit_Tween_Mode sample to elementary_test Summary: A sample for elm_transit_tween mode which can be executed via "Effects"-"Transit Tween Mode" button in elementary_test Reviewers: Hermet Subscribers: Hermet Differential Revision: https://phab.enlightenment.org/D1817 --- src/bin/test.c | 2 + src/bin/test_transit.c | 101 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+) diff --git a/src/bin/test.c b/src/bin/test.c index 229e3f8..3e0f5b4 100644 --- a/src/bin/test.c +++ b/src/bin/test.c @@ -35,6 +35,7 @@ void test_transit_flip(void *data, Evas_Object *obj, void *event_info); void test_transit_resizable_flip(void *data, Evas_Object *obj, void *event_info); void test_transit_resizing(void *data, Evas_Object *obj, void *event_info); void test_transit_zoom(void *data, Evas_Object *obj, void *event_info); +void test_transit_tween(void *data, Evas_Object *obj, void *event_info); void test_transit_bezier(void *data, Evas_Object *obj, void *event_info); void test_fileselector_button(void *data, Evas_Object *obj, void *event_info); void test_fileselector_entry(void *data, Evas_Object *obj, void *event_info); @@ -597,6 +598,7 @@ add_tests: test_transit_resizable_flip); ADD_TEST(NULL, "Effects", "Transit Custom", test_transit_custom); ADD_TEST(NULL, "Effects", "Transit Chain", test_transit_chain); + ADD_TEST(NULL, "Effects", "Transit Tween Mode", test_transit_tween); ADD_TEST(NULL, "Effects", "Transit Bezier", test_transit_bezier); ADD_TEST(NULL, "Effects", "Flip", test_flip); ADD_TEST(NULL, "Effects", "Flip 2", test_flip2); diff --git a/src/bin/test_transit.c b/src/bin/test_transit.c index 5bff885..a97a8a5 100644 --- a/src/bin/test_transit.c +++ b/src/bin/test_transit.c @@ -3,6 +3,14 @@ #endif #include <Elementary.h> +#define TWEEN_NUM 7 +#define BTN_NUM (TWEEN_NUM + 1) +#define BTN_W 50 +#define BTN_H 50 +#define WIN_H (BTN_NUM * BTN_H) +#define WIN_W WIN_H +#define TRANSIT_DURATION 2.0 + typedef struct _Custom_Effect Custom_Effect; struct _Custom_Effect @@ -228,6 +236,58 @@ _transit_resizable_flip(void *data, Evas_Object *obj, void *event_info EINA_UNUS elm_transit_go(trans); } +static void +_transit_tween(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) +{ + Elm_Transit_Tween_Mode ettm = (Elm_Transit_Tween_Mode)data; + Elm_Transit *trans; + Evas_Coord x; + + evas_object_geometry_get(obj, &x, NULL, NULL, NULL); + + trans = elm_transit_add(); + elm_transit_tween_mode_set(trans, ettm); + elm_transit_effect_translation_add(trans, 0, 0, ((x ? -1 : 1) * (WIN_W - BTN_W)), 0); + elm_transit_object_add(trans, obj); + elm_transit_duration_set(trans, TRANSIT_DURATION); + elm_transit_objects_final_state_keep_set(trans, EINA_TRUE); + + elm_transit_go(trans); +} + +static void +_transit_tween_all(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Evas_Object **bt = data; + Elm_Transit *trans[TWEEN_NUM]; + Evas_Coord x; + int i; + + for (i = 0; i < TWEEN_NUM; i++) + { + evas_object_geometry_get(bt[i], &x, NULL, NULL, NULL); + + trans[i] = elm_transit_add(); + elm_transit_tween_mode_set(trans[i], i); + elm_transit_effect_translation_add(trans[i], 0, 0, ((x ? -1 : 1) * (WIN_W - BTN_W)), 0); + elm_transit_object_add(trans[i], bt[i]); + elm_transit_duration_set(trans[i], TRANSIT_DURATION); + elm_transit_objects_final_state_keep_set(trans[i], EINA_TRUE); + } + + for (i = 0; i < TWEEN_NUM; i++) + { + elm_transit_go(trans[i]); + } +} + +static void +_win_delete_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Evas_Object **bt = data; + free(bt); +} + /* Translation, Rotation, Color, Wipe, ImagemAnimation Effect */ void test_transit(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -554,3 +614,44 @@ test_transit_chain(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *e evas_object_resize(win, 400, 400); evas_object_show(win); } + +/* Transit Tween Mode */ +void +test_transit_tween(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Evas_Object *win, *label, **bt = malloc(sizeof(Evas_Object*) * BTN_NUM); + int i; + + char *modes[] = {"LINEAR", "SINUSOIDAL", "DECELERATE", "ACCELERATE", "DIVISOR_INTERP", "BOUNCE", "SPRING"}; + + win = elm_win_util_standard_add("transit10", "Transit Tween Mode"); + elm_win_autodel_set(win, EINA_TRUE); + evas_object_smart_callback_add(win, "delete,request", _win_delete_cb, bt); + + for (i = 0; i < TWEEN_NUM; i++) + { + label = elm_label_add(win); + elm_object_text_set(label, modes[i]); + evas_object_resize(label, WIN_W, BTN_H); + evas_object_move(label, 0, (i * BTN_H)); + evas_object_show(label); + + bt[i] = elm_button_add(win); + evas_object_resize(bt[i], BTN_W, BTN_H); + evas_object_move(bt[i], 0, (i * BTN_H)); + evas_object_show(bt[i]); + + evas_object_smart_callback_add(bt[i], "clicked", _transit_tween, (void *)i); + } + + bt[TWEEN_NUM] = elm_button_add(win); + elm_object_text_set(bt[TWEEN_NUM], "Go"); + evas_object_resize(bt[TWEEN_NUM], WIN_W, BTN_H); + evas_object_move(bt[TWEEN_NUM], 0, (WIN_H - BTN_H)); + evas_object_show(bt[TWEEN_NUM]); + + evas_object_smart_callback_add(bt[TWEEN_NUM], "clicked", _transit_tween_all, bt); + + evas_object_resize(win, WIN_W, WIN_H); + evas_object_show(win); +} --