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