efl: Use Eina.Size2D in Gfx.View

This commit is contained in:
Jean-Philippe Andre 2017-09-18 20:16:33 +09:00
parent 2df8ad36b4
commit b19ee757e5
9 changed files with 71 additions and 59 deletions

View File

@ -1,3 +1,5 @@
import eina_types;
interface Efl.Gfx.View
{
[[Efl graphics view interface]]
@ -28,8 +30,7 @@ interface Efl.Gfx.View
set {}
get {}
values {
w: int; [[Width of the view.]]
h: int; [[Height of the view.]]
size: Eina.Size2D; [[Size of the view.]]
}
}
}

View File

@ -749,7 +749,7 @@ void
_efl_ui_image_sizing_eval(Evas_Object *obj)
{
Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1;
int w = 0, h = 0;
Eina_Size2D sz;
double ts;
EFL_UI_IMAGE_DATA_GET_OR_RETURN(obj, sd);
@ -764,37 +764,37 @@ _efl_ui_image_sizing_eval(Evas_Object *obj)
ts = sd->scale;
sd->scale = 1.0;
efl_gfx_view_size_get(obj, &w, &h);
sz = efl_gfx_view_size_get(obj);
sd->scale = ts;
evas_object_size_hint_combined_min_get(obj, &minw, &minh);
if (sd->no_scale)
{
maxw = minw = w;
maxh = minh = h;
maxw = minw = sz.w;
maxh = minh = sz.h;
if ((sd->scale > 1.0) && (sd->scale_up))
{
maxw = minw = w * sd->scale;
maxh = minh = h * sd->scale;
maxw = minw = sz.w * sd->scale;
maxh = minh = sz.h * sd->scale;
}
else if ((sd->scale < 1.0) && (sd->scale_down))
{
maxw = minw = w * sd->scale;
maxh = minh = h * sd->scale;
maxw = minw = sz.w * sd->scale;
maxh = minh = sz.h * sd->scale;
}
}
else
{
if (!sd->scale_down)
{
minw = w * sd->scale;
minh = h * sd->scale;
minw = sz.w * sd->scale;
minh = sz.h * sd->scale;
}
if (!sd->scale_up)
{
maxw = w * sd->scale;
maxh = h * sd->scale;
maxw = sz.w * sd->scale;
maxh = sz.h * sd->scale;
}
}
@ -806,7 +806,6 @@ static void
_efl_ui_image_file_set_do(Evas_Object *obj)
{
Evas_Object *pclip = NULL;
int w = 0, h = 0;
EFL_UI_IMAGE_DATA_GET(obj, sd);
@ -829,8 +828,8 @@ _efl_ui_image_file_set_do(Evas_Object *obj)
evas_object_image_load_size_set(sd->img, sd->load_size, sd->load_size);
else
{
efl_gfx_view_size_get((Eo *) obj, &w, &h);
evas_object_image_load_size_set(sd->img, w, h);
Eina_Size2D sz = efl_gfx_view_size_get(obj);
evas_object_image_load_size_set(sd->img, sz.w, sz.h);
}
}
@ -1246,20 +1245,17 @@ elm_image_async_open_set(Eo *obj, Eina_Bool async)
if (!async) _async_cancel(pd);
}
EOLIAN static void
_efl_ui_image_efl_gfx_view_view_size_get(Eo *obj EINA_UNUSED, Efl_Ui_Image_Data *sd, int *w, int *h)
EOLIAN static Eina_Size2D
_efl_ui_image_efl_gfx_view_view_size_get(Eo *obj EINA_UNUSED, Efl_Ui_Image_Data *sd)
{
int tw, th;
if (w) *w = 0;
if (h) *h = 0;
if (efl_isa(sd->img, EDJE_OBJECT_CLASS))
edje_object_size_min_get(sd->img, &tw, &th);
else
evas_object_image_size_get(sd->img, &tw, &th);
if (w) *w = tw;
if (h) *h = th;
return EINA_SIZE2D(tw, th);
}
EOLIAN static void
@ -2194,7 +2190,10 @@ elm_image_object_get(const Evas_Object *obj)
EAPI void
elm_image_object_size_get(const Evas_Object *obj, int *w, int *h)
{
efl_gfx_view_size_get(obj, w, h);
Eina_Size2D sz;
sz = efl_gfx_view_size_get(obj);
if (w) *w = sz.w;
if (h) *h = sz.h;
}
EAPI void

