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