evas: add a test for loading Android 9patch file.

Example data come from https://github.com/vindolin/ninepatch/tree/master/ninepatch/data
under MIT license.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Hermet Park <hermetpark@gmail.com>
Differential Revision: https://phab.enlightenment.org/D9105
This commit is contained in:
Cedric BAIL 2019-06-14 16:46:17 -07:00
parent 5847886a3f
commit b799ba1a10
4 changed files with 92 additions and 12 deletions

View File

@ -1029,6 +1029,94 @@ EFL_START_TEST(evas_object_image_jp2k_loader_data)
EFL_END_TEST
#endif
EFL_START_TEST(evas_object_image_9patch)
{
Evas *e = _setup_evas();
Evas *sub_e;
Ecore_Evas *ee, *sub_ee;
Evas_Object *obj, *cmp, *ref;
Eina_Strbuf *str;
const char *files[] = {
"9patch_test.9.png"
};
unsigned int i;
ee = ecore_evas_ecore_evas_get(e);
cmp = ecore_evas_object_image_new(ee);
evas_object_image_filled_set(cmp, EINA_TRUE);
evas_object_image_size_set(cmp, 1024, 1024);
evas_object_resize(cmp, 1024, 1024);
evas_object_show(cmp);
sub_ee = ecore_evas_object_ecore_evas_get(cmp);
sub_e = ecore_evas_object_evas_get(cmp);
ecore_evas_alpha_set(sub_ee, EINA_TRUE);
obj = evas_object_rectangle_add(sub_e);
evas_object_color_set(obj, 0, 0, 0, 0);
evas_object_move(obj, 0, 0);
evas_object_resize(obj, 1024, 1024);
evas_object_show(obj);
obj = evas_object_image_filled_add(sub_e);
evas_object_image_alpha_set(obj, 1);
evas_object_move(obj, 0, 0);
evas_object_resize(obj, 1024, 1024);
ecore_evas_resize(sub_ee, 1024, 1024);
evas_object_show(obj);
Evas_Object *rect = evas_object_rectangle_add(sub_e);
evas_object_color_set(rect, 128, 0, 0, 128);
evas_object_show(rect);
ref = evas_object_image_add(e);
str = eina_strbuf_new();
for (i = 0; i < sizeof (files) / sizeof (files[0]); i++)
{
Eina_Rect content;
int r_w, r_h;
const uint32_t *d, *r_d;
eina_strbuf_append_printf(str, "%s/%s", TESTS_IMG_DIR, files[i]);
evas_object_image_file_set(obj, eina_strbuf_string_get(str), NULL);
ck_assert_int_eq(evas_object_image_load_error_get(obj), EVAS_LOAD_ERROR_NONE);
content = efl_gfx_image_content_region_get(obj);
evas_object_move(rect, content.x, content.y);
evas_object_resize(rect, content.w, content.h);
eina_strbuf_reset(str);
ecore_evas_manual_render(ee);
d = evas_object_image_data_get(cmp, EINA_FALSE);
eina_strbuf_append_printf(str, "%s/%s.png", TESTS_IMG_DIR, files[i]);
evas_object_image_file_set(ref, eina_strbuf_string_get(str), NULL);
ck_assert_int_eq(evas_object_image_load_error_get(ref), EVAS_LOAD_ERROR_NONE);
evas_object_image_size_get(ref, &r_w, &r_h);
r_d = evas_object_image_data_get(ref, EINA_FALSE);
eina_strbuf_reset(str);
fail_if(r_w != 1024 || r_h != 1024);
for (int i = 0; i < r_w * r_h; i++)
fail_if(((d[i] - r_d[i]) & 0xF8F8F8F8) != 0);
}
evas_object_del(obj);
evas_object_del(ref);
eina_strbuf_free(str);
evas_free(e);
}
EFL_END_TEST
void evas_test_image_object(TCase *tc)
{
tcase_add_test(tc, evas_object_image_api);
@ -1054,6 +1142,7 @@ void evas_test_image_object(TCase *tc)
#endif
tcase_add_test(tc, evas_object_image_partially_load_orientation);
tcase_add_test(tc, evas_object_image_cached_data_comparision);
tcase_add_test(tc, evas_object_image_9patch);
}

View File

@ -21,19 +21,10 @@ while (0)
static Evas *
_setup_evas()
{
Evas *evas;
Evas_Engine_Info *einfo;
Ecore_Evas *ee;
evas = evas_new();
evas_output_method_set(evas, evas_render_method_lookup("buffer"));
einfo = evas_engine_info_get(evas);
evas_engine_info_set(evas, einfo);
evas_output_size_set(evas, 500, 500);
evas_output_viewport_set(evas, 0, 0, 500, 500);
return evas;
ee = ecore_evas_buffer_new(500, 500);
return ecore_evas_get(ee);
}
#endif

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB