| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #include "../lv_examples.h"
- #if LV_BUILD_EXAMPLES
- static int n = 3;
- static lv_obj_t * label = NULL;
- static void timer_cb(lv_timer_t * timer)
- {
- if(n < 3 || n > 32) {
- n = 3;
- }
- else {
- static uint32_t old_tick = 0;
- uint32_t tick = lv_tick_get();
- if(!old_tick) {
- old_tick = tick;
- }
- if(tick - old_tick > 3000) {
- n++;
- lv_label_set_text_fmt(label, "%d sides", n);
- old_tick = tick;
- }
- }
- lv_obj_invalidate(timer->user_data);
- }
- static void event_cb(lv_event_t * e)
- {
- /*The original target of the event. Can be the buttons or the container*/
- lv_draw_ctx_t * draw_ctx = lv_event_get_draw_ctx(e);
- lv_draw_rect_dsc_t draw_dsc;
- lv_draw_rect_dsc_init(&draw_dsc);
- draw_dsc.bg_color = lv_palette_main(LV_PALETTE_LIGHT_GREEN);
- draw_dsc.bg_opa = LV_OPA_COVER;
- lv_point_t points[32];
- int i, r = 150;
- uint32_t tick = lv_tick_get();
- for(i = 0; i < n; i++) {
- int angle = i * 360 / n + ((tick % 36000) / 100);
- lv_coord_t x = 150 + (r * lv_trigo_cos(angle) >> LV_TRIGO_SHIFT), y =
- 150 + (r * lv_trigo_sin(angle) >> LV_TRIGO_SHIFT);
- points[i].x = x;
- points[i].y = y;
- }
- lv_draw_polygon(draw_ctx, &draw_dsc, points, n);
- }
- /**
- * Demonstrate event bubbling
- */
- void lv_example_event_4(void)
- {
- lv_obj_t * cont = lv_obj_create(lv_scr_act());
- lv_obj_remove_style_all(cont);
- lv_obj_set_size(cont, 300, 300);
- label = lv_label_create(cont);
- lv_label_set_text_fmt(label, "%d sides", n);
- lv_obj_center(label);
- lv_obj_add_event_cb(cont, event_cb, LV_EVENT_DRAW_MAIN, NULL);
- lv_timer_create(timer_cb, 17, cont);
- }
- #endif
|