zenilib  0.5.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
SDL_sysvideo.h
Go to the documentation of this file.
1 /*
2  Simple DirectMedia Layer
3  Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
4 
5  This software is provided 'as-is', without any express or implied
6  warranty. In no event will the authors be held liable for any damages
7  arising from the use of this software.
8 
9  Permission is granted to anyone to use this software for any purpose,
10  including commercial applications, and to alter it and redistribute it
11  freely, subject to the following restrictions:
12 
13  1. The origin of this software must not be misrepresented; you must not
14  claim that you wrote the original software. If you use this software
15  in a product, an acknowledgment in the product documentation would be
16  appreciated but is not required.
17  2. Altered source versions must be plainly marked as such, and must not be
18  misrepresented as being the original software.
19  3. This notice may not be removed or altered from any source distribution.
20 */
21 #include "SDL_config.h"
22 
23 #ifndef _SDL_sysvideo_h
24 #define _SDL_sysvideo_h
25 
26 #include "SDL_messagebox.h"
27 #include "SDL_shape.h"
28 #include "SDL_thread.h"
29 
30 /* The SDL video driver */
31 
36 
37 /* Define the SDL window-shaper structure */
39 {
40  /* The window associated with the shaper */
42 
43  /* The user's specified coordinates for the window, for once we give it a shape. */
45 
46  /* The parameters for shape calculation. */
48 
49  /* Has this window been assigned a shape? */
51 
52  void *driverdata;
53 };
54 
55 /* Define the SDL shape driver structure */
57 {
58  SDL_WindowShaper *(*CreateShaper)(SDL_Window * window);
61 };
62 
63 typedef struct SDL_WindowUserData
64 {
65  char *name;
66  void *data;
69 
70 /* Define the SDL window structure, corresponding to toplevel windows */
71 struct SDL_Window
72 {
73  const void *magic;
75  char *title;
77  int x, y;
78  int w, h;
79  int min_w, min_h;
80  int max_w, max_h;
82 
83  /* Stored position and size for windowed mode */
85 
87 
88  float brightness;
90  Uint16 *saved_gamma; /* (just offset into gamma) */
91 
94 
96 
98 
99  void *driverdata;
100 
103 };
104 #define FULLSCREEN_VISIBLE(W) \
105  (((W)->flags & SDL_WINDOW_FULLSCREEN) && \
106  ((W)->flags & SDL_WINDOW_SHOWN) && \
107  !((W)->flags & SDL_WINDOW_MINIMIZED))
108 
109 /*
110  * Define the SDL display structure This corresponds to physical monitors
111  * attached to the system.
112  */
114 {
115  char *name;
121 
123 
125 
126  void *driverdata;
127 };
128 
129 /* Forward declaration */
130 struct SDL_SysWMinfo;
131 
132 /* Define the SDL video driver structure */
133 #define _THIS SDL_VideoDevice *_this
134 
136 {
137  /* * * */
138  /* The name of this video driver */
139  const char *name;
140 
141  /* * * */
142  /* Initialization/Query functions */
143 
144  /*
145  * Initialize the native video subsystem, filling in the list of
146  * displays for this driver, returning 0 or -1 if there's an error.
147  */
149 
150  /*
151  * Reverse the effects VideoInit() -- called if VideoInit() fails or
152  * if the application is shutting down the video subsystem.
153  */
155 
156  /* * * */
157  /*
158  * Display functions
159  */
160 
161  /*
162  * Get the bounds of a display
163  */
165 
166  /*
167  * Get a list of the available display modes for a display.
168  */
170 
171  /*
172  * Setting the display mode is independent of creating windows, so
173  * when the display mode is changed, all existing windows should have
174  * their data updated accordingly, including the display surfaces
175  * associated with them.
176  */
178 
179  /* * * */
180  /*
181  * Window functions
182  */
184  int (*CreateWindowFrom) (_THIS, SDL_Window * window, const void *data);
191  void (*ShowWindow) (_THIS, SDL_Window * window);
192  void (*HideWindow) (_THIS, SDL_Window * window);
197  void (*SetWindowBordered) (_THIS, SDL_Window * window, SDL_bool bordered);
199  int (*SetWindowGammaRamp) (_THIS, SDL_Window * window, const Uint16 * ramp);
200  int (*GetWindowGammaRamp) (_THIS, SDL_Window * window, Uint16 * ramp);
201  void (*SetWindowGrab) (_THIS, SDL_Window * window, SDL_bool grabbed);
203  int (*CreateWindowFramebuffer) (_THIS, SDL_Window * window, Uint32 * format, void ** pixels, int *pitch);
204  int (*UpdateWindowFramebuffer) (_THIS, SDL_Window * window, const SDL_Rect * rects, int numrects);
207 
208  /* * * */
209  /*
210  * Shaped-window functions
211  */
213 
214  /* Get some platform dependent window information */
216  struct SDL_SysWMinfo * info);
217 
218  /* * * */
219  /*
220  * OpenGL support
221  */
222  int (*GL_LoadLibrary) (_THIS, const char *path);
223  void *(*GL_GetProcAddress) (_THIS, const char *proc);
227  void (*GL_GetDrawableSize) (_THIS, SDL_Window * window, int *w, int *h);
228  int (*GL_SetSwapInterval) (_THIS, int interval);
232 
233  /* * * */
234  /*
235  * Event manager functions
236  */
238 
239  /* Suspend the screensaver */
241 
242  /* Text input */
246 
247  /* Screen keyboard */
252 
253  /* Clipboard */
254  int (*SetClipboardText) (_THIS, const char *text);
255  char * (*GetClipboardText) (_THIS);
257 
258  /* MessageBox */
259  int (*ShowMessageBox) (_THIS, const SDL_MessageBoxData *messageboxdata, int *buttonid);
260 
261  /* * * */
262  /* Data common to all drivers */
270 
271  /* * * */
272  /* Data used by the GL drivers */
273  struct
274  {
275  int red_size;
287  int stereo;
293  int flags;
298  char driver_path[256];
299  void *dll_handle;
300  } gl_config;
301 
302  /* * * */
303  /* Cache current GL context; don't call the OS when it hasn't changed. */
304  /* We have the global pointers here so Cocoa continues to work the way
305  it always has, and the thread-local storage for the general case.
306  */
311 
312  /* * * */
313  /* Data private to this driver */
314  void *driverdata;
316 
317 #if SDL_VIDEO_OPENGL_EGL
318  struct SDL_EGL_VideoData *egl_data;
319 #endif
320 
321 #if SDL_VIDEO_OPENGL_ES || SDL_VIDEO_OPENGL_ES2
322  struct SDL_PrivateGLESData *gles_data;
323 #endif
324 
325  /* * * */
326  /* The function used to dispose of this structure */
328 };
329 
330 typedef struct VideoBootStrap
331 {
332  const char *name;
333  const char *desc;
335  SDL_VideoDevice *(*create) (int devindex);
337 
338 #if SDL_VIDEO_DRIVER_COCOA
339 extern VideoBootStrap COCOA_bootstrap;
340 #endif
341 #if SDL_VIDEO_DRIVER_X11
342 extern VideoBootStrap X11_bootstrap;
343 #endif
344 #if SDL_VIDEO_DRIVER_DIRECTFB
345 extern VideoBootStrap DirectFB_bootstrap;
346 #endif
347 #if SDL_VIDEO_DRIVER_WINDOWS
348 extern VideoBootStrap WINDOWS_bootstrap;
349 #endif
350 #if SDL_VIDEO_DRIVER_BWINDOW
351 extern VideoBootStrap BWINDOW_bootstrap;
352 #endif
353 #if SDL_VIDEO_DRIVER_PANDORA
354 extern VideoBootStrap PND_bootstrap;
355 #endif
356 #if SDL_VIDEO_DRIVER_UIKIT
357 extern VideoBootStrap UIKIT_bootstrap;
358 #endif
359 #if SDL_VIDEO_DRIVER_ANDROID
360 extern VideoBootStrap Android_bootstrap;
361 #endif
362 #if SDL_VIDEO_DRIVER_PSP
363 extern VideoBootStrap PSP_bootstrap;
364 #endif
365 #if SDL_VIDEO_DRIVER_RPI
366 extern VideoBootStrap RPI_bootstrap;
367 #endif
368 #if SDL_VIDEO_DRIVER_DUMMY
369 extern VideoBootStrap DUMMY_bootstrap;
370 #endif
371 
372 extern SDL_VideoDevice *SDL_GetVideoDevice(void);
373 extern int SDL_AddBasicVideoDisplay(const SDL_DisplayMode * desktop_mode);
374 extern int SDL_AddVideoDisplay(const SDL_VideoDisplay * display);
377 extern void *SDL_GetDisplayDriverData( int displayIndex );
378 
379 extern int SDL_RecreateWindow(SDL_Window * window, Uint32 flags);
380 
381 extern void SDL_OnWindowShown(SDL_Window * window);
382 extern void SDL_OnWindowHidden(SDL_Window * window);
383 extern void SDL_OnWindowResized(SDL_Window * window);
384 extern void SDL_OnWindowMinimized(SDL_Window * window);
385 extern void SDL_OnWindowRestored(SDL_Window * window);
386 extern void SDL_OnWindowEnter(SDL_Window * window);
387 extern void SDL_OnWindowLeave(SDL_Window * window);
388 extern void SDL_OnWindowFocusGained(SDL_Window * window);
389 extern void SDL_OnWindowFocusLost(SDL_Window * window);
390 extern void SDL_UpdateWindowGrab(SDL_Window * window);
391 extern SDL_Window * SDL_GetFocusWindow(void);
392 
393 extern SDL_bool SDL_ShouldAllowTopmost(void);
394 
395 #endif /* _SDL_sysvideo_h */
396 
397 /* vi: set ts=4 sw=4 expandtab: */
void(* SetWindowMaximumSize)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:190
void(* GetDisplayModes)(_THIS, SDL_VideoDisplay *display)
Definition: SDL_sysvideo.h:169
SDL_Window * next
Definition: SDL_sysvideo.h:102
const char * name
Definition: SDL_sysvideo.h:139
void(* MinimizeWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:195
void SDL_UpdateWindowGrab(SDL_Window *window)
Definition: SDL_video.c:2006
int(* UpdateWindowFramebuffer)(_THIS, SDL_Window *window, const SDL_Rect *rects, int numrects)
Definition: SDL_sysvideo.h:204
SDL_bool(* GetWindowWMInfo)(_THIS, SDL_Window *window, struct SDL_SysWMinfo *info)
Definition: SDL_sysvideo.h:215
SDL_bool(* IsScreenKeyboardShown)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:251
void(* RaiseWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:193
int(* SetClipboardText)(_THIS, const char *text)
Definition: SDL_sysvideo.h:254
GLfloat GLfloat GLfloat GLfloat h
Definition: glew.h:7294
SDL_DisplayMode fullscreen_mode
Definition: SDL_sysvideo.h:86
GLvoid **typedef void(GLAPIENTRY *PFNGLGETVERTEXATTRIBDVPROC)(GLuint
Definition: glew.h:1824
void(* HideWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:192
#define _THIS
Definition: SDL_sysvideo.h:133
int(* GL_MakeCurrent)(_THIS, SDL_Window *window, SDL_GLContext context)
Definition: SDL_sysvideo.h:226
int(* GetWindowGammaRamp)(_THIS, SDL_Window *window, Uint16 *ramp)
Definition: SDL_sysvideo.h:200
const char * desc
Definition: SDL_sysvideo.h:333
const void * magic
Definition: SDL_sysvideo.h:73
SDL_bool
Definition: SDL_stdinc.h:116
SDL_TLSID current_glwin_tls
Definition: SDL_sysvideo.h:309
void(* StopTextInput)(_THIS)
Definition: SDL_sysvideo.h:244
int(* GetDisplayBounds)(_THIS, SDL_VideoDisplay *display, SDL_Rect *rect)
Definition: SDL_sysvideo.h:164
SDL_bool hasshape
Definition: SDL_sysvideo.h:50
int SDL_AddBasicVideoDisplay(const SDL_DisplayMode *desktop_mode)
Definition: SDL_video.c:554
A collection of pixels used in software blitting.
Definition: SDL_surface.h:69
void SDL_OnWindowResized(SDL_Window *window)
Definition: SDL_video.c:2057
void(* SetWindowGrab)(_THIS, SDL_Window *window, SDL_bool grabbed)
Definition: SDL_sysvideo.h:201
The structure that defines a display mode.
Definition: SDL_video.h:53
void(* SetWindowIcon)(_THIS, SDL_Window *window, SDL_Surface *icon)
Definition: SDL_sysvideo.h:186
void * SDL_GLContext
An opaque handle to an OpenGL context.
Definition: SDL_video.h:161
SDL_bool(* HasScreenKeyboardSupport)(_THIS)
Definition: SDL_sysvideo.h:248
struct VideoBootStrap VideoBootStrap
Uint16 * saved_gamma
Definition: SDL_sysvideo.h:90
char * display
Definition: visualinfo.c:85
void SDL_OnWindowEnter(SDL_Window *window)
Definition: SDL_video.c:2080
int(* CreateWindowFrom)(_THIS, SDL_Window *window, const void *data)
Definition: SDL_sysvideo.h:184
SDL_Rect windowed
Definition: SDL_sysvideo.h:84
GLsizei const GLchar *const * path
Definition: glew.h:5828
void(* HideScreenKeyboard)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:250
int SDL_AddVideoDisplay(const SDL_VideoDisplay *display)
Definition: SDL_video.c:568
void(* free)(_THIS)
Definition: SDL_sysvideo.h:327
struct SDL_GLDriverData * gl_data
Definition: SDL_sysvideo.h:315
void * SDL_GetDisplayDriverData(int displayIndex)
Definition: SDL_video.c:622
void SDL_OnWindowHidden(SDL_Window *window)
Definition: SDL_video.c:2051
int(* GL_SetSwapInterval)(_THIS, int interval)
Definition: SDL_sysvideo.h:228
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:145
void(* DestroyWindowFramebuffer)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:205
int(* CreateWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:183
void(* GL_UnloadLibrary)(_THIS)
Definition: SDL_sysvideo.h:224
struct SDL_WindowUserData * next
Definition: SDL_sysvideo.h:67
void SDL_OnWindowMinimized(SDL_Window *window)
Definition: SDL_video.c:2064
void(* GL_GetDrawableSize)(_THIS, SDL_Window *window, int *w, int *h)
Definition: SDL_sysvideo.h:227
SDL_VideoDevice * device
Definition: SDL_sysvideo.h:124
SDL_WindowShapeMode mode
Definition: SDL_sysvideo.h:47
SDL_GLContext current_glctx
Definition: SDL_sysvideo.h:308
int
Definition: SDL_systhread.c:37
int(* ShowMessageBox)(_THIS, const SDL_MessageBoxData *messageboxdata, int *buttonid)
Definition: SDL_sysvideo.h:259
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl2ext.h:848
int SDL_RecreateWindow(SDL_Window *window, Uint32 flags)
Definition: SDL_video.c:1317
int(* SetWindowShape)(SDL_WindowShaper *shaper, SDL_Surface *shape, SDL_WindowShapeMode *shape_mode)
Definition: SDL_sysvideo.h:59
int(* VideoInit)(_THIS)
Definition: SDL_sysvideo.h:148
SDL_WindowShaper * shaper
Definition: SDL_sysvideo.h:95
SDL_Window * window
Definition: SDL_sysvideo.h:41
SDL_Window * SDL_GetFocusWindow(void)
Definition: SDL_video.c:2138
char driver_path[256]
Definition: SDL_sysvideo.h:298
int(* SetWindowGammaRamp)(_THIS, SDL_Window *window, const Uint16 *ramp)
Definition: SDL_sysvideo.h:199
SDL_DisplayMode * display_modes
Definition: SDL_sysvideo.h:118
SDL_DisplayMode current_mode
Definition: SDL_sysvideo.h:120
SDL_VideoDisplay * displays
Definition: SDL_sysvideo.h:265
void SDL_OnWindowLeave(SDL_Window *window)
Definition: SDL_video.c:2088
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl2ext.h:845
char * title
Definition: SDL_sysvideo.h:75
void(* SetWindowPosition)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:187
SDL_Window * windows
Definition: SDL_sysvideo.h:266
void(* PumpEvents)(_THIS)
Definition: SDL_sysvideo.h:237
union SDL_SysWMinfo::@78 info
MessageBox structure containing title, text, window, etc.
float brightness
Definition: SDL_sysvideo.h:88
SDL_Window * fullscreen_window
Definition: SDL_sysvideo.h:122
void(* SetWindowMinimumSize)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:189
int share_with_current_context
Definition: SDL_sysvideo.h:295
void(* SuspendScreenSaver)(_THIS)
Definition: SDL_sysvideo.h:240
int(* GL_GetSwapInterval)(_THIS)
Definition: SDL_sysvideo.h:229
SDL_bool SDL_ShouldAllowTopmost(void)
Definition: SDL_video.c:3207
SDL_DisplayMode desktop_mode
Definition: SDL_sysvideo.h:119
void(* GL_DeleteContext)(_THIS, SDL_GLContext context)
Definition: SDL_sysvideo.h:231
void(* MaximizeWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:194
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum const GLvoid * pixels
Definition: gl2ext.h:845
void(* DestroyWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:202
void(* SetTextInputRect)(_THIS, SDL_Rect *rect)
Definition: SDL_sysvideo.h:245
void(* SetWindowSize)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:188
SDL_Surface * icon
Definition: SDL_sysvideo.h:76
GLenum GLsizei GLsizei GLsizei GLsizei GLbitfield flags
Definition: glew.h:2767
int(* SetDisplayMode)(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode)
Definition: SDL_sysvideo.h:177
SDL_VideoDisplay * SDL_GetDisplayForWindow(SDL_Window *window)
Definition: SDL_video.c:996
int(* available)(void)
Definition: SDL_sysvideo.h:334
SDL_Window * prev
Definition: SDL_sysvideo.h:101
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:129
SDL_TLSID current_glctx_tls
Definition: SDL_sysvideo.h:310
SDL_GLContext(* GL_CreateContext)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:225
Uint32 id
Definition: SDL_sysvideo.h:74
int(* GL_LoadLibrary)(_THIS, const char *path)
Definition: SDL_sysvideo.h:222
void SDL_OnWindowFocusLost(SDL_Window *window)
Definition: SDL_video.c:2123
void(* GL_SwapWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:230
const char * name
Definition: SDL_sysvideo.h:332
void(* VideoQuit)(_THIS)
Definition: SDL_sysvideo.h:154
void(* ShowWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:191
SDL_bool SDL_AddDisplayMode(SDL_VideoDisplay *display, const SDL_DisplayMode *mode)
Definition: SDL_video.c:666
SDL_VideoDevice * SDL_GetVideoDevice(void)
Definition: SDL_video.c:548
SDL_ShapeDriver shape_driver
Definition: SDL_sysvideo.h:212
int(* CreateWindowFramebuffer)(_THIS, SDL_Window *window, Uint32 *format, void **pixels, int *pitch)
Definition: SDL_sysvideo.h:203
SDL_bool suspend_screensaver
Definition: SDL_sysvideo.h:263
GLint GLint GLint GLint GLint w
Definition: gl2ext.h:1215
uint16_t Uint16
An unsigned 16-bit integer type.
Definition: SDL_stdinc.h:137
SDL_bool(* HasClipboardText)(_THIS)
Definition: SDL_sysvideo.h:256
void SDL_OnWindowRestored(SDL_Window *window)
Definition: SDL_video.c:2070
void SDL_OnWindowShown(SDL_Window *window)
Definition: SDL_video.c:2045
A struct that tags the SDL_WindowShapeParams union with an enum describing the type of its contents...
Definition: SDL_shape.h:100
Uint16 * gamma
Definition: SDL_sysvideo.h:89
void * driverdata
Definition: SDL_sysvideo.h:99
void(* SetWindowTitle)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:185
void(* SetWindowBordered)(_THIS, SDL_Window *window, SDL_bool bordered)
Definition: SDL_sysvideo.h:197
TParseContext * context
void(* StartTextInput)(_THIS)
Definition: SDL_sysvideo.h:243
void(* SetWindowFullscreen)(_THIS, SDL_Window *window, SDL_VideoDisplay *display, SDL_bool fullscreen)
Definition: SDL_sysvideo.h:198
void(* OnWindowEnter)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:206
SDL_bool surface_valid
Definition: SDL_sysvideo.h:93
Uint32 flags
Definition: SDL_sysvideo.h:81
Uint32 next_object_id
Definition: SDL_sysvideo.h:268
SDL_Surface * surface
Definition: SDL_sysvideo.h:92
struct SDL_VideoDevice::@87 gl_config
SDL_Window * current_glwin
Definition: SDL_sysvideo.h:307
struct SDL_WindowUserData SDL_WindowUserData
GLenum mode
Definition: glew.h:2394
SDL_WindowUserData * data
Definition: SDL_sysvideo.h:97
int(* ResizeWindowShape)(SDL_Window *window)
Definition: SDL_sysvideo.h:60
A rectangle, with the origin at the upper left.
Definition: SDL_rect.h:63
void(* ShowScreenKeyboard)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:249
void(* RestoreWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:196
char * clipboard_text
Definition: SDL_sysvideo.h:269
unsigned int SDL_TLSID
Definition: SDL_thread.h:52
void SDL_OnWindowFocusGained(SDL_Window *window)
Definition: SDL_video.c:2093