forked from enlightenment/efl
photocam: Use Eina.Rect for image_region
This commit is contained in:
parent
e4517b28d6
commit
64ebdd9c7b
|
@ -2211,67 +2211,49 @@ _efl_ui_image_zoomable_efl_gfx_view_view_size_get(Eo *obj EINA_UNUSED, Efl_Ui_Im
|
||||||
return EINA_SIZE2D(pd->size.imw, pd->size.imh);
|
return EINA_SIZE2D(pd->size.imw, pd->size.imh);
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static Eina_Rect
|
||||||
_efl_ui_image_zoomable_image_region_get(Eo *obj, Efl_Ui_Image_Zoomable_Data *sd, int *x, int *y, int *w, int *h)
|
_efl_ui_image_zoomable_image_region_get(Eo *obj, Efl_Ui_Image_Zoomable_Data *sd)
|
||||||
{
|
{
|
||||||
Evas_Coord sx, sy, sw, sh;
|
Evas_Coord sx, sy, sw, sh;
|
||||||
|
Eina_Rect region = {};
|
||||||
|
|
||||||
elm_interface_scrollable_content_pos_get((Eo *)obj, &sx, &sy);
|
elm_interface_scrollable_content_pos_get((Eo *)obj, &sx, &sy);
|
||||||
elm_interface_scrollable_content_viewport_geometry_get
|
elm_interface_scrollable_content_viewport_geometry_get
|
||||||
((Eo *)obj, NULL, NULL, &sw, &sh);
|
((Eo *)obj, NULL, NULL, &sw, &sh);
|
||||||
|
|
||||||
if (sd->size.w > 0)
|
if (sd->size.w > 0)
|
||||||
{
|
{
|
||||||
if (x)
|
region.x = (sd->size.imw * sx) / sd->size.w;
|
||||||
{
|
if (region.x > sd->size.imw) region.x = sd->size.imw;
|
||||||
*x = (sd->size.imw * sx) / sd->size.w;
|
region.w = (sd->size.imw * sw) / sd->size.w;
|
||||||
if (*x > sd->size.imw) *x = sd->size.imw;
|
if (region.w > sd->size.imw) region.w = sd->size.imw;
|
||||||
}
|
else if (region.w < 0)
|
||||||
if (w)
|
region.w = 0;
|
||||||
{
|
|
||||||
*w = (sd->size.imw * sw) / sd->size.w;
|
|
||||||
if (*w > sd->size.imw) *w = sd->size.imw;
|
|
||||||
else if (*w < 0)
|
|
||||||
*w = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (x) *x = 0;
|
|
||||||
if (w) *w = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sd->size.h > 0)
|
if (sd->size.h > 0)
|
||||||
{
|
{
|
||||||
if (y)
|
region.y = (sd->size.imh * sy) / sd->size.h;
|
||||||
{
|
if (region.y > sd->size.imh) region.y = sd->size.imh;
|
||||||
*y = (sd->size.imh * sy) / sd->size.h;
|
region.h = (sd->size.imh * sh) / sd->size.h;
|
||||||
if (*y > sd->size.imh) *y = sd->size.imh;
|
if (region.h > sd->size.imh) region.h = sd->size.imh;
|
||||||
}
|
else if (region.h < 0)
|
||||||
if (h)
|
region.h = 0;
|
||||||
{
|
|
||||||
*h = (sd->size.imh * sh) / sd->size.h;
|
|
||||||
if (*h > sd->size.imh) *h = sd->size.imh;
|
|
||||||
else if (*h < 0)
|
|
||||||
*h = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (y) *y = 0;
|
|
||||||
if (h) *h = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return region;
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
_efl_ui_image_zoomable_image_region_set(Eo *obj, Efl_Ui_Image_Zoomable_Data *sd, int x, int y, int w, int h)
|
_efl_ui_image_zoomable_image_region_set(Eo *obj, Efl_Ui_Image_Zoomable_Data *sd, Eina_Rect region)
|
||||||
{
|
{
|
||||||
int rx, ry, rw, rh;
|
int rx, ry, rw, rh;
|
||||||
|
|
||||||
if ((sd->size.imw < 1) || (sd->size.imh < 1)) return;
|
if ((sd->size.imw < 1) || (sd->size.imh < 1)) return;
|
||||||
rx = (x * sd->size.w) / sd->size.imw;
|
rx = (region.x * sd->size.w) / sd->size.imw;
|
||||||
ry = (y * sd->size.h) / sd->size.imh;
|
ry = (region.y * sd->size.h) / sd->size.imh;
|
||||||
rw = (w * sd->size.w) / sd->size.imw;
|
rw = (region.w * sd->size.w) / sd->size.imw;
|
||||||
rh = (h * sd->size.h) / sd->size.imh;
|
rh = (region.h * sd->size.h) / sd->size.imh;
|
||||||
if (rw < 1) rw = 1;
|
if (rw < 1) rw = 1;
|
||||||
if (rh < 1) rh = 1;
|
if (rh < 1) rh = 1;
|
||||||
if ((rx + rw) > sd->size.w) rx = sd->size.w - rw;
|
if ((rx + rw) > sd->size.w) rx = sd->size.w - rw;
|
||||||
|
@ -2922,7 +2904,7 @@ elm_photocam_file_get(const Evas_Object *obj)
|
||||||
EAPI void
|
EAPI void
|
||||||
elm_photocam_image_region_show(Evas_Object *obj, int x, int y, int w, int h)
|
elm_photocam_image_region_show(Evas_Object *obj, int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
efl_ui_image_zoomable_image_region_set(obj, x, y, w, h);
|
efl_ui_image_zoomable_image_region_set(obj, EINA_RECT(x, y, w, h));
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
|
@ -2956,6 +2938,18 @@ elm_photocam_bounce_get(const Evas_Object *obj,
|
||||||
elm_interface_scrollable_bounce_allow_get((Eo *)obj, h_bounce, v_bounce);
|
elm_interface_scrollable_bounce_allow_get((Eo *)obj, h_bounce, v_bounce);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
elm_photocam_image_region_get(const Efl_Ui_Image_Zoomable *obj, int *x, int *y, int *w, int *h)
|
||||||
|
{
|
||||||
|
Eina_Rect r;
|
||||||
|
|
||||||
|
r = efl_ui_image_zoomable_image_region_get(obj);
|
||||||
|
if (x) *x = r.x;
|
||||||
|
if (y) *y = r.y;
|
||||||
|
if (w) *w = r.w;
|
||||||
|
if (h) *h = r.h;
|
||||||
|
}
|
||||||
|
|
||||||
/* Standard widget overrides */
|
/* Standard widget overrides */
|
||||||
|
|
||||||
ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(efl_ui_image_zoomable, Efl_Ui_Image_Zoomable_Data)
|
ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(efl_ui_image_zoomable, Efl_Ui_Image_Zoomable_Data)
|
||||||
|
|
|
@ -29,6 +29,7 @@ class Efl.Ui.Image_Zoomable (Elm.Widget, Efl.Ui.Image, Efl.Ui.Zoom,
|
||||||
|
|
||||||
See also @.image_region.set.
|
See also @.image_region.set.
|
||||||
]]
|
]]
|
||||||
|
legacy: null;
|
||||||
}
|
}
|
||||||
set {
|
set {
|
||||||
[[Set the viewed region of the image
|
[[Set the viewed region of the image
|
||||||
|
@ -39,10 +40,7 @@ class Efl.Ui.Image_Zoomable (Elm.Widget, Efl.Ui.Image, Efl.Ui.Zoom,
|
||||||
legacy: null;
|
legacy: null;
|
||||||
}
|
}
|
||||||
values {
|
values {
|
||||||
x: int; [[X-coordinate of region in image original pixels]]
|
region: Eina.Rect; [[The region in the original image pixels.]]
|
||||||
y: int; [[Y-coordinate of region in image original pixels]]
|
|
||||||
w: int; [[Width of region in image original pixels]]
|
|
||||||
h: int; [[Height of region in image original pixels]]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -218,5 +218,16 @@ EAPI void elm_photocam_zoom_mode_set(Evas_Object *obj, Elm_Photoca
|
||||||
*/
|
*/
|
||||||
EAPI Elm_Photocam_Zoom_Mode elm_photocam_zoom_mode_get(const Evas_Object *obj);
|
EAPI Elm_Photocam_Zoom_Mode elm_photocam_zoom_mode_get(const Evas_Object *obj);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the region of the image that is currently shown
|
||||||
|
*
|
||||||
|
* See also @ref Efl.Ui.Image_Zoomable.image_region.set.
|
||||||
|
*
|
||||||
|
* @param[out] x X-coordinate of region in image original pixels
|
||||||
|
* @param[out] y Y-coordinate of region in image original pixels
|
||||||
|
* @param[out] w Width of region in image original pixels
|
||||||
|
* @param[out] h Height of region in image original pixels
|
||||||
|
*/
|
||||||
|
EAPI void elm_photocam_image_region_get(const Evas_Object *obj, int *x, int *y, int *w, int *h);
|
||||||
|
|
||||||
#include "efl_ui_image_zoomable.eo.legacy.h"
|
#include "efl_ui_image_zoomable.eo.legacy.h"
|
||||||
|
|
Loading…
Reference in New Issue