renew pui prototype
[platform/core/uifw/libpui.git] / src / PUI_internal.h
1 #ifndef _LIBPUI_INTERNAL_H_
2 #define _LIBPUI_INTERNAL_H_
3
4 #define EFL_BETA_API_SUPPORT
5
6 #include <stdint.h>
7 #include <Ecore_Wl2.h>
8 #include <Eina.h>
9 #include <wayland-tbm-client.h>
10 #include <tbm_surface_internal.h>
11 #include "PUI_common.h"
12
13 #ifndef PATH_MAX
14 #define PATH_MAX 4096
15 #endif
16
17 struct _pui_ani_control_buffer
18 {
19         unsigned char *ptr;
20         uint32_t size;
21 };
22
23 struct _pui_ani
24 {
25         pui_h pui_handle;
26         pui_ani_t *ani;
27
28         Eina_Array *ecore_event_hdls;
29         Ecore_Wl2_Frame_Cb_Handle *frame_done_cb;
30
31         pui_id id;
32 };
33
34 struct _pui_ani_t
35 {
36         pui_ani_h ani_h;
37
38         pui_id id;
39         pui_ani_cmd cmd;
40         int repeat;
41         pui_ani_status status;
42
43         int serial;
44         pui_ani_control_buffer *buffer;
45
46         Eina_Bool (*frame_cb)(void *data);
47         pui_bool (*backend_frame_cb)(void *data, int serial);
48         void *frame_cb_data;
49         double frame_interval;
50         Ecore_Timer *frame_cb_timer;
51
52         pui_backend_ani_data *ani_data;
53 };
54
55 struct _pui
56 {
57         Ecore_Wl2_Window *win;
58         Ecore_Wl2_Display *ewd;
59         int visibility;
60
61         struct wayland_tbm_client *wl_tbm_client;
62         tbm_surface_queue_h tbm_queue;
63
64         tbm_surface_info_s current_sinfo;
65         tbm_surface_h current_surface;
66         int is_buffer_set;
67
68         Eina_List *ani_handles;
69
70         pui_backend_module_data *backend_module_data;
71 };
72
73 struct _pui_module_data
74 {
75         void *module_info;
76         pui_backend_module *backend_module_info;
77         pui_backend_module_data *backend_module_data;
78 };
79
80 #ifdef __cplusplus
81 extern "C" {
82 #endif
83
84 pui_ani_control_buffer *
85 pui_ani_get_buffer(pui_ani_h ani_h);
86
87 pui_int_error
88 pui_ani_set_buffer(pui_ani_h ani_h, pui_ani_control_buffer *buffer);
89
90 pui_int_error
91 pui_ani_update(pui_ani_h ani_h);
92
93 void
94 pui_ani_add_frame_cb(pui_ani_t *ani, pui_bool (*frame_cb)(void *data, int serial), double frame_interval);
95
96 void
97 pui_ani_remove_frame_cb(pui_ani_t *ani);
98
99 void
100 pui_ani_status_update(pui_ani_t *ani, pui_ani_status status);
101
102 pui_ani_status
103 pui_ani_status_get(pui_ani_t *ani);
104
105 pui_backend_ani_data *
106 pui_ani_get_ani_data(pui_ani_t *ani);
107
108 #ifdef __cplusplus
109 }
110 #endif
111
112 #endif//_LIBPUI_INTERNAL_H_