2 * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
4 #ifndef _ECORE_EVAS_PRIVATE_H
5 #define _ECORE_EVAS_PRIVATE_H
11 #include "Ecore_Data.h"
13 #include <sys/types.h>
17 #ifdef HAVE_SYS_MMAN_H
18 # include <sys/mman.h>
23 #define ECORE_MAGIC_EVAS 0x76543211
25 #ifndef BUILD_ECORE_DIRECTFB
26 # undef BUILD_ECORE_EVAS_DIRECTFB
29 #ifdef BUILD_ECORE_EVAS_X11
31 # ifdef HAVE_ECORE_X_XCB
33 # ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
34 # include <Evas_Engine_Software_Xcb.h>
36 # ifdef BUILD_ECORE_EVAS_XRENDER_XCB
37 # include <xcb/render.h>
38 # include <Evas_Engine_XRender_Xcb.h>
41 # ifdef HAVE_ECORE_X_XLIB
42 # include <X11/Xlib.h>
43 # include <X11/Xutil.h>
44 # ifdef BUILD_ECORE_EVAS_SOFTWARE_X11
45 # include <Evas_Engine_Software_X11.h>
47 # ifdef BUILD_ECORE_EVAS_XRENDER_X11
48 # include <X11/extensions/Xrender.h>
49 # include <Evas_Engine_XRender_X11.h>
51 # ifdef BUILD_ECORE_EVAS_OPENGL_X11
52 # include <Evas_Engine_GL_X11.h>
54 # ifdef BUILD_ECORE_EVAS_SOFTWARE_16_X11
55 # include <Evas_Engine_Software_16_X11.h>
60 #ifdef BUILD_ECORE_EVAS_FB
61 # include <Evas_Engine_FB.h>
64 #ifdef BUILD_ECORE_EVAS_DIRECTFB
65 # include <Evas_Engine_DirectFB.h>
66 # include "Ecore_DirectFB.h"
69 #ifdef BUILD_ECORE_EVAS_BUFFER
70 # include <Evas_Engine_Buffer.h>
73 #ifdef BUILD_ECORE_EVAS_WIN32
74 # include "Ecore_Win32.h"
75 # ifdef BUILD_ECORE_EVAS_SOFTWARE_DDRAW
76 # include <Evas_Engine_Software_DDraw.h>
78 # ifdef BUILD_ECORE_EVAS_DIRECT3D
79 # include <Evas_Engine_Direct3D.h>
81 # ifdef BUILD_ECORE_EVAS_OPENGL_GLEW
82 # include <Evas_Engine_GL_Glew.h>
84 # ifdef BUILD_ECORE_EVAS_SOFTWARE_16_DDRAW
85 # include <Evas_Engine_Software_16_DDraw.h>
89 #ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
90 # include "Ecore_WinCE.h"
91 # include <Evas_Engine_Software_16_WinCE.h>
95 #define IDLE_FLUSH_TIME 0.5
97 typedef struct _Ecore_Evas Ecore_Evas;
98 typedef struct _Ecore_Evas_Engine Ecore_Evas_Engine;
99 typedef struct _Ecore_Evas_Engine_Func Ecore_Evas_Engine_Func;
101 struct _Ecore_Evas_Engine_Func
103 void (*fn_free) (Ecore_Evas *ee);
104 void (*fn_callback_resize_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
105 void (*fn_callback_move_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
106 void (*fn_callback_show_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
107 void (*fn_callback_hide_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
108 void (*fn_callback_delete_request_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
109 void (*fn_callback_destroy_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
110 void (*fn_callback_focus_in_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
111 void (*fn_callback_focus_out_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
112 void (*fn_callback_mouse_in_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
113 void (*fn_callback_mouse_out_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
114 void (*fn_callback_sticky_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
115 void (*fn_callback_unsticky_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
116 void (*fn_callback_pre_render_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
117 void (*fn_callback_post_render_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
118 void (*fn_move) (Ecore_Evas *ee, int x, int y);
119 void (*fn_managed_move) (Ecore_Evas *ee, int x, int y);
120 void (*fn_resize) (Ecore_Evas *ee, int w, int h);
121 void (*fn_move_resize) (Ecore_Evas *ee, int x, int y, int w, int h);
122 void (*fn_rotation_set) (Ecore_Evas *ee, int rot);
123 void (*fn_shaped_set) (Ecore_Evas *ee, int shaped);
124 void (*fn_show) (Ecore_Evas *ee);
125 void (*fn_hide) (Ecore_Evas *ee);
126 void (*fn_raise) (Ecore_Evas *ee);
127 void (*fn_lower) (Ecore_Evas *ee);
128 void (*fn_activate) (Ecore_Evas *ee);
129 void (*fn_title_set) (Ecore_Evas *ee, const char *t);
130 void (*fn_name_class_set) (Ecore_Evas *ee, const char *n, const char *c);
131 void (*fn_size_min_set) (Ecore_Evas *ee, int w, int h);
132 void (*fn_size_max_set) (Ecore_Evas *ee, int w, int h);
133 void (*fn_size_base_set) (Ecore_Evas *ee, int w, int h);
134 void (*fn_size_step_set) (Ecore_Evas *ee, int w, int h);
135 void (*fn_object_cursor_set) (Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y);
136 void (*fn_layer_set) (Ecore_Evas *ee, int layer);
137 void (*fn_focus_set) (Ecore_Evas *ee, int on);
138 void (*fn_iconified_set) (Ecore_Evas *ee, int on);
139 void (*fn_borderless_set) (Ecore_Evas *ee, int on);
140 void (*fn_override_set) (Ecore_Evas *ee, int on);
141 void (*fn_maximized_set) (Ecore_Evas *ee, int on);
142 void (*fn_fullscreen_set) (Ecore_Evas *ee, int on);
143 void (*fn_avoid_damage_set) (Ecore_Evas *ee, int on);
144 void (*fn_withdrawn_set) (Ecore_Evas *ee, int withdrawn);
145 void (*fn_sticky_set) (Ecore_Evas *ee, int sticky);
146 void (*fn_ignore_events_set) (Ecore_Evas *ee, int ignore);
147 void (*fn_alpha_set) (Ecore_Evas *ee, int alpha);
148 void *(*fn_window_get) (Ecore_Evas *ee);
151 struct _Ecore_Evas_Engine
153 Ecore_Evas_Engine_Func *func;
155 #if defined (BUILD_ECORE_EVAS_SOFTWARE_X11) || defined (BUILD_ECORE_EVAS_SOFTWARE_XCB)
157 Ecore_X_Window win_root;
159 Evas_List *win_extra;
163 #ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
164 # warning [XCB] No Region code
167 #endif /* ! BUILD_ECORE_EVAS_SOFTWARE_XCB */
169 unsigned char direct_resize : 1;
170 unsigned char using_bg_pixmap : 1;
171 unsigned char managed : 1;
173 unsigned char modal : 1;
174 unsigned char sticky : 1;
175 unsigned char maximized_v : 1;
176 unsigned char maximized_h : 1;
177 unsigned char shaded : 1;
178 unsigned char skip_taskbar : 1;
179 unsigned char skip_pager : 1;
180 unsigned char fullscreen : 1;
181 unsigned char above : 1;
182 unsigned char below : 1;
186 #ifdef BUILD_ECORE_EVAS_FB
192 #ifdef BUILD_ECORE_EVAS_BUFFER
198 #ifdef BUILD_ECORE_EVAS_DIRECTFB
200 Ecore_DirectFB_Window *window;
203 #ifdef BUILD_ECORE_EVAS_WIN32
205 Ecore_Win32_Window *parent;
206 Ecore_Win32_Window *window;
208 unsigned char fullscreen : 1;
212 #ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
214 Ecore_WinCE_Window *window;
218 Ecore_Timer *idle_flush_timer;
223 Ecore_List __list_data;
233 char should_be_visible : 1;
264 unsigned char avoid_damage;
273 char request_pos : 1;
277 void (*fn_resize) (Ecore_Evas *ee);
278 void (*fn_move) (Ecore_Evas *ee);
279 void (*fn_show) (Ecore_Evas *ee);
280 void (*fn_hide) (Ecore_Evas *ee);
281 void (*fn_delete_request) (Ecore_Evas *ee);
282 void (*fn_destroy) (Ecore_Evas *ee);
283 void (*fn_focus_in) (Ecore_Evas *ee);
284 void (*fn_focus_out) (Ecore_Evas *ee);
285 void (*fn_sticky) (Ecore_Evas *ee);
286 void (*fn_unsticky) (Ecore_Evas *ee);
287 void (*fn_mouse_in) (Ecore_Evas *ee);
288 void (*fn_mouse_out) (Ecore_Evas *ee);
289 void (*fn_pre_render) (Ecore_Evas *ee);
290 void (*fn_post_render) (Ecore_Evas *ee);
293 Ecore_Evas_Engine engine;
294 Evas_List *sub_ecore_evas;
296 unsigned char ignore_events : 1;
299 #ifdef BUILD_ECORE_EVAS_X11
300 int _ecore_evas_x_shutdown(void);
302 #ifdef BUILD_ECORE_EVAS_FB
303 int _ecore_evas_fb_shutdown(void);
305 #ifdef BUILD_ECORE_EVAS_BUFFER
306 int _ecore_evas_buffer_shutdown(void);
307 void _ecore_evas_buffer_render(Ecore_Evas *ee);
309 #ifdef BUILD_ECORE_EVAS_DIRECTFB
310 int _ecore_evas_directfb_shutdown(void);
312 #ifdef BUILD_ECORE_EVAS_WIN32
313 int _ecore_evas_win32_shutdown(void);
315 #ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
316 int _ecore_evas_wince_shutdown(void);
319 void _ecore_evas_fps_debug_init(void);
320 void _ecore_evas_fps_debug_shutdown(void);
321 void _ecore_evas_fps_debug_rendertime_add(double t);
322 void _ecore_evas_free(Ecore_Evas *ee);
323 void _ecore_evas_idle_timeout_update(Ecore_Evas *ee);