hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=c499de4e88bbcf267aeaea16e96060faecc86699
commit c499de4e88bbcf267aeaea16e96060faecc86699 Author: Hermet Park <her...@hermet.pe.kr> Date: Fri Feb 5 18:14:16 2016 +0900 stats: inverting view size with transition. --- src/bin/panes.c | 2 -- src/bin/statusbar.c | 51 +++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 43 insertions(+), 10 deletions(-) diff --git a/src/bin/panes.c b/src/bin/panes.c index e5a8cf8..6c990c4 100644 --- a/src/bin/panes.c +++ b/src/bin/panes.c @@ -1,7 +1,5 @@ #include "common.h" -static const double TRANSIT_TIME = 0.25; - typedef enum { PANES_LIVE_VIEW_EXPAND, diff --git a/src/bin/statusbar.c b/src/bin/statusbar.c index c1ca617..0390421 100644 --- a/src/bin/statusbar.c +++ b/src/bin/statusbar.c @@ -9,6 +9,14 @@ typedef struct statusbar_s int max_line; } stats_data; +typedef struct invert_transit_data_s +{ + Evas_Coord orig_w; + Evas_Coord orig_h; + Evas_Coord diff_w; + Evas_Coord diff_h; +} invert_data; + stats_data *g_sd = NULL; static void @@ -55,23 +63,50 @@ ctxpopup_dismissed_cb(void *data, Evas_Object *obj, } static void +transit_op_invert(void *data, Elm_Transit *transit EINA_UNUSED, double progress) +{ + invert_data *id = data; + Evas_Coord w, h; + w = id->orig_w + ((double)(id->diff_w)) * progress; + h = id->orig_h + ((double)(id->diff_h)) * progress; + + enventor_object_live_view_size_set(base_enventor_get(), w, h); + + //Just in live edit mode case. + live_edit_update(); +} + +static void +transit_op_end(void *data, Elm_Transit *transit EINA_UNUSED) +{ + invert_data *id = data; + config_view_size_set((id->orig_w + id->diff_w), (id->orig_h + id->diff_h)); + free(id); +} + +static void view_invert_btn_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED) { stats_data *sd = data; //Toggle on the configurable view size forcely. if (!config_view_size_configurable_get()) - { - config_view_size_configurable_set(EINA_TRUE); - } + config_view_size_configurable_set(EINA_TRUE); + + invert_data *id = malloc(sizeof(invert_data)); Evas_Coord w, h; config_view_size_get(&w, &h); - config_view_size_set(h, w); - enventor_object_live_view_size_set(base_enventor_get(), h, w); - - //Just in live edit mode case. - live_edit_update(); + id->orig_w = w; + id->orig_h = h; + id->diff_w = h - w; + id->diff_h = w - h; + + Elm_Transit *transit = elm_transit_add(); + elm_transit_effect_add(transit, transit_op_invert, id, transit_op_end); + elm_transit_tween_mode_set(transit, ELM_TRANSIT_TWEEN_MODE_DECELERATE); + elm_transit_duration_set(transit, TRANSIT_TIME); + elm_transit_go(transit); } static void --