[Still] working cleanup checkpoint

This commit is contained in:
Paul Peavyhouse
2019-09-26 10:50:34 -07:00
parent 8e7bd571af
commit d3962fc26c

View File

@@ -64,11 +64,8 @@
/********************** /**********************
* STATIC PROTOTYPES * STATIC PROTOTYPES
**********************/ **********************/
static bool lv_cpicker_disc_design(lv_obj_t * cpicker, const lv_area_t * mask, lv_design_mode_t mode); static bool lv_cpicker_design(lv_obj_t * cpicker, const lv_area_t * mask, lv_design_mode_t mode);
static lv_res_t lv_cpicker_disc_signal(lv_obj_t * cpicker, lv_signal_t sign, void * param); static lv_res_t lv_cpicker_signal(lv_obj_t * cpicker, lv_signal_t sign, void * param);
static bool lv_cpicker_rect_design(lv_obj_t * cpicker, const lv_area_t * mask, lv_design_mode_t mode);
static lv_res_t lv_cpicker_rect_signal(lv_obj_t * cpicker, lv_signal_t sign, void * param);
static void lv_cpicker_invalidate(lv_obj_t * cpicker, bool all); static void lv_cpicker_invalidate(lv_obj_t * cpicker, bool all);
@@ -120,16 +117,8 @@ lv_obj_t * lv_cpicker_create(lv_obj_t * par, const lv_obj_t * copy)
ext->last_click = 0; ext->last_click = 0;
/*The signal and design functions are not copied so set them here*/ /*The signal and design functions are not copied so set them here*/
if(ext->type == LV_CPICKER_TYPE_DISC) lv_obj_set_signal_cb(new_cpicker, lv_cpicker_signal);
{ lv_obj_set_design_cb(new_cpicker, lv_cpicker_design);
lv_obj_set_signal_cb(new_cpicker, lv_cpicker_disc_signal);
lv_obj_set_design_cb(new_cpicker, lv_cpicker_disc_design);
}
else if(ext->type == LV_CPICKER_TYPE_RECT)
{
lv_obj_set_signal_cb(new_cpicker, lv_cpicker_rect_signal);
lv_obj_set_design_cb(new_cpicker, lv_cpicker_rect_design);
}
/*If no copy do the basic initialization*/ /*If no copy do the basic initialization*/
if(copy == NULL) { if(copy == NULL) {
@@ -169,17 +158,6 @@ void lv_cpicker_set_type(lv_obj_t * cpicker, lv_cpicker_type_t type)
ext->type = type; ext->type = type;
if(ext->type == LV_CPICKER_TYPE_DISC)
{
lv_obj_set_signal_cb(cpicker, lv_cpicker_disc_signal);
lv_obj_set_design_cb(cpicker, lv_cpicker_disc_design);
}
else if(ext->type == LV_CPICKER_TYPE_RECT)
{
lv_obj_set_signal_cb(cpicker, lv_cpicker_rect_signal);
lv_obj_set_design_cb(cpicker, lv_cpicker_rect_design);
}
lv_obj_invalidate(cpicker); lv_obj_invalidate(cpicker);
} }
@@ -503,17 +481,22 @@ static void draw_rect_spectrum(lv_cpicker_ext_t * ext, lv_style_t * style, lv_ar
{ {
} }
static bool lv_cpicker_disc_design(lv_obj_t * cpicker, const lv_area_t * mask, lv_design_mode_t mode,
lv_cpicker_ext_t * ext, lv_style_t * style);
static bool lv_cpicker_rect_design(lv_obj_t * cpicker, const lv_area_t * mask, lv_design_mode_t mode,
lv_cpicker_ext_t * ext, lv_style_t * style);
/** /**
* Handle the drawing related tasks of the color_pickerwhen when wheel type * Handle the drawing related tasks of the color_picker
* @param cpicker pointer to an object * @param cpicker pointer to an object
* @param mask the object will be drawn only in this area * @param mask the object will be drawn only in this area
* @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area * @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area
* (return 'true' if yes) * (return 'true' if yes)
* LV_DESIGN_DRAW: draw the object (always return 'true') * LV_DESIGN_DRAW: draw the object (always return 'true')
* LV_DESIGN_DRAW_POST: drawing after every children are drawn * LV_DESIGN_DRAW_POST: drawing after every children are drawn
* @param return true/false, depends on 'mode' * @return true/false, depends on 'mode'
*/ */
static bool lv_cpicker_disc_design(lv_obj_t * cpicker, const lv_area_t * mask, lv_design_mode_t mode) static bool lv_cpicker_design(lv_obj_t * cpicker, const lv_area_t * mask, lv_design_mode_t mode)
{ {
/*Return false if the object is not covers the mask_p area*/ /*Return false if the object is not covers the mask_p area*/
if(mode == LV_DESIGN_COVER_CHK) { if(mode == LV_DESIGN_COVER_CHK) {
@@ -528,6 +511,26 @@ static bool lv_cpicker_disc_design(lv_obj_t * cpicker, const lv_area_t * mask, l
static lv_style_t styleCopy; static lv_style_t styleCopy;
lv_style_copy(&styleCopy, style); lv_style_copy(&styleCopy, style);
if(ext->type == LV_CPICKER_TYPE_DISC)
{
return lv_cpicker_disc_design(cpicker, mask, mode, ext, &styleCopy);
}
else if(ext->type == LV_CPICKER_TYPE_RECT)
{
return lv_cpicker_rect_design(cpicker, mask, mode, ext, &styleCopy);
}
}
/*Post draw when the children are drawn*/
else if(mode == LV_DESIGN_DRAW_POST) {
}
return true;
}
static bool lv_cpicker_disc_design(lv_obj_t * cpicker, const lv_area_t * mask, lv_design_mode_t mode,
lv_cpicker_ext_t * ext, lv_style_t * style)
{
static lv_style_t styleCenterBackground; static lv_style_t styleCenterBackground;
lv_theme_t * th = lv_theme_get_current(); lv_theme_t * th = lv_theme_get_current();
if (th) { if (th) {
@@ -545,7 +548,7 @@ static bool lv_cpicker_disc_design(lv_obj_t * cpicker, const lv_area_t * mask, l
lv_area_t center_ind_area; lv_area_t center_ind_area;
uint32_t rin = r - styleCopy.line.width; uint32_t rin = r - style->line.width;
//the square area (a and b being sides) should fit into the center of diameter d //the square area (a and b being sides) should fit into the center of diameter d
//we have: //we have:
//a^2+b^2<=d^2 //a^2+b^2<=d^2
@@ -669,8 +672,8 @@ static bool lv_cpicker_disc_design(lv_obj_t * cpicker, const lv_area_t * mask, l
{ {
for(uint16_t i = start_angle; i <= end_angle; i+= LV_CPICKER_DEF_QF) for(uint16_t i = start_angle; i <= end_angle; i+= LV_CPICKER_DEF_QF)
{ {
styleCopy.body.main_color = angle_to_mode_color(ext, i); style->body.main_color = angle_to_mode_color(ext, i);
styleCopy.body.grad_color = styleCopy.body.main_color; style->body.grad_color = style->body.main_color;
triangle_points[0].x = x; triangle_points[0].x = x;
triangle_points[0].y = y; triangle_points[0].y = y;
@@ -693,15 +696,15 @@ static bool lv_cpicker_disc_design(lv_obj_t * cpicker, const lv_area_t * mask, l
} }
lv_draw_triangle(triangle_points, mask, &styleCopy, LV_OPA_COVER); lv_draw_triangle(triangle_points, mask, style, LV_OPA_COVER);
} }
} }
else if(ext->color_mode == LV_CPICKER_COLOR_MODE_SATURATION) else if(ext->color_mode == LV_CPICKER_COLOR_MODE_SATURATION)
{ {
for(uint16_t i = start_angle; i <= end_angle; i += LV_CPICKER_DEF_QF) for(uint16_t i = start_angle; i <= end_angle; i += LV_CPICKER_DEF_QF)
{ {
styleCopy.body.main_color = angle_to_mode_color(ext, i); style->body.main_color = angle_to_mode_color(ext, i);
styleCopy.body.grad_color = styleCopy.body.main_color; style->body.grad_color = style->body.main_color;
triangle_points[0].x = x; triangle_points[0].x = x;
triangle_points[0].y = y; triangle_points[0].y = y;
@@ -721,15 +724,15 @@ static bool lv_cpicker_disc_design(lv_obj_t * cpicker, const lv_area_t * mask, l
triangle_points[2].y = y + (r * lv_trigo_sin(i + LV_CPICKER_DEF_QF + TRI_OFFSET + 90) >> LV_TRIGO_SHIFT); triangle_points[2].y = y + (r * lv_trigo_sin(i + LV_CPICKER_DEF_QF + TRI_OFFSET + 90) >> LV_TRIGO_SHIFT);
} }
lv_draw_triangle(triangle_points, mask, &styleCopy, LV_OPA_COVER); lv_draw_triangle(triangle_points, mask, style, LV_OPA_COVER);
} }
} }
else if(ext->color_mode == LV_CPICKER_COLOR_MODE_VALUE) else if(ext->color_mode == LV_CPICKER_COLOR_MODE_VALUE)
{ {
for(uint16_t i = start_angle; i <= end_angle; i += LV_CPICKER_DEF_QF) for(uint16_t i = start_angle; i <= end_angle; i += LV_CPICKER_DEF_QF)
{ {
styleCopy.body.main_color = angle_to_mode_color(ext, i); style->body.main_color = angle_to_mode_color(ext, i);
styleCopy.body.grad_color = styleCopy.body.main_color; style->body.grad_color = style->body.main_color;
triangle_points[0].x = x; triangle_points[0].x = x;
triangle_points[0].y = y; triangle_points[0].y = y;
@@ -750,14 +753,14 @@ static bool lv_cpicker_disc_design(lv_obj_t * cpicker, const lv_area_t * mask, l
triangle_points[2].y = y + (r * lv_trigo_sin(i + LV_CPICKER_DEF_QF + TRI_OFFSET + 90) >> LV_TRIGO_SHIFT); triangle_points[2].y = y + (r * lv_trigo_sin(i + LV_CPICKER_DEF_QF + TRI_OFFSET + 90) >> LV_TRIGO_SHIFT);
} }
lv_draw_triangle(triangle_points, mask, &styleCopy, LV_OPA_COVER); lv_draw_triangle(triangle_points, mask, style, LV_OPA_COVER);
} }
} }
} }
//draw center background //draw center background
lv_area_t center_area; lv_area_t center_area;
uint16_t wradius = r - styleCopy.line.width; uint16_t wradius = r - style->line.width;
center_area.x1 = x - wradius; center_area.x1 = x - wradius;
center_area.y1 = y - wradius; center_area.y1 = y - wradius;
center_area.x2 = x + wradius; center_area.x2 = x + wradius;
@@ -766,10 +769,10 @@ static bool lv_cpicker_disc_design(lv_obj_t * cpicker, const lv_area_t * mask, l
lv_draw_rect(&center_area, mask, &styleCenterBackground, opa_scale); lv_draw_rect(&center_area, mask, &styleCenterBackground, opa_scale);
//draw the center color indicator //draw the center color indicator
styleCopy.body.main_color = lv_color_hsv_to_rgb(ext->hue, ext->saturation, ext->value); style->body.main_color = lv_color_hsv_to_rgb(ext->hue, ext->saturation, ext->value);
styleCopy.body.grad_color = styleCopy.body.main_color; style->body.grad_color = style->body.main_color;
styleCopy.body.radius = LV_RADIUS_CIRCLE; style->body.radius = LV_RADIUS_CIRCLE;
lv_draw_rect(&center_ind_area, mask, &styleCopy, opa_scale); lv_draw_rect(&center_ind_area, mask, style, opa_scale);
//Draw the current hue indicator //Draw the current hue indicator
switch(ext->indicator.type) switch(ext->indicator.type)
@@ -828,6 +831,7 @@ static bool lv_cpicker_disc_design(lv_obj_t * cpicker, const lv_area_t * mask, l
circle_ind_area.x2 = cx + style->line.width/2; circle_ind_area.x2 = cx + style->line.width/2;
circle_ind_area.y2 = cy + style->line.width/2; circle_ind_area.y2 = cy + style->line.width/2;
lv_style_t styleCopy;
lv_style_copy(&styleCopy, ext->indicator.style); lv_style_copy(&styleCopy, ext->indicator.style);
styleCopy.body.radius = LV_RADIUS_CIRCLE; styleCopy.body.radius = LV_RADIUS_CIRCLE;
@@ -855,6 +859,7 @@ static bool lv_cpicker_disc_design(lv_obj_t * cpicker, const lv_area_t * mask, l
circle_ind_area.x2 = cx + ((wradius - radius) / 3); circle_ind_area.x2 = cx + ((wradius - radius) / 3);
circle_ind_area.y2 = cy + ((wradius - radius) / 3); circle_ind_area.y2 = cy + ((wradius - radius) / 3);
lv_style_t styleCopy;
lv_style_copy(&styleCopy, ext->indicator.style); lv_style_copy(&styleCopy, ext->indicator.style);
styleCopy.body.radius = LV_RADIUS_CIRCLE; styleCopy.body.radius = LV_RADIUS_CIRCLE;
@@ -873,40 +878,13 @@ static bool lv_cpicker_disc_design(lv_obj_t * cpicker, const lv_area_t * mask, l
c += 0x123445678; c += 0x123445678;
lv_draw_rect(mask, mask, &style2, opa_scale); lv_draw_rect(mask, mask, &style2, opa_scale);
*/ */
}
/*Post draw when the children are drawn*/
else if(mode == LV_DESIGN_DRAW_POST) {
}
return true; return true;
} }
/** static bool lv_cpicker_rect_design(lv_obj_t * cpicker, const lv_area_t * mask, lv_design_mode_t mode,
* Handle the drawing related tasks of the color_pickerwhen of rectangle type lv_cpicker_ext_t * ext, lv_style_t * style)
* @param cpicker pointer to an object
* @param mask the object will be drawn only in this area
* @param mode LV_DESIGN_COVER_CHK: only check if the object fully covers the 'mask_p' area
* (return 'true' if yes)
* LV_DESIGN_DRAW: draw the object (always return 'true')
* LV_DESIGN_DRAW_POST: drawing after every children are drawn
* @param return true/false, depends on 'mode'
*/
static bool lv_cpicker_rect_design(lv_obj_t * cpicker, const lv_area_t * mask, lv_design_mode_t mode)
{ {
/*Return false if the object is not covers the mask_p area*/
if(mode == LV_DESIGN_COVER_CHK) {
return false;
}
/*Draw the object*/
else if(mode == LV_DESIGN_DRAW_MAIN) {
lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);
lv_style_t * style = lv_cpicker_get_style(cpicker, LV_CPICKER_STYLE_MAIN);
static lv_style_t styleCopy;
lv_style_copy(&styleCopy, style);
lv_coord_t w = lv_obj_get_width(cpicker); lv_coord_t w = lv_obj_get_width(cpicker);
lv_coord_t h = lv_obj_get_height(cpicker); lv_coord_t h = lv_obj_get_height(cpicker);
@@ -1002,32 +980,32 @@ static bool lv_cpicker_rect_design(lv_obj_t * cpicker, const lv_area_t * mask, l
ext->rect_gradient_area.x2 -= ext->rect_gradient_h/2; ext->rect_gradient_area.x2 -= ext->rect_gradient_h/2;
ext->rect_gradient_w -= ext->rect_gradient_h; ext->rect_gradient_w -= ext->rect_gradient_h;
styleCopy.body.main_color = angle_to_mode_color(ext, 0); style->body.main_color = angle_to_mode_color(ext, 0);
styleCopy.body.grad_color = styleCopy.body.main_color; style->body.grad_color = style->body.main_color;
styleCopy.body.radius = LV_RADIUS_CIRCLE; style->body.radius = LV_RADIUS_CIRCLE;
lv_draw_rect(&rounded_edge_area, mask, &styleCopy, opa_scale); lv_draw_rect(&rounded_edge_area, mask, style, opa_scale);
rounded_edge_area.x1 += ext->rect_gradient_w - 1; rounded_edge_area.x1 += ext->rect_gradient_w - 1;
rounded_edge_area.x2 += ext->rect_gradient_w - 1; rounded_edge_area.x2 += ext->rect_gradient_w - 1;
styleCopy.body.main_color = angle_to_mode_color(ext, 360); style->body.main_color = angle_to_mode_color(ext, 360);
styleCopy.body.grad_color = styleCopy.body.main_color; style->body.grad_color = style->body.main_color;
lv_draw_rect(&rounded_edge_area, mask, &styleCopy, opa_scale); lv_draw_rect(&rounded_edge_area, mask, style, opa_scale);
} }
for(uint16_t i = 0; i < 360; i += LV_MATH_MAX(LV_CPICKER_DEF_QF, 360/ext->rect_gradient_w)) for(uint16_t i = 0; i < 360; i += LV_MATH_MAX(LV_CPICKER_DEF_QF, 360/ext->rect_gradient_w))
{ {
styleCopy.body.main_color = angle_to_mode_color(ext, i); style->body.main_color = angle_to_mode_color(ext, i);
styleCopy.body.grad_color = styleCopy.body.main_color; style->body.grad_color = style->body.main_color;
/*the following attribute might need changing between index to add border, shadow, radius etc*/ /*the following attribute might need changing between index to add border, shadow, radius etc*/
styleCopy.body.radius = 0; style->body.radius = 0;
styleCopy.body.border.width = 0; style->body.border.width = 0;
styleCopy.body.shadow.width = 0; style->body.shadow.width = 0;
styleCopy.body.opa = LV_OPA_COVER; style->body.opa = LV_OPA_COVER;
lv_area_t rect_area; lv_area_t rect_area;
@@ -1039,7 +1017,7 @@ static bool lv_cpicker_rect_design(lv_obj_t * cpicker, const lv_area_t * mask, l
rect_area.x2 = rect_area.x1 + LV_MATH_MAX(LV_CPICKER_DEF_QF, 360/ext->rect_gradient_w); rect_area.x2 = rect_area.x1 + LV_MATH_MAX(LV_CPICKER_DEF_QF, 360/ext->rect_gradient_w);
rect_area.y2 = ext->rect_gradient_area.y2; rect_area.y2 = ext->rect_gradient_area.y2;
lv_draw_rect(&rect_area, mask, &styleCopy, opa_scale); lv_draw_rect(&rect_area, mask, style, opa_scale);
} }
if(style->line.rounded) if(style->line.rounded)
@@ -1051,13 +1029,13 @@ static bool lv_cpicker_rect_design(lv_obj_t * cpicker, const lv_area_t * mask, l
} }
/*draw the color preview indicator*/ /*draw the color preview indicator*/
styleCopy.body.main_color = lv_cpicker_get_color(cpicker); style->body.main_color = lv_cpicker_get_color(cpicker);
styleCopy.body.grad_color = styleCopy.body.main_color; style->body.grad_color = style->body.main_color;
if(style->line.rounded && style_body_padding_hor == 0) if(style->line.rounded && style_body_padding_hor == 0)
{ {
styleCopy.body.radius = ext->rect_gradient_h; style->body.radius = ext->rect_gradient_h;
} }
lv_draw_rect(&(ext->rect_preview_area), mask, &styleCopy, opa_scale); lv_draw_rect(&(ext->rect_preview_area), mask, style, opa_scale);
/* /*
styleCopy.line.width = 10; styleCopy.line.width = 10;
@@ -1108,10 +1086,10 @@ static bool lv_cpicker_rect_design(lv_obj_t * cpicker, const lv_area_t * mask, l
circle_ind_area.y1 = ext->rect_gradient_area.y1; circle_ind_area.y1 = ext->rect_gradient_area.y1;
circle_ind_area.y2 = ext->rect_gradient_area.y2; circle_ind_area.y2 = ext->rect_gradient_area.y2;
lv_style_copy(&styleCopy, ext->indicator.style); lv_style_copy(style, ext->indicator.style);
styleCopy.body.radius = LV_RADIUS_CIRCLE; style->body.radius = LV_RADIUS_CIRCLE;
lv_draw_rect(&circle_ind_area, mask, &styleCopy, opa_scale); lv_draw_rect(&circle_ind_area, mask, style, opa_scale);
break; break;
} }
case LV_CPICKER_INDICATOR_IN: case LV_CPICKER_INDICATOR_IN:
@@ -1139,40 +1117,27 @@ static bool lv_cpicker_rect_design(lv_obj_t * cpicker, const lv_area_t * mask, l
default: default:
break; break;
} }
}
/*Post draw when the children are drawn*/
else if(mode == LV_DESIGN_DRAW_POST) {
}
return true; return true;
} }
static lv_res_t lv_cpicker_disc_signal(lv_obj_t * cpicker, lv_signal_t sign, void * param);
static lv_res_t lv_cpicker_rect_signal(lv_obj_t * cpicker, lv_signal_t sign, void * param);
/** /**
* Signal function of the color_picker of wheel type * Signal function of the color_picker
* @param cpicker pointer to a color_picker object * @param cpicker pointer to a color_picker object
* @param sign a signal type from lv_signal_t enum * @param sign a signal type from lv_signal_t enum
* @param param pointer to a signal specific variable * @param param pointer to a signal specific variable
* @return LV_RES_OK: the object is not deleted in the function; LV_RES_INV: the object is deleted * @return LV_RES_OK: the object is not deleted in the function; LV_RES_INV: the object is deleted
*/ */
static lv_res_t lv_cpicker_disc_signal(lv_obj_t * cpicker, lv_signal_t sign, void * param) static lv_res_t lv_cpicker_signal(lv_obj_t * cpicker, lv_signal_t sign, void * param)
{ {
lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);
lv_res_t res;
/* Include the ancient signal function */ /* Include the ancient signal function */
res = ancestor_signal(cpicker, sign, param); lv_res_t res = ancestor_signal(cpicker, sign, param);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return res;
lv_style_t * style = lv_cpicker_get_style(cpicker, LV_CPICKER_STYLE_MAIN);
lv_coord_t r_out = (LV_MATH_MIN(lv_obj_get_width(cpicker), lv_obj_get_height(cpicker))) / 2;
lv_coord_t r_in = r_out - style->line.width - style->body.padding.inner;
lv_coord_t x = cpicker->coords.x1 + lv_obj_get_width(cpicker) / 2;
lv_coord_t y = cpicker->coords.y1 + lv_obj_get_height(cpicker) / 2;
if(sign == LV_SIGNAL_CLEANUP) { if(sign == LV_SIGNAL_CLEANUP) {
/*Nothing to cleanup. (No dynamically allocated memory in 'ext')*/ /*Nothing to cleanup. (No dynamically allocated memory in 'ext')*/
} else if(sign == LV_SIGNAL_GET_TYPE) { } else if(sign == LV_SIGNAL_GET_TYPE) {
@@ -1182,8 +1147,40 @@ static lv_res_t lv_cpicker_disc_signal(lv_obj_t * cpicker, lv_signal_t sign, voi
if(buf->type[i] == NULL) break; if(buf->type[i] == NULL) break;
} }
buf->type[i] = "lv_cpicker"; buf->type[i] = "lv_cpicker";
} else {
lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);
lv_style_t * style = lv_cpicker_get_style(cpicker, LV_CPICKER_STYLE_MAIN);
if(ext->type == LV_CPICKER_TYPE_DISC)
{
res = lv_cpicker_disc_signal(cpicker, sign, param);
if(res != LV_RES_OK) return res;
} }
else if(sign == LV_SIGNAL_PRESSED) else if(ext->type == LV_CPICKER_TYPE_RECT)
{
res = lv_cpicker_rect_signal(cpicker, sign, param);
if(res != LV_RES_OK) return res;
}
}
return res;
}
static lv_res_t lv_cpicker_disc_signal(lv_obj_t * cpicker, lv_signal_t sign, void * param)
{
lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);
lv_res_t res;
lv_style_t * style = lv_cpicker_get_style(cpicker, LV_CPICKER_STYLE_MAIN);
lv_coord_t r_out = (LV_MATH_MIN(lv_obj_get_width(cpicker), lv_obj_get_height(cpicker))) / 2;
lv_coord_t r_in = r_out - style->line.width - style->body.padding.inner;
lv_coord_t x = cpicker->coords.x1 + lv_obj_get_width(cpicker) / 2;
lv_coord_t y = cpicker->coords.y1 + lv_obj_get_height(cpicker) / 2;
if(sign == LV_SIGNAL_PRESSED)
{ {
switch(ext->color_mode) switch(ext->color_mode)
{ {
@@ -1452,23 +1449,9 @@ static lv_res_t lv_cpicker_rect_signal(lv_obj_t * cpicker, lv_signal_t sign, voi
lv_res_t res; lv_res_t res;
/* Include the ancient signal function */
res = ancestor_signal(cpicker, sign, param);
if(res != LV_RES_OK) return res;
lv_style_t * style = lv_cpicker_get_style(cpicker, LV_CPICKER_STYLE_MAIN); lv_style_t * style = lv_cpicker_get_style(cpicker, LV_CPICKER_STYLE_MAIN);
if(sign == LV_SIGNAL_CLEANUP) { if(sign == LV_SIGNAL_PRESSED)
/*Nothing to cleanup. (No dynamically allocated memory in 'ext')*/
} else if(sign == LV_SIGNAL_GET_TYPE) {
lv_obj_type_t * buf = param;
uint8_t i;
for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/
if(buf->type[i] == NULL) break;
}
buf->type[i] = "lv_cpicker";
}
else if(sign == LV_SIGNAL_PRESSED)
{ {
switch(ext->color_mode) switch(ext->color_mode)
{ {