fix(image): image inner align name should not conflict with obj's align
If the name conflicts with base class property name, the property is overridden. This is the property's feature. The image inner align name is update to 'inner_align'. Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
This commit is contained in:
committed by
Gabor Kiss-Vamosi
parent
c191ecbfb6
commit
d6495b576b
@@ -92,7 +92,7 @@ static const lv_property_ops_t properties[] = {
|
||||
.getter = lv_image_get_antialias,
|
||||
},
|
||||
{
|
||||
.id = LV_PROPERTY_IMAGE_ALIGN,
|
||||
.id = LV_PROPERTY_IMAGE_INNER_ALIGN,
|
||||
.setter = lv_image_set_inner_align,
|
||||
.getter = lv_image_get_inner_align,
|
||||
},
|
||||
|
||||
@@ -56,18 +56,18 @@ typedef enum {
|
||||
} lv_image_align_t;
|
||||
|
||||
#if LV_USE_OBJ_PROPERTY
|
||||
enum lv_image_property_t {
|
||||
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_POINT, 4),
|
||||
LV_PROPERTY_ID(IMAGE, SCALE, LV_PROPERTY_TYPE_INT, 5),
|
||||
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),
|
||||
enum {
|
||||
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_POINT, 4),
|
||||
LV_PROPERTY_ID(IMAGE, SCALE, LV_PROPERTY_TYPE_INT, 5),
|
||||
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, INNER_ALIGN, LV_PROPERTY_TYPE_INT, 10),
|
||||
LV_PROPERTY_IMAGE_END,
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -15,9 +15,9 @@
|
||||
*/
|
||||
/* *INDENT-OFF* */
|
||||
const lv_property_name_t lv_image_property_names[11] = {
|
||||
{"align", LV_PROPERTY_IMAGE_ALIGN,},
|
||||
{"antialias", LV_PROPERTY_IMAGE_ANTIALIAS,},
|
||||
{"blend_mode", LV_PROPERTY_IMAGE_BLEND_MODE,},
|
||||
{"inner_align", LV_PROPERTY_IMAGE_INNER_ALIGN,},
|
||||
{"offset_x", LV_PROPERTY_IMAGE_OFFSET_X,},
|
||||
{"offset_y", LV_PROPERTY_IMAGE_OFFSET_Y,},
|
||||
{"pivot", LV_PROPERTY_IMAGE_PIVOT,},
|
||||
|
||||
@@ -376,4 +376,83 @@ void test_image_clip_radius(void)
|
||||
TEST_ASSERT_EQUAL_SCREENSHOT("widgets/image_clip_radius_circle.png");
|
||||
}
|
||||
|
||||
void test_image_properties(void)
|
||||
{
|
||||
#if LV_USE_OBJ_PROPERTY
|
||||
lv_obj_t * obj = lv_image_create(lv_screen_active());
|
||||
lv_property_t prop = { };
|
||||
|
||||
prop.id = LV_PROPERTY_IMAGE_SRC;
|
||||
prop.ptr = &test_arc_bg;
|
||||
TEST_ASSERT_TRUE(lv_obj_set_property(obj, &prop) == LV_RESULT_OK);
|
||||
TEST_ASSERT_EQUAL_PTR(lv_obj_get_property(obj, LV_PROPERTY_IMAGE_SRC).ptr, &test_arc_bg);
|
||||
TEST_ASSERT_EQUAL_PTR(lv_image_get_src(obj), &test_arc_bg);
|
||||
|
||||
prop.id = LV_PROPERTY_IMAGE_OFFSET_X;
|
||||
prop.num = 10;
|
||||
TEST_ASSERT_TRUE(lv_obj_set_property(obj, &prop) == LV_RESULT_OK);
|
||||
TEST_ASSERT_EQUAL_INT(lv_obj_get_property(obj, LV_PROPERTY_IMAGE_OFFSET_X).num, 10);
|
||||
TEST_ASSERT_EQUAL_INT(lv_image_get_offset_x(obj), 10);
|
||||
|
||||
prop.id = LV_PROPERTY_IMAGE_OFFSET_Y;
|
||||
prop.num = 20;
|
||||
TEST_ASSERT_TRUE(lv_obj_set_property(obj, &prop) == LV_RESULT_OK);
|
||||
TEST_ASSERT_EQUAL_INT(lv_obj_get_property(obj, LV_PROPERTY_IMAGE_OFFSET_Y).num, 20);
|
||||
TEST_ASSERT_EQUAL_INT(lv_image_get_offset_y(obj), 20);
|
||||
|
||||
prop.id = LV_PROPERTY_IMAGE_ROTATION;
|
||||
prop.num = 30;
|
||||
TEST_ASSERT_TRUE(lv_obj_set_property(obj, &prop) == LV_RESULT_OK);
|
||||
TEST_ASSERT_EQUAL_INT(lv_obj_get_property(obj, LV_PROPERTY_IMAGE_ROTATION).num, 30);
|
||||
TEST_ASSERT_EQUAL_INT(lv_image_get_rotation(obj), 30);
|
||||
|
||||
prop.id = LV_PROPERTY_IMAGE_PIVOT;
|
||||
prop.point.x = 40;
|
||||
prop.point.y = 50;
|
||||
TEST_ASSERT_TRUE(lv_obj_set_property(obj, &prop) == LV_RESULT_OK);
|
||||
TEST_ASSERT_EQUAL_INT(lv_obj_get_property(obj, LV_PROPERTY_IMAGE_PIVOT).point.x, 40);
|
||||
TEST_ASSERT_EQUAL_INT(lv_obj_get_property(obj, LV_PROPERTY_IMAGE_PIVOT).point.y, 50);
|
||||
lv_point_t pivot;
|
||||
lv_image_get_pivot(obj, &pivot);
|
||||
TEST_ASSERT_EQUAL_INT(pivot.x, 40);
|
||||
TEST_ASSERT_EQUAL_INT(pivot.y, 50);
|
||||
|
||||
prop.id = LV_PROPERTY_IMAGE_SCALE;
|
||||
prop.num = 60;
|
||||
TEST_ASSERT_TRUE(lv_obj_set_property(obj, &prop) == LV_RESULT_OK);
|
||||
TEST_ASSERT_EQUAL_INT(lv_obj_get_property(obj, LV_PROPERTY_IMAGE_SCALE).num, 60);
|
||||
TEST_ASSERT_EQUAL_INT(lv_image_get_scale(obj), 60);
|
||||
|
||||
prop.id = LV_PROPERTY_IMAGE_SCALE_X;
|
||||
prop.num = 70;
|
||||
TEST_ASSERT_TRUE(lv_obj_set_property(obj, &prop) == LV_RESULT_OK);
|
||||
TEST_ASSERT_EQUAL_INT(lv_obj_get_property(obj, LV_PROPERTY_IMAGE_SCALE_X).num, 70);
|
||||
TEST_ASSERT_EQUAL_INT(lv_image_get_scale_x(obj), 70);
|
||||
|
||||
prop.id = LV_PROPERTY_IMAGE_SCALE_Y;
|
||||
prop.num = 80;
|
||||
TEST_ASSERT_TRUE(lv_obj_set_property(obj, &prop) == LV_RESULT_OK);
|
||||
TEST_ASSERT_EQUAL_INT(lv_obj_get_property(obj, LV_PROPERTY_IMAGE_SCALE_Y).num, 80);
|
||||
TEST_ASSERT_EQUAL_INT(lv_image_get_scale_y(obj), 80);
|
||||
|
||||
prop.id = LV_PROPERTY_IMAGE_BLEND_MODE;
|
||||
prop.num = LV_BLEND_MODE_ADDITIVE;
|
||||
TEST_ASSERT_TRUE(lv_obj_set_property(obj, &prop) == LV_RESULT_OK);
|
||||
TEST_ASSERT_EQUAL_INT(lv_obj_get_property(obj, LV_PROPERTY_IMAGE_BLEND_MODE).num, LV_BLEND_MODE_ADDITIVE);
|
||||
TEST_ASSERT_EQUAL_INT(lv_image_get_blend_mode(obj), LV_BLEND_MODE_ADDITIVE);
|
||||
|
||||
prop.id = LV_PROPERTY_IMAGE_ANTIALIAS;
|
||||
prop.num = 0;
|
||||
TEST_ASSERT_TRUE(lv_obj_set_property(obj, &prop) == LV_RESULT_OK);
|
||||
TEST_ASSERT_EQUAL_INT(lv_obj_get_property(obj, LV_PROPERTY_IMAGE_ANTIALIAS).num, 0);
|
||||
TEST_ASSERT_EQUAL_INT(lv_image_get_antialias(obj), 0);
|
||||
|
||||
prop.id = LV_PROPERTY_IMAGE_INNER_ALIGN;
|
||||
prop.num = LV_IMAGE_ALIGN_TOP_MID;
|
||||
TEST_ASSERT_TRUE(lv_obj_set_property(obj, &prop) == LV_RESULT_OK);
|
||||
TEST_ASSERT_EQUAL_INT(lv_obj_get_property(obj, LV_PROPERTY_IMAGE_INNER_ALIGN).num, LV_IMAGE_ALIGN_TOP_MID);
|
||||
TEST_ASSERT_EQUAL_INT(lv_image_get_inner_align(obj), LV_IMAGE_ALIGN_TOP_MID);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
#if LV_BUILD_TEST
|
||||
#include "../lvgl.h"
|
||||
#include "../../lvgl_private.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "unity/unity.h"
|
||||
|
||||
void test_image_property(void)
|
||||
{
|
||||
#if LV_USE_OBJ_PROPERTY
|
||||
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.point = point;
|
||||
lv_obj_set_property(obj, &prop);
|
||||
prop = lv_obj_get_property(obj, LV_PROPERTY_IMAGE_PIVOT);
|
||||
TEST_ASSERT_TRUE(LV_PROPERTY_ID_TYPE(prop.id) == LV_PROPERTY_TYPE_POINT);
|
||||
TEST_ASSERT_TRUE(prop.point.x == point.x);
|
||||
TEST_ASSERT_TRUE(prop.point.y == point.y);
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user