View File

@ -2206,11 +2206,10 @@ _efl_ui_image_zoomable_efl_ui_zoom_zoom_mode_get(Eo *obj EINA_UNUSED, Efl_Ui_Ima
return sd->mode;
}
EOLIAN static void
_efl_ui_image_zoomable_efl_gfx_view_view_size_get(Eo *obj EINA_UNUSED, Efl_Ui_Image_Zoomable_Data *pd, int *w, int *h)
EOLIAN static Eina_Size2D
_efl_ui_image_zoomable_efl_gfx_view_view_size_get(Eo *obj EINA_UNUSED, Efl_Ui_Image_Zoomable_Data *pd)
{
if (w) *w = pd->size.imw;
if (h) *h = pd->size.imh;
return EINA_SIZE2D(pd->size.imw, pd->size.imh);
}
EOLIAN static void
@ -2361,7 +2360,8 @@ _min_obj_size_get(Evas_Object *o, int *w, int *h)
{
EFL_UI_IMAGE_ZOOMABLE_DATA_GET(o, sd);
efl_gfx_view_size_get(o, w, h);
*w = sd->size.imw;
*h = sd->size.imh;
if (*w == 0 || *h == 0)
{
@ -2849,7 +2849,10 @@ elm_photocam_internal_image_get(const Evas_Object *obj)
EAPI void
elm_photocam_image_size_get(const Evas_Object *obj, int *w, int *h)
{
efl_gfx_view_size_get(obj, w, h);
Eina_Size2D sz;
sz = efl_gfx_view_size_get(obj);
if (w) *w = sz.w;
if (h) *h = sz.h;
}
EAPI Eina_Bool

View File

@ -508,22 +508,21 @@ _elm_glview_render_policy_set(Eo *obj, Elm_Glview_Data *sd, Elm_GLView_Render_Po
}
EOLIAN static void
_elm_glview_efl_gfx_view_view_size_set(Eo *obj, Elm_Glview_Data *sd, int w, int h)
_elm_glview_efl_gfx_view_view_size_set(Eo *obj, Elm_Glview_Data *sd, Eina_Size2D sz)
{
if ((w == sd->w) && (h == sd->h)) return;
if ((sz.w == sd->w) && (sz.h == sd->h)) return;
sd->w = w;
sd->h = h;
sd->w = sz.w;
sd->h = sz.h;
_glview_update_surface(obj);
elm_obj_glview_draw_request(obj);
}
EOLIAN static void
_elm_glview_efl_gfx_view_view_size_get(Eo *obj EINA_UNUSED, Elm_Glview_Data *sd, int *w, int *h)
EOLIAN static Eina_Size2D
_elm_glview_efl_gfx_view_view_size_get(Eo *obj EINA_UNUSED, Elm_Glview_Data *sd)
{
if (w) *w = sd->w;
if (h) *h = sd->h;
return EINA_SIZE2D(sd->w, sd->h);
}
EOLIAN static void
@ -571,13 +570,16 @@ elm_glview_changed_set(Evas_Object *obj)
EAPI void
elm_glview_size_get(const Elm_Glview *obj, int *w, int *h)
{
efl_gfx_view_size_get(obj, w, h);
Eina_Size2D sz;
sz = efl_gfx_view_size_get(obj);
if (w) *w = sz.w;
if (h) *h = sz.h;
}
EAPI void
elm_glview_size_set(Elm_Glview *obj, int w, int h)
{
efl_gfx_view_size_set(obj, w, h);
efl_gfx_view_size_set(obj, EINA_SIZE2D(w, h));
}
EAPI void

View File

@ -319,7 +319,10 @@ _map_calc(Eo *eo_obj, Evas_Object_Protected_Data *obj, Efl_Gfx_Map_Data *pd)
if (obj->is_image_object)
{
// Image is a special case in terms of geometry
efl_gfx_view_size_get(eo_obj, &imw, &imh);
Eina_Size2D sz;
sz = efl_gfx_view_size_get(eo_obj);
imw = sz.w;
imh = sz.h;
}
else
{

View File

@ -159,8 +159,11 @@ evas_object_image_border_center_fill_get(const Evas_Object *obj)
EAPI void
evas_object_image_size_get(const Evas_Object *obj, int *w, int *h)
{
Eina_Size2D sz;
EVAS_IMAGE_API(obj);
efl_gfx_view_size_get(obj, w, h);
sz = efl_gfx_view_size_get(obj);
if (w) *w = sz.w;
if (h) *h = sz.h;
}
EAPI Evas_Colorspace

View File

@ -689,8 +689,8 @@ _efl_canvas_image_internal_efl_image_image_size_get(Eo *eo_obj EINA_UNUSED, Evas
if (h) *h = o->file_size.h;
}
EOLIAN static void
_efl_canvas_image_internal_efl_gfx_view_view_size_get(Eo *eo_obj, Evas_Image_Data *o, int *w, int *h)
EOLIAN static Eina_Size2D
_efl_canvas_image_internal_efl_gfx_view_view_size_get(Eo *eo_obj, Evas_Image_Data *o)
{
int uvw, uvh;
Evas_Object_Protected_Data *source = NULL;
@ -727,8 +727,7 @@ _efl_canvas_image_internal_efl_gfx_view_view_size_get(Eo *eo_obj, Evas_Image_Dat
uvh = source->proxy->h;
}
if (w) *w = uvw;
if (h) *h = uvh;
return EINA_SIZE2D(uvw, uvh);
}
EOLIAN static void

View File

@ -401,20 +401,17 @@ evas_object_vg_was_opaque(Evas_Object *eo_obj EINA_UNUSED,
return 0;
}
void
_evas_vg_efl_gfx_view_view_size_get(Eo *obj EINA_UNUSED, Evas_VG_Data *pd,
int *w, int *h)
EOLIAN static Eina_Size2D
_evas_vg_efl_gfx_view_view_size_get(Eo *obj EINA_UNUSED, Evas_VG_Data *pd)
{
if (w) *w = pd->width;
if (h) *h = pd->height;
return EINA_SIZE2D(pd->width, pd->height);
}
void
_evas_vg_efl_gfx_view_view_size_set(Eo *obj EINA_UNUSED, Evas_VG_Data *pd,
int w, int h)
EOLIAN static void
_evas_vg_efl_gfx_view_view_size_set(Eo *obj EINA_UNUSED, Evas_VG_Data *pd, Eina_Size2D sz)
{
pd->width = w;
pd->height = h;
pd->width = sz.w;
pd->height = sz.h;
}
void

View File

@ -675,14 +675,17 @@ START_TEST(evas_object_image_map_unmap)
Eina_Bool all_white = 1, all_transparent = 1;
Eina_Rw_Slice slice;
Eina_Rect r, r2;
Eina_Size2D sz;
const char *imgpath = TESTS_IMG_DIR "/Pic4.png";
o = efl_add(EFL_CANVAS_IMAGE_CLASS, e);
efl_file_set(o, imgpath, NULL);
efl_gfx_view_size_get(o, &w, &h);
sz = efl_gfx_view_size_get(o);
cs = efl_gfx_buffer_colorspace_get(o);
w = sz.w;
h = sz.h;
r.x = (w / 4) & ~3;
r.y = (h / 4) & ~3;
r.w = (w / 2) & ~3;
@ -757,7 +760,9 @@ START_TEST(evas_object_image_map_unmap)
o2 = efl_add(EFL_CANVAS_IMAGE_CLASS, e);
efl_file_set(o2, tmp, NULL);
efl_gfx_view_size_get(o, &w2, &h2);
sz = efl_gfx_view_size_get(o);
w2 = sz.w;
h2 = sz.h;
// unlink now to not leave any crap after failing the test
unlink(tmp);