Hallo zusammen,
ich arbeite mit der Arduino IDE 2.3.5 und der LVGL-Version 8.4.0.
Das Widget Roller (lv_roller) habe ich schon oft verwendet. Wenn ich aber den Beispielcode für eine spezielle Ausführung aus der LVGL-Doku einsetze erhalte ich folgende Fehlermeldung:
"Compilation error: invalid conversion from 'void*' to 'lv_draw_mask_fade_param_t*' [-fpermissive]"
In dieser Codesequenz tritt der Fehler in den Zeilen 28, 35, 41 und 42 auf:
1 void mask_event_cb(lv_event_t * e) {
2 lv_event_code_t code = lv_event_get_code(e);
3 lv_obj_t * obj = lv_event_get_target(e);
4
5 static int16_t mask_top_id = -1;
6 static int16_t mask_bottom_id = -1;
7
8 // Deckt das Objekt einen Bereich vollständig ab?
9 if(code == LV_EVENT_COVER_CHECK) {
10 lv_event_set_cover_res(e, LV_COVER_RES_MASKED);
11 }
12 // Beginn der Hauptzeichnungsphase
13 else if(code == LV_EVENT_DRAW_MAIN_BEGIN) {
14 // add mask
15 const lv_font_t * font = lv_obj_get_style_text_font(obj, LV_PART_MAIN);
16 lv_coord_t line_space = lv_obj_get_style_text_line_space(obj, LV_PART_MAIN);
17 lv_coord_t font_h = lv_font_get_line_height(font);
18
19 lv_area_t roller_coords;
20 lv_obj_get_coords(obj, &roller_coords);
21
22 lv_area_t rect_area;
23 rect_area.x1 = roller_coords.x1;
24 rect_area.x2 = roller_coords.x2;
25 rect_area.y1 = roller_coords.y1;
26 rect_area.y2 = roller_coords.y1 + (lv_obj_get_height(obj) - font_h - line_space) / 2;
27
28 lv_draw_mask_fade_param_t* fade_mask_top = lv_mem_buf_get(sizeof(lv_draw_mask_fade_param_t));
29 lv_draw_mask_fade_init(fade_mask_top, &rect_area, LV_OPA_TRANSP, rect_area.y1, LV_OPA_COVER, rect_area.y2);
30 mask_top_id = lv_draw_mask_add(fade_mask_top, NULL);
31
32 rect_area.y1 = rect_area.y2 + font_h + line_space - 1;
33 rect_area.y2 = roller_coords.y2;
34
35 lv_draw_mask_fade_param_t* fade_mask_bottom = lv_mem_buf_get(sizeof(lv_draw_mask_fade_param_t));
36 lv_draw_mask_fade_init(fade_mask_bottom, &rect_area, LV_OPA_COVER, rect_area.y1, LV_OPA_TRANSP, rect_area.y2);
37 mask_bottom_id = lv_draw_mask_add(fade_mask_bottom, NULL);
38 }
39 // Abschluss der Nachziehphase
40 else if(code == LV_EVENT_DRAW_POST_END) {
41 lv_draw_mask_fade_param_t* fade_mask_top = lv_draw_mask_remove_id(mask_top_id);
42 lv_draw_mask_fade_param_t* fade_mask_bottom = lv_draw_mask_remove_id(mask_bottom_id);
43 lv_draw_mask_free_param(fade_mask_top);
44 lv_draw_mask_free_param(fade_mask_bottom);
45 lv_mem_buf_release(fade_mask_top);
46 lv_mem_buf_release(fade_mask_bottom);
47 mask_top_id = -1;
48 mask_bottom_id = -1;
49 }
50 }
Was läuft hier falsch? Wie kann ich den Fehler umgehen?