1 #ifndef _LIBPUI_BACKEND_H_
2 #define _LIBPUI_BACKEND_H_
4 #include "PUI_common.h"
6 #define PUI_BACKEND_ABI_MAJOR_MASK 0xFFFF0000
7 #define PUI_BACKEND_ABI_MINOR_MASK 0x0000FFFF
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)
12 #define PUI_BACKEND_SET_ABI_VERSION(major, minor) \
13 ((((major) << 16) & PUI_BACKEND_ABI_MAJOR_MASK) | ((minor) & PUI_BACKEND_ABI_MINOR_MASK))
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
18 typedef struct _pui_backend_ani_func pui_backend_ani_func;
19 struct _pui_backend_ani_func
21 pui_error (*ani_start)(pui_ani_t *ani, int repeat);
22 pui_error (*ani_stop)(pui_ani_t *ani);
24 void (*reserved1)(void);
25 void (*reserved2)(void);
26 void (*reserved3)(void);
27 void (*reserved4)(void);
28 void (*reserved5)(void);
29 void (*reserved6)(void);
30 void (*reserved7)(void);
31 void (*reserved8)(void);
32 void (*reserved9)(void);
33 void (*reserved10)(void);
36 typedef void pui_backend_ani_info;
38 struct _pui_backend_ani_data
40 pui_backend_ani_func *ani_func;
41 pui_backend_ani_info *ani_info;
44 struct _pui_backend_module_data
48 pui_int_error (*create_ani_collection)(void);
49 pui_backend_ani_data *(*ani_create)(pui_id id);
50 void (*ani_destroy)(pui_backend_ani_data *ani_data);
53 struct _pui_backend_module
55 const char *name; /**< The name of a backend module */
56 const char *vendor; /**< The vendor name of a backend module */
57 unsigned long abi_version; /**< The API version of a backend module */
59 pui_backend_module_data *(*backend_init)(void);
60 void (*backend_deinit)(pui_backend_module_data *backend_data);
67 pui_ani_control_buffer *
68 pui_backend_ani_get_buffer(pui_ani_t *ani);
71 pui_backend_ani_set_buffer(pui_ani_t *ani, pui_ani_control_buffer *buffer);
74 pui_backend_ani_update(pui_ani_t *ani);
77 pui_backend_ani_add_frame_cb(pui_ani_t *ani, pui_bool (*frame_cb)(void *data, int serial), double frame_interval);
80 pui_backend_ani_remove_frame_cb(pui_ani_t *ani);
83 pui_backend_ani_status_update(pui_ani_t *ani, pui_ani_status status);
85 pui_backend_ani_func *
86 pui_backend_ani_alloc_ani_func(void);
89 pui_backend_ani_free_ani_func(pui_backend_ani_func *func);
91 pui_backend_ani_data *
92 pui_backend_ani_get_ani_data(pui_ani_t *ani);
98 #endif//_LIBPUI_BACKEND_H_