From a2309c5083a643011b4e69347d6be4da3a0adee8 Mon Sep 17 00:00:00 2001 From: Sungtaek Hong Date: Mon, 18 Dec 2017 17:33:49 +0900 Subject: efl_ui_image: apply load_size when API is called Summary: when efl_image_load_size_set() is called, image only sets internal variable and not apply to the internal image. elm_image_prescale_set() is also affected. Test Plan: Run elementary_test->Image Prescale Reviewers: jpeg, eunue, woohyun Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D5645 --- src/lib/elementary/efl_ui_image.c | 35 ++++++++++++++++---------------- src/lib/elementary/efl_ui_widget_image.h | 2 +- 2 files changed, 19 insertions(+), 18 deletions(-) (limited to 'src/lib') diff --git a/src/lib/elementary/efl_ui_image.c b/src/lib/elementary/efl_ui_image.c index 696413df8e..35ee4e7c37 100644 --- a/src/lib/elementary/efl_ui_image.c +++ b/src/lib/elementary/efl_ui_image.c @@ -578,7 +578,7 @@ _efl_ui_image_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Image_Data *priv) priv->smooth = EINA_TRUE; priv->fill_inside = EINA_TRUE; priv->aspect_fixed = EINA_TRUE; - priv->load_size = 0; + priv->load_size = EINA_SIZE2D(0, 0); priv->scale = 1.0; priv->scale_up = EINA_TRUE; priv->scale_down = EINA_TRUE; @@ -809,6 +809,16 @@ _efl_ui_image_sizing_eval(Evas_Object *obj) evas_object_size_hint_max_set(obj, maxw, maxh); } +static void +_efl_ui_image_load_size_set_internal(Evas_Object *obj, Efl_Ui_Image_Data *sd) +{ + Eina_Size2D sz = sd->load_size; + + if ((sz.w <= 0) || (sz.h <= 0)) + sz = efl_gfx_view_size_get(obj); + evas_object_image_load_size_set(sd->img, sz.w, sz.h); +} + static void _efl_ui_image_file_set_do(Evas_Object *obj) { @@ -831,13 +841,7 @@ _efl_ui_image_file_set_do(Evas_Object *obj) sd->edje = EINA_FALSE; - if (sd->load_size > 0) - evas_object_image_load_size_set(sd->img, sd->load_size, sd->load_size); - else - { - Eina_Size2D sz = efl_gfx_view_size_get(obj); - evas_object_image_load_size_set(sd->img, sz.w, sz.h); - } + _efl_ui_image_load_size_set_internal(obj, sd); } static void @@ -1283,30 +1287,27 @@ elm_image_prescale_set(Evas_Object *obj, } EOLIAN static void -_efl_ui_image_efl_image_load_load_size_set(Eo *obj EINA_UNUSED, Efl_Ui_Image_Data *sd, Eina_Size2D sz) +_efl_ui_image_efl_image_load_load_size_set(Eo *obj, Efl_Ui_Image_Data *sd, Eina_Size2D sz) { - // FIXME: This should handle both dimensions! - if (sz.w > sz.h) - sd->load_size = sz.w; - else - sd->load_size = sz.h; + sd->load_size = sz; + _efl_ui_image_load_size_set_internal(obj, sd); } EAPI int elm_image_prescale_get(const Evas_Object *obj) { Eina_Size2D sz; - EFL_UI_IMAGE_CHECK(obj) 0; sz = efl_image_load_size_get(obj); - return sz.w; + + return MAX(sz.w, sz.h); } EOLIAN static Eina_Size2D _efl_ui_image_efl_image_load_load_size_get(Eo *obj EINA_UNUSED, Efl_Ui_Image_Data *sd) { - return EINA_SIZE2D(sd->load_size, sd->load_size); + return sd->load_size; } EOLIAN static void diff --git a/src/lib/elementary/efl_ui_widget_image.h b/src/lib/elementary/efl_ui_widget_image.h index 88759c4a13..e5c45eb225 100644 --- a/src/lib/elementary/efl_ui_widget_image.h +++ b/src/lib/elementary/efl_ui_widget_image.h @@ -61,7 +61,7 @@ struct _Efl_Ui_Image_Data Evas_Coord img_x, img_y, img_w, img_h; - int load_size; + Eina_Size2D load_size; int frame_count; int cur_frame; -- cgit v1.2.1