Migrate TactilityC and LVGL functionality (#588)
lvgl-module - Move and rename source and include files - Fix bug with missing lvgl unlock - New widgets: spinner, toolbar, sliderbox TactilityC - Removed tt_lock, tt_lvgl_\*
This commit is contained in:
committed by
GitHub
parent
cd2d9d6158
commit
b98a813f3c
@@ -0,0 +1,55 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
#define LV_USE_PRIVATE_API 1 // For actual lv_obj_t declaration
|
||||
|
||||
#include <lvgl/widgets/spinner.h>
|
||||
|
||||
// TODO: Don't depend on asset from a different project
|
||||
#define SPINNER_ASSET "A:/system/spinner.png"
|
||||
|
||||
static void spinner_constructor(const lv_obj_class_t* object_class, lv_obj_t* object);
|
||||
|
||||
static const lv_obj_class_t tt_spinner_class = {
|
||||
.base_class = &lv_image_class,
|
||||
.constructor_cb = spinner_constructor,
|
||||
.destructor_cb = nullptr,
|
||||
.event_cb = nullptr,
|
||||
.user_data = nullptr,
|
||||
.name = "tt_spinner",
|
||||
.width_def = 0,
|
||||
.height_def = 0,
|
||||
.editable = 0,
|
||||
.group_def = 0,
|
||||
.instance_size = 0,
|
||||
.theme_inheritable = 0
|
||||
};
|
||||
|
||||
lv_obj_t* lvgl_spinner_create(lv_obj_t* parent) {
|
||||
lv_obj_t* obj = lv_obj_class_create_obj(&tt_spinner_class, parent);
|
||||
lv_obj_class_init_obj(obj);
|
||||
|
||||
lv_image_set_src(obj, SPINNER_ASSET);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
static void anim_rotation_callback(void* var, int32_t v) {
|
||||
auto* object = (lv_obj_t*) var;
|
||||
auto width = lv_obj_get_width(object);
|
||||
auto height = lv_obj_get_width(object);
|
||||
lv_obj_set_style_transform_pivot_x(object, width / 2, 0);
|
||||
lv_obj_set_style_transform_pivot_y(object, height / 2, 0);
|
||||
lv_obj_set_style_transform_rotation(object, v, 0);
|
||||
}
|
||||
|
||||
static void spinner_constructor(const lv_obj_class_t* object_class, lv_obj_t* object) {
|
||||
lv_obj_remove_flag(object, LV_OBJ_FLAG_CLICKABLE);
|
||||
|
||||
lv_anim_t a;
|
||||
lv_anim_init(&a);
|
||||
lv_anim_set_var(&a, object);
|
||||
lv_anim_set_values(&a, 0, 3600);
|
||||
lv_anim_set_duration(&a, 800);
|
||||
lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE);
|
||||
lv_anim_set_exec_cb(&a, anim_rotation_callback);
|
||||
lv_anim_start(&a);
|
||||
}
|
||||
Reference in New Issue
Block a user