From 867c6bf2ed8e1fd6e5f34564c426a830bf4ab8b2 Mon Sep 17 00:00:00 2001 From: ChunEon Park Date: Mon, 27 Jan 2014 01:21:02 +0900 Subject: [PATCH] support view scale factor change. use ctrl + mouse wheel up/down --- README | 2 ++ src/bin/config_data.c | 19 ++++++++++++++++++- src/bin/edj_viewer.c | 11 +++++++++++ src/bin/main.c | 22 ++++++++++++++++++++++ src/include/config_data.h | 4 ++++ src/include/edj_viewer.h | 1 + 6 files changed, 58 insertions(+), 1 deletion(-) diff --git a/README b/README index 86825e0..d87cb00 100644 --- a/README +++ b/README @@ -58,6 +58,8 @@ Ctrl+W = Show/Hide Dummy Swallow Object Ctrl++ = Font Size Up Ctrl+- = Font Size Down Ctrl+T = Insert Defaut Template Code +Ctrl+Mouse Wheel Up = View Scale Up +Ctrl+Mouse Wheel Down = View Scale Down Ctrl+Shift+A = Insert Part Template Code: Table Ctrl+Shift+B = Insert Part Template Code: Textblock Ctrl+Shift+E = Insert Part Template Code: External diff --git a/src/bin/config_data.c b/src/bin/config_data.c index 0fb7468..2fcc517 100644 --- a/src/bin/config_data.c +++ b/src/bin/config_data.c @@ -16,12 +16,12 @@ struct config_s Eina_Strbuf *edc_data_path_buf; //pre-stored data paths for edc compile. float font_size; + double view_scale; void (*update_cb)(void *data, config_data *cd); void *update_cb_data; Evas_Coord_Size view_size; - Eina_Bool stats_bar : 1; Eina_Bool linenumber : 1; Eina_Bool part_highlight : 1; @@ -83,6 +83,7 @@ config_init(const char *edc_path, const char *edc_img_path, config_edc_data_path_set(cd, edc_data_path); cd->font_size = 1.0f; + cd->view_scale = 1; cd->linenumber = EINA_TRUE; cd->part_highlight = EINA_TRUE; cd->dummy_swallow = EINA_TRUE; @@ -454,3 +455,19 @@ config_auto_indent_set(config_data *cd, Eina_Bool auto_indent) { cd->auto_indent = auto_indent; } + +void +config_view_scale_set(config_data *cd, double view_scale) +{ + if (view_scale > MAX_VIEW_SCALE) + view_scale = MAX_VIEW_SCALE; + else if (view_scale < MIN_VIEW_SCALE) + view_scale = MIN_VIEW_SCALE; + cd->view_scale = view_scale; +} + +double +config_view_scale_get(config_data *cd) +{ + return cd->view_scale; +} diff --git a/src/bin/edj_viewer.c b/src/bin/edj_viewer.c index cf49b01..aa92f76 100644 --- a/src/bin/edj_viewer.c +++ b/src/bin/edj_viewer.c @@ -357,3 +357,14 @@ view_data_get(view_data *vd) { return vd->data; } + +void +view_scale_set(view_data *vd, double scale) +{ + if (!vd->layout) return; + edje_object_scale_set(vd->layout, scale); + + char buf[256]; + snprintf(buf, sizeof(buf), "View Scale: %2.1fx", scale); + stats_info_msg_update(vd->sd, buf); +} diff --git a/src/bin/main.c b/src/bin/main.c index 4a98a74..aa438dd 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -366,6 +366,27 @@ main_key_down_cb(void *data, int type EINA_UNUSED, void *ev) return ECORE_CALLBACK_PASS_ON; } +static Eina_Bool +main_mouse_wheel_cb(void *data, int type EINA_UNUSED, void *ev) +{ + Ecore_Event_Mouse_Wheel *event = ev; + app_data *ad = data; + + if (!ad->ctrl_pressed) return ECORE_CALLBACK_PASS_ON; + + //Scale up/down layout + view_data *vd = edj_mgr_view_get(ad->em, NULL); + double scale = config_view_scale_get(ad->cd); + + if (event->z < 0) scale += 0.1; + else scale -= 0.1; + + config_view_scale_set(ad->cd, scale); + view_scale_set(vd, config_view_scale_get(ad->cd)); + + return ECORE_CALLBACK_PASS_ON; +} + static void edc_view_set(app_data *ad, config_data *cd, stats_data *sd, Eina_Stringshare *group) @@ -567,6 +588,7 @@ init(app_data *ad, int argc, char **argv) ecore_event_init(); ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, main_key_down_cb, ad); ecore_event_handler_add(ECORE_EVENT_KEY_UP, main_key_up_cb, ad); + ecore_event_handler_add(ECORE_EVENT_MOUSE_WHEEL, main_mouse_wheel_cb, ad); elm_init(argc, argv); elm_setup(); diff --git a/src/include/config_data.h b/src/include/config_data.h index 6c4e8b0..ccab56b 100644 --- a/src/include/config_data.h +++ b/src/include/config_data.h @@ -1,5 +1,7 @@ #define MAX_FONT_SIZE 5.0 #define MIN_FONT_SIZE 0.5 +#define MAX_VIEW_SCALE 10 +#define MIN_VIEW_SCALE 0.1 config_data *config_init(const char *edc_path, const char *edc_img_path, const char *edc_snd_path, const char *edc_fnt_path, const char *edc_data_path); void config_term(config_data *cd); @@ -34,4 +36,6 @@ void config_auto_indent_set(config_data *cd, Eina_Bool auto_indent); Eina_Bool config_auto_indent_get(config_data *cd); void config_font_size_set(config_data *cd, float font_size); float config_font_size_get(config_data *cd); +void config_view_scale_set(config_data *cd, double view_scale); +double config_view_scale_get(config_data *cd); diff --git a/src/include/edj_viewer.h b/src/include/edj_viewer.h index b9830c8..007c298 100644 --- a/src/include/edj_viewer.h +++ b/src/include/edj_viewer.h @@ -7,3 +7,4 @@ void view_dummy_toggle(view_data *vd, Eina_Bool msg); void view_program_run(view_data *vd, const char *program); Eina_Stringshare *view_group_name_get(view_data *vd); void *view_data_get(view_data *vd); +void view_scale_set(view_data *vd, double scale);