Skip to content

Commit

Permalink
add test
Browse files Browse the repository at this point in the history
  • Loading branch information
kisvegabor committed Feb 10, 2024
1 parent 0d2dd05 commit 4dcd66e
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 2 deletions.
16 changes: 14 additions & 2 deletions src/core/lv_refr.c
Expand Up @@ -925,10 +925,22 @@ void refr_obj(lv_layer_t * layer, lv_obj_t * obj)
area_need_alpha ? LV_COLOR_FORMAT_ARGB8888 : LV_COLOR_FORMAT_NATIVE, &layer_area_act);
lv_obj_redraw(new_layer, obj);

lv_point_t pivot = {
.x = lv_obj_get_style_transform_pivot_x(obj, 0),
.y = lv_obj_get_style_transform_pivot_y(obj, 0)
};

if(LV_COORD_IS_PCT(pivot.x)) {
pivot.x = (LV_COORD_GET_PCT(pivot.x) * lv_area_get_width(&obj->coords)) / 100;
}
if(LV_COORD_IS_PCT(pivot.y)) {
pivot.y = (LV_COORD_GET_PCT(pivot.y) * lv_area_get_height(&obj->coords)) / 100;
}

lv_draw_image_dsc_t layer_draw_dsc;
lv_draw_image_dsc_init(&layer_draw_dsc);
layer_draw_dsc.pivot.x = obj->coords.x1 + lv_obj_get_style_transform_pivot_x(obj, 0) - new_layer->buf_area.x1;
layer_draw_dsc.pivot.y = obj->coords.y1 + lv_obj_get_style_transform_pivot_y(obj, 0) - new_layer->buf_area.y1;
layer_draw_dsc.pivot.x = obj->coords.x1 + pivot.x - new_layer->buf_area.x1;
layer_draw_dsc.pivot.y = obj->coords.y1 + pivot.y - new_layer->buf_area.y1;

layer_draw_dsc.opa = opa;
layer_draw_dsc.rotation = lv_obj_get_style_transform_rotation(obj, 0);
Expand Down
Binary file added tests/ref_imgs/draw/layer_transform_1.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tests/ref_imgs/draw/layer_transform_2.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
44 changes: 44 additions & 0 deletions tests/src/test_cases/draw/test_layer_transform.c
@@ -0,0 +1,44 @@
#if LV_BUILD_TEST
#include "../lvgl.h"

#include "unity/unity.h"

void setUp(void)
{
/* Function run before every test */
}

void tearDown(void)
{
/* Function run after every test */
lv_obj_clean(lv_screen_active());
}

void test_no_residual_border_on_scale_down(void)
{
lv_obj_t * obj = lv_obj_create(lv_screen_active());
lv_obj_set_size(obj, 100, 100);
lv_obj_center(obj);
lv_obj_set_style_border_color(obj, lv_color_hex3(0xf00), 0);
lv_obj_set_style_bg_color(obj, lv_color_hex3(0x0f0), 0);
TEST_ASSERT_EQUAL_SCREENSHOT("draw/layer_transform_1.png");

int32_t pivot_x[] = {lv_pct(50), lv_pct(8), lv_pct(0), lv_pct(106), lv_pct(-16)};
int32_t pivot_y[] = {lv_pct(50), lv_pct(12), lv_pct(0), lv_pct(113), lv_pct(-27)};
int32_t scale[] = {256 * 4, 412, 569, 288, 711};

uint32_t i;
for(i = 0; i < 5; i++) {
lv_obj_set_style_transform_pivot_x(obj, pivot_x[i], 0);
lv_obj_set_style_transform_pivot_y(obj, pivot_y[i], 0);
lv_obj_set_style_transform_scale(obj, scale[i], 0);
lv_refr_now(NULL);

/*Should be the same as the original without any artifacts*/
lv_obj_set_style_transform_scale(obj, 256, 0);
TEST_ASSERT_EQUAL_SCREENSHOT("draw/layer_transform_1.png");
}

}

#endif

0 comments on commit 4dcd66e

Please sign in to comment.