mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-14 06:42:58 +08:00
85f21a1345
Based on #2142
71 lines
2.4 KiB
C
71 lines
2.4 KiB
C
#include "../../../lvgl.h"
|
|
#if LV_USE_BTNMATRIX && LV_BUILD_EXAMPLES
|
|
|
|
|
|
static void event_cb(lv_obj_t * obj, lv_event_t e)
|
|
{
|
|
if(e == LV_EVENT_DRAW_PART_BEGIN) {
|
|
lv_obj_draw_dsc_t * dsc = lv_event_get_param();
|
|
|
|
/*Change the draw descriptor the 2nd button */
|
|
if(dsc->id == 1) {
|
|
dsc->rect_dsc->radius = 0;
|
|
if(lv_btnmatrix_get_selected_btn(obj) == dsc->id) dsc->rect_dsc->bg_color = lv_color_blue_darken_3();
|
|
else dsc->rect_dsc->bg_color = lv_color_blue();
|
|
|
|
dsc->rect_dsc->shadow_width = 6;
|
|
dsc->rect_dsc->shadow_ofs_x = 3;
|
|
dsc->rect_dsc->shadow_ofs_y = 3;
|
|
dsc->label_dsc->color = lv_color_white();
|
|
}
|
|
/*Change the draw descriptor the 3rd button */
|
|
else if(dsc->id == 2) {
|
|
dsc->rect_dsc->radius = LV_RADIUS_CIRCLE;
|
|
if(lv_btnmatrix_get_selected_btn(obj) == dsc->id) dsc->rect_dsc->bg_color = lv_color_red_darken_3();
|
|
else dsc->rect_dsc->bg_color = lv_color_red();
|
|
|
|
dsc->label_dsc->color = lv_color_white();
|
|
}
|
|
else if(dsc->id == 3) {
|
|
dsc->label_dsc->opa = LV_OPA_TRANSP; /*Hide the text if any*/
|
|
|
|
}
|
|
}
|
|
if(e == LV_EVENT_DRAW_PART_END) {
|
|
lv_obj_draw_dsc_t * dsc = lv_event_get_param();
|
|
|
|
/*Add custom content to the 4th button when the button itself was drawn*/
|
|
if(dsc->id == 3) {
|
|
LV_IMG_DECLARE(img_star);
|
|
lv_img_header_t header;
|
|
lv_res_t res = lv_img_decoder_get_info(&img_star, &header);
|
|
if(res != LV_RES_OK) return;
|
|
|
|
lv_area_t a;
|
|
a.x1 = dsc->draw_area->x1 + (lv_area_get_width(dsc->draw_area) - header.w) / 2;
|
|
a.x2 = a.x1 + header.w - 1;
|
|
a.y1 = dsc->draw_area->y1 + (lv_area_get_height(dsc->draw_area) - header.h) / 2;
|
|
a.y2 = a.y1 + header.h - 1;
|
|
|
|
lv_draw_img_dsc_t img_draw_dsc;
|
|
lv_draw_img_dsc_init(&img_draw_dsc);
|
|
img_draw_dsc.recolor = lv_color_black();
|
|
if(lv_btnmatrix_get_selected_btn(obj) == dsc->id) img_draw_dsc.recolor_opa = LV_OPA_30;
|
|
|
|
lv_draw_img(&a, dsc->clip_area, &img_star, &img_draw_dsc);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Add custom drawer to the button matrix to c
|
|
*/
|
|
void lv_example_btnmatrix_2(void)
|
|
{
|
|
lv_obj_t * btnm = lv_btnmatrix_create(lv_scr_act(), NULL);
|
|
lv_obj_add_event_cb(btnm, event_cb, NULL);
|
|
lv_obj_align(btnm, NULL, LV_ALIGN_CENTER, 0, 0);
|
|
}
|
|
|
|
#endif
|