diff --git a/src/tests/evas/evas_test_image.c b/src/tests/evas/evas_test_image.c index c66d718ce0..1eaa6d0e2e 100644 --- a/src/tests/evas/evas_test_image.c +++ b/src/tests/evas/evas_test_image.c @@ -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); } diff --git a/src/tests/evas/evas_tests_helpers.h b/src/tests/evas/evas_tests_helpers.h index af970b1a11..b3a3063790 100644 --- a/src/tests/evas/evas_tests_helpers.h +++ b/src/tests/evas/evas_tests_helpers.h @@ -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 diff --git a/src/tests/evas/images/9patch_test.9.png b/src/tests/evas/images/9patch_test.9.png new file mode 100644 index 0000000000..7e579d2498 Binary files /dev/null and b/src/tests/evas/images/9patch_test.9.png differ diff --git a/src/tests/evas/images/9patch_test.9.png.png b/src/tests/evas/images/9patch_test.9.png.png new file mode 100644 index 0000000000..e1d0549634 Binary files /dev/null and b/src/tests/evas/images/9patch_test.9.png.png differ