renew pui prototype
[platform/core/uifw/libpui.git] / include / PUI_backend.h
1 #ifndef _LIBPUI_BACKEND_H_
2 #define _LIBPUI_BACKEND_H_
3
4 #include "PUI.h"
5 #include "PUI_internal.h"
6
7 #define PUI_BACKEND_ABI_MAJOR_MASK      0xFFFF0000
8 #define PUI_BACKEND_ABI_MINOR_MASK      0x0000FFFF
9
10 #define PUI_BACKEND_GET_ABI_MAJOR(m)    ((m) & PUI_BACKEND_ABI_MAJOR_MASK) >> 16)
11 #define PUI_BACKEND_GET_ABI_MINOR(m)    ((m) & PUI_BACKEND_ABI_MINOR_MASK)
12
13 #define PUI_BACKEND_SET_ABI_VERSION(major, minor)       \
14                 ((((major) << 16) & PUI_BACKEND_ABI_MAJOR_MASK) | ((minor) & PUI_BACKEND_ABI_MINOR_MASK))
15
16 #define PUI_BACKEND_ABI_VERSION_1_0             PUI_BACKEND_SET_ABI_VERSION(1, 0)
17 #define PUI_BACKEND_AB_VERSION_LAST     PUI_BACKEND_ABI_VERSION_1_0
18
19 typedef struct _pui_ani_control_buffer pui_ani_control_buffer;
20 typedef struct _pui_ani_mgr pui_ani_mgr;
21
22 typedef struct _pui_backend_ani_func pui_backend_ani_func;
23 struct _pui_backend_ani_func
24 {
25         pui_error (*ani_create)(pui_ani_mgr *ani_mgr, pui_id id);
26         pui_error (*ani_start)(pui_ani_mgr *ani_mgr, int repeat);
27         pui_error (*ani_stop)(pui_ani_mgr *ani_mgr);
28
29         void (*reserved1)(void);
30         void (*reserved2)(void);
31         void (*reserved3)(void);
32         void (*reserved4)(void);
33         void (*reserved5)(void);
34         void (*reserved6)(void);
35         void (*reserved7)(void);
36         void (*reserved8)(void);
37         void (*reserved9)(void);
38         void (*reserved10)(void);
39 };
40
41 typedef struct _pui_backend_module_data pui_backend_module_data;
42 struct _pui_backend_module_data
43 {
44         void *data;
45
46         pui_int_error (*create_ani_collection)(void);
47         pui_int_error (*is_ani_supported)(pui_id id);
48         pui_backend_ani_func *(*get_ani_func)(pui_id id);
49 };
50
51 typedef struct _pui_backend_module pui_backend_module;
52 typedef struct _pui_backend_module
53 {
54         const char *name;                       /**< The name of a backend module */
55         const char *vendor;             /**< The vendor name of a backend module */
56         unsigned long abi_version;      /**< The API version of a backend module */
57
58         pui_backend_module_data *(*backend_init)(void);
59         void (*backend_deinit)(pui_backend_module_data *backend_data);
60 };
61
62 typedef void pui_backend_ani_data;
63
64 #ifdef __cplusplus
65 extern "C" {
66 #endif
67
68 pui_ani_control_buffer *
69 pui_backend_ani_get_buffer(pui_ani_mgr *ani_mgr);
70
71 pui_int_error
72 pui_backend_ani_set_buffer(pui_ani_mgr *ani_mgr, pui_ani_control_buffer *buffer);
73
74 pui_int_error
75 pui_backend_ani_update(pui_ani_mgr *ani_mgr);
76
77 void
78 pui_backend_ani_add_frame_cb(pui_ani_mgr *ani_mgr, Eina_Bool (*frame_cb)(void *data), double expire, void *data)\r;
79
80 void
81 pui_backend_ani_remove_frame_cb(pui_ani_mgr *ani_mgr, void *data);
82
83 pui_backend_ani_func *
84 pui_backend_ani_alloc_ani_func(void);
85
86 void
87 pui_backend_ani_free_ani_func(pui_backend_ani_func *func);
88
89 #ifdef __cplusplus
90 }
91 #endif
92
93 #endif//_LIBPUI_BACKEND_H_