Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 27 additions & 1 deletion boards/shields/nice_view_custom/widgets/peripheral_status.c
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,27 @@ const lv_img_dsc_t *anim_imgs[] = {
&hammerbeam30,
};

void rotateArr(const lv_img_dsc_t *arr[], int n, uint32_t d) {
if (n <= 1) return;
d = d % n;
if (d == 0) return;

const lv_img_dsc_t *tmp[n];
for (int i = 0; i < n; i++) {
tmp[i] = arr[(i + d) % n];
}
for (int i = 0; i < n; i++) {
arr[i] = tmp[i];
}
}

uint32_t d;

void anim_imgs_shift_init(void) {
int n = sizeof(anim_imgs) / sizeof(anim_imgs[0]);
d = sys_rand32_get() % n;
rotateArr(anim_imgs, n, d);
}

static sys_slist_t widgets = SYS_SLIST_STATIC_INIT(&widgets);

Expand Down Expand Up @@ -176,6 +197,8 @@ int zmk_widget_status_init(struct zmk_widget_status *widget, lv_obj_t *parent) {
lv_obj_align(top, LV_ALIGN_TOP_RIGHT, 0, 0);
lv_canvas_set_buffer(top, widget->cbuf, CANVAS_SIZE, CANVAS_SIZE, LV_IMG_CF_TRUE_COLOR);

anim_imgs_shift_init();

lv_obj_t * art = lv_animimg_create(widget->obj);
lv_obj_center(art);
lv_animimg_set_src(art, (const void **) anim_imgs, 30);
Expand All @@ -191,4 +214,7 @@ int zmk_widget_status_init(struct zmk_widget_status *widget, lv_obj_t *parent) {
return 0;
}

lv_obj_t *zmk_widget_status_obj(struct zmk_widget_status *widget) { return widget->obj; }

lv_obj_t *zmk_widget_status_obj(struct zmk_widget_status *widget) { return widget->obj; }