author | Sam Lantinga <slouken@libsdl.org> |
Wed, 16 Feb 2011 00:11:48 -0800 | |
changeset 5306 | cf3cd833dcd3 |
parent 5305 | 75f5ff92ad08 |
child 5398 | 83816c8a2b58 |
permissions | -rw-r--r-- |
0 | 1 |
/* |
2 |
SDL - Simple DirectMedia Layer |
|
5262 | 3 |
Copyright (C) 1997-2011 Sam Lantinga |
0 | 4 |
|
5 |
This library is free software; you can redistribute it and/or |
|
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1251
diff
changeset
|
6 |
modify it under the terms of the GNU Lesser General Public |
0 | 7 |
License as published by the Free Software Foundation; either |
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1251
diff
changeset
|
8 |
version 2.1 of the License, or (at your option) any later version. |
0 | 9 |
|
10 |
This library is distributed in the hope that it will be useful, |
|
11 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1251
diff
changeset
|
13 |
Lesser General Public License for more details. |
0 | 14 |
|
1312
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1251
diff
changeset
|
15 |
You should have received a copy of the GNU Lesser General Public |
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1251
diff
changeset
|
16 |
License along with this library; if not, write to the Free Software |
c9b51268668f
Updated copyright information and removed rcs id lines (problematic in branch merges)
Sam Lantinga <slouken@libsdl.org>
parents:
1251
diff
changeset
|
17 |
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
0 | 18 |
|
19 |
Sam Lantinga |
|
252
e8157fcb3114
Updated the source with the correct e-mail address
Sam Lantinga <slouken@libsdl.org>
parents:
173
diff
changeset
|
20 |
slouken@libsdl.org |
0 | 21 |
*/ |
1402
d910939febfa
Use consistent identifiers for the various platforms we support.
Sam Lantinga <slouken@libsdl.org>
parents:
1361
diff
changeset
|
22 |
#include "SDL_config.h" |
0 | 23 |
|
24 |
#ifndef _SDL_sysvideo_h |
|
25 |
#define _SDL_sysvideo_h |
|
26 |
||
4782
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
27 |
#include "SDL_shape.h" |
0 | 28 |
|
29 |
/* The SDL video driver */ |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
30 |
|
4782
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
31 |
typedef struct SDL_WindowShaper SDL_WindowShaper; |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
32 |
typedef struct SDL_ShapeDriver SDL_ShapeDriver; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
33 |
typedef struct SDL_VideoDisplay SDL_VideoDisplay; |
0 | 34 |
typedef struct SDL_VideoDevice SDL_VideoDevice; |
35 |
||
4782
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
36 |
/* Define the SDL window-shaper structure */ |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
37 |
struct SDL_WindowShaper |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
38 |
{ |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
39 |
/* The window associated with the shaper */ |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
40 |
SDL_Window *window; |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
41 |
|
4851
5624fb0190b5
Changed flags and positioning (for the fake-hiding) as Andreas recommended.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
4849
diff
changeset
|
42 |
/* The user's specified coordinates for the window, for once we give it a shape. */ |
5624fb0190b5
Changed flags and positioning (for the fake-hiding) as Andreas recommended.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
4849
diff
changeset
|
43 |
Uint32 userx,usery; |
4782
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
44 |
|
4807
c9eb95f29770
Added color-key mode and redid the code to work with it.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
4782
diff
changeset
|
45 |
/* The parameters for shape calculation. */ |
c9eb95f29770
Added color-key mode and redid the code to work with it.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
4782
diff
changeset
|
46 |
SDL_WindowShapeMode mode; |
4782
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
47 |
|
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
48 |
/* Has this window been assigned a shape? */ |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
49 |
SDL_bool hasshape; |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
50 |
|
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
51 |
void *driverdata; |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
52 |
}; |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
53 |
|
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
54 |
/* Define the SDL shape driver structure */ |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
55 |
struct SDL_ShapeDriver |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
56 |
{ |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
57 |
SDL_WindowShaper *(*CreateShaper)(SDL_Window * window); |
4849
0b918c186938
Finally got the Win32 API code for shaping to work! Just need to fix SDL_CalculateShapeTree() now!
egottlieb
parents:
4810
diff
changeset
|
58 |
int (*SetWindowShape)(SDL_WindowShaper *shaper,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode); |
4782
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
59 |
int (*ResizeWindowShape)(SDL_Window *window); |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
60 |
}; |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
61 |
|
5165
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5154
diff
changeset
|
62 |
typedef struct SDL_WindowUserData |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5154
diff
changeset
|
63 |
{ |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5154
diff
changeset
|
64 |
char *name; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5154
diff
changeset
|
65 |
void *data; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5154
diff
changeset
|
66 |
struct SDL_WindowUserData *next; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5154
diff
changeset
|
67 |
} SDL_WindowUserData; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5154
diff
changeset
|
68 |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
69 |
/* Define the SDL window structure, corresponding to toplevel windows */ |
2753 | 70 |
struct SDL_Window |
71 |
{ |
|
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3685
diff
changeset
|
72 |
const void *magic; |
2753 | 73 |
Uint32 id; |
74 |
char *title; |
|
75 |
int x, y; |
|
76 |
int w, h; |
|
77 |
Uint32 flags; |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
78 |
|
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3435
diff
changeset
|
79 |
SDL_DisplayMode fullscreen_mode; |
4782
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
80 |
|
5166
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5165
diff
changeset
|
81 |
SDL_Surface *surface; |
5174
b9cf75615028
Don't free the surface since the application might be still using it.
Sam Lantinga <slouken@libsdl.org>
parents:
5166
diff
changeset
|
82 |
SDL_bool surface_valid; |
5166
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5165
diff
changeset
|
83 |
|
4782
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
84 |
SDL_WindowShaper *shaper; |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3435
diff
changeset
|
85 |
|
5165
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5154
diff
changeset
|
86 |
SDL_WindowUserData *data; |
2b1989f59674
Extended SDL_SetWindowData() to allow arbitrary named values.
Sam Lantinga <slouken@libsdl.org>
parents:
5154
diff
changeset
|
87 |
|
2753 | 88 |
void *driverdata; |
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3678
diff
changeset
|
89 |
|
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3678
diff
changeset
|
90 |
SDL_Window *prev; |
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3678
diff
changeset
|
91 |
SDL_Window *next; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
92 |
}; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
93 |
#define FULLSCREEN_VISIBLE(W) \ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
94 |
(((W)->flags & SDL_WINDOW_FULLSCREEN) && \ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
95 |
((W)->flags & SDL_WINDOW_SHOWN) && \ |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
96 |
!((W)->flags & SDL_WINDOW_MINIMIZED)) |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
97 |
|
2742
b86247d21929
Added retained backing attribute, reference to UIKit renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2735
diff
changeset
|
98 |
/* |
b86247d21929
Added retained backing attribute, reference to UIKit renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2735
diff
changeset
|
99 |
* Define the SDL display structure This corresponds to physical monitors |
b86247d21929
Added retained backing attribute, reference to UIKit renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2735
diff
changeset
|
100 |
* attached to the system. |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
101 |
*/ |
2753 | 102 |
struct SDL_VideoDisplay |
103 |
{ |
|
104 |
int max_display_modes; |
|
105 |
int num_display_modes; |
|
106 |
SDL_DisplayMode *display_modes; |
|
107 |
SDL_DisplayMode desktop_mode; |
|
108 |
SDL_DisplayMode current_mode; |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
109 |
|
3517
e7eec78e4b92
Fixed mouse events for fullscreen windows on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
3511
diff
changeset
|
110 |
SDL_Window *fullscreen_window; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
111 |
|
2753 | 112 |
SDL_VideoDevice *device; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
113 |
|
2753 | 114 |
void *driverdata; |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
115 |
}; |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
116 |
|
5272
3c94c559f5c2
changeset: 5272:cb08ef104ac4
Sam Lantinga <slouken@libsdl.org>
parents:
5262
diff
changeset
|
117 |
/* Forward declaration */ |
3c94c559f5c2
changeset: 5272:cb08ef104ac4
Sam Lantinga <slouken@libsdl.org>
parents:
5262
diff
changeset
|
118 |
struct SDL_SysWMinfo; |
3c94c559f5c2
changeset: 5272:cb08ef104ac4
Sam Lantinga <slouken@libsdl.org>
parents:
5262
diff
changeset
|
119 |
|
0 | 120 |
/* Define the SDL video driver structure */ |
121 |
#define _THIS SDL_VideoDevice *_this |
|
122 |
||
2753 | 123 |
struct SDL_VideoDevice |
124 |
{ |
|
125 |
/* * * */ |
|
126 |
/* The name of this video driver */ |
|
127 |
const char *name; |
|
0 | 128 |
|
2753 | 129 |
/* * * */ |
130 |
/* Initialization/Query functions */ |
|
0 | 131 |
|
2753 | 132 |
/* |
133 |
* Initialize the native video subsystem, filling in the list of |
|
134 |
* displays for this driver, returning 0 or -1 if there's an error. |
|
135 |
*/ |
|
136 |
int (*VideoInit) (_THIS); |
|
0 | 137 |
|
2753 | 138 |
/* |
139 |
* Reverse the effects VideoInit() -- called if VideoInit() fails or |
|
140 |
* if the application is shutting down the video subsystem. |
|
141 |
*/ |
|
142 |
void (*VideoQuit) (_THIS); |
|
1913
83420da906a5
Implemented Windows OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1912
diff
changeset
|
143 |
|
2753 | 144 |
/* * * */ |
145 |
/* |
|
146 |
* Display functions |
|
147 |
*/ |
|
0 | 148 |
|
2753 | 149 |
/* |
3528
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3517
diff
changeset
|
150 |
* Get the bounds of a display |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3517
diff
changeset
|
151 |
*/ |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3517
diff
changeset
|
152 |
int (*GetDisplayBounds) (_THIS, SDL_VideoDisplay * display, SDL_Rect * rect); |
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3517
diff
changeset
|
153 |
|
59ff7a2beb57
Added an API function to query geometry of multiple monitors:
Sam Lantinga <slouken@libsdl.org>
parents:
3517
diff
changeset
|
154 |
/* |
5246
58265e606e4e
Window coordinates are in the global space and windows are not tied to a particular display.
Sam Lantinga <slouken@libsdl.org>
parents:
5244
diff
changeset
|
155 |
* Get a list of the available display modes for a display. |
2753 | 156 |
*/ |
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3435
diff
changeset
|
157 |
void (*GetDisplayModes) (_THIS, SDL_VideoDisplay * display); |
0 | 158 |
|
2753 | 159 |
/* |
160 |
* Setting the display mode is independent of creating windows, so |
|
161 |
* when the display mode is changed, all existing windows should have |
|
162 |
* their data updated accordingly, including the display surfaces |
|
163 |
* associated with them. |
|
164 |
*/ |
|
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3435
diff
changeset
|
165 |
int (*SetDisplayMode) (_THIS, SDL_VideoDisplay * display, SDL_DisplayMode * mode); |
0 | 166 |
|
2753 | 167 |
/* * * */ |
168 |
/* |
|
169 |
* Window functions |
|
170 |
*/ |
|
171 |
int (*CreateWindow) (_THIS, SDL_Window * window); |
|
172 |
int (*CreateWindowFrom) (_THIS, SDL_Window * window, const void *data); |
|
173 |
void (*SetWindowTitle) (_THIS, SDL_Window * window); |
|
2967
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
174 |
void (*SetWindowIcon) (_THIS, SDL_Window * window, SDL_Surface * icon); |
2753 | 175 |
void (*SetWindowPosition) (_THIS, SDL_Window * window); |
176 |
void (*SetWindowSize) (_THIS, SDL_Window * window); |
|
177 |
void (*ShowWindow) (_THIS, SDL_Window * window); |
|
178 |
void (*HideWindow) (_THIS, SDL_Window * window); |
|
179 |
void (*RaiseWindow) (_THIS, SDL_Window * window); |
|
180 |
void (*MaximizeWindow) (_THIS, SDL_Window * window); |
|
181 |
void (*MinimizeWindow) (_THIS, SDL_Window * window); |
|
182 |
void (*RestoreWindow) (_THIS, SDL_Window * window); |
|
5305
75f5ff92ad08
Fixed a host of issues with Windows fullscreen modes. Toggling fullscreen OpenGL works now in my test environment.
Sam Lantinga <slouken@libsdl.org>
parents:
5297
diff
changeset
|
183 |
void (*SetWindowFullscreen) (_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen); |
2753 | 184 |
void (*SetWindowGrab) (_THIS, SDL_Window * window); |
185 |
void (*DestroyWindow) (_THIS, SDL_Window * window); |
|
5166
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5165
diff
changeset
|
186 |
int (*CreateWindowFramebuffer) (_THIS, SDL_Window * window, Uint32 * format, void ** pixels, int *pitch); |
5297
1800dc39b74c
Changed the concept of a render clip rect to a render viewport.
Sam Lantinga <slouken@libsdl.org>
parents:
5272
diff
changeset
|
187 |
int (*UpdateWindowFramebuffer) (_THIS, SDL_Window * window, SDL_Rect * rects, int numrects); |
5166
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5165
diff
changeset
|
188 |
void (*DestroyWindowFramebuffer) (_THIS, SDL_Window * window); |
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5165
diff
changeset
|
189 |
|
4782
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
190 |
/* * * */ |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
191 |
/* |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
192 |
* Shaped-window functions |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
193 |
*/ |
b6930aefd008
Finished X11 shaped-window functionality and removed ellipse+polygon rendering.
Eli Gottlieb <eligottlieb@gmail.com>
parents:
3701
diff
changeset
|
194 |
SDL_ShapeDriver shape_driver; |
0 | 195 |
|
2753 | 196 |
/* Get some platform dependent window information */ |
197 |
SDL_bool(*GetWindowWMInfo) (_THIS, SDL_Window * window, |
|
198 |
struct SDL_SysWMinfo * info); |
|
0 | 199 |
|
2753 | 200 |
/* * * */ |
201 |
/* |
|
202 |
* OpenGL support |
|
203 |
*/ |
|
204 |
int (*GL_LoadLibrary) (_THIS, const char *path); |
|
205 |
void *(*GL_GetProcAddress) (_THIS, const char *proc); |
|
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3025
diff
changeset
|
206 |
void (*GL_UnloadLibrary) (_THIS); |
2753 | 207 |
SDL_GLContext(*GL_CreateContext) (_THIS, SDL_Window * window); |
208 |
int (*GL_MakeCurrent) (_THIS, SDL_Window * window, SDL_GLContext context); |
|
209 |
int (*GL_SetSwapInterval) (_THIS, int interval); |
|
210 |
int (*GL_GetSwapInterval) (_THIS); |
|
211 |
void (*GL_SwapWindow) (_THIS, SDL_Window * window); |
|
212 |
void (*GL_DeleteContext) (_THIS, SDL_GLContext context); |
|
0 | 213 |
|
2753 | 214 |
/* * * */ |
215 |
/* |
|
216 |
* Event manager functions |
|
217 |
*/ |
|
218 |
void (*PumpEvents) (_THIS); |
|
0 | 219 |
|
3025
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2967
diff
changeset
|
220 |
/* Suspend the screensaver */ |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2967
diff
changeset
|
221 |
void (*SuspendScreenSaver) (_THIS); |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2967
diff
changeset
|
222 |
|
3280
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3276
diff
changeset
|
223 |
/* Text input */ |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3276
diff
changeset
|
224 |
void (*StartTextInput) (_THIS); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3276
diff
changeset
|
225 |
void (*StopTextInput) (_THIS); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3276
diff
changeset
|
226 |
void (*SetTextInputRect) (_THIS, SDL_Rect *rect); |
00cace2d9080
Merged a cleaned up version of Jiang's code changes from Google Summer of Code 2009
Sam Lantinga <slouken@libsdl.org>
parents:
3276
diff
changeset
|
227 |
|
4495
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4472
diff
changeset
|
228 |
/* Clipboard */ |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4472
diff
changeset
|
229 |
int (*SetClipboardText) (_THIS, const char *text); |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4472
diff
changeset
|
230 |
char * (*GetClipboardText) (_THIS); |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4472
diff
changeset
|
231 |
SDL_bool (*HasClipboardText) (_THIS); |
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4472
diff
changeset
|
232 |
|
2753 | 233 |
/* * * */ |
234 |
/* Data common to all drivers */ |
|
3025
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2967
diff
changeset
|
235 |
SDL_bool suspend_screensaver; |
2753 | 236 |
int num_displays; |
237 |
SDL_VideoDisplay *displays; |
|
5246
58265e606e4e
Window coordinates are in the global space and windows are not tied to a particular display.
Sam Lantinga <slouken@libsdl.org>
parents:
5244
diff
changeset
|
238 |
SDL_Window *windows; |
3695
f6a8be3fefa0
Added magic to detect already freed or otherwise invalid windows and textures.
Sam Lantinga <slouken@libsdl.org>
parents:
3685
diff
changeset
|
239 |
Uint8 window_magic; |
2753 | 240 |
Uint32 next_object_id; |
4495
dbbfdb9ea716
Simplified clipboard API for sanity's sake.
Sam Lantinga <slouken@libsdl.org>
parents:
4472
diff
changeset
|
241 |
char * clipboard_text; |
0 | 242 |
|
2753 | 243 |
/* * * */ |
244 |
/* Data used by the GL drivers */ |
|
245 |
struct |
|
246 |
{ |
|
247 |
int red_size; |
|
248 |
int green_size; |
|
249 |
int blue_size; |
|
250 |
int alpha_size; |
|
251 |
int depth_size; |
|
252 |
int buffer_size; |
|
253 |
int stencil_size; |
|
254 |
int double_buffer; |
|
255 |
int accum_red_size; |
|
256 |
int accum_green_size; |
|
257 |
int accum_blue_size; |
|
258 |
int accum_alpha_size; |
|
259 |
int stereo; |
|
260 |
int multisamplebuffers; |
|
261 |
int multisamplesamples; |
|
262 |
int accelerated; |
|
3100
7dc982143c06
Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
263 |
int major_version; |
7dc982143c06
Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
264 |
int minor_version; |
2753 | 265 |
int retained_backing; |
266 |
int driver_loaded; |
|
267 |
char driver_path[256]; |
|
268 |
void *dll_handle; |
|
269 |
} gl_config; |
|
0 | 270 |
|
2753 | 271 |
/* * * */ |
272 |
/* Data private to this driver */ |
|
273 |
void *driverdata; |
|
274 |
struct SDL_GLDriverData *gl_data; |
|
0 | 275 |
|
3161
494559cc723b
OpenPandora support added by David Carré
Sam Lantinga <slouken@libsdl.org>
parents:
3100
diff
changeset
|
276 |
#if SDL_VIDEO_DRIVER_PANDORA |
494559cc723b
OpenPandora support added by David Carré
Sam Lantinga <slouken@libsdl.org>
parents:
3100
diff
changeset
|
277 |
struct SDL_PrivateGLESData *gles_data; |
494559cc723b
OpenPandora support added by David Carré
Sam Lantinga <slouken@libsdl.org>
parents:
3100
diff
changeset
|
278 |
#endif |
494559cc723b
OpenPandora support added by David Carré
Sam Lantinga <slouken@libsdl.org>
parents:
3100
diff
changeset
|
279 |
|
2753 | 280 |
/* * * */ |
281 |
/* The function used to dispose of this structure */ |
|
282 |
void (*free) (_THIS); |
|
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
283 |
}; |
0 | 284 |
|
2753 | 285 |
typedef struct VideoBootStrap |
286 |
{ |
|
287 |
const char *name; |
|
288 |
const char *desc; |
|
289 |
int (*available) (void); |
|
290 |
SDL_VideoDevice *(*create) (int devindex); |
|
291 |
} VideoBootStrap; |
|
0 | 292 |
|
1931
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
1928
diff
changeset
|
293 |
#if SDL_VIDEO_DRIVER_COCOA |
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
1928
diff
changeset
|
294 |
extern VideoBootStrap COCOA_bootstrap; |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1330
diff
changeset
|
295 |
#endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1330
diff
changeset
|
296 |
#if SDL_VIDEO_DRIVER_X11 |
0 | 297 |
extern VideoBootStrap X11_bootstrap; |
298 |
#endif |
|
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1330
diff
changeset
|
299 |
#if SDL_VIDEO_DRIVER_DIRECTFB |
167
cb384ef627f6
Added support for DirectFB video on Linux (thanks Denis!)
Sam Lantinga <slouken@libsdl.org>
parents:
75
diff
changeset
|
300 |
extern VideoBootStrap DirectFB_bootstrap; |
cb384ef627f6
Added support for DirectFB video on Linux (thanks Denis!)
Sam Lantinga <slouken@libsdl.org>
parents:
75
diff
changeset
|
301 |
#endif |
5062 | 302 |
#if SDL_VIDEO_DRIVER_WINDOWS |
303 |
extern VideoBootStrap WINDOWS_bootstrap; |
|
0 | 304 |
#endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1330
diff
changeset
|
305 |
#if SDL_VIDEO_DRIVER_BWINDOW |
0 | 306 |
extern VideoBootStrap BWINDOW_bootstrap; |
307 |
#endif |
|
5150
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
5149
diff
changeset
|
308 |
#if SDL_VIDEO_DRIVER_PANDORA |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
5149
diff
changeset
|
309 |
extern VideoBootStrap PND_bootstrap; |
3083
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3057
diff
changeset
|
310 |
#endif |
5150
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
5149
diff
changeset
|
311 |
#if SDL_VIDEO_DRIVER_NDS |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
5149
diff
changeset
|
312 |
extern VideoBootStrap NDS_bootstrap; |
173
83018110dce8
Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
167
diff
changeset
|
313 |
#endif |
2742
b86247d21929
Added retained backing attribute, reference to UIKit renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2735
diff
changeset
|
314 |
#if SDL_VIDEO_DRIVER_UIKIT |
b86247d21929
Added retained backing attribute, reference to UIKit renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2735
diff
changeset
|
315 |
extern VideoBootStrap UIKIT_bootstrap; |
b86247d21929
Added retained backing attribute, reference to UIKit renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2735
diff
changeset
|
316 |
#endif |
5150
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
5149
diff
changeset
|
317 |
#if SDL_VIDEO_DRIVER_ANDROID |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
5149
diff
changeset
|
318 |
extern VideoBootStrap Android_bootstrap; |
1435f8a6425c
Nobody is currently maintaining the QNX code, so removing it for now.
Sam Lantinga <slouken@libsdl.org>
parents:
5149
diff
changeset
|
319 |
#endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1330
diff
changeset
|
320 |
#if SDL_VIDEO_DRIVER_DUMMY |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1330
diff
changeset
|
321 |
extern VideoBootStrap DUMMY_bootstrap; |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1330
diff
changeset
|
322 |
#endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1330
diff
changeset
|
323 |
|
4472
791b3256fb22
Mostly cleaned up warnings with -Wmissing-prototypes
Sam Lantinga <slouken@libsdl.org>
parents:
3701
diff
changeset
|
324 |
extern SDL_VideoDevice *SDL_GetVideoDevice(void); |
2753 | 325 |
extern int SDL_AddBasicVideoDisplay(const SDL_DisplayMode * desktop_mode); |
326 |
extern int SDL_AddVideoDisplay(const SDL_VideoDisplay * display); |
|
3500
4b594623401b
Work in progress on multi-display support:
Sam Lantinga <slouken@libsdl.org>
parents:
3435
diff
changeset
|
327 |
extern SDL_bool SDL_AddDisplayMode(SDL_VideoDisplay *display, const SDL_DisplayMode * mode); |
5246
58265e606e4e
Window coordinates are in the global space and windows are not tied to a particular display.
Sam Lantinga <slouken@libsdl.org>
parents:
5244
diff
changeset
|
328 |
extern SDL_VideoDisplay *SDL_GetDisplayForWindow(SDL_Window *window); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
329 |
|
2753 | 330 |
extern int SDL_RecreateWindow(SDL_Window * window, Uint32 flags); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
331 |
|
2753 | 332 |
extern void SDL_OnWindowShown(SDL_Window * window); |
333 |
extern void SDL_OnWindowHidden(SDL_Window * window); |
|
5166
4d39eeaad00b
Added a way to get a framebuffer interface for a window, and also a way to create a software renderer for an arbitrary surface.
Sam Lantinga <slouken@libsdl.org>
parents:
5165
diff
changeset
|
334 |
extern void SDL_OnWindowResized(SDL_Window * window); |
3502
98a819296cdc
Whenever a window becomes fullscreen, shown, unminimized, and has input focus it will change the display to the corresponding fullscreen video mode.
Sam Lantinga <slouken@libsdl.org>
parents:
3501
diff
changeset
|
335 |
extern void SDL_OnWindowMinimized(SDL_Window * window); |
98a819296cdc
Whenever a window becomes fullscreen, shown, unminimized, and has input focus it will change the display to the corresponding fullscreen video mode.
Sam Lantinga <slouken@libsdl.org>
parents:
3501
diff
changeset
|
336 |
extern void SDL_OnWindowRestored(SDL_Window * window); |
2753 | 337 |
extern void SDL_OnWindowFocusGained(SDL_Window * window); |
338 |
extern void SDL_OnWindowFocusLost(SDL_Window * window); |
|
3685
64ce267332c6
Switched from SDL_WindowID and SDL_TextureID to SDL_Window* and SDL_Texture* for code simplicity and improved performance.
Sam Lantinga <slouken@libsdl.org>
parents:
3678
diff
changeset
|
339 |
extern SDL_Window * SDL_GetFocusWindow(void); |
0 | 340 |
|
2753 | 341 |
#endif /* _SDL_sysvideo_h */ |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
342 |
|
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
343 |
/* vi: set ts=4 sw=4 expandtab: */ |