4 #include <PUI_backend.h>
16 typedef struct _default_ani_info default_ani_info;
17 struct _default_ani_info
20 pui_ani_status status;
21 pui_ani_control_buffer *buffer;
24 unsigned int key_frame_idx;
25 unsigned int num_key_frames;
27 pui_effect_func effect_func;
30 pui_backend_ani_data *g_ani_data = NULL;
33 _frame_cb(void *data, int serial)
35 pui_ani_t *ani = (pui_ani_t *)data;
40 //pui_backend_ani_get_buffer();
41 //pui_backend_ani_update();
47 get_ani_info_from_ani_collection(default_ani_info *info, pui_id id)
49 pui_int_error e = PUI_INT_ERROR_NONE;
53 //ex> data->interval = 30;
59 _ani_start(pui_ani_t *ani, int repeat)
61 pui_int_error e = PUI_INT_ERROR_NONE;
62 pui_backend_ani_data *ani_data = NULL;
64 ani_data = pui_backend_ani_get_ani_data(ani);
65 default_ani_info *info = (default_ani_info *)ani_data->ani_info;
70 pui_backend_ani_status_update(ani, PUI_ANI_STATUS_STARTED);
71 pui_backend_ani_add_frame_cb(ani, _frame_cb, 0.1);
77 _ani_stop(pui_ani_t *ani)
79 pui_int_error e = PUI_INT_ERROR_NONE;
80 pui_backend_ani_data *ani_data = NULL;
82 ani_data = pui_backend_ani_get_ani_data(ani);
83 default_ani_info *info = (default_ani_info *)ani_data->ani_info;
88 pui_backend_ani_remove_frame_cb(ani);
89 pui_backend_ani_status_update(ani, PUI_ANI_STATUS_STOPPED);
95 _create_ani_collection(void)
97 pui_int_error e = PUI_INT_ERROR_NONE;
105 _is_ani_supported(pui_id id)
107 pui_int_error e = PUI_INT_ERROR_NONE;
110 /* if the given id is not supported, return PUI_INT_ERROR_ID_NOT_SUPPORTED. */
115 pui_backend_ani_data *
116 _ani_create(pui_id id)
118 pui_int_error e = PUI_INT_ERROR_NONE;
120 pui_backend_ani_data *ani_data = NULL;
121 pui_backend_ani_func *ani_func = NULL;
123 /* backend's animation specific info */
124 default_ani_info *ani_info = NULL;
126 //TODO : return NULL if the animation correspond to the given id dones't exist.
128 /* allocation of the structure of function pointers that will be called from pui_ani_control() */
129 ani_func = pui_backend_ani_alloc_ani_func();
133 pui_err("Failed to allocate memory ! (pui backend ani func)\n");
137 /* Assign each function pointer that corresponds to the given id if needed. */
138 ani_func->ani_start = _ani_start;
139 ani_func->ani_stop = _ani_stop;
141 ani_func->reserved1 = NULL;
142 ani_func->reserved2 = NULL;
143 ani_func->reserved3 = NULL;
144 ani_func->reserved4 = NULL;
145 ani_func->reserved5 = NULL;
146 ani_func->reserved6 = NULL;
147 ani_func->reserved7 = NULL;
148 ani_func->reserved8 = NULL;
149 ani_func->reserved9 = NULL;
150 ani_func->reserved10 = NULL;
152 /* backend's animation specific info */
153 ani_info = (default_ani_info *)calloc(1, sizeof(default_ani_info));
157 pui_err("Failed to allocate memory ! (backend's ani specific info)\n");
161 /* fill animation info associate with the given id from animation collection */
162 e = get_ani_info_from_ani_collection(ani_info, id);
164 if (PUI_INT_ERROR_NONE != e)
166 pui_err("Failed to get ani info from animation collection !\n");
170 /* allocate backend ani_data and return it to pui ani core */
171 ani_data = (pui_backend_ani_data *)calloc(1, sizeof(pui_backend_ani_data));
175 pui_err("Failed to allocate memory for pui backend ani data !\n");
179 ani_data->ani_func = ani_func;
180 ani_data->ani_info = (pui_backend_ani_info *)ani_info;
182 g_ani_data = ani_data;
189 pui_backend_ani_free_ani_func(ani_func);
195 //TODO : free if anything needs to be done with ani_info
204 _ani_destroy(pui_backend_ani_data *ani_data)
209 pui_backend_ani_free_ani_func(ani_data->ani_func);
211 //TODO : free if anything needs to be done with ani_info
212 free(ani_data->ani_info);
214 ani_data->ani_func = NULL;
215 ani_data->ani_info = NULL;
220 static pui_backend_module_data *
221 pui_default_backend_init(void)
223 pui_backend_module_data *backend_data = NULL;
225 backend_data = (pui_backend_module_data *)calloc(1, sizeof(pui_backend_module_data));
229 pui_err("Failed to allocate memory for pui backend module data !\n");
233 backend_data->create_ani_collection = _create_ani_collection;
234 backend_data->ani_create = _ani_create;
235 backend_data->ani_destroy = _ani_destroy;
237 /* Allocate backend specific data if needed. Now it will be empty. */
238 backend_data->data = NULL;
244 pui_default_backend_deinit(pui_backend_module_data *backend_data)
249 if (backend_data->data)
251 //TODO : free variables of backend_data
253 free(backend_data->data);
258 if (g_ani_data->ani_func)
260 pui_backend_ani_free_ani_func(g_ani_data->ani_func);
261 g_ani_data->ani_func = NULL;
264 if (g_ani_data->ani_info)
266 //TODO : free if anything needs to be done with ani_info
267 free(g_ani_data->ani_info);
268 g_ani_data->ani_info = NULL;
272 backend_data->create_ani_collection = NULL;
273 backend_data->ani_create = NULL;
274 backend_data->ani_destroy = NULL;
280 pui_backend_module pui_backend_module_info = {
281 "Tizen Reference Speaker Backend",
283 PUI_BACKEND_SET_ABI_VERSION(1, 0),
284 pui_default_backend_init,
285 pui_default_backend_deinit