renew pui prototype
[platform/core/uifw/libpui.git] / src / PUI_backend.c
1 #include <PUI.h>
2 #include "PUI_backend.h"
3 #include "PUI_internal.h"
4
5 pui_ani_control_buffer *
6 pui_backend_ani_get_buffer(pui_ani_mgr *ani_mgr)
7 {
8         pui_ani_control_buffer *buffer = NULL;
9
10         buffer = pui_ani_get_buffer(ani_mgr->ani_h);
11
12         if (!buffer)
13                 return NULL;
14
15         return buffer;
16 }
17
18 pui_int_error
19 pui_backend_ani_set_buffer(pui_ani_mgr *ani_mgr, pui_ani_control_buffer *buffer)
20 {
21         pui_int_error err = PUI_INT_ERROR_NONE;
22
23         if (!buffer)
24                 return PUI_INT_ERROR_INVALID_BUFFER;
25
26         err = pui_ani_set_buffer(ani_mgr->ani_h, buffer);
27
28         return err;
29 }
30
31 pui_int_error
32 pui_backend_ani_update(pui_ani_mgr *ani_mgr)
33 {
34         pui_int_error err = PUI_INT_ERROR_NONE;
35
36         err = pui_ani_update(ani_mgr->ani_h);
37
38         return err;
39 }
40
41 void
42 pui_backend_ani_add_frame_cb(pui_ani_mgr *ani_mgr, Eina_Bool (*frame_cb)(void *data), double expire, void *data)
43 {
44         Ecore_Timer *timer = NULL;
45
46         if (!ani_mgr)
47                 return;
48
49         ani_mgr->frame_cb = frame_cb;
50         ani_mgr->expire = expire;
51         ani_mgr->frame_cb_data = data;
52
53         timer = ecore_timer_add(expire, (Ecore_Task_Cb)frame_cb, data);
54
55         if (ani_mgr->frame_cb_timer)
56         {
57                 ecore_timer_del(ani_mgr->frame_cb_timer);
58                 ani_mgr->frame_cb_timer = NULL;
59         }
60
61         ani_mgr->frame_cb_timer = timer;
62 }
63
64 void
65 pui_backend_ani_remove_frame_cb(pui_ani_mgr *ani_mgr, void *data)
66 {
67         if (!ani_mgr)
68                 return;
69
70         if (ani_mgr->frame_cb_timer)
71         {
72                 ecore_timer_del(ani_mgr->frame_cb_timer);
73                 ani_mgr->frame_cb_timer = NULL;
74         }
75
76         ani_mgr->frame_cb = NULL;
77         ani_mgr->expire = 0;
78         ani_mgr->frame_cb_data = NULL;
79 }
80
81 pui_backend_ani_func *
82 pui_backend_ani_alloc_ani_func(void)
83 {
84         pui_backend_ani_func *ani_func = NULL;
85
86         ani_func = (pui_backend_ani_func *)calloc(1, sizeof(pui_backend_ani_func));
87         if (!ani_func)
88         {
89                 pui_err("Failed to allocate memory !\n");
90                 return NULL;
91         }
92
93         pui_info("Succeed to allocate memory !\n");
94         return ani_func;
95 }
96
97 void
98 pui_backend_ani_free_ani_func(pui_backend_ani_func *ani_func)
99 {
100         if (!ani_func)
101         {
102                 pui_err("Invalid ani backend_func pointer !\n");
103                 return;
104         }
105
106         free(ani_func);
107         pui_info("Succeed to free memory !\n");
108 }
109