mirror of
https://github.com/lvgl/lvgl.git
synced 2026-05-20 21:35:19 +08:00
feat(image): add image properties and test (#4970)
Signed-off-by: Xu Xingliang <xuxingliang@xiaomi.com>
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user