static pui_bool
_ani_backend_frame_cb(void *data, int serial)
{
+ pui_int_error e = PUI_INT_ERROR_NONE;
pui_ani_t *ani = (pui_ani_t *)data;
+ pui_backend_ani_data *ani_data = NULL;
+ pui_ani_control_buffer *buffer = NULL;
- //TODO
- (void) ani;
- //_get_next_frame();
- //pui_backend_ani_get_buffer();
- //pui_backend_ani_update();
+ ani_data = pui_backend_ani_get_ani_data(ani);
+ default_ani_info *ani_info = (default_ani_info *)ani_data->ani_info;
pui_info("... serial=%d\n", serial);
+ /* TODO : make use of ani_info */
+ (void) ani_info;
+
+ buffer = pui_backend_ani_get_buffer(ani);
+
+ /* test example */
+ for(int i = 0; i<12; i++)
+ {
+ buffer->ptr[4*i] = 0;
+ buffer->ptr[4*i + 1] = (((serial%3) == 0) ? 0xFF:0); /* BLUE */
+ buffer->ptr[4*i + 2] = (((serial%3) == 1) ? 0xFF:0); /* GREEN */
+ buffer->ptr[4*i + 3] = (((serial%3) == 2) ? 0xFF:0); /* RED */
+ }
+
+ e = pui_backend_ani_set_buffer(ani, buffer);
+
+ if (e != PUI_INT_ERROR_NONE)
+ {
+ pui_err("Failed on setting buffer on animation !(e=%d)\n", e);
+ return (pui_bool)0;
+ }
+
+ e = pui_backend_ani_update(ani);
+
+ if (e != PUI_INT_ERROR_NONE)
+ {
+ pui_err("Failed on updating animation !(e=%d)\n", e);
+ return (pui_bool)0;
+ }
+
+ pui_info("... update (serial=%d)\n", serial);
+
return (pui_bool)1;
}