// Copyright 2022 Jose Pablo Ramirez (@jpe230) // SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H #include "qp.h" const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { LAYOUT_ortho_1x1(JS_0) }; painter_device_t lcd; void lv_example_arc_2(void); void keyboard_post_init_user(void) { lcd = qp_gc9a01_make_spi_device(240, 240, LCD_CS_PIN, LCD_DC_PIN, LCD_RST_PIN, 4, 0); qp_init(lcd, QP_ROTATION_0); qp_rect(lcd, 0, 0, 239, 319, 0, 255, 255, true); if (qp_lvgl_attach(lcd)) { lv_example_arc_2(); } } static void set_angle(void* obj, int32_t v) { lv_arc_set_value(obj, v); } /** * Create an arc which acts as a loader. */ void lv_example_arc_2(void) { /*Create an Arc*/ lv_obj_t* arc = lv_arc_create(lv_scr_act()); lv_arc_set_rotation(arc, 270); lv_arc_set_bg_angles(arc, 0, 360); lv_obj_remove_style(arc, NULL, LV_PART_KNOB); /*Be sure the knob is not displayed*/ lv_obj_clear_flag(arc, LV_OBJ_FLAG_CLICKABLE); /*To not allow adjusting by click*/ lv_obj_center(arc); static lv_anim_t a; lv_anim_init(&a); lv_anim_set_var(&a, arc); lv_anim_set_exec_cb(&a, set_angle); lv_anim_set_time(&a, 1000); lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE); /*Just for the demo*/ lv_anim_set_repeat_delay(&a, 500); lv_anim_set_values(&a, 0, 100); lv_anim_start(&a); }