1 #include "../lv_examples.h"
2
3 #if LV_BUILD_EXAMPLES
4
5 static uint32_t size = 0;
6 static bool size_dec = false;
7
timer_cb(lv_timer_t * timer)8 static void timer_cb(lv_timer_t * timer)
9 {
10 lv_obj_invalidate(lv_timer_get_user_data(timer));
11 if(size_dec) size--;
12 else size++;
13
14 if(size == 50) size_dec = true;
15 else if(size == 0) size_dec = false;
16 }
17
event_cb(lv_event_t * e)18 static void event_cb(lv_event_t * e)
19 {
20 lv_obj_t * obj = lv_event_get_target(e);
21 lv_draw_task_t * draw_task = lv_event_get_draw_task(e);
22 lv_draw_dsc_base_t * base_dsc = lv_draw_task_get_draw_dsc(draw_task);
23 if(base_dsc->part == LV_PART_MAIN) {
24 lv_draw_rect_dsc_t draw_dsc;
25 lv_draw_rect_dsc_init(&draw_dsc);
26 draw_dsc.bg_color = lv_color_hex(0xffaaaa);
27 draw_dsc.radius = LV_RADIUS_CIRCLE;
28 draw_dsc.border_color = lv_color_hex(0xff5555);
29 draw_dsc.border_width = 2;
30 draw_dsc.outline_color = lv_color_hex(0xff0000);
31 draw_dsc.outline_pad = 3;
32 draw_dsc.outline_width = 2;
33
34 lv_area_t a;
35 a.x1 = 0;
36 a.y1 = 0;
37 a.x2 = size;
38 a.y2 = size;
39 lv_area_t obj_coords;
40 lv_obj_get_coords(obj, &obj_coords);
41 lv_area_align(&obj_coords, &a, LV_ALIGN_CENTER, 0, 0);
42
43 lv_draw_rect(base_dsc->layer, &draw_dsc, &a);
44 }
45 }
46
47 /**
48 * Demonstrate the usage of draw event
49 */
lv_example_event_draw(void)50 void lv_example_event_draw(void)
51 {
52 lv_obj_t * cont = lv_obj_create(lv_screen_active());
53 lv_obj_set_size(cont, 200, 200);
54 lv_obj_center(cont);
55 lv_obj_add_event_cb(cont, event_cb, LV_EVENT_DRAW_TASK_ADDED, NULL);
56 lv_obj_add_flag(cont, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS);
57 lv_timer_create(timer_cb, 30, cont);
58 }
59
60 #endif
61