forked from enlightenment/efl
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
This commit is contained in:
parent
81ba035f69
commit
a2309c5083
|
@ -285,6 +285,7 @@ void test_dayselector(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_image(void *data, Evas_Object *obj, void *event_info);
|
void test_image(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_image_scale_type(void *data, Evas_Object *obj, void *event_info);
|
void test_image_scale_type(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_image_swallow_align(void *data, Evas_Object *obj, void *event_info);
|
void test_image_swallow_align(void *data, Evas_Object *obj, void *event_info);
|
||||||
|
void test_image_prescale(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_remote_image(void *data, Evas_Object *obj, void *event_info);
|
void test_remote_image(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_click_image(void *data, Evas_Object *obj, void *event_info);
|
void test_click_image(void *data, Evas_Object *obj, void *event_info);
|
||||||
void test_load_image(void *data, Evas_Object *obj, void *event_info);
|
void test_load_image(void *data, Evas_Object *obj, void *event_info);
|
||||||
|
@ -773,6 +774,7 @@ add_tests:
|
||||||
ADD_TEST(NULL, "Images", "Image Remote", test_remote_image);
|
ADD_TEST(NULL, "Images", "Image Remote", test_remote_image);
|
||||||
ADD_TEST(NULL, "Images", "Image Click", test_click_image);
|
ADD_TEST(NULL, "Images", "Image Click", test_click_image);
|
||||||
ADD_TEST(NULL, "Images", "Image Async Load", test_load_image);
|
ADD_TEST(NULL, "Images", "Image Async Load", test_load_image);
|
||||||
|
ADD_TEST(NULL, "Images", "Image Prescale", test_image_prescale);
|
||||||
ADD_TEST(NULL, "Images", "Slideshow", test_slideshow);
|
ADD_TEST(NULL, "Images", "Slideshow", test_slideshow);
|
||||||
ADD_TEST(NULL, "Images", "Video", test_video);
|
ADD_TEST(NULL, "Images", "Video", test_video);
|
||||||
|
|
||||||
|
|
|
@ -658,3 +658,78 @@ test_load_image(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *eve
|
||||||
evas_object_resize(win, 320, 480);
|
evas_object_resize(win, 320, 480);
|
||||||
evas_object_show(win);
|
evas_object_show(win);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_cb_prescale_radio_changed(void *data, Evas_Object *obj, void *event EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Evas_Object *o_bg = data;
|
||||||
|
int size;
|
||||||
|
size = elm_radio_value_get((Evas_Object *)obj);
|
||||||
|
elm_image_prescale_set(o_bg, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
test_image_prescale(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Evas_Object *win, *im;
|
||||||
|
Evas_Object *box, *hbox;
|
||||||
|
Evas_Object *rd, *rdg;
|
||||||
|
char buf[PATH_MAX];
|
||||||
|
|
||||||
|
|
||||||
|
win = elm_win_util_standard_add("image-prescale", "Image Prescale Test");
|
||||||
|
elm_win_autodel_set(win, EINA_TRUE);
|
||||||
|
|
||||||
|
box = elm_box_add(win);
|
||||||
|
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
elm_win_resize_object_add(win, box);
|
||||||
|
evas_object_show(box);
|
||||||
|
|
||||||
|
im = elm_image_add(win);
|
||||||
|
snprintf(buf, sizeof(buf), "%s/images/plant_01.jpg", elm_app_data_dir_get());
|
||||||
|
elm_image_file_set(im, buf, NULL);
|
||||||
|
evas_object_size_hint_weight_set(im, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(im, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
elm_box_pack_end(box, im);
|
||||||
|
evas_object_show(im);
|
||||||
|
|
||||||
|
hbox = elm_box_add(win);
|
||||||
|
elm_box_horizontal_set(hbox, EINA_TRUE);
|
||||||
|
evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
|
||||||
|
evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
|
||||||
|
rd = elm_radio_add(win);
|
||||||
|
elm_radio_state_value_set(rd, 50);
|
||||||
|
elm_object_text_set(rd, "50");
|
||||||
|
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
|
||||||
|
evas_object_smart_callback_add(rd, "changed", _cb_prescale_radio_changed, im);
|
||||||
|
elm_box_pack_end(hbox, rd);
|
||||||
|
evas_object_show(rd);
|
||||||
|
rdg = rd;
|
||||||
|
|
||||||
|
rd = elm_radio_add(win);
|
||||||
|
elm_radio_state_value_set(rd, 100);
|
||||||
|
elm_radio_group_add(rd, rdg);
|
||||||
|
elm_object_text_set(rd, "100");
|
||||||
|
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
|
||||||
|
evas_object_smart_callback_add(rd, "changed", _cb_prescale_radio_changed, im);
|
||||||
|
elm_box_pack_end(hbox, rd);
|
||||||
|
evas_object_show(rd);
|
||||||
|
|
||||||
|
rd = elm_radio_add(win);
|
||||||
|
elm_radio_state_value_set(rd, 200);
|
||||||
|
elm_radio_group_add(rd, rdg);
|
||||||
|
elm_object_text_set(rd, "200");
|
||||||
|
evas_object_size_hint_weight_set(rd, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
|
||||||
|
evas_object_smart_callback_add(rd, "changed", _cb_prescale_radio_changed, im);
|
||||||
|
elm_box_pack_end(hbox, rd);
|
||||||
|
evas_object_show(rd);
|
||||||
|
|
||||||
|
elm_radio_value_set(rdg, 200);
|
||||||
|
|
||||||
|
elm_box_pack_end(box, hbox);
|
||||||
|
evas_object_show(hbox);
|
||||||
|
|
||||||
|
evas_object_resize(win, 320, 320);
|
||||||
|
evas_object_show(win);
|
||||||
|
}
|
||||||
|
|
|
@ -578,7 +578,7 @@ _efl_ui_image_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Image_Data *priv)
|
||||||
priv->smooth = EINA_TRUE;
|
priv->smooth = EINA_TRUE;
|
||||||
priv->fill_inside = EINA_TRUE;
|
priv->fill_inside = EINA_TRUE;
|
||||||
priv->aspect_fixed = EINA_TRUE;
|
priv->aspect_fixed = EINA_TRUE;
|
||||||
priv->load_size = 0;
|
priv->load_size = EINA_SIZE2D(0, 0);
|
||||||
priv->scale = 1.0;
|
priv->scale = 1.0;
|
||||||
priv->scale_up = EINA_TRUE;
|
priv->scale_up = EINA_TRUE;
|
||||||
priv->scale_down = 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);
|
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
|
static void
|
||||||
_efl_ui_image_file_set_do(Evas_Object *obj)
|
_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;
|
sd->edje = EINA_FALSE;
|
||||||
|
|
||||||
if (sd->load_size > 0)
|
_efl_ui_image_load_size_set_internal(obj, sd);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1283,30 +1287,27 @@ elm_image_prescale_set(Evas_Object *obj,
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
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!
|
sd->load_size = sz;
|
||||||
if (sz.w > sz.h)
|
_efl_ui_image_load_size_set_internal(obj, sd);
|
||||||
sd->load_size = sz.w;
|
|
||||||
else
|
|
||||||
sd->load_size = sz.h;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI int
|
EAPI int
|
||||||
elm_image_prescale_get(const Evas_Object *obj)
|
elm_image_prescale_get(const Evas_Object *obj)
|
||||||
{
|
{
|
||||||
Eina_Size2D sz;
|
Eina_Size2D sz;
|
||||||
|
|
||||||
EFL_UI_IMAGE_CHECK(obj) 0;
|
EFL_UI_IMAGE_CHECK(obj) 0;
|
||||||
|
|
||||||
sz = efl_image_load_size_get(obj);
|
sz = efl_image_load_size_get(obj);
|
||||||
return sz.w;
|
|
||||||
|
return MAX(sz.w, sz.h);
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static Eina_Size2D
|
EOLIAN static Eina_Size2D
|
||||||
_efl_ui_image_efl_image_load_load_size_get(Eo *obj EINA_UNUSED, Efl_Ui_Image_Data *sd)
|
_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
|
EOLIAN static void
|
||||||
|
|
|
@ -61,7 +61,7 @@ struct _Efl_Ui_Image_Data
|
||||||
|
|
||||||
Evas_Coord img_x, img_y, img_w, img_h;
|
Evas_Coord img_x, img_y, img_w, img_h;
|
||||||
|
|
||||||
int load_size;
|
Eina_Size2D load_size;
|
||||||
int frame_count;
|
int frame_count;
|
||||||
int cur_frame;
|
int cur_frame;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue