63 lines
1.5 KiB
C
63 lines
1.5 KiB
C
#include "gallery.h"
|
|
|
|
#ifdef USE_OPENGL
|
|
void anim_roller_start(lv_anim_t *a);
|
|
void anim_roller(void *var, int32_t v);
|
|
void anim_roller_end(lv_anim_t *a);
|
|
|
|
void anim_roller_render(void)
|
|
{
|
|
for (int i = 0; i < 6; i++)
|
|
lv_gl_obj_render(obj_roller_items[i]);
|
|
}
|
|
|
|
void anim_roller_start(lv_anim_t *a)
|
|
{
|
|
SDL_Rect v;
|
|
|
|
printf("%s\n", __func__);
|
|
common_anim_start();
|
|
|
|
v.w = 2000;
|
|
v.h = 2000;
|
|
v.x = (view.w - v.w) / 2 + (screen.w - view.w);
|
|
v.y = (view.h - v.h) / 2 + (screen.h - view.h);
|
|
//lv_gl_obj_set_viewport(obj_roller, &v);
|
|
lv_gl_obj_set_viewport(NULL, &v);
|
|
|
|
for (int i = 0; i < 6; i++)
|
|
{
|
|
lv_gl_obj_resize(obj_roller_items[i], NULL);
|
|
|
|
/* sqrt(240^2 - 120^2) / 2000 * 2.0 = 0.20785 */
|
|
obj_roller_items[i]->offset.z = 0.20785;
|
|
obj_roller_items[i]->view_rot.x = 30;
|
|
obj_roller_items[i]->view_rot.z = 15;
|
|
}
|
|
lv_gl_set_render_cb(anim_roller_render);
|
|
}
|
|
|
|
void anim_roller(void *var, int32_t v)
|
|
{
|
|
int index = (intptr_t)var;
|
|
lv_slider_set_value(slider, v, LV_ANIM_ON);
|
|
|
|
for (int i = 0; i < 6; i++)
|
|
{
|
|
obj_roller_items[i]->self_rot.y = (360.0 / 6.0) * i + (float)v;
|
|
if (obj_roller_items[i]->self_rot.y > 360.0)
|
|
obj_roller_items[i]->self_rot.y -= 360.0;
|
|
}
|
|
|
|
lv_obj_invalidate(lv_layer_top());
|
|
}
|
|
|
|
void anim_roller_end(lv_anim_t *a)
|
|
{
|
|
animing = 0;
|
|
lv_slider_set_range(slider, 0, 100);
|
|
lv_slider_set_value(slider, 0, LV_ANIM_ON);
|
|
}
|
|
#endif
|
|
|