From 5c3f29383612cf9686c5df2654d0a65e465d7042 Mon Sep 17 00:00:00 2001 From: Junseok Kim Date: Tue, 4 Apr 2023 12:54:27 +0900 Subject: [PATCH] e_util_transform: Add e_util_transform_zoom Added e_util_transform_zoom for contain zoom information for using zoom API of evas_map. Change-Id: I03b4d2ae0c8e0344c467157db592e963e437748a --- src/bin/e_util_transform.c | 37 +++++++++++++++++++++++++++++++++++++ src/bin/e_util_transform.h | 11 +++++++++++ 2 files changed, 48 insertions(+) diff --git a/src/bin/e_util_transform.c b/src/bin/e_util_transform.c index 8e1f9ae..5c7e1ae 100644 --- a/src/bin/e_util_transform.c +++ b/src/bin/e_util_transform.c @@ -55,6 +55,10 @@ e_util_transform_init(E_Util_Transform *transform) transform->bg_transform.scale[0] = 1.0; transform->bg_transform.scale[1] = 1.0; transform->bg_transform.scale[2] = 1.0; + transform->zoom.zoom_x = 1.0; + transform->zoom.zoom_y = 1.0; + transform->zoom.cx = 1; + transform->zoom.cy = 1; transform->changed = EINA_TRUE; transform->ref_count = back_ref_count; } @@ -204,6 +208,20 @@ e_util_transform_rotation_axis_reset(E_Util_Transform *transform) } E_API void +e_util_transform_zoom_set(E_Util_Transform *transform, double zoom_x, double zoom_y, int cx, int cy) +{ + if (!transform) return; + + transform->zoom.zoom_x = zoom_x; + transform->zoom.zoom_y = zoom_y; + transform->zoom.cx = cx; + transform->zoom.cy = cy; + + transform->use_zoom = EINA_TRUE; + transform->changed = EINA_TRUE; +} + +E_API void e_util_transform_role_set(E_Util_Transform *transform, const char *role) { if (!transform) return; @@ -236,6 +254,14 @@ e_util_transform_merge(E_Util_Transform *in_out, E_Util_Transform *input) _e_util_transform_value_merge(&in_out->transform, &input->transform); + if (input->use_zoom) + { + in_out->zoom.zoom_x *= input->zoom.zoom_x; + in_out->zoom.zoom_y *= input->zoom.zoom_y; + in_out->zoom.cx += input->zoom.cx; + in_out->zoom.cy += input->zoom.cy; + } + if(input->use_axis) memcpy(&in_out->rotation_axis, &input->rotation_axis, sizeof(input->rotation_axis)); @@ -249,6 +275,7 @@ e_util_transform_merge(E_Util_Transform *in_out, E_Util_Transform *input) in_out->use_viewport |= input->use_viewport; in_out->use_bg_transform |= input->use_bg_transform; in_out->use_axis |= input->use_axis; + in_out->use_zoom |= input->use_zoom; in_out->changed = EINA_TRUE; } @@ -352,6 +379,16 @@ e_util_transform_rotation_round_get(E_Util_Transform *transform, int *x, int *y, } E_API void +e_util_transform_zoom_get(E_Util_Transform *transform, double *zoom_x, double *zoom_y, int *cx, int *cy) +{ + if (!transform) return; + if (zoom_x) *zoom_x = transform->zoom.zoom_x; + if (zoom_y) *zoom_y = transform->zoom.zoom_y; + if (cx) *cx = transform->zoom.cx; + if (cy) *cy = transform->zoom.cy; +} + +E_API void e_util_transform_bg_move_get(E_Util_Transform *transform, double *x, double *y, double *z) { if (!transform) return; diff --git a/src/bin/e_util_transform.h b/src/bin/e_util_transform.h index 3b3c05c..2c65957 100644 --- a/src/bin/e_util_transform.h +++ b/src/bin/e_util_transform.h @@ -8,6 +8,7 @@ typedef struct _E_Util_Transform_Axis E_Util_Transform_Axis; typedef struct _E_Util_Transform_Vertex E_Util_Transform_Vertex; typedef struct _E_Util_Transform_Rect_Vertex E_Util_Transform_Rect_Vertex; typedef struct _E_Util_Transform_Matrix E_Util_Transform_Matrix; +typedef struct _E_Util_Transform_Zoom E_Util_Transform_Zoom; #else @@ -39,6 +40,12 @@ struct _E_Util_Transform_Axis double axis[3]; }; +struct _E_Util_Transform_Zoom +{ + double zoom_x, zoom_y; + int cx, cy; +}; + struct _E_Util_Transform { E_Util_Transform_Value transform; @@ -46,12 +53,14 @@ struct _E_Util_Transform E_Util_Transform_Texcoord texcoord; E_Util_Transform_Rect viewport; E_Util_Transform_Axis rotation_axis; + E_Util_Transform_Zoom zoom; int ref_count; Eina_Bool changed; Eina_Bool use_texcoord; Eina_Bool use_viewport; Eina_Bool use_bg_transform; Eina_Bool use_axis; + Eina_Bool use_zoom; Eina_Stringshare *role; }; @@ -87,6 +96,7 @@ E_API void e_util_transform_texcoord_set(E_Util_Transfor E_API void e_util_transform_viewport_set(E_Util_Transform *transform, int x, int y, int w, int h); E_API void e_util_transform_rotation_axis_set(E_Util_Transform *transform, double ax, double ay, double az); E_API void e_util_transform_rotation_axis_reset(E_Util_Transform *transform); +E_API void e_util_transform_zoom_set(E_Util_Transform *transform, double zoom_x, double zoom_y, int cx, int cy); E_API void e_util_transform_role_set(E_Util_Transform *transform, const char *role); E_API const char *e_util_transform_role_get(E_Util_Transform *transform); @@ -102,6 +112,7 @@ E_API void e_util_transform_scale_get(E_Util_Transform * E_API void e_util_transform_scale_round_get(E_Util_Transform *transform, int *x, int *y, int *z); E_API void e_util_transform_rotation_get(E_Util_Transform *transform, double *x, double *y, double *z); E_API void e_util_transform_rotation_round_get(E_Util_Transform *transform, int *x, int *y, int *z); +E_API void e_util_transform_zoom_get(E_Util_Transform *transform, double *zoom_x, double *zoom_y, int *cx, int *cy); E_API void e_util_transform_bg_move_get(E_Util_Transform *transform, double *x, double *y, double *z); E_API void e_util_transform_bg_move_round_get(E_Util_Transform *transform, int *x, int *y, int *z); E_API void e_util_transform_bg_scale_get(E_Util_Transform *transform, double *x, double *y, double *z); -- 2.7.4