hermet pushed a commit to branch master.

http://git.enlightenment.org/tools/enventor.git/commit/?id=867c6bf2ed8e1fd6e5f34564c426a830bf4ab8b2

commit 867c6bf2ed8e1fd6e5f34564c426a830bf4ab8b2
Author: ChunEon Park <[email protected]>
Date:   Mon Jan 27 01:21:02 2014 +0900

    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);

-- 


Reply via email to