feat(image): add image properties and test (#4970)

Signed-off-by: Xu Xingliang <xuxingliang@xiaomi.com>
This commit is contained in:
Neo Xu
2023-12-11 21:17:54 +08:00
committed by GitHub
parent 39264bcd87
commit 4c10e4a992
3 changed files with 70 additions and 3 deletions
+15
View File
@@ -62,6 +62,21 @@ static const lv_property_ops_t properties[] = {
.setter = lv_image_set_scale,
.getter = lv_image_get_scale,
},
{
.id = LV_PROPERTY_IMAGE_SCALE_X,
.setter = lv_image_set_scale_x,
.getter = lv_image_get_scale_x,
},
{
.id = LV_PROPERTY_IMAGE_SCALE_Y,
.setter = lv_image_set_scale_y,
.getter = lv_image_get_scale_y,
},
{
.id = LV_PROPERTY_IMAGE_BLEND_MODE,
.setter = lv_image_set_blend_mode,
.getter = lv_image_get_blend_mode,
},
{
.id = LV_PROPERTY_IMAGE_ANTIALIAS,
.setter = lv_image_set_antialias,
+6 -3
View File
@@ -83,14 +83,17 @@ typedef uint8_t lv_image_align_t;
#if LV_USE_OBJ_PROPERTY
enum {
LV_PROPERTY_ID(IMAGE, SRC, LV_PROPERTY_TYPE_POINTER, 0),
LV_PROPERTY_ID(IMAGE, SRC, LV_PROPERTY_TYPE_IMGSRC, 0),
LV_PROPERTY_ID(IMAGE, OFFSET_X, LV_PROPERTY_TYPE_INT, 1),
LV_PROPERTY_ID(IMAGE, OFFSET_Y, LV_PROPERTY_TYPE_INT, 2),
LV_PROPERTY_ID(IMAGE, ROTATION, LV_PROPERTY_TYPE_INT, 3),
LV_PROPERTY_ID(IMAGE, PIVOT, LV_PROPERTY_TYPE_POINTER, 4),
LV_PROPERTY_ID(IMAGE, SCALE, LV_PROPERTY_TYPE_INT, 5),
LV_PROPERTY_ID(IMAGE, ANTIALIAS, LV_PROPERTY_TYPE_INT, 6),
LV_PROPERTY_ID(IMAGE, ALIGN, LV_PROPERTY_TYPE_INT, 7),
LV_PROPERTY_ID(IMAGE, SCALE_X, LV_PROPERTY_TYPE_INT, 6),
LV_PROPERTY_ID(IMAGE, SCALE_Y, LV_PROPERTY_TYPE_INT, 7),
LV_PROPERTY_ID(IMAGE, BLEND_MODE, LV_PROPERTY_TYPE_INT, 8),
LV_PROPERTY_ID(IMAGE, ANTIALIAS, LV_PROPERTY_TYPE_INT, 9),
LV_PROPERTY_ID(IMAGE, ALIGN, LV_PROPERTY_TYPE_INT, 10),
LV_PROPERTY_IMAGE_END,
};
#endif
@@ -0,0 +1,49 @@
#if LV_BUILD_TEST
#include "../lvgl.h"
#include <stdlib.h>
#include "unity/unity.h"
void test_image_property(void)
{
lv_obj_t * obj = lv_image_create(lv_screen_active());
const char * src = LV_SYMBOL_OK;
lv_image_set_src(obj, src);
lv_property_t prop;
prop = lv_obj_get_property(obj, LV_PROPERTY_IMAGE_SRC);
TEST_ASSERT_TRUE(LV_PROPERTY_ID_TYPE(prop.id) == LV_PROPERTY_TYPE_IMGSRC);
TEST_ASSERT_EQUAL_STRING(prop.ptr, src);
lv_point_t point = {0xaa, 0x55};
prop.id = LV_PROPERTY_IMAGE_PIVOT;
prop.ptr = &point;
lv_obj_set_property(obj, &prop);
TEST_ASSERT_TRUE(LV_PROPERTY_ID_TYPE(prop.id) == LV_PROPERTY_TYPE_POINTER);
TEST_ASSERT_TRUE(prop.ptr == &point);
static const lv_prop_id_t int_ids[] = {
LV_PROPERTY_IMAGE_OFFSET_X,
LV_PROPERTY_IMAGE_OFFSET_Y,
LV_PROPERTY_IMAGE_ROTATION,
LV_PROPERTY_IMAGE_SCALE,
LV_PROPERTY_IMAGE_SCALE_X,
LV_PROPERTY_IMAGE_SCALE_Y,
LV_PROPERTY_IMAGE_BLEND_MODE,
LV_PROPERTY_IMAGE_ANTIALIAS, /*1bit*/
LV_PROPERTY_IMAGE_ALIGN,
};
for(unsigned i = 0; i < sizeof(int_ids) / sizeof(int_ids[0]); i++) {
int v = rand() % 16;
if(int_ids[i] == LV_PROPERTY_IMAGE_ANTIALIAS) v = !!v;
prop.id = int_ids[i];
prop.num = v;
lv_obj_set_property(obj, &prop);
prop = lv_obj_get_property(obj, prop.id);
TEST_ASSERT_TRUE(LV_PROPERTY_ID_TYPE(prop.id) == LV_PROPERTY_TYPE_INT);
TEST_ASSERT_EQUAL_INT(prop.num, v);
}
}
#endif