Mercurial > sdl-ios-xcode
annotate src/video/SDL_video.c @ 2869:2fe507a2ef7d
Whoops, the X11 driver doesn't support fullscreen modes (yet)
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sat, 13 Dec 2008 13:30:11 +0000 |
parents | 6ce28e5287e9 |
children | 91a7e08cd238 |
rev | line source |
---|---|
0 | 1 /* |
2 SDL - Simple DirectMedia Layer | |
2859 | 3 Copyright (C) 1997-2009 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:
1296
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:
1296
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:
1296
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:
1296
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:
1296
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:
1296
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:
229
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:
1385
diff
changeset
|
22 #include "SDL_config.h" |
0 | 23 |
24 /* The high-level video driver subsystem */ | |
25 | |
26 #include "SDL.h" | |
27 #include "SDL_sysvideo.h" | |
28 #include "SDL_blit.h" | |
29 #include "SDL_pixels_c.h" | |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
1913
diff
changeset
|
30 #include "SDL_renderer_gl.h" |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
31 #include "SDL_renderer_gles.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
|
32 #include "SDL_renderer_sw.h" |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
33 #include "../events/SDL_sysevents.h" |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
34 #include "../events/SDL_events_c.h" |
0 | 35 |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
36 #if SDL_VIDEO_OPENGL_ES |
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
37 #include "SDL_opengles.h" |
2753 | 38 #endif /* SDL_VIDEO_OPENGL_ES */ |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
39 |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
40 #if SDL_VIDEO_OPENGL |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
41 #include "SDL_opengl.h" |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
42 |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
43 /* On Windows, windows.h defines CreateWindow */ |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
44 #ifdef CreateWindow |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
45 #undef CreateWindow |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
46 #endif |
2753 | 47 #endif /* SDL_VIDEO_OPENGL */ |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
48 |
0 | 49 /* Available video drivers */ |
50 static VideoBootStrap *bootstrap[] = { | |
1931
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
1930
diff
changeset
|
51 #if SDL_VIDEO_DRIVER_COCOA |
2753 | 52 &COCOA_bootstrap, |
1133
609c060fd2a2
The MacOSX Carbon/Cocoa/X11 all in one library patch. Relevant emails:
Ryan C. Gordon <icculus@icculus.org>
parents:
1076
diff
changeset
|
53 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
54 #if SDL_VIDEO_DRIVER_X11 |
2753 | 55 &X11_bootstrap, |
0 | 56 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
57 #if SDL_VIDEO_DRIVER_NANOX |
2753 | 58 &NX_bootstrap, |
30
57bf11a5efd7
Added initial support for Nano-X (thanks Hsieh-Fu!)
Sam Lantinga <slouken@lokigames.com>
parents:
19
diff
changeset
|
59 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
60 #if SDL_VIDEO_DRIVER_IPOD |
2753 | 61 &iPod_bootstrap, |
1140
af8b0f9ac2f4
iPod Linux framebuffer support.
Ryan C. Gordon <icculus@icculus.org>
parents:
1133
diff
changeset
|
62 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
63 #if SDL_VIDEO_DRIVER_WSCONS |
2753 | 64 &WSCONS_bootstrap, |
1187 | 65 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
66 #if SDL_VIDEO_DRIVER_FBCON |
2753 | 67 &FBCON_bootstrap, |
0 | 68 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
69 #if SDL_VIDEO_DRIVER_DIRECTFB |
2753 | 70 &DirectFB_bootstrap, |
167
cb384ef627f6
Added support for DirectFB video on Linux (thanks Denis!)
Sam Lantinga <slouken@libsdl.org>
parents:
125
diff
changeset
|
71 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
72 #if SDL_VIDEO_DRIVER_PS2GS |
2753 | 73 &PS2GS_bootstrap, |
0 | 74 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
75 #if SDL_VIDEO_DRIVER_VGL |
2753 | 76 &VGL_bootstrap, |
75
b0ae59d0f3ee
Added patches from FreeBSD ports
Sam Lantinga <slouken@lokigames.com>
parents:
58
diff
changeset
|
77 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
78 #if SDL_VIDEO_DRIVER_SVGALIB |
2753 | 79 &SVGALIB_bootstrap, |
0 | 80 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
81 #if SDL_VIDEO_DRIVER_GAPI |
2753 | 82 &GAPI_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
83 #endif |
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
|
84 #if SDL_VIDEO_DRIVER_WIN32 |
2753 | 85 &WIN32_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
86 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
87 #if SDL_VIDEO_DRIVER_BWINDOW |
2753 | 88 &BWINDOW_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
89 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
90 #if SDL_VIDEO_DRIVER_PHOTON |
2753 | 91 &ph_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
92 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
93 #if SDL_VIDEO_DRIVER_EPOC |
2753 | 94 &EPOC_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
95 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
96 #if SDL_VIDEO_DRIVER_XBIOS |
2753 | 97 &XBIOS_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
98 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
99 #if SDL_VIDEO_DRIVER_GEM |
2753 | 100 &GEM_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
101 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
102 #if SDL_VIDEO_DRIVER_DC |
2753 | 103 &DC_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
104 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
105 #if SDL_VIDEO_DRIVER_RISCOS |
2753 | 106 &RISCOS_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
107 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
108 #if SDL_VIDEO_DRIVER_OS2FS |
2753 | 109 &OS2FSLib_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
110 #endif |
2743
453ec0c21f6f
Rolling back changes to revision 4071 ... made some mistakes, will try merging work again.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2740
diff
changeset
|
111 #if SDL_VIDEO_DRIVER_NDS |
2753 | 112 &NDS_bootstrap, |
2735
204be4fc2726
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
2702
diff
changeset
|
113 #endif |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
114 #if SDL_VIDEO_DRIVER_UIKIT |
2753 | 115 &UIKIT_bootstrap, |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
116 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
117 #if SDL_VIDEO_DRIVER_DUMMY |
2753 | 118 &DUMMY_bootstrap, |
610
95433459fbd2
Date: Mon, 14 Apr 2003 22:08:27 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
580
diff
changeset
|
119 #endif |
2753 | 120 NULL |
0 | 121 }; |
173
83018110dce8
Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
167
diff
changeset
|
122 |
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
|
123 static SDL_VideoDevice *_this = NULL; |
0 | 124 |
125 /* Various local functions */ | |
2753 | 126 int SDL_VideoInit(const char *driver_name, Uint32 flags); |
127 void SDL_VideoQuit(void); | |
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
|
128 |
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
|
129 static int |
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
|
130 cmpmodes(const void *A, const void *B) |
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
|
131 { |
2753 | 132 SDL_DisplayMode a = *(const SDL_DisplayMode *) A; |
133 SDL_DisplayMode b = *(const SDL_DisplayMode *) B; | |
0 | 134 |
2753 | 135 if (a.w != b.w) { |
136 return b.w - a.w; | |
137 } | |
138 if (a.h != b.h) { | |
139 return b.h - a.h; | |
140 } | |
141 if (SDL_BITSPERPIXEL(a.format) != SDL_BITSPERPIXEL(b.format)) { | |
142 return SDL_BITSPERPIXEL(b.format) - SDL_BITSPERPIXEL(a.format); | |
143 } | |
144 if (a.refresh_rate != b.refresh_rate) { | |
145 return b.refresh_rate - a.refresh_rate; | |
146 } | |
147 return 0; | |
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
|
148 } |
0 | 149 |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
150 static void |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
151 SDL_UninitializedVideo() |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
152 { |
2753 | 153 SDL_SetError("Video subsystem has not been initialized"); |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
154 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
155 |
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
|
156 int |
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
|
157 SDL_GetNumVideoDrivers(void) |
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
|
158 { |
2753 | 159 return SDL_arraysize(bootstrap) - 1; |
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
|
160 } |
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
|
161 |
2753 | 162 const char * |
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
|
163 SDL_GetVideoDriver(int index) |
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
|
164 { |
2753 | 165 if (index >= 0 && index < SDL_GetNumVideoDrivers()) { |
166 return bootstrap[index]->name; | |
167 } | |
168 return NULL; | |
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
|
169 } |
0 | 170 |
171 /* | |
172 * Initialize the video and event subsystems -- determine native pixel format | |
173 */ | |
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
|
174 int |
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
|
175 SDL_VideoInit(const char *driver_name, Uint32 flags) |
0 | 176 { |
2753 | 177 SDL_VideoDevice *video; |
178 int index; | |
179 int i; | |
0 | 180 |
2753 | 181 /* Toggle the event thread flags, based on OS requirements */ |
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
|
182 #if defined(MUST_THREAD_EVENTS) |
2753 | 183 flags |= SDL_INIT_EVENTTHREAD; |
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
|
184 #elif defined(CANT_THREAD_EVENTS) |
2753 | 185 if ((flags & SDL_INIT_EVENTTHREAD) == SDL_INIT_EVENTTHREAD) { |
186 SDL_SetError("OS doesn't support threaded events"); | |
187 return -1; | |
188 } | |
1190 | 189 #endif |
229
4d24d5a660a8
Fix a crash if an OpenGL video mode can't be set.
Sam Lantinga <slouken@libsdl.org>
parents:
216
diff
changeset
|
190 |
2753 | 191 /* Start the event loop */ |
192 if (SDL_StartEventLoop(flags) < 0) { | |
193 return -1; | |
194 } | |
195 /* Check to make sure we don't overwrite '_this' */ | |
196 if (_this != NULL) { | |
197 SDL_VideoQuit(); | |
198 } | |
199 /* Select the proper video driver */ | |
200 index = 0; | |
201 video = NULL; | |
202 if (driver_name == NULL) { | |
203 driver_name = SDL_getenv("SDL_VIDEODRIVER"); | |
204 } | |
205 if (driver_name != NULL) { | |
206 for (i = 0; bootstrap[i]; ++i) { | |
207 if (SDL_strcasecmp(bootstrap[i]->name, driver_name) == 0) { | |
208 if (bootstrap[i]->available()) { | |
209 video = bootstrap[i]->create(index); | |
210 } | |
211 break; | |
212 } | |
213 } | |
214 } else { | |
215 for (i = 0; bootstrap[i]; ++i) { | |
216 if (bootstrap[i]->available()) { | |
217 video = bootstrap[i]->create(index); | |
218 if (video != NULL) { | |
219 break; | |
220 } | |
221 } | |
222 } | |
223 } | |
224 if (video == NULL) { | |
225 if (driver_name) { | |
226 SDL_SetError("%s not available", driver_name); | |
227 } else { | |
228 SDL_SetError("No available video device"); | |
229 } | |
230 return -1; | |
231 } | |
232 _this = video; | |
233 _this->name = bootstrap[i]->name; | |
234 _this->next_object_id = 1; | |
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
|
235 |
0 | 236 |
2753 | 237 /* Set some very sane GL defaults */ |
238 _this->gl_config.driver_loaded = 0; | |
239 _this->gl_config.dll_handle = NULL; | |
240 _this->gl_config.red_size = 3; | |
241 _this->gl_config.green_size = 3; | |
242 _this->gl_config.blue_size = 2; | |
243 _this->gl_config.alpha_size = 0; | |
244 _this->gl_config.buffer_size = 0; | |
245 _this->gl_config.depth_size = 16; | |
246 _this->gl_config.stencil_size = 0; | |
247 _this->gl_config.double_buffer = 1; | |
248 _this->gl_config.accum_red_size = 0; | |
249 _this->gl_config.accum_green_size = 0; | |
250 _this->gl_config.accum_blue_size = 0; | |
251 _this->gl_config.accum_alpha_size = 0; | |
252 _this->gl_config.stereo = 0; | |
253 _this->gl_config.multisamplebuffers = 0; | |
254 _this->gl_config.multisamplesamples = 0; | |
255 _this->gl_config.retained_backing = 1; | |
256 _this->gl_config.accelerated = -1; /* not known, don't set */ | |
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
|
257 |
2753 | 258 /* Initialize the video subsystem */ |
259 if (_this->VideoInit(_this) < 0) { | |
260 SDL_VideoQuit(); | |
261 return -1; | |
262 } | |
263 /* Make sure some displays were added */ | |
264 if (_this->num_displays == 0) { | |
265 SDL_SetError("The video driver did not add any displays"); | |
266 SDL_VideoQuit(); | |
267 return (-1); | |
268 } | |
269 /* The software renderer is always available */ | |
270 for (i = 0; i < _this->num_displays; ++i) { | |
2744
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
271 #if SDL_VIDEO_RENDER_OGL |
2753 | 272 SDL_AddRenderDriver(i, &GL_RenderDriver); |
2744
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
273 #endif |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
274 |
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
275 #if SDL_VIDEO_RENDER_OGL_ES |
2753 | 276 SDL_AddRenderDriver(i, &GL_ES_RenderDriver); |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
277 #endif |
2753 | 278 if (_this->displays[i].num_render_drivers > 0) { |
279 SDL_AddRenderDriver(i, &SW_RenderDriver); | |
280 } | |
281 } | |
0 | 282 |
2753 | 283 /* We're ready to go! */ |
284 return 0; | |
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
|
285 } |
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
|
286 |
2753 | 287 const char * |
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
|
288 SDL_GetCurrentVideoDriver() |
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
|
289 { |
2753 | 290 if (!_this) { |
291 SDL_UninitializedVideo(); | |
292 return NULL; | |
293 } | |
294 return _this->name; | |
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
|
295 } |
0 | 296 |
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
|
297 SDL_VideoDevice * |
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
|
298 SDL_GetVideoDevice() |
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
|
299 { |
2753 | 300 return _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
|
301 } |
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
|
302 |
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
|
303 int |
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
|
304 SDL_AddBasicVideoDisplay(const SDL_DisplayMode * desktop_mode) |
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
|
305 { |
2753 | 306 SDL_VideoDisplay display; |
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
|
307 |
2753 | 308 SDL_zero(display); |
309 if (desktop_mode) { | |
310 display.desktop_mode = *desktop_mode; | |
311 } | |
312 display.current_mode = display.desktop_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
|
313 |
2753 | 314 return SDL_AddVideoDisplay(&display); |
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
|
315 } |
0 | 316 |
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
|
317 int |
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
|
318 SDL_AddVideoDisplay(const SDL_VideoDisplay * display) |
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
|
319 { |
2753 | 320 SDL_VideoDisplay *displays; |
321 int index = -1; | |
0 | 322 |
2753 | 323 displays = |
324 SDL_realloc(_this->displays, | |
325 (_this->num_displays + 1) * sizeof(*displays)); | |
326 if (displays) { | |
327 index = _this->num_displays++; | |
328 displays[index] = *display; | |
329 displays[index].device = _this; | |
330 _this->displays = displays; | |
331 } else { | |
332 SDL_OutOfMemory(); | |
333 } | |
334 return index; | |
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
|
335 } |
0 | 336 |
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
|
337 int |
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
|
338 SDL_GetNumVideoDisplays(void) |
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
|
339 { |
2753 | 340 if (!_this) { |
341 SDL_UninitializedVideo(); | |
342 return 0; | |
343 } | |
344 return _this->num_displays; | |
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
|
345 } |
0 | 346 |
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
|
347 int |
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
|
348 SDL_SelectVideoDisplay(int index) |
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
|
349 { |
2753 | 350 if (!_this) { |
351 SDL_UninitializedVideo(); | |
352 return (-1); | |
353 } | |
354 if (index < 0 || index >= _this->num_displays) { | |
355 SDL_SetError("index must be in the range 0 - %d", | |
356 _this->num_displays - 1); | |
357 return -1; | |
358 } | |
359 _this->current_display = index; | |
360 return 0; | |
1963
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
361 } |
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
362 |
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
363 int |
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
364 SDL_GetCurrentVideoDisplay(void) |
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
365 { |
2753 | 366 if (!_this) { |
367 SDL_UninitializedVideo(); | |
368 return (-1); | |
369 } | |
370 return _this->current_display; | |
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
|
371 } |
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
|
372 |
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
|
373 SDL_bool |
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
|
374 SDL_AddDisplayMode(int displayIndex, const SDL_DisplayMode * mode) |
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
|
375 { |
2753 | 376 SDL_VideoDisplay *display = &_this->displays[displayIndex]; |
377 SDL_DisplayMode *modes; | |
378 int i, nmodes; | |
910
4ab6d1fd028f
Date: Sat, 26 Jun 2004 14:58:42 +0300
Sam Lantinga <slouken@libsdl.org>
parents:
883
diff
changeset
|
379 |
2753 | 380 /* Make sure we don't already have the mode in the list */ |
381 modes = display->display_modes; | |
382 nmodes = display->num_display_modes; | |
383 for (i = nmodes; i--;) { | |
384 if (SDL_memcmp(mode, &modes[i], sizeof(*mode)) == 0) { | |
385 return SDL_FALSE; | |
386 } | |
387 } | |
910
4ab6d1fd028f
Date: Sat, 26 Jun 2004 14:58:42 +0300
Sam Lantinga <slouken@libsdl.org>
parents:
883
diff
changeset
|
388 |
2753 | 389 /* Go ahead and add the new mode */ |
390 if (nmodes == display->max_display_modes) { | |
391 modes = | |
392 SDL_realloc(modes, | |
393 (display->max_display_modes + 32) * sizeof(*modes)); | |
394 if (!modes) { | |
395 return SDL_FALSE; | |
396 } | |
397 display->display_modes = modes; | |
398 display->max_display_modes += 32; | |
399 } | |
400 modes[nmodes] = *mode; | |
401 display->num_display_modes++; | |
650
fe445b59d307
We need to lookup the address of glGetString before calling GL_MakeCurrent(),
Ryan C. Gordon <icculus@icculus.org>
parents:
630
diff
changeset
|
402 |
2753 | 403 return SDL_TRUE; |
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
|
404 } |
0 | 405 |
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
|
406 int |
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
|
407 SDL_GetNumDisplayModes() |
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
|
408 { |
2753 | 409 if (_this) { |
410 SDL_VideoDisplay *display = &SDL_CurrentDisplay; | |
411 if (!display->num_display_modes && _this->GetDisplayModes) { | |
412 _this->GetDisplayModes(_this); | |
413 SDL_qsort(display->display_modes, display->num_display_modes, | |
414 sizeof(SDL_DisplayMode), cmpmodes); | |
415 } | |
416 return display->num_display_modes; | |
417 } | |
418 return 0; | |
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
|
419 } |
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
|
420 |
1967
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
421 int |
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
422 SDL_GetDisplayMode(int index, SDL_DisplayMode * 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
|
423 { |
2753 | 424 if (index < 0 || index >= SDL_GetNumDisplayModes()) { |
425 SDL_SetError("index must be in the range of 0 - %d", | |
426 SDL_GetNumDisplayModes() - 1); | |
427 return -1; | |
428 } | |
429 if (mode) { | |
430 *mode = SDL_CurrentDisplay.display_modes[index]; | |
431 } | |
432 return 0; | |
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
|
433 } |
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
|
434 |
1967
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
435 int |
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
436 SDL_GetDesktopDisplayMode(SDL_DisplayMode * 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
|
437 { |
2753 | 438 if (!_this) { |
439 SDL_UninitializedVideo(); | |
440 return -1; | |
441 } | |
442 if (mode) { | |
443 *mode = SDL_CurrentDisplay.desktop_mode; | |
444 } | |
445 return 0; | |
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
|
446 } |
0 | 447 |
1967
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
448 int |
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
449 SDL_GetCurrentDisplayMode(SDL_DisplayMode * 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
|
450 { |
2753 | 451 if (!_this) { |
452 SDL_UninitializedVideo(); | |
453 return -1; | |
454 } | |
455 if (mode) { | |
456 *mode = SDL_CurrentDisplay.current_mode; | |
457 } | |
458 return 0; | |
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
|
459 } |
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
|
460 |
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
|
461 SDL_DisplayMode * |
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
|
462 SDL_GetClosestDisplayMode(const SDL_DisplayMode * mode, |
2753 | 463 SDL_DisplayMode * closest) |
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
|
464 { |
2753 | 465 Uint32 target_format; |
466 int target_refresh_rate; | |
467 int i; | |
468 SDL_DisplayMode *current, *match; | |
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
|
469 |
2753 | 470 if (!_this || !mode || !closest) { |
471 return NULL; | |
472 } | |
473 /* Default to the desktop format */ | |
474 if (mode->format) { | |
475 target_format = mode->format; | |
476 } else { | |
477 target_format = SDL_CurrentDisplay.desktop_mode.format; | |
478 } | |
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
|
479 |
2753 | 480 /* Default to the desktop refresh rate */ |
481 if (mode->refresh_rate) { | |
482 target_refresh_rate = mode->refresh_rate; | |
483 } else { | |
484 target_refresh_rate = SDL_CurrentDisplay.desktop_mode.refresh_rate; | |
485 } | |
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
|
486 |
2753 | 487 match = NULL; |
488 for (i = 0; i < SDL_GetNumDisplayModes(); ++i) { | |
489 current = &SDL_CurrentDisplay.display_modes[i]; | |
0 | 490 |
2789
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
491 if (current->w && (current->w < mode->w)) { |
2753 | 492 /* Out of sorted modes large enough here */ |
493 break; | |
494 } | |
2789
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
495 if (current->h && (current->h < mode->h)) { |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
496 if (current->w && (current->w == mode->w)) { |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
497 /* Out of sorted modes large enough here */ |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
498 break; |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
499 } |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
500 /* Wider, but not tall enough, due to a different |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
501 aspect ratio. This mode must be skipped, but closer |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
502 modes may still follow. */ |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
503 continue; |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
504 } |
2753 | 505 if (!match || current->w < match->w || current->h < match->h) { |
506 match = current; | |
507 continue; | |
508 } | |
509 if (current->format != match->format) { | |
510 /* Sorted highest depth to lowest */ | |
511 if (current->format == target_format || | |
512 (SDL_BITSPERPIXEL(current->format) >= | |
513 SDL_BITSPERPIXEL(target_format) | |
514 && SDL_PIXELTYPE(current->format) == | |
515 SDL_PIXELTYPE(target_format))) { | |
516 match = current; | |
517 } | |
518 continue; | |
519 } | |
520 if (current->refresh_rate != match->refresh_rate) { | |
521 /* Sorted highest refresh to lowest */ | |
522 if (current->refresh_rate >= target_refresh_rate) { | |
523 match = current; | |
524 } | |
525 } | |
526 } | |
527 if (match) { | |
528 if (match->format) { | |
529 closest->format = match->format; | |
530 } else { | |
531 closest->format = mode->format; | |
532 } | |
533 if (match->w && match->h) { | |
534 closest->w = match->w; | |
535 closest->h = match->h; | |
536 } else { | |
537 closest->w = mode->w; | |
538 closest->h = mode->h; | |
539 } | |
540 if (match->refresh_rate) { | |
541 closest->refresh_rate = match->refresh_rate; | |
542 } else { | |
543 closest->refresh_rate = mode->refresh_rate; | |
544 } | |
545 closest->driverdata = match->driverdata; | |
0 | 546 |
2753 | 547 /* |
548 * Pick some reasonable defaults if the app and driver don't | |
549 * care | |
550 */ | |
551 if (!closest->format) { | |
552 closest->format = SDL_PIXELFORMAT_RGB888; | |
553 } | |
554 if (!closest->w) { | |
555 closest->w = 640; | |
556 } | |
557 if (!closest->h) { | |
558 closest->h = 480; | |
559 } | |
560 return closest; | |
561 } | |
562 return NULL; | |
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
|
563 } |
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
|
564 |
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
|
565 int |
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
|
566 SDL_SetDisplayMode(const SDL_DisplayMode * mode) |
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
|
567 { |
2753 | 568 SDL_VideoDisplay *display; |
569 SDL_DisplayMode display_mode; | |
570 SDL_DisplayMode current_mode; | |
571 int i, ncolors; | |
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
|
572 |
2753 | 573 if (!_this) { |
574 SDL_UninitializedVideo(); | |
575 return -1; | |
576 } | |
577 display = &SDL_CurrentDisplay; | |
578 if (!mode) { | |
579 mode = &display->desktop_mode; | |
580 } | |
581 display_mode = *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
|
582 |
2753 | 583 /* Default to the current mode */ |
584 if (!display_mode.format) { | |
585 display_mode.format = display->current_mode.format; | |
586 } | |
587 if (!display_mode.w) { | |
588 display_mode.w = display->current_mode.w; | |
589 } | |
590 if (!display_mode.h) { | |
591 display_mode.h = display->current_mode.h; | |
592 } | |
593 if (!display_mode.refresh_rate) { | |
594 display_mode.refresh_rate = display->current_mode.refresh_rate; | |
595 } | |
596 /* Get a good video mode, the closest one possible */ | |
597 if (!SDL_GetClosestDisplayMode(&display_mode, &display_mode)) { | |
598 SDL_SetError("No video mode large enough for %dx%d", | |
599 display_mode.w, display_mode.h); | |
600 return -1; | |
601 } | |
602 /* See if there's anything left to do */ | |
603 SDL_GetCurrentDisplayMode(¤t_mode); | |
604 if (SDL_memcmp(&display_mode, ¤t_mode, sizeof(display_mode)) == 0) { | |
605 return 0; | |
606 } | |
607 /* Actually change the display mode */ | |
608 if (_this->SetDisplayMode(_this, &display_mode) < 0) { | |
609 return -1; | |
610 } | |
611 display->current_mode = display_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
|
612 |
2753 | 613 /* Set up a palette, if necessary */ |
614 if (SDL_ISPIXELFORMAT_INDEXED(display_mode.format)) { | |
615 ncolors = (1 << SDL_BITSPERPIXEL(display_mode.format)); | |
616 } else { | |
617 ncolors = 0; | |
618 } | |
619 if ((!ncolors && display->palette) || (ncolors && !display->palette) | |
620 || (ncolors && ncolors != display->palette->ncolors)) { | |
621 if (display->palette) { | |
622 SDL_FreePalette(display->palette); | |
623 display->palette = NULL; | |
624 } | |
625 if (ncolors) { | |
626 display->palette = SDL_AllocPalette(ncolors); | |
627 if (!display->palette) { | |
628 return -1; | |
629 } | |
630 SDL_DitherColors(display->palette->colors, | |
631 SDL_BITSPERPIXEL(display_mode.format)); | |
632 } | |
633 } | |
634 /* Move any fullscreen windows into position */ | |
635 for (i = 0; i < display->num_windows; ++i) { | |
636 SDL_Window *window = &display->windows[i]; | |
637 if (FULLSCREEN_VISIBLE(window)) { | |
638 SDL_SetWindowPosition(window->id, SDL_WINDOWPOS_CENTERED, | |
639 SDL_WINDOWPOS_CENTERED); | |
640 } | |
641 } | |
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
|
642 |
2753 | 643 return 0; |
0 | 644 } |
645 | |
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
|
646 int |
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
|
647 SDL_SetFullscreenDisplayMode(const SDL_DisplayMode * mode) |
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
|
648 { |
2753 | 649 SDL_VideoDisplay *display; |
650 SDL_DisplayMode fullscreen_mode; | |
651 int i; | |
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
|
652 |
2753 | 653 if (!_this) { |
654 SDL_UninitializedVideo(); | |
655 return -1; | |
656 } | |
657 display = &SDL_CurrentDisplay; | |
658 if (!mode) { | |
659 mode = &display->desktop_mode; | |
660 } | |
2869
2fe507a2ef7d
Whoops, the X11 driver doesn't support fullscreen modes (yet)
Sam Lantinga <slouken@libsdl.org>
parents:
2860
diff
changeset
|
661 if (!SDL_GetClosestDisplayMode(mode, &fullscreen_mode)) { |
2fe507a2ef7d
Whoops, the X11 driver doesn't support fullscreen modes (yet)
Sam Lantinga <slouken@libsdl.org>
parents:
2860
diff
changeset
|
662 SDL_SetError("Couldn't find display mode match"); |
2fe507a2ef7d
Whoops, the X11 driver doesn't support fullscreen modes (yet)
Sam Lantinga <slouken@libsdl.org>
parents:
2860
diff
changeset
|
663 return -1; |
2fe507a2ef7d
Whoops, the X11 driver doesn't support fullscreen modes (yet)
Sam Lantinga <slouken@libsdl.org>
parents:
2860
diff
changeset
|
664 } |
2753 | 665 if (SDL_memcmp |
666 (&fullscreen_mode, &display->fullscreen_mode, | |
667 sizeof(fullscreen_mode)) == 0) { | |
668 /* Nothing to do... */ | |
669 return 0; | |
670 } | |
671 display->fullscreen_mode = fullscreen_mode; | |
1970
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1969
diff
changeset
|
672 |
2753 | 673 /* Actually set the mode if we have a fullscreen window visible */ |
674 for (i = 0; i < display->num_windows; ++i) { | |
675 SDL_Window *window = &display->windows[i]; | |
676 if (FULLSCREEN_VISIBLE(window)) { | |
677 if (SDL_SetDisplayMode(&display->fullscreen_mode) < 0) { | |
678 return -1; | |
679 } | |
680 } | |
681 if (window->flags & SDL_WINDOW_FULLSCREEN) { | |
682 SDL_OnWindowResized(window); | |
683 } | |
684 } | |
685 return 0; | |
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
|
686 } |
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
|
687 |
1967
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
688 int |
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
689 SDL_GetFullscreenDisplayMode(SDL_DisplayMode * 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
|
690 { |
2753 | 691 if (!_this) { |
692 SDL_UninitializedVideo(); | |
693 return -1; | |
694 } | |
695 if (mode) { | |
696 *mode = SDL_CurrentDisplay.fullscreen_mode; | |
697 } | |
698 return 0; | |
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
|
699 } |
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
|
700 |
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
|
701 int |
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
|
702 SDL_SetDisplayPalette(const SDL_Color * colors, int firstcolor, int ncolors) |
0 | 703 { |
2753 | 704 SDL_Palette *palette; |
705 int status = 0; | |
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
|
706 |
2753 | 707 if (!_this) { |
708 SDL_UninitializedVideo(); | |
709 return -1; | |
710 } | |
711 palette = SDL_CurrentDisplay.palette; | |
712 if (!palette) { | |
713 SDL_SetError("Display mode does not have a palette"); | |
714 return -1; | |
715 } | |
716 status = SDL_SetPaletteColors(palette, colors, firstcolor, ncolors); | |
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
|
717 |
2753 | 718 if (_this->SetDisplayPalette) { |
719 if (_this->SetDisplayPalette(_this, palette) < 0) { | |
720 status = -1; | |
721 } | |
722 } | |
723 return status; | |
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
|
724 } |
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
|
725 |
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
|
726 int |
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
|
727 SDL_GetDisplayPalette(SDL_Color * colors, int firstcolor, int ncolors) |
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
|
728 { |
2753 | 729 SDL_Palette *palette; |
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
|
730 |
2753 | 731 if (!_this) { |
732 SDL_UninitializedVideo(); | |
733 return -1; | |
734 } | |
735 palette = SDL_CurrentDisplay.palette; | |
736 if (!palette->ncolors) { | |
737 SDL_SetError("Display mode does not have a palette"); | |
738 return -1; | |
739 } | |
740 if (firstcolor < 0 || (firstcolor + ncolors) > palette->ncolors) { | |
741 SDL_SetError("Palette indices are out of range"); | |
742 return -1; | |
743 } | |
744 SDL_memcpy(colors, &palette->colors[firstcolor], | |
745 ncolors * sizeof(*colors)); | |
746 return 0; | |
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
|
747 } |
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
|
748 |
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
|
749 SDL_WindowID |
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
|
750 SDL_CreateWindow(const char *title, int x, int y, int w, int h, Uint32 flags) |
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
|
751 { |
2753 | 752 const Uint32 allowed_flags = (SDL_WINDOW_FULLSCREEN | |
753 SDL_WINDOW_OPENGL | | |
754 SDL_WINDOW_BORDERLESS | | |
755 SDL_WINDOW_RESIZABLE); | |
756 SDL_VideoDisplay *display; | |
757 SDL_Window window; | |
758 int num_windows; | |
759 SDL_Window *windows; | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
760 |
2753 | 761 if (!_this) { |
762 SDL_UninitializedVideo(); | |
763 return 0; | |
764 } | |
765 if ((flags & SDL_WINDOW_OPENGL) && !_this->GL_CreateContext) { | |
766 SDL_SetError("No OpenGL support in video driver"); | |
767 return 0; | |
768 } | |
769 /* Fullscreen windows don't have any window decorations */ | |
770 if (flags & SDL_WINDOW_FULLSCREEN) { | |
771 flags |= SDL_WINDOW_BORDERLESS; | |
772 flags &= ~SDL_WINDOW_RESIZABLE; | |
773 } | |
774 SDL_zero(window); | |
775 window.id = _this->next_object_id++; | |
776 window.x = x; | |
777 window.y = y; | |
778 window.w = w; | |
779 window.h = h; | |
780 window.flags = (flags & allowed_flags); | |
781 window.display = _this->current_display; | |
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
|
782 |
2753 | 783 if (_this->CreateWindow && _this->CreateWindow(_this, &window) < 0) { |
784 return 0; | |
785 } | |
786 display = &SDL_CurrentDisplay; | |
787 num_windows = display->num_windows; | |
788 windows = | |
789 SDL_realloc(display->windows, (num_windows + 1) * sizeof(*windows)); | |
790 if (!windows) { | |
791 if (_this->DestroyWindow) { | |
792 _this->DestroyWindow(_this, &window); | |
793 } | |
794 return 0; | |
795 } | |
796 windows[num_windows] = window; | |
797 display->windows = windows; | |
798 display->num_windows++; | |
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
|
799 |
2753 | 800 if (title) { |
801 SDL_SetWindowTitle(window.id, title); | |
802 } | |
803 if (flags & SDL_WINDOW_MAXIMIZED) { | |
804 SDL_MaximizeWindow(window.id); | |
805 } | |
806 if (flags & SDL_WINDOW_MINIMIZED) { | |
807 SDL_MinimizeWindow(window.id); | |
808 } | |
809 if (flags & SDL_WINDOW_SHOWN) { | |
810 SDL_ShowWindow(window.id); | |
811 } | |
812 if (flags & SDL_WINDOW_INPUT_GRABBED) { | |
813 SDL_SetWindowGrab(window.id, 1); | |
814 } | |
815 return window.id; | |
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
|
816 } |
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
|
817 |
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
|
818 SDL_WindowID |
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
|
819 SDL_CreateWindowFrom(const void *data) |
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
|
820 { |
2753 | 821 SDL_VideoDisplay *display; |
822 SDL_Window window; | |
823 int num_windows; | |
824 SDL_Window *windows; | |
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
|
825 |
2753 | 826 if (!_this) { |
827 SDL_UninitializedVideo(); | |
828 return (0); | |
829 } | |
830 SDL_zero(window); | |
831 window.id = _this->next_object_id++; | |
832 window.display = _this->current_display; | |
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
|
833 |
2753 | 834 if (!_this->CreateWindowFrom || |
835 _this->CreateWindowFrom(_this, &window, data) < 0) { | |
836 return 0; | |
837 } | |
838 display = &SDL_CurrentDisplay; | |
839 num_windows = display->num_windows; | |
840 windows = | |
841 SDL_realloc(display->windows, (num_windows + 1) * sizeof(*windows)); | |
842 if (!windows) { | |
843 if (_this->DestroyWindow) { | |
844 _this->DestroyWindow(_this, &window); | |
845 } | |
846 if (window.title) { | |
847 SDL_free(window.title); | |
848 } | |
849 return 0; | |
850 } | |
851 windows[num_windows] = window; | |
852 display->windows = windows; | |
853 display->num_windows++; | |
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
|
854 |
2753 | 855 return window.id; |
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
|
856 } |
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
|
857 |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
858 int |
1928
861bc36f0ab3
Fixed crash with multiple windows
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
859 SDL_RecreateWindow(SDL_Window * window, Uint32 flags) |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
860 { |
2753 | 861 char *title = window->title; |
1956
ba0d62354872
Simplified driver window creation code.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
862 |
2753 | 863 if ((flags & SDL_WINDOW_OPENGL) && !_this->GL_CreateContext) { |
864 SDL_SetError("No OpenGL support in video driver"); | |
865 return -1; | |
866 } | |
867 if (_this->DestroyWindow) { | |
868 _this->DestroyWindow(_this, window); | |
869 } | |
870 window->title = NULL; | |
871 window->flags = | |
872 (flags & | |
873 ~(SDL_WINDOW_MAXIMIZED | SDL_WINDOW_MINIMIZED | SDL_WINDOW_SHOWN | | |
874 SDL_WINDOW_INPUT_GRABBED)); | |
1956
ba0d62354872
Simplified driver window creation code.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
875 |
2753 | 876 if (_this->CreateWindow && _this->CreateWindow(_this, window) < 0) { |
877 return -1; | |
878 } | |
879 if (title) { | |
880 SDL_SetWindowTitle(window->id, title); | |
881 SDL_free(title); | |
882 } | |
883 if (flags & SDL_WINDOW_MAXIMIZED) { | |
884 SDL_MaximizeWindow(window->id); | |
885 } | |
886 if (flags & SDL_WINDOW_MINIMIZED) { | |
887 SDL_MinimizeWindow(window->id); | |
888 } | |
889 if (flags & SDL_WINDOW_SHOWN) { | |
890 SDL_ShowWindow(window->id); | |
891 } | |
892 if (flags & SDL_WINDOW_INPUT_GRABBED) { | |
893 SDL_SetWindowGrab(window->id, 1); | |
894 } | |
895 return 0; | |
1924
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
896 } |
69217fdd2c0a
If the OpenGL renderer is selected for a non-OpenGL window, recreate the window with OpenGL enabled.
Sam Lantinga <slouken@libsdl.org>
parents:
1923
diff
changeset
|
897 |
2753 | 898 SDL_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
|
899 SDL_GetWindowFromID(SDL_WindowID windowID) |
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
|
900 { |
2753 | 901 int i, j; |
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
|
902 |
2753 | 903 if (!_this) { |
904 SDL_UninitializedVideo(); | |
905 return NULL; | |
906 } | |
907 for (i = 0; i < _this->num_displays; ++i) { | |
908 SDL_VideoDisplay *display = &_this->displays[i]; | |
909 for (j = 0; j < display->num_windows; ++j) { | |
910 SDL_Window *window = &display->windows[j]; | |
911 if (window->id == windowID) { | |
912 return window; | |
913 } | |
914 } | |
915 } | |
916 return NULL; | |
0 | 917 } |
918 | |
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
|
919 SDL_VideoDisplay * |
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
|
920 SDL_GetDisplayFromWindow(SDL_Window * window) |
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
|
921 { |
2753 | 922 if (!_this) { |
923 SDL_UninitializedVideo(); | |
924 return NULL; | |
925 } | |
926 if (!window) { | |
927 return NULL; | |
928 } | |
929 return &_this->displays[window->display]; | |
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
|
930 } |
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
|
931 |
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
|
932 Uint32 |
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
|
933 SDL_GetWindowFlags(SDL_WindowID windowID) |
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
|
934 { |
2753 | 935 SDL_Window *window = SDL_GetWindowFromID(windowID); |
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
|
936 |
2753 | 937 if (!window) { |
938 return 0; | |
939 } | |
940 return window->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
|
941 } |
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
|
942 |
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
|
943 void |
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
|
944 SDL_SetWindowTitle(SDL_WindowID windowID, const char *title) |
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
|
945 { |
2753 | 946 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1956
ba0d62354872
Simplified driver window creation code.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
947 |
2753 | 948 if (!window || title == window->title) { |
949 return; | |
950 } | |
951 if (window->title) { | |
952 SDL_free(window->title); | |
953 } | |
954 if (title) { | |
955 window->title = SDL_strdup(title); | |
956 } else { | |
957 window->title = NULL; | |
958 } | |
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
|
959 |
2753 | 960 if (_this->SetWindowTitle) { |
961 _this->SetWindowTitle(_this, window); | |
962 } | |
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
|
963 } |
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
|
964 |
2753 | 965 const char * |
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
|
966 SDL_GetWindowTitle(SDL_WindowID windowID) |
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
|
967 { |
2753 | 968 SDL_Window *window = SDL_GetWindowFromID(windowID); |
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
|
969 |
2753 | 970 if (!window) { |
971 return NULL; | |
972 } | |
973 return window->title; | |
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
|
974 } |
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
|
975 |
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
|
976 void |
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
|
977 SDL_SetWindowData(SDL_WindowID windowID, void *userdata) |
0 | 978 { |
2753 | 979 SDL_Window *window = SDL_GetWindowFromID(windowID); |
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
|
980 |
2753 | 981 if (!window) { |
982 return; | |
983 } | |
984 window->userdata = userdata; | |
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
|
985 } |
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
|
986 |
2753 | 987 void * |
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
|
988 SDL_GetWindowData(SDL_WindowID windowID) |
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
|
989 { |
2753 | 990 SDL_Window *window = SDL_GetWindowFromID(windowID); |
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
|
991 |
2753 | 992 if (!window) { |
993 return NULL; | |
994 } | |
995 return window->userdata; | |
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
|
996 } |
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
|
997 |
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
|
998 void |
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
|
999 SDL_SetWindowPosition(SDL_WindowID windowID, int x, int y) |
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
|
1000 { |
2753 | 1001 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1002 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); | |
0 | 1003 |
2753 | 1004 if (!window) { |
1005 return; | |
1006 } | |
1007 if (x == SDL_WINDOWPOS_CENTERED) { | |
1008 window->x = (display->current_mode.w - window->w) / 2; | |
1009 } else if (x != SDL_WINDOWPOS_UNDEFINED) { | |
1010 window->x = x; | |
1011 } | |
1012 if (y == SDL_WINDOWPOS_CENTERED) { | |
1013 window->y = (display->current_mode.h - window->h) / 2; | |
1014 } else if (y != SDL_WINDOWPOS_UNDEFINED) { | |
1015 window->y = y; | |
1016 } | |
1017 if (_this->SetWindowPosition) { | |
1018 _this->SetWindowPosition(_this, window); | |
1019 } | |
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
|
1020 } |
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
|
1021 |
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
|
1022 void |
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
|
1023 SDL_GetWindowPosition(SDL_WindowID windowID, int *x, int *y) |
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
|
1024 { |
2753 | 1025 SDL_Window *window = SDL_GetWindowFromID(windowID); |
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
|
1026 |
2753 | 1027 if (!window) { |
1028 return; | |
1029 } | |
1030 if (x) { | |
1031 *x = window->x; | |
1032 } | |
1033 if (y) { | |
1034 *y = window->y; | |
1035 } | |
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
|
1036 } |
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
|
1037 |
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
|
1038 void |
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
|
1039 SDL_SetWindowSize(SDL_WindowID windowID, int w, int h) |
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
|
1040 { |
2753 | 1041 SDL_Window *window = SDL_GetWindowFromID(windowID); |
0 | 1042 |
2753 | 1043 if (!window) { |
1044 return; | |
1045 } | |
1046 window->w = w; | |
1047 window->h = 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
|
1048 |
2753 | 1049 if (_this->SetWindowSize) { |
1050 _this->SetWindowSize(_this, window); | |
1051 } | |
2849
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1052 SDL_OnWindowResized(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
|
1053 } |
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
|
1054 |
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
|
1055 void |
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
|
1056 SDL_GetWindowSize(SDL_WindowID windowID, int *w, int *h) |
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
|
1057 { |
2753 | 1058 SDL_Window *window = SDL_GetWindowFromID(windowID); |
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
|
1059 |
2860
6ce28e5287e9
Date: Sun, 07 Dec 2008 13:35:23 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
1060 if (window) { |
2849
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1061 if (w) { |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1062 *w = window->w; |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1063 } |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1064 if (h) { |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1065 *h = window->h; |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1066 } |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1067 } else { |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1068 if (w) { |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1069 *w = 0; |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1070 } |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1071 if (h) { |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1072 *h = 0; |
523b10db69f8
There's no reason to add extra code to notify the mice of window size changes.
Sam Lantinga <slouken@libsdl.org>
parents:
2814
diff
changeset
|
1073 } |
2753 | 1074 } |
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
|
1075 } |
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
|
1076 |
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
|
1077 void |
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
|
1078 SDL_ShowWindow(SDL_WindowID windowID) |
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
|
1079 { |
2753 | 1080 SDL_Window *window = SDL_GetWindowFromID(windowID); |
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
|
1081 |
2753 | 1082 if (!window || (window->flags & SDL_WINDOW_SHOWN)) { |
1083 return; | |
1084 } | |
1085 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_SHOWN, 0, 0); | |
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
|
1086 |
2753 | 1087 if (_this->ShowWindow) { |
1088 _this->ShowWindow(_this, window); | |
1089 } | |
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
|
1090 } |
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
|
1091 |
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
|
1092 void |
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
|
1093 SDL_HideWindow(SDL_WindowID windowID) |
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
|
1094 { |
2753 | 1095 SDL_Window *window = SDL_GetWindowFromID(windowID); |
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
|
1096 |
2753 | 1097 if (!window || !(window->flags & SDL_WINDOW_SHOWN)) { |
1098 return; | |
1099 } | |
1100 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_HIDDEN, 0, 0); | |
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
|
1101 |
2753 | 1102 if (_this->HideWindow) { |
1103 _this->HideWindow(_this, window); | |
1104 } | |
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
|
1105 } |
0 | 1106 |
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
|
1107 void |
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
|
1108 SDL_RaiseWindow(SDL_WindowID windowID) |
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
|
1109 { |
2753 | 1110 SDL_Window *window = SDL_GetWindowFromID(windowID); |
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
|
1111 |
2753 | 1112 if (!window || !(window->flags & SDL_WINDOW_SHOWN)) { |
1113 return; | |
1114 } | |
1115 if (_this->RaiseWindow) { | |
1116 _this->RaiseWindow(_this, window); | |
1117 } | |
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
|
1118 } |
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
|
1119 |
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
|
1120 void |
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
|
1121 SDL_MaximizeWindow(SDL_WindowID windowID) |
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
|
1122 { |
2753 | 1123 SDL_Window *window = SDL_GetWindowFromID(windowID); |
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
|
1124 |
2753 | 1125 if (!window || (window->flags & SDL_WINDOW_MAXIMIZED)) { |
1126 return; | |
1127 } | |
1128 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_MAXIMIZED, 0, 0); | |
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
|
1129 |
2753 | 1130 if (_this->MaximizeWindow) { |
1131 _this->MaximizeWindow(_this, window); | |
1132 } | |
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
|
1133 } |
0 | 1134 |
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
|
1135 void |
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
|
1136 SDL_MinimizeWindow(SDL_WindowID windowID) |
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
|
1137 { |
2753 | 1138 SDL_Window *window = SDL_GetWindowFromID(windowID); |
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
|
1139 |
2753 | 1140 if (!window || (window->flags & SDL_WINDOW_MINIMIZED)) { |
1141 return; | |
1142 } | |
1143 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_MINIMIZED, 0, 0); | |
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
|
1144 |
2753 | 1145 if (_this->MinimizeWindow) { |
1146 _this->MinimizeWindow(_this, window); | |
1147 } | |
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
|
1148 } |
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
|
1149 |
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
|
1150 void |
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
|
1151 SDL_RestoreWindow(SDL_WindowID windowID) |
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
|
1152 { |
2753 | 1153 SDL_Window *window = SDL_GetWindowFromID(windowID); |
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
|
1154 |
2753 | 1155 if (!window |
1156 || (window->flags & (SDL_WINDOW_MAXIMIZED | SDL_WINDOW_MINIMIZED))) { | |
1157 return; | |
1158 } | |
1159 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_RESTORED, 0, 0); | |
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
|
1160 |
2753 | 1161 if (_this->RestoreWindow) { |
1162 _this->RestoreWindow(_this, window); | |
1163 } | |
0 | 1164 } |
1165 | |
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
|
1166 int |
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
|
1167 SDL_SetWindowFullscreen(SDL_WindowID windowID, int fullscreen) |
0 | 1168 { |
2753 | 1169 SDL_Window *window = SDL_GetWindowFromID(windowID); |
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
|
1170 |
2753 | 1171 if (!window) { |
1172 return -1; | |
1173 } | |
1174 if (fullscreen) { | |
1175 fullscreen = SDL_WINDOW_FULLSCREEN; | |
1176 } | |
1177 if ((window->flags & SDL_WINDOW_FULLSCREEN) == fullscreen) { | |
1178 return 0; | |
1179 } | |
1180 if (fullscreen) { | |
1181 window->flags |= SDL_WINDOW_FULLSCREEN; | |
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
|
1182 |
2753 | 1183 if (FULLSCREEN_VISIBLE(window)) { |
1184 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(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
|
1185 |
2753 | 1186 /* Hide any other fullscreen windows */ |
1187 int i; | |
1188 for (i = 0; i < display->num_windows; ++i) { | |
1189 SDL_Window *other = &display->windows[i]; | |
1190 if (other->id != windowID && FULLSCREEN_VISIBLE(other)) { | |
1191 SDL_MinimizeWindow(other->id); | |
1192 } | |
1193 } | |
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
|
1194 |
2753 | 1195 SDL_SetDisplayMode(&display->fullscreen_mode); |
1196 } | |
1197 } else { | |
1198 window->flags &= ~SDL_WINDOW_FULLSCREEN; | |
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
|
1199 |
2753 | 1200 if (FULLSCREEN_VISIBLE(window)) { |
1201 SDL_SetDisplayMode(NULL); | |
1202 } | |
1203 } | |
1204 return 0; | |
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
|
1205 } |
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
|
1206 |
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
|
1207 void |
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
|
1208 SDL_SetWindowGrab(SDL_WindowID windowID, int mode) |
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
|
1209 { |
2753 | 1210 SDL_Window *window = SDL_GetWindowFromID(windowID); |
0 | 1211 |
2753 | 1212 if (!window || (!!mode == !!(window->flags & SDL_WINDOW_INPUT_GRABBED))) { |
1213 return; | |
1214 } | |
1215 if (mode) { | |
1216 window->flags |= SDL_WINDOW_INPUT_GRABBED; | |
1217 } else { | |
1218 window->flags &= ~SDL_WINDOW_INPUT_GRABBED; | |
1219 } | |
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
|
1220 |
2753 | 1221 if ((window->flags & SDL_WINDOW_INPUT_FOCUS) && _this->SetWindowGrab) { |
1222 _this->SetWindowGrab(_this, window); | |
1223 } | |
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
|
1224 } |
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
|
1225 |
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
|
1226 int |
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
|
1227 SDL_GetWindowGrab(SDL_WindowID windowID) |
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
|
1228 { |
2753 | 1229 SDL_Window *window = SDL_GetWindowFromID(windowID); |
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
|
1230 |
2753 | 1231 if (!window) { |
1232 return 0; | |
1233 } | |
1234 return ((window->flags & SDL_WINDOW_INPUT_GRABBED) != 0); | |
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
|
1235 } |
0 | 1236 |
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
|
1237 void |
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
|
1238 SDL_OnWindowShown(SDL_Window * window) |
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
|
1239 { |
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
|
1240 } |
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
|
1241 |
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
|
1242 void |
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
|
1243 SDL_OnWindowHidden(SDL_Window * window) |
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
|
1244 { |
0 | 1245 } |
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
|
1246 |
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
|
1247 void |
1970
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1969
diff
changeset
|
1248 SDL_OnWindowResized(SDL_Window * window) |
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1969
diff
changeset
|
1249 { |
2753 | 1250 SDL_Renderer *renderer = window->renderer; |
1970
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1969
diff
changeset
|
1251 |
2753 | 1252 if (renderer && renderer->DisplayModeChanged) { |
1253 renderer->DisplayModeChanged(renderer); | |
1254 } | |
1970
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1969
diff
changeset
|
1255 } |
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1969
diff
changeset
|
1256 |
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1969
diff
changeset
|
1257 void |
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
|
1258 SDL_OnWindowFocusGained(SDL_Window * window) |
0 | 1259 { |
2753 | 1260 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(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
|
1261 |
2753 | 1262 if (window->flags & SDL_WINDOW_FULLSCREEN) { |
1263 SDL_SetDisplayMode(&display->fullscreen_mode); | |
1264 } | |
1265 if (display->gamma && _this->SetDisplayGammaRamp) { | |
1266 _this->SetDisplayGammaRamp(_this, display->gamma); | |
1267 } | |
1268 if ((window->flags & SDL_WINDOW_INPUT_GRABBED) && _this->SetWindowGrab) { | |
1269 _this->SetWindowGrab(_this, window); | |
1270 } | |
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
|
1271 } |
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
|
1272 |
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
|
1273 void |
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
|
1274 SDL_OnWindowFocusLost(SDL_Window * window) |
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
|
1275 { |
2753 | 1276 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); |
0 | 1277 |
2753 | 1278 if (window->flags & SDL_WINDOW_FULLSCREEN) { |
1279 SDL_MinimizeWindow(window->id); | |
1280 SDL_SetDisplayMode(NULL); | |
1281 } | |
1282 if (display->gamma && _this->SetDisplayGammaRamp) { | |
1283 _this->SetDisplayGammaRamp(_this, display->saved_gamma); | |
1284 } | |
1285 if ((window->flags & SDL_WINDOW_INPUT_GRABBED) && _this->SetWindowGrab) { | |
1286 _this->SetWindowGrab(_this, window); | |
1287 } | |
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
|
1288 } |
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
|
1289 |
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
|
1290 SDL_WindowID |
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
|
1291 SDL_GetFocusWindow(void) |
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
|
1292 { |
2753 | 1293 SDL_VideoDisplay *display; |
1294 int i; | |
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
|
1295 |
2753 | 1296 if (!_this) { |
1297 return 0; | |
1298 } | |
1299 display = &SDL_CurrentDisplay; | |
1300 for (i = 0; i < display->num_windows; ++i) { | |
1301 SDL_Window *window = &display->windows[i]; | |
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
|
1302 |
2753 | 1303 if (window->flags & SDL_WINDOW_INPUT_FOCUS) { |
1304 return window->id; | |
1305 } | |
1306 } | |
1307 return 0; | |
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
|
1308 } |
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
|
1309 |
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
|
1310 void |
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
|
1311 SDL_DestroyWindow(SDL_WindowID windowID) |
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
|
1312 { |
2753 | 1313 int i, j; |
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
|
1314 |
2753 | 1315 if (!_this) { |
1316 return; | |
1317 } | |
1318 /* Restore video mode, etc. */ | |
1319 SDL_SendWindowEvent(windowID, SDL_WINDOWEVENT_FOCUS_LOST, 0, 0); | |
0 | 1320 |
2753 | 1321 for (i = 0; i < _this->num_displays; ++i) { |
1322 SDL_VideoDisplay *display = &_this->displays[i]; | |
1323 for (j = 0; j < display->num_windows; ++j) { | |
1324 SDL_Window *window = &display->windows[j]; | |
1325 if (window->id != windowID) { | |
1326 continue; | |
1327 } | |
1328 if (window->title) { | |
1329 SDL_free(window->title); | |
1330 window->title = NULL; | |
1331 } | |
1332 if (window->renderer) { | |
1333 SDL_DestroyRenderer(window->id); | |
1334 window->renderer = NULL; | |
1335 } | |
1336 if (_this->DestroyWindow) { | |
1337 _this->DestroyWindow(_this, window); | |
1338 } | |
1339 if (j != display->num_windows - 1) { | |
1340 SDL_memcpy(&display->windows[i], | |
1341 &display->windows[i + 1], | |
1342 (display->num_windows - i - 1) * sizeof(*window)); | |
1343 } | |
1344 --display->num_windows; | |
1345 return; | |
1346 } | |
1347 } | |
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
|
1348 } |
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
|
1349 |
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
|
1350 void |
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
|
1351 SDL_AddRenderDriver(int displayIndex, const SDL_RenderDriver * driver) |
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
|
1352 { |
2753 | 1353 SDL_VideoDisplay *display; |
1354 SDL_RenderDriver *render_drivers; | |
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
|
1355 |
2753 | 1356 if (displayIndex >= _this->num_displays) { |
1357 return; | |
1358 } | |
1359 display = &_this->displays[displayIndex]; | |
2119
9341a884a4d9
Fixed running on Windows under VMware
Sam Lantinga <slouken@libsdl.org>
parents:
2075
diff
changeset
|
1360 |
2753 | 1361 render_drivers = |
1362 SDL_realloc(display->render_drivers, | |
1363 (display->num_render_drivers + | |
1364 1) * sizeof(*render_drivers)); | |
1365 if (render_drivers) { | |
1366 render_drivers[display->num_render_drivers] = *driver; | |
1367 display->render_drivers = render_drivers; | |
1368 display->num_render_drivers++; | |
1369 } | |
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
|
1370 } |
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
|
1371 |
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
|
1372 int |
1969
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1373 SDL_GetNumRenderDrivers(void) |
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
|
1374 { |
2753 | 1375 if (_this) { |
1376 return SDL_CurrentDisplay.num_render_drivers; | |
1377 } | |
1378 return 0; | |
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
|
1379 } |
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
|
1380 |
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
|
1381 int |
1969
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1382 SDL_GetRenderDriverInfo(int index, SDL_RendererInfo * info) |
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
|
1383 { |
2753 | 1384 if (!_this) { |
1385 SDL_UninitializedVideo(); | |
1386 return -1; | |
1387 } | |
1388 if (index < 0 || index >= SDL_GetNumRenderDrivers()) { | |
1389 SDL_SetError("index must be in the range of 0 - %d", | |
1390 SDL_GetNumRenderDrivers() - 1); | |
1391 return -1; | |
1392 } | |
1393 *info = SDL_CurrentDisplay.render_drivers[index].info; | |
1394 return 0; | |
0 | 1395 } |
1396 | |
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
|
1397 int |
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
|
1398 SDL_CreateRenderer(SDL_WindowID windowID, int index, Uint32 flags) |
0 | 1399 { |
2753 | 1400 SDL_Window *window = SDL_GetWindowFromID(windowID); |
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
|
1401 |
2753 | 1402 if (!window) { |
1403 return 0; | |
1404 } | |
1405 if (index < 0) { | |
1406 const char *override = SDL_getenv("SDL_VIDEO_RENDERER"); | |
1407 int n = SDL_GetNumRenderDrivers(); | |
1408 for (index = 0; index < n; ++index) { | |
1409 SDL_RenderDriver *driver = | |
1410 &SDL_CurrentDisplay.render_drivers[index]; | |
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
|
1411 |
2753 | 1412 if (override) { |
1413 if (SDL_strcasecmp(override, driver->info.name) == 0) { | |
1414 break; | |
1415 } | |
1416 } else { | |
1417 if ((driver->info.flags & flags) == flags) { | |
1418 break; | |
1419 } | |
1420 } | |
1421 } | |
1422 if (index == n) { | |
1423 SDL_SetError("Couldn't find matching render driver"); | |
1424 return -1; | |
1425 } | |
1426 } | |
1427 if (index >= SDL_GetNumRenderDrivers()) { | |
1428 SDL_SetError("index must be -1 or in the range of 0 - %d", | |
1429 SDL_GetNumRenderDrivers() - 1); | |
1430 return -1; | |
1431 } | |
1432 /* Free any existing renderer */ | |
1433 SDL_DestroyRenderer(windowID); | |
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
|
1434 |
2753 | 1435 /* Create a new renderer instance */ |
1436 window->renderer = SDL_CurrentDisplay.render_drivers[index] | |
1437 .CreateRenderer(window, flags); | |
1438 SDL_SelectRenderer(window->id); | |
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
|
1439 |
2753 | 1440 return 0; |
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
|
1441 } |
0 | 1442 |
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
|
1443 int |
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
|
1444 SDL_SelectRenderer(SDL_WindowID windowID) |
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
|
1445 { |
2753 | 1446 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1447 SDL_Renderer *renderer; | |
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
|
1448 |
2753 | 1449 if (!window || !window->renderer) { |
1450 return -1; | |
1451 } | |
1452 renderer = window->renderer; | |
1453 if (renderer && renderer->ActivateRenderer) { | |
1454 if (renderer->ActivateRenderer(renderer) < 0) { | |
1455 return -1; | |
1456 } | |
1457 } | |
1458 SDL_CurrentDisplay.current_renderer = renderer; | |
1459 return 0; | |
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
|
1460 } |
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
|
1461 |
1969
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1462 int |
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1463 SDL_GetRendererInfo(SDL_RendererInfo * info) |
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1464 { |
2753 | 1465 if (!_this) { |
1466 SDL_UninitializedVideo(); | |
1467 return -1; | |
1468 } | |
1469 if (!SDL_CurrentDisplay.current_renderer) { | |
1470 SDL_SetError("There is no current renderer"); | |
1471 return -1; | |
1472 } | |
1473 *info = SDL_CurrentDisplay.current_renderer->info; | |
1474 return 0; | |
1969
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1475 } |
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1476 |
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
|
1477 SDL_TextureID |
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
|
1478 SDL_CreateTexture(Uint32 format, int access, int w, int h) |
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
|
1479 { |
2753 | 1480 int hash; |
1481 SDL_Renderer *renderer; | |
1482 SDL_Texture *texture; | |
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
|
1483 |
2753 | 1484 if (!_this) { |
1485 SDL_UninitializedVideo(); | |
1486 return 0; | |
1487 } | |
1488 renderer = SDL_CurrentDisplay.current_renderer; | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1489 if (!renderer) { |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1490 return 0; |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1491 } |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1492 if (!renderer->CreateTexture) { |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1493 SDL_Unsupported(); |
2753 | 1494 return 0; |
1495 } | |
1496 texture = (SDL_Texture *) SDL_calloc(1, sizeof(*texture)); | |
1497 if (!texture) { | |
1498 SDL_OutOfMemory(); | |
1499 return 0; | |
1500 } | |
1501 texture->id = _this->next_object_id++; | |
1502 texture->format = format; | |
1503 texture->access = access; | |
1504 texture->w = w; | |
1505 texture->h = h; | |
1506 texture->r = 255; | |
1507 texture->g = 255; | |
1508 texture->b = 255; | |
1509 texture->a = 255; | |
1510 texture->renderer = renderer; | |
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
|
1511 |
2753 | 1512 if (renderer->CreateTexture(renderer, texture) < 0) { |
1513 if (renderer->DestroyTexture) { | |
1514 renderer->DestroyTexture(renderer, texture); | |
1515 } | |
1516 SDL_free(texture); | |
1517 return 0; | |
1518 } | |
1519 hash = (texture->id % SDL_arraysize(SDL_CurrentDisplay.textures)); | |
1520 texture->next = SDL_CurrentDisplay.textures[hash]; | |
1521 SDL_CurrentDisplay.textures[hash] = texture; | |
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
|
1522 |
2753 | 1523 return texture->id; |
0 | 1524 } |
1525 | |
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
|
1526 SDL_TextureID |
2222
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
2130
diff
changeset
|
1527 SDL_CreateTextureFromSurface(Uint32 format, SDL_Surface * surface) |
0 | 1528 { |
2753 | 1529 SDL_TextureID textureID; |
1530 SDL_PixelFormat *fmt; | |
1531 int bpp; | |
1532 Uint32 Rmask, Gmask, Bmask, Amask; | |
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
|
1533 |
2753 | 1534 if (!surface) { |
1535 SDL_SetError("SDL_CreateTextureFromSurface() passed NULL surface"); | |
1536 return 0; | |
1537 } | |
1538 fmt = surface->format; | |
0 | 1539 |
2753 | 1540 if (format) { |
1541 if (!SDL_PixelFormatEnumToMasks | |
1542 (format, &bpp, &Rmask, &Gmask, &Bmask, &Amask)) { | |
1543 SDL_SetError("Unknown pixel format"); | |
1544 return 0; | |
1545 } | |
1546 } else { | |
1547 if (surface->format->Amask | |
1548 || !(surface->map->info.flags & | |
1549 (SDL_COPY_COLORKEY | SDL_COPY_MASK | SDL_COPY_BLEND))) { | |
1550 bpp = fmt->BitsPerPixel; | |
1551 Rmask = fmt->Rmask; | |
1552 Gmask = fmt->Gmask; | |
1553 Bmask = fmt->Bmask; | |
1554 Amask = fmt->Amask; | |
1555 } else { | |
1556 /* Need a format with alpha */ | |
1557 bpp = 32; | |
1558 Rmask = 0x00FF0000; | |
1559 Gmask = 0x0000FF00; | |
1560 Bmask = 0x000000FF; | |
1561 Amask = 0xFF000000; | |
1562 } | |
1563 format = SDL_MasksToPixelFormatEnum(bpp, Rmask, Gmask, Bmask, Amask); | |
1564 if (!format) { | |
1565 SDL_SetError("Unknown pixel format"); | |
1566 return 0; | |
1567 } | |
1568 } | |
0 | 1569 |
2753 | 1570 textureID = |
1571 SDL_CreateTexture(format, SDL_TEXTUREACCESS_STATIC, surface->w, | |
1572 surface->h); | |
1573 if (!textureID) { | |
1574 return 0; | |
1575 } | |
1576 if (bpp == fmt->BitsPerPixel && Rmask == fmt->Rmask && Gmask == fmt->Gmask | |
1577 && Bmask == fmt->Bmask && Amask == fmt->Amask) { | |
1578 if (SDL_MUSTLOCK(surface)) { | |
1579 if (SDL_LockSurface(surface) < 0) { | |
1580 SDL_DestroyTexture(textureID); | |
1581 return 0; | |
1582 } | |
1583 SDL_UpdateTexture(textureID, NULL, surface->pixels, | |
1584 surface->pitch); | |
1585 SDL_UnlockSurface(surface); | |
1586 } else { | |
1587 SDL_UpdateTexture(textureID, NULL, surface->pixels, | |
1588 surface->pitch); | |
1589 } | |
1590 } else { | |
1591 SDL_PixelFormat *dst_fmt; | |
1592 SDL_Surface *dst = NULL; | |
2222
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
2130
diff
changeset
|
1593 |
2753 | 1594 /* Set up a destination surface for the texture update */ |
1595 dst_fmt = SDL_AllocFormat(bpp, Rmask, Gmask, Bmask, Amask); | |
1596 if (dst_fmt) { | |
1597 if (SDL_ISPIXELFORMAT_INDEXED(format)) { | |
1598 dst_fmt->palette = | |
1599 SDL_AllocPalette((1 << SDL_BITSPERPIXEL(format))); | |
1600 if (dst_fmt->palette) { | |
1601 /* | |
1602 * FIXME: Should we try to copy | |
1603 * fmt->palette? | |
1604 */ | |
1605 SDL_DitherColors(dst_fmt->palette->colors, | |
1606 SDL_BITSPERPIXEL(format)); | |
1607 } | |
1608 } | |
1609 dst = SDL_ConvertSurface(surface, dst_fmt, 0); | |
1610 if (dst) { | |
1611 SDL_UpdateTexture(textureID, NULL, dst->pixels, dst->pitch); | |
1612 SDL_FreeSurface(dst); | |
1613 } | |
1614 if (dst_fmt->palette) { | |
1615 SDL_FreePalette(dst_fmt->palette); | |
1616 } | |
1617 SDL_FreeFormat(dst_fmt); | |
1618 } | |
1619 if (!dst) { | |
1620 SDL_DestroyTexture(textureID); | |
1621 return 0; | |
1622 } | |
1623 } | |
2743
453ec0c21f6f
Rolling back changes to revision 4071 ... made some mistakes, will try merging work again.
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2740
diff
changeset
|
1624 |
2753 | 1625 if (SDL_ISPIXELFORMAT_INDEXED(format) && fmt->palette) { |
1626 SDL_SetTexturePalette(textureID, fmt->palette->colors, 0, | |
1627 fmt->palette->ncolors); | |
1628 } | |
1629 return textureID; | |
0 | 1630 } |
1631 | |
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
|
1632 static __inline__ SDL_Texture * |
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
|
1633 SDL_GetTextureFromID(SDL_TextureID textureID) |
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
|
1634 { |
2753 | 1635 int hash; |
1636 SDL_Texture *texture; | |
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
|
1637 |
2753 | 1638 if (!_this) { |
1639 return NULL; | |
1640 } | |
1641 hash = (textureID % SDL_arraysize(SDL_CurrentDisplay.textures)); | |
1642 for (texture = SDL_CurrentDisplay.textures[hash]; texture; | |
1643 texture = texture->next) { | |
1644 if (texture->id == textureID) { | |
1645 return texture; | |
1646 } | |
1647 } | |
1648 return NULL; | |
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
|
1649 } |
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
|
1650 |
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
|
1651 int |
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
|
1652 SDL_QueryTexture(SDL_TextureID textureID, Uint32 * format, int *access, |
2753 | 1653 int *w, int *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
|
1654 { |
2753 | 1655 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
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
|
1656 |
2753 | 1657 if (!texture) { |
1658 return -1; | |
1659 } | |
1660 if (format) { | |
1661 *format = texture->format; | |
1662 } | |
1663 if (access) { | |
1664 *access = texture->access; | |
1665 } | |
1666 if (w) { | |
1667 *w = texture->w; | |
1668 } | |
1669 if (h) { | |
1670 *h = texture->h; | |
1671 } | |
1672 return 0; | |
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
|
1673 } |
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
|
1674 |
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
|
1675 int |
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
|
1676 SDL_QueryTexturePixels(SDL_TextureID textureID, void **pixels, int *pitch) |
0 | 1677 { |
2753 | 1678 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1679 SDL_Renderer *renderer; | |
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
|
1680 |
2753 | 1681 if (!texture) { |
1682 return -1; | |
1683 } | |
1684 renderer = texture->renderer; | |
1685 if (!renderer->QueryTexturePixels) { | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1686 SDL_Unsupported(); |
2753 | 1687 return -1; |
1688 } | |
1689 return renderer->QueryTexturePixels(renderer, texture, pixels, pitch); | |
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
|
1690 } |
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
|
1691 |
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
|
1692 int |
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
|
1693 SDL_SetTexturePalette(SDL_TextureID textureID, const SDL_Color * colors, |
2753 | 1694 int firstcolor, int ncolors) |
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
|
1695 { |
2753 | 1696 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1697 SDL_Renderer *renderer; | |
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
|
1698 |
2753 | 1699 if (!texture) { |
1700 return -1; | |
1701 } | |
1702 renderer = texture->renderer; | |
1703 if (!renderer->SetTexturePalette) { | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1704 SDL_Unsupported(); |
2753 | 1705 return -1; |
1706 } | |
1707 return renderer->SetTexturePalette(renderer, texture, colors, firstcolor, | |
1708 ncolors); | |
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
|
1709 } |
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
|
1710 |
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
|
1711 int |
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
|
1712 SDL_GetTexturePalette(SDL_TextureID textureID, SDL_Color * colors, |
2753 | 1713 int firstcolor, int ncolors) |
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
|
1714 { |
2753 | 1715 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1716 SDL_Renderer *renderer; | |
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
|
1717 |
2753 | 1718 if (!texture) { |
1719 return -1; | |
1720 } | |
1721 renderer = texture->renderer; | |
1722 if (!renderer->GetTexturePalette) { | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1723 SDL_Unsupported(); |
2753 | 1724 return -1; |
1725 } | |
1726 return renderer->GetTexturePalette(renderer, texture, colors, firstcolor, | |
1727 ncolors); | |
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
|
1728 } |
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
|
1729 |
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
|
1730 int |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1731 SDL_SetTextureColorMod(SDL_TextureID textureID, Uint8 r, Uint8 g, Uint8 b) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1732 { |
2753 | 1733 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1734 SDL_Renderer *renderer; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1735 |
2753 | 1736 if (!texture) { |
1737 return -1; | |
1738 } | |
1739 renderer = texture->renderer; | |
1740 if (!renderer->SetTextureColorMod) { | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1741 SDL_Unsupported(); |
2753 | 1742 return -1; |
1743 } | |
1744 if (r < 255 || g < 255 || b < 255) { | |
1745 texture->modMode |= SDL_TEXTUREMODULATE_COLOR; | |
1746 } else { | |
1747 texture->modMode &= ~SDL_TEXTUREMODULATE_COLOR; | |
1748 } | |
1749 texture->r = r; | |
1750 texture->g = g; | |
1751 texture->b = b; | |
1752 return renderer->SetTextureColorMod(renderer, texture); | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1753 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1754 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1755 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1756 SDL_GetTextureColorMod(SDL_TextureID textureID, Uint8 * r, Uint8 * g, |
2753 | 1757 Uint8 * b) |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1758 { |
2753 | 1759 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1760 SDL_Renderer *renderer; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1761 |
2753 | 1762 if (!texture) { |
1763 return -1; | |
1764 } | |
1765 renderer = texture->renderer; | |
1766 if (r) { | |
1767 *r = texture->r; | |
1768 } | |
1769 if (g) { | |
1770 *g = texture->g; | |
1771 } | |
1772 if (b) { | |
1773 *b = texture->b; | |
1774 } | |
1775 return 0; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1776 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1777 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1778 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1779 SDL_SetTextureAlphaMod(SDL_TextureID textureID, Uint8 alpha) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1780 { |
2753 | 1781 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1782 SDL_Renderer *renderer; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1783 |
2753 | 1784 if (!texture) { |
1785 return -1; | |
1786 } | |
1787 renderer = texture->renderer; | |
1788 if (!renderer->SetTextureAlphaMod) { | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1789 SDL_Unsupported(); |
2753 | 1790 return -1; |
1791 } | |
1792 if (alpha < 255) { | |
1793 texture->modMode |= SDL_TEXTUREMODULATE_ALPHA; | |
1794 } else { | |
1795 texture->modMode &= ~SDL_TEXTUREMODULATE_ALPHA; | |
1796 } | |
1797 texture->a = alpha; | |
1798 return renderer->SetTextureAlphaMod(renderer, texture); | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1799 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1800 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1801 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1802 SDL_GetTextureAlphaMod(SDL_TextureID textureID, Uint8 * alpha) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1803 { |
2753 | 1804 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1805 |
2753 | 1806 if (!texture) { |
1807 return -1; | |
1808 } | |
1809 if (alpha) { | |
1810 *alpha = texture->a; | |
1811 } | |
1812 return 0; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1813 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1814 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1815 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1816 SDL_SetTextureBlendMode(SDL_TextureID textureID, int blendMode) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1817 { |
2753 | 1818 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1819 SDL_Renderer *renderer; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1820 |
2753 | 1821 if (!texture) { |
1822 return -1; | |
1823 } | |
1824 renderer = texture->renderer; | |
1825 if (!renderer->SetTextureBlendMode) { | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1826 SDL_Unsupported(); |
2753 | 1827 return -1; |
1828 } | |
1829 texture->blendMode = blendMode; | |
1830 return renderer->SetTextureBlendMode(renderer, texture); | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1831 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1832 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1833 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1834 SDL_GetTextureBlendMode(SDL_TextureID textureID, int *blendMode) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1835 { |
2753 | 1836 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1837 |
2753 | 1838 if (!texture) { |
1839 return -1; | |
1840 } | |
1841 if (blendMode) { | |
1842 *blendMode = texture->blendMode; | |
1843 } | |
1844 return 0; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1845 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1846 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1847 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1848 SDL_SetTextureScaleMode(SDL_TextureID textureID, int scaleMode) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1849 { |
2753 | 1850 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1851 SDL_Renderer *renderer; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1852 |
2753 | 1853 if (!texture) { |
1854 return -1; | |
1855 } | |
1856 renderer = texture->renderer; | |
1857 if (!renderer->SetTextureScaleMode) { | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1858 SDL_Unsupported(); |
2753 | 1859 return -1; |
1860 } | |
1861 texture->scaleMode = scaleMode; | |
1862 return renderer->SetTextureScaleMode(renderer, texture); | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1863 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1864 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1865 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1866 SDL_GetTextureScaleMode(SDL_TextureID textureID, int *scaleMode) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1867 { |
2753 | 1868 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1869 |
2753 | 1870 if (!texture) { |
1871 return -1; | |
1872 } | |
1873 if (scaleMode) { | |
1874 *scaleMode = texture->scaleMode; | |
1875 } | |
1876 return 0; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1877 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1878 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1879 int |
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
|
1880 SDL_UpdateTexture(SDL_TextureID textureID, const SDL_Rect * rect, |
2753 | 1881 const void *pixels, int pitch) |
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
|
1882 { |
2753 | 1883 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1884 SDL_Renderer *renderer; | |
1885 SDL_Rect full_rect; | |
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
|
1886 |
2753 | 1887 if (!texture) { |
1888 return -1; | |
1889 } | |
1890 renderer = texture->renderer; | |
1891 if (!renderer->UpdateTexture) { | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1892 SDL_Unsupported(); |
2753 | 1893 return -1; |
1894 } | |
1895 if (!rect) { | |
1896 full_rect.x = 0; | |
1897 full_rect.y = 0; | |
1898 full_rect.w = texture->w; | |
1899 full_rect.h = texture->h; | |
1900 rect = &full_rect; | |
1901 } | |
1902 return renderer->UpdateTexture(renderer, texture, rect, pixels, pitch); | |
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
|
1903 } |
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
|
1904 |
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
|
1905 int |
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
|
1906 SDL_LockTexture(SDL_TextureID textureID, const SDL_Rect * rect, int markDirty, |
2753 | 1907 void **pixels, int *pitch) |
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
|
1908 { |
2753 | 1909 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1910 SDL_Renderer *renderer; | |
1911 SDL_Rect full_rect; | |
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
|
1912 |
2753 | 1913 if (!texture) { |
1914 return -1; | |
1915 } | |
1916 if (texture->access != SDL_TEXTUREACCESS_STREAMING) { | |
1917 SDL_SetError("SDL_LockTexture(): texture must be streaming"); | |
1918 return -1; | |
1919 } | |
1920 renderer = texture->renderer; | |
1921 if (!renderer->LockTexture) { | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1922 SDL_Unsupported(); |
2753 | 1923 return -1; |
1924 } | |
1925 if (!rect) { | |
1926 full_rect.x = 0; | |
1927 full_rect.y = 0; | |
1928 full_rect.w = texture->w; | |
1929 full_rect.h = texture->h; | |
1930 rect = &full_rect; | |
1931 } | |
1932 return renderer->LockTexture(renderer, texture, rect, markDirty, pixels, | |
1933 pitch); | |
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
|
1934 } |
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
|
1935 |
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
|
1936 void |
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
|
1937 SDL_UnlockTexture(SDL_TextureID textureID) |
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
|
1938 { |
2753 | 1939 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1940 SDL_Renderer *renderer; | |
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
|
1941 |
2753 | 1942 if (!texture) { |
1943 return; | |
1944 } | |
1945 if (texture->access != SDL_TEXTUREACCESS_STREAMING) { | |
1946 return; | |
1947 } | |
1948 renderer = texture->renderer; | |
1949 if (!renderer->UnlockTexture) { | |
1950 return; | |
1951 } | |
1952 renderer->UnlockTexture(renderer, texture); | |
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
|
1953 } |
0 | 1954 |
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
|
1955 void |
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
|
1956 SDL_DirtyTexture(SDL_TextureID textureID, int numrects, |
2753 | 1957 const SDL_Rect * rects) |
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
|
1958 { |
2753 | 1959 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1960 SDL_Renderer *renderer; | |
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
|
1961 |
2753 | 1962 if (!texture) { |
1963 return; | |
1964 } | |
1965 if (texture->access != SDL_TEXTUREACCESS_STREAMING) { | |
1966 return; | |
1967 } | |
1968 renderer = texture->renderer; | |
1969 if (!renderer->DirtyTexture) { | |
1970 return; | |
1971 } | |
1972 renderer->DirtyTexture(renderer, texture, numrects, rects); | |
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
|
1973 } |
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
|
1974 |
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
|
1975 int |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
1976 SDL_RenderFill(Uint8 r, Uint8 g, Uint8 b, Uint8 a, const SDL_Rect * rect) |
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
|
1977 { |
2753 | 1978 SDL_Renderer *renderer; |
1979 SDL_Window *window; | |
1980 SDL_Rect real_rect; | |
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
|
1981 |
2753 | 1982 if (!_this) { |
1983 SDL_UninitializedVideo(); | |
1984 return -1; | |
1985 } | |
1986 renderer = SDL_CurrentDisplay.current_renderer; | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1987 if (!renderer) { |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1988 return -1; |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1989 } |
2814 | 1990 if (!renderer->RenderFill) { |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1991 SDL_Unsupported(); |
2753 | 1992 return -1; |
1993 } | |
1994 window = SDL_GetWindowFromID(renderer->window); | |
1995 real_rect.x = 0; | |
1996 real_rect.y = 0; | |
1997 real_rect.w = window->w; | |
1998 real_rect.h = window->h; | |
1999 if (rect) { | |
2000 if (!SDL_IntersectRect(rect, &real_rect, &real_rect)) { | |
2001 return 0; | |
2002 } | |
2003 } | |
2004 return renderer->RenderFill(renderer, r, g, b, a, &real_rect); | |
0 | 2005 } |
2006 | |
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
|
2007 int |
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
|
2008 SDL_RenderCopy(SDL_TextureID textureID, const SDL_Rect * srcrect, |
2753 | 2009 const SDL_Rect * dstrect) |
0 | 2010 { |
2753 | 2011 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
2012 SDL_Renderer *renderer; | |
2013 SDL_Window *window; | |
2014 SDL_Rect real_srcrect; | |
2015 SDL_Rect real_dstrect; | |
0 | 2016 |
2753 | 2017 if (!texture || texture->renderer != SDL_CurrentDisplay.current_renderer) { |
2018 return -1; | |
2019 } | |
2020 renderer = SDL_CurrentDisplay.current_renderer; | |
2810
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2021 if (!renderer) { |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2022 return -1; |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2023 } |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2024 if (!renderer->RenderCopy) { |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2025 SDL_Unsupported(); |
2753 | 2026 return -1; |
2027 } | |
2028 window = SDL_GetWindowFromID(renderer->window); | |
2029 if (srcrect) { | |
2030 real_srcrect = *srcrect; | |
2031 } else { | |
2032 real_srcrect.x = 0; | |
2033 real_srcrect.y = 0; | |
2034 real_srcrect.w = texture->w; | |
2035 real_srcrect.h = texture->h; | |
2036 } | |
2037 if (dstrect) { | |
2038 real_dstrect = *dstrect; | |
2039 } else { | |
2040 real_dstrect.x = 0; | |
2041 real_dstrect.y = 0; | |
2042 real_dstrect.w = window->w; | |
2043 real_dstrect.h = window->h; | |
2044 } | |
0 | 2045 |
2753 | 2046 return renderer->RenderCopy(renderer, texture, &real_srcrect, |
2047 &real_dstrect); | |
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
|
2048 } |
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
|
2049 |
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
|
2050 void |
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
|
2051 SDL_RenderPresent(void) |
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
|
2052 { |
2753 | 2053 SDL_Renderer *renderer; |
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
|
2054 |
2753 | 2055 if (!_this) { |
2056 SDL_UninitializedVideo(); | |
2057 return; | |
2058 } | |
2059 renderer = SDL_CurrentDisplay.current_renderer; | |
2060 if (!renderer || !renderer->RenderPresent) { | |
2061 return; | |
2062 } | |
2063 renderer->RenderPresent(renderer); | |
0 | 2064 } |
2065 | |
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
|
2066 void |
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
|
2067 SDL_DestroyTexture(SDL_TextureID textureID) |
0 | 2068 { |
2753 | 2069 int hash; |
2070 SDL_Texture *prev, *texture; | |
2071 SDL_Renderer *renderer; | |
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
|
2072 |
2753 | 2073 if (!_this) { |
2074 SDL_UninitializedVideo(); | |
2075 return; | |
2076 } | |
2077 /* Look up the texture in the hash table */ | |
2078 hash = (textureID % SDL_arraysize(SDL_CurrentDisplay.textures)); | |
2079 prev = NULL; | |
2080 for (texture = SDL_CurrentDisplay.textures[hash]; texture; | |
2081 prev = texture, texture = texture->next) { | |
2082 if (texture->id == textureID) { | |
2083 break; | |
2084 } | |
2085 } | |
2086 if (!texture) { | |
2087 return; | |
2088 } | |
2089 /* Unlink the texture from the list */ | |
2090 if (prev) { | |
2091 prev->next = texture->next; | |
2092 } else { | |
2093 SDL_CurrentDisplay.textures[hash] = texture->next; | |
2094 } | |
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
|
2095 |
2753 | 2096 /* Free the texture */ |
2097 renderer = texture->renderer; | |
2098 renderer->DestroyTexture(renderer, texture); | |
2099 SDL_free(texture); | |
0 | 2100 } |
2101 | |
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
|
2102 void |
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
|
2103 SDL_DestroyRenderer(SDL_WindowID windowID) |
0 | 2104 { |
2753 | 2105 SDL_Window *window = SDL_GetWindowFromID(windowID); |
2106 SDL_Renderer *renderer; | |
2107 int i; | |
0 | 2108 |
2753 | 2109 if (!window) { |
2110 return; | |
2111 } | |
2112 renderer = window->renderer; | |
2113 if (!renderer) { | |
2114 return; | |
2115 } | |
2116 /* Free existing textures for this renderer */ | |
2117 for (i = 0; i < SDL_arraysize(SDL_CurrentDisplay.textures); ++i) { | |
2118 SDL_Texture *texture; | |
2119 SDL_Texture *prev = NULL; | |
2120 SDL_Texture *next; | |
2121 for (texture = SDL_CurrentDisplay.textures[i]; texture; | |
2122 texture = next) { | |
2123 next = texture->next; | |
2124 if (texture->renderer == renderer) { | |
2125 if (prev) { | |
2126 prev->next = next; | |
2127 } else { | |
2128 SDL_CurrentDisplay.textures[i] = next; | |
2129 } | |
2130 renderer->DestroyTexture(renderer, texture); | |
2131 SDL_free(texture); | |
2132 } else { | |
2133 prev = texture; | |
2134 } | |
2135 } | |
2136 } | |
0 | 2137 |
2753 | 2138 /* Free the renderer instance */ |
2139 renderer->DestroyRenderer(renderer); | |
0 | 2140 |
2753 | 2141 /* Clear references */ |
2142 window->renderer = NULL; | |
2143 if (SDL_CurrentDisplay.current_renderer == renderer) { | |
2144 SDL_CurrentDisplay.current_renderer = NULL; | |
2145 } | |
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
|
2146 } |
0 | 2147 |
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
|
2148 void |
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
|
2149 SDL_VideoQuit(void) |
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
|
2150 { |
2753 | 2151 int i, j; |
0 | 2152 |
2753 | 2153 if (!_this) { |
2154 return; | |
2155 } | |
2156 /* Halt event processing before doing anything else */ | |
2157 SDL_StopEventLoop(); | |
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
|
2158 |
2753 | 2159 /* Clean up the system video */ |
2160 for (i = _this->num_displays; i--;) { | |
2161 SDL_VideoDisplay *display = &_this->displays[i]; | |
2162 for (j = display->num_windows; j--;) { | |
2163 SDL_DestroyWindow(display->windows[i].id); | |
2164 } | |
2165 if (display->windows) { | |
2166 SDL_free(display->windows); | |
2167 display->windows = NULL; | |
2168 } | |
2169 display->num_windows = 0; | |
2170 if (display->render_drivers) { | |
2171 SDL_free(display->render_drivers); | |
2172 display->render_drivers = NULL; | |
2173 } | |
2174 display->num_render_drivers = 0; | |
2175 } | |
2176 _this->VideoQuit(_this); | |
0 | 2177 |
2753 | 2178 for (i = _this->num_displays; i--;) { |
2179 SDL_VideoDisplay *display = &_this->displays[i]; | |
2180 for (j = display->num_display_modes; j--;) { | |
2181 if (display->display_modes[j].driverdata) { | |
2182 SDL_free(display->display_modes[j].driverdata); | |
2183 display->display_modes[j].driverdata = NULL; | |
2184 } | |
2185 } | |
2186 if (display->display_modes) { | |
2187 SDL_free(display->display_modes); | |
2188 display->display_modes = NULL; | |
2189 } | |
2190 if (display->desktop_mode.driverdata) { | |
2191 SDL_free(display->desktop_mode.driverdata); | |
2192 display->desktop_mode.driverdata = NULL; | |
2193 } | |
2194 if (display->palette) { | |
2195 SDL_FreePalette(display->palette); | |
2196 display->palette = NULL; | |
2197 } | |
2198 if (display->gamma) { | |
2199 SDL_free(display->gamma); | |
2200 display->gamma = NULL; | |
2201 } | |
2202 if (display->driverdata) { | |
2203 SDL_free(display->driverdata); | |
2204 display->driverdata = NULL; | |
2205 } | |
2206 } | |
2207 if (_this->displays) { | |
2208 SDL_free(_this->displays); | |
2209 _this->displays = NULL; | |
2210 } | |
2211 _this->free(_this); | |
2212 _this = NULL; | |
0 | 2213 } |
2214 | |
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
|
2215 int |
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
|
2216 SDL_GL_LoadLibrary(const char *path) |
0 | 2217 { |
2753 | 2218 int retval; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2219 |
2753 | 2220 if (!_this) { |
2221 SDL_UninitializedVideo(); | |
2222 return -1; | |
2223 } | |
2224 if (_this->GL_LoadLibrary) { | |
2225 retval = _this->GL_LoadLibrary(_this, path); | |
2226 } else { | |
2227 SDL_SetError("No dynamic GL support in video driver"); | |
2228 retval = -1; | |
2229 } | |
2230 return (retval); | |
0 | 2231 } |
2232 | |
2753 | 2233 void * |
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
|
2234 SDL_GL_GetProcAddress(const char *proc) |
0 | 2235 { |
2753 | 2236 void *func; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2237 |
2753 | 2238 if (!_this) { |
2239 SDL_UninitializedVideo(); | |
2240 return NULL; | |
2241 } | |
2242 func = NULL; | |
2243 if (_this->GL_GetProcAddress) { | |
2244 if (_this->gl_config.driver_loaded) { | |
2245 func = _this->GL_GetProcAddress(_this, proc); | |
2246 } else { | |
2247 SDL_SetError("No GL driver has been loaded"); | |
2248 } | |
2249 } else { | |
2250 SDL_SetError("No dynamic GL support in video driver"); | |
2251 } | |
2252 return func; | |
0 | 2253 } |
2254 | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2255 SDL_bool |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2256 SDL_GL_ExtensionSupported(const char *extension) |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2257 { |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2258 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES |
2753 | 2259 const GLubyte *(APIENTRY * glGetStringFunc) (GLenum); |
2260 const char *extensions; | |
2261 const char *start; | |
2262 const char *where, *terminator; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2263 |
2753 | 2264 /* Extension names should not have spaces. */ |
2265 where = SDL_strchr(extension, ' '); | |
2266 if (where || *extension == '\0') { | |
2267 return SDL_FALSE; | |
2268 } | |
2269 /* See if there's an environment variable override */ | |
2270 start = SDL_getenv(extension); | |
2271 if (start && *start == '0') { | |
2272 return SDL_FALSE; | |
2273 } | |
2274 /* Lookup the available extensions */ | |
2275 glGetStringFunc = SDL_GL_GetProcAddress("glGetString"); | |
2276 if (glGetStringFunc) { | |
2277 extensions = (const char *) glGetStringFunc(GL_EXTENSIONS); | |
2278 } else { | |
2279 extensions = NULL; | |
2280 } | |
2281 if (!extensions) { | |
2282 return SDL_FALSE; | |
2283 } | |
2284 /* | |
2285 * It takes a bit of care to be fool-proof about parsing the OpenGL | |
2286 * extensions string. Don't be fooled by sub-strings, etc. | |
2287 */ | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2288 |
2753 | 2289 start = extensions; |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2290 |
2753 | 2291 for (;;) { |
2292 where = SDL_strstr(start, extension); | |
2293 if (!where) | |
2294 break; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2295 |
2753 | 2296 terminator = where + SDL_strlen(extension); |
2297 if (where == start || *(where - 1) == ' ') | |
2298 if (*terminator == ' ' || *terminator == '\0') | |
2299 return SDL_TRUE; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2300 |
2753 | 2301 start = terminator; |
2302 } | |
2303 return SDL_FALSE; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2304 #else |
2753 | 2305 return SDL_FALSE; |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2306 #endif |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2307 } |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2308 |
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
|
2309 int |
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
|
2310 SDL_GL_SetAttribute(SDL_GLattr attr, int value) |
0 | 2311 { |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2312 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES |
2753 | 2313 int retval; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2314 |
2753 | 2315 if (!_this) { |
2316 SDL_UninitializedVideo(); | |
2317 return -1; | |
2318 } | |
2319 retval = 0; | |
2320 switch (attr) { | |
2321 case SDL_GL_RED_SIZE: | |
2322 _this->gl_config.red_size = value; | |
2323 break; | |
2324 case SDL_GL_GREEN_SIZE: | |
2325 _this->gl_config.green_size = value; | |
2326 break; | |
2327 case SDL_GL_BLUE_SIZE: | |
2328 _this->gl_config.blue_size = value; | |
2329 break; | |
2330 case SDL_GL_ALPHA_SIZE: | |
2331 _this->gl_config.alpha_size = value; | |
2332 break; | |
2333 case SDL_GL_DOUBLEBUFFER: | |
2334 _this->gl_config.double_buffer = value; | |
2335 break; | |
2336 case SDL_GL_BUFFER_SIZE: | |
2337 _this->gl_config.buffer_size = value; | |
2338 break; | |
2339 case SDL_GL_DEPTH_SIZE: | |
2340 _this->gl_config.depth_size = value; | |
2341 break; | |
2342 case SDL_GL_STENCIL_SIZE: | |
2343 _this->gl_config.stencil_size = value; | |
2344 break; | |
2345 case SDL_GL_ACCUM_RED_SIZE: | |
2346 _this->gl_config.accum_red_size = value; | |
2347 break; | |
2348 case SDL_GL_ACCUM_GREEN_SIZE: | |
2349 _this->gl_config.accum_green_size = value; | |
2350 break; | |
2351 case SDL_GL_ACCUM_BLUE_SIZE: | |
2352 _this->gl_config.accum_blue_size = value; | |
2353 break; | |
2354 case SDL_GL_ACCUM_ALPHA_SIZE: | |
2355 _this->gl_config.accum_alpha_size = value; | |
2356 break; | |
2357 case SDL_GL_STEREO: | |
2358 _this->gl_config.stereo = value; | |
2359 break; | |
2360 case SDL_GL_MULTISAMPLEBUFFERS: | |
2361 _this->gl_config.multisamplebuffers = value; | |
2362 break; | |
2363 case SDL_GL_MULTISAMPLESAMPLES: | |
2364 _this->gl_config.multisamplesamples = value; | |
2365 break; | |
2366 case SDL_GL_ACCELERATED_VISUAL: | |
2367 _this->gl_config.accelerated = value; | |
2368 break; | |
2369 case SDL_GL_RETAINED_BACKING: | |
2370 _this->gl_config.retained_backing = value; | |
2371 break; | |
2372 default: | |
2373 SDL_SetError("Unknown OpenGL attribute"); | |
2374 retval = -1; | |
2375 break; | |
2376 } | |
2377 return retval; | |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2378 #else |
2753 | 2379 SDL_Unsupported(); |
2380 return -1; | |
2381 #endif /* SDL_VIDEO_OPENGL */ | |
0 | 2382 } |
2383 | |
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
|
2384 int |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2385 SDL_GL_GetAttribute(SDL_GLattr attr, int *value) |
0 | 2386 { |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2387 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES |
2753 | 2388 void (APIENTRY * glGetIntegervFunc) (GLenum pname, GLint * params); |
2389 GLenum attrib = 0; | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2390 |
2753 | 2391 glGetIntegervFunc = SDL_GL_GetProcAddress("glGetIntegerv"); |
2392 if (!glGetIntegervFunc) { | |
2393 return -1; | |
2394 } | |
2395 switch (attr) { | |
2396 case SDL_GL_RETAINED_BACKING: | |
2397 *value = _this->gl_config.retained_backing; | |
2398 return 0; | |
2399 case SDL_GL_RED_SIZE: | |
2400 attrib = GL_RED_BITS; | |
2401 break; | |
2402 case SDL_GL_BLUE_SIZE: | |
2403 attrib = GL_BLUE_BITS; | |
2404 break; | |
2405 case SDL_GL_GREEN_SIZE: | |
2406 attrib = GL_GREEN_BITS; | |
2407 break; | |
2408 case SDL_GL_ALPHA_SIZE: | |
2409 attrib = GL_ALPHA_BITS; | |
2410 break; | |
2411 case SDL_GL_DOUBLEBUFFER: | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2412 #ifndef SDL_VIDEO_OPENGL_ES |
2753 | 2413 attrib = GL_DOUBLEBUFFER; |
2414 break; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2415 #else |
2753 | 2416 /* |
2417 * I believe double buffering is the only option in OpenGL ES | |
2418 * -- in any case, GL_DOUBLEBUFFER doesn't exist | |
2419 */ | |
2420 *value = 1; | |
2421 return 0; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2422 #endif |
2753 | 2423 case SDL_GL_DEPTH_SIZE: |
2424 attrib = GL_DEPTH_BITS; | |
2425 break; | |
2426 case SDL_GL_STENCIL_SIZE: | |
2427 attrib = GL_STENCIL_BITS; | |
2428 break; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2429 #ifndef SDL_VIDEO_OPENGL_ES |
2753 | 2430 case SDL_GL_ACCUM_RED_SIZE: |
2431 attrib = GL_ACCUM_RED_BITS; | |
2432 break; | |
2433 case SDL_GL_ACCUM_GREEN_SIZE: | |
2434 attrib = GL_ACCUM_GREEN_BITS; | |
2435 break; | |
2436 case SDL_GL_ACCUM_BLUE_SIZE: | |
2437 attrib = GL_ACCUM_BLUE_BITS; | |
2438 break; | |
2439 case SDL_GL_ACCUM_ALPHA_SIZE: | |
2440 attrib = GL_ACCUM_ALPHA_BITS; | |
2441 break; | |
2442 case SDL_GL_STEREO: | |
2443 attrib = GL_STEREO; | |
2444 break; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2445 #else |
2753 | 2446 case SDL_GL_ACCUM_RED_SIZE: |
2447 case SDL_GL_ACCUM_GREEN_SIZE: | |
2448 case SDL_GL_ACCUM_BLUE_SIZE: | |
2449 case SDL_GL_ACCUM_ALPHA_SIZE: | |
2450 case SDL_GL_STEREO: | |
2451 /* none of these are supported in OpenGL ES */ | |
2452 *value = 0; | |
2453 return 0; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2454 #endif |
2753 | 2455 case SDL_GL_MULTISAMPLEBUFFERS: |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2456 #ifndef SDL_VIDEO_OPENGL_ES |
2753 | 2457 attrib = GL_SAMPLE_BUFFERS_ARB; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2458 #else |
2753 | 2459 attrib = GL_SAMPLE_BUFFERS; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2460 #endif |
2753 | 2461 break; |
2462 case SDL_GL_MULTISAMPLESAMPLES: | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2463 #ifndef SDL_VIDEO_OPENGL_ES |
2753 | 2464 attrib = GL_SAMPLES_ARB; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2465 #else |
2753 | 2466 attrib = GL_SAMPLES; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2467 #endif |
2753 | 2468 break; |
2469 case SDL_GL_BUFFER_SIZE: | |
2470 { | |
2471 GLint bits = 0; | |
2472 GLint component; | |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2473 |
2753 | 2474 /* |
2475 * there doesn't seem to be a single flag in OpenGL | |
2476 * for this! | |
2477 */ | |
2478 glGetIntegervFunc(GL_RED_BITS, &component); | |
2479 bits += component; | |
2480 glGetIntegervFunc(GL_GREEN_BITS, &component); | |
2481 bits += component; | |
2482 glGetIntegervFunc(GL_BLUE_BITS, &component); | |
2483 bits += component; | |
2484 glGetIntegervFunc(GL_ALPHA_BITS, &component); | |
2485 bits += component; | |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2486 |
2753 | 2487 *value = bits; |
2488 return 0; | |
2489 } | |
2490 case SDL_GL_ACCELERATED_VISUAL: | |
2491 { | |
2492 /* FIXME: How do we get this information? */ | |
2493 *value = (_this->gl_config.accelerated != 0); | |
2494 return 0; | |
2495 } | |
2496 default: | |
2497 SDL_SetError("Unknown OpenGL attribute"); | |
2498 return -1; | |
2499 } | |
0 | 2500 |
2753 | 2501 glGetIntegervFunc(attrib, (GLint *) value); |
2502 return 0; | |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2503 #else |
2753 | 2504 SDL_Unsupported(); |
2505 return -1; | |
2506 #endif /* SDL_VIDEO_OPENGL */ | |
0 | 2507 } |
2508 | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2509 SDL_GLContext |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2510 SDL_GL_CreateContext(SDL_WindowID windowID) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2511 { |
2753 | 2512 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2513 |
2753 | 2514 if (!window) { |
2515 return NULL; | |
2516 } | |
2517 if (!(window->flags & SDL_WINDOW_OPENGL)) { | |
2518 SDL_SetError("The specified window isn't an OpenGL window"); | |
2519 return NULL; | |
2520 } | |
2521 return _this->GL_CreateContext(_this, window); | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2522 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2523 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2524 int |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2525 SDL_GL_MakeCurrent(SDL_WindowID windowID, SDL_GLContext context) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2526 { |
2753 | 2527 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2528 |
2753 | 2529 if (window && !(window->flags & SDL_WINDOW_OPENGL)) { |
2530 SDL_SetError("The specified window isn't an OpenGL window"); | |
2531 return -1; | |
2532 } | |
2533 if (!context) { | |
2534 window = NULL; | |
2535 } | |
2536 return _this->GL_MakeCurrent(_this, window, context); | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2537 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2538 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2539 int |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2540 SDL_GL_SetSwapInterval(int interval) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2541 { |
2753 | 2542 if (!_this) { |
2543 SDL_UninitializedVideo(); | |
2544 return -1; | |
2545 } | |
2546 if (_this->GL_SetSwapInterval) { | |
2547 return _this->GL_SetSwapInterval(_this, interval); | |
2548 } else { | |
2549 SDL_SetError("Setting the swap interval is not supported"); | |
2550 return -1; | |
2551 } | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2552 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2553 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2554 int |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2555 SDL_GL_GetSwapInterval(void) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2556 { |
2753 | 2557 if (!_this) { |
2558 SDL_UninitializedVideo(); | |
2559 return -1; | |
2560 } | |
2561 if (_this->GL_GetSwapInterval) { | |
2562 return _this->GL_GetSwapInterval(_this); | |
2563 } else { | |
2564 SDL_SetError("Getting the swap interval is not supported"); | |
2565 return -1; | |
2566 } | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2567 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2568 |
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
|
2569 void |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2570 SDL_GL_SwapWindow(SDL_WindowID windowID) |
0 | 2571 { |
2753 | 2572 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2573 |
2753 | 2574 if (!window) { |
2575 return; | |
2576 } | |
2577 if (!(window->flags & SDL_WINDOW_OPENGL)) { | |
2578 SDL_SetError("The specified window isn't an OpenGL window"); | |
2579 return; | |
2580 } | |
2581 _this->GL_SwapWindow(_this, window); | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2582 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2583 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2584 void |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2585 SDL_GL_DeleteContext(SDL_GLContext context) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2586 { |
2753 | 2587 if (!_this || !context) { |
2588 return; | |
2589 } | |
2590 _this->GL_MakeCurrent(_this, NULL, NULL); | |
2591 _this->GL_DeleteContext(_this, context); | |
0 | 2592 } |
2593 | |
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
|
2594 #if 0 // FIXME |
2744
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
2595 /* |
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
2596 * Utility function used by SDL_WM_SetIcon(); flags & 1 for color key, flags |
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
2597 * & 2 for alpha channel. |
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
2598 */ |
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
|
2599 static void |
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
|
2600 CreateMaskFromColorKeyOrAlpha(SDL_Surface * icon, Uint8 * mask, int flags) |
0 | 2601 { |
2753 | 2602 int x, y; |
2603 Uint32 colorkey; | |
0 | 2604 #define SET_MASKBIT(icon, x, y, mask) \ |
2605 mask[(y*((icon->w+7)/8))+(x/8)] &= ~(0x01<<(7-(x%8))) | |
2606 | |
2753 | 2607 colorkey = icon->format->colorkey; |
2608 switch (icon->format->BytesPerPixel) { | |
2609 case 1: | |
2610 { | |
2611 Uint8 *pixels; | |
2612 for (y = 0; y < icon->h; ++y) { | |
2613 pixels = (Uint8 *) icon->pixels + y * icon->pitch; | |
2614 for (x = 0; x < icon->w; ++x) { | |
2615 if (*pixels++ == colorkey) { | |
2616 SET_MASKBIT(icon, x, y, mask); | |
2617 } | |
2618 } | |
2619 } | |
2620 } | |
2621 break; | |
0 | 2622 |
2753 | 2623 case 2: |
2624 { | |
2625 Uint16 *pixels; | |
2626 for (y = 0; y < icon->h; ++y) { | |
2627 pixels = (Uint16 *) icon->pixels + y * icon->pitch / 2; | |
2628 for (x = 0; x < icon->w; ++x) { | |
2629 if ((flags & 1) && *pixels == colorkey) { | |
2630 SET_MASKBIT(icon, x, y, mask); | |
2631 } else if ((flags & 2) | |
2632 && (*pixels & icon->format->Amask) == 0) { | |
2633 SET_MASKBIT(icon, x, y, mask); | |
2634 } | |
2635 pixels++; | |
2636 } | |
2637 } | |
2638 } | |
2639 break; | |
0 | 2640 |
2753 | 2641 case 4: |
2642 { | |
2643 Uint32 *pixels; | |
2644 for (y = 0; y < icon->h; ++y) { | |
2645 pixels = (Uint32 *) icon->pixels + y * icon->pitch / 4; | |
2646 for (x = 0; x < icon->w; ++x) { | |
2647 if ((flags & 1) && *pixels == colorkey) { | |
2648 SET_MASKBIT(icon, x, y, mask); | |
2649 } else if ((flags & 2) | |
2650 && (*pixels & icon->format->Amask) == 0) { | |
2651 SET_MASKBIT(icon, x, y, mask); | |
2652 } | |
2653 pixels++; | |
2654 } | |
2655 } | |
2656 } | |
2657 break; | |
2658 } | |
0 | 2659 } |
2660 | |
2661 /* | |
2662 * Sets the window manager icon for the display window. | |
2663 */ | |
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
|
2664 void |
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
|
2665 SDL_WM_SetIcon(SDL_Surface * icon, Uint8 * mask) |
0 | 2666 { |
2753 | 2667 if (icon && _this->SetIcon) { |
2668 /* Generate a mask if necessary, and create the icon! */ | |
2669 if (mask == NULL) { | |
2670 int mask_len = icon->h * (icon->w + 7) / 8; | |
2671 int flags = 0; | |
2672 mask = (Uint8 *) SDL_malloc(mask_len); | |
2673 if (mask == NULL) { | |
2674 return; | |
2675 } | |
2676 SDL_memset(mask, ~0, mask_len); | |
2677 if (icon->flags & SDL_SRCCOLORKEY) | |
2678 flags |= 1; | |
2679 if (icon->flags & SDL_SRCALPHA) | |
2680 flags |= 2; | |
2681 if (flags) { | |
2682 CreateMaskFromColorKeyOrAlpha(icon, mask, flags); | |
2683 } | |
2684 _this->SetIcon(_this, icon, mask); | |
2685 SDL_free(mask); | |
2686 } else { | |
2687 _this->SetIcon(_this, icon, mask); | |
2688 } | |
2689 } | |
0 | 2690 } |
2691 #endif | |
2692 | |
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
|
2693 SDL_bool |
2753 | 2694 SDL_GetWindowWMInfo(SDL_WindowID windowID, struct SDL_SysWMinfo *info) |
0 | 2695 { |
2753 | 2696 SDL_Window *window = SDL_GetWindowFromID(windowID); |
0 | 2697 |
2753 | 2698 if (!window || !_this->GetWindowWMInfo) { |
2699 return SDL_FALSE; | |
2700 } | |
2701 return (_this->GetWindowWMInfo(_this, window, info)); | |
0 | 2702 } |
2703 | |
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
|
2704 /* vi: set ts=4 sw=4 expandtab: */ |