Mercurial > sdl-ios-xcode
annotate src/video/SDL_video.c @ 3239:ab5aebd50add
Fix suggested by Bob
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Thu, 20 Aug 2009 04:40:02 +0000 |
parents | 413672b09bb3 |
children | 94fb40a4a9a7 |
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 | |
2999
b2025ca5d7a5
Fixed missing include for SDL_INIT_EVENTTHREAD
Sam Lantinga <slouken@libsdl.org>
parents:
2984
diff
changeset
|
26 #include "SDL.h" |
2984
0b160c970b7e
Fixed some dependency issues with SDL_revision.h
Sam Lantinga <slouken@libsdl.org>
parents:
2967
diff
changeset
|
27 #include "SDL_video.h" |
0 | 28 #include "SDL_sysvideo.h" |
29 #include "SDL_blit.h" | |
30 #include "SDL_pixels_c.h" | |
1918
092bd3a019c5
Starting on the OpenGL renderer...
Sam Lantinga <slouken@libsdl.org>
parents:
1913
diff
changeset
|
31 #include "SDL_renderer_gl.h" |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
32 #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
|
33 #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
|
34 #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
|
35 #include "../events/SDL_events_c.h" |
0 | 36 |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
37 #if SDL_VIDEO_OPENGL_ES |
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
38 #include "SDL_opengles.h" |
2753 | 39 #endif /* SDL_VIDEO_OPENGL_ES */ |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
40 |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
41 #if SDL_VIDEO_OPENGL |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
42 #include "SDL_opengl.h" |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
43 |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
44 /* On Windows, windows.h defines CreateWindow */ |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
45 #ifdef CreateWindow |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
46 #undef CreateWindow |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
47 #endif |
2753 | 48 #endif /* SDL_VIDEO_OPENGL */ |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
49 |
0 | 50 /* Available video drivers */ |
3166
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
51 static VideoBootStrap *bootstrap[] = { |
1931
103c6fec2a60
The Mac OS X Cocoa video driver is under construction...
Sam Lantinga <slouken@libsdl.org>
parents:
1930
diff
changeset
|
52 #if SDL_VIDEO_DRIVER_COCOA |
2753 | 53 &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
|
54 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
55 #if SDL_VIDEO_DRIVER_X11 |
2753 | 56 &X11_bootstrap, |
0 | 57 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
58 #if SDL_VIDEO_DRIVER_NANOX |
2753 | 59 &NX_bootstrap, |
30
57bf11a5efd7
Added initial support for Nano-X (thanks Hsieh-Fu!)
Sam Lantinga <slouken@lokigames.com>
parents:
19
diff
changeset
|
60 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
61 #if SDL_VIDEO_DRIVER_IPOD |
2753 | 62 &iPod_bootstrap, |
1140
af8b0f9ac2f4
iPod Linux framebuffer support.
Ryan C. Gordon <icculus@icculus.org>
parents:
1133
diff
changeset
|
63 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
64 #if SDL_VIDEO_DRIVER_WSCONS |
2753 | 65 &WSCONS_bootstrap, |
1187 | 66 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
67 #if SDL_VIDEO_DRIVER_FBCON |
2753 | 68 &FBCON_bootstrap, |
0 | 69 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
70 #if SDL_VIDEO_DRIVER_DIRECTFB |
2753 | 71 &DirectFB_bootstrap, |
167
cb384ef627f6
Added support for DirectFB video on Linux (thanks Denis!)
Sam Lantinga <slouken@libsdl.org>
parents:
125
diff
changeset
|
72 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
73 #if SDL_VIDEO_DRIVER_PS2GS |
2753 | 74 &PS2GS_bootstrap, |
0 | 75 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
76 #if SDL_VIDEO_DRIVER_VGL |
2753 | 77 &VGL_bootstrap, |
75
b0ae59d0f3ee
Added patches from FreeBSD ports
Sam Lantinga <slouken@lokigames.com>
parents:
58
diff
changeset
|
78 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
79 #if SDL_VIDEO_DRIVER_SVGALIB |
2753 | 80 &SVGALIB_bootstrap, |
0 | 81 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
82 #if SDL_VIDEO_DRIVER_GAPI |
2753 | 83 &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
|
84 #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
|
85 #if SDL_VIDEO_DRIVER_WIN32 |
2753 | 86 &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
|
87 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
88 #if SDL_VIDEO_DRIVER_BWINDOW |
2753 | 89 &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
|
90 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
91 #if SDL_VIDEO_DRIVER_PHOTON |
3083
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3058
diff
changeset
|
92 &photon_bootstrap, |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3058
diff
changeset
|
93 #endif |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3058
diff
changeset
|
94 #if SDL_VIDEO_DRIVER_QNXGF |
0bc41e0361d3
Date: Mon, 2 Mar 2009 16:27:42 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3058
diff
changeset
|
95 &qnxgf_bootstrap, |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
96 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
97 #if SDL_VIDEO_DRIVER_EPOC |
2753 | 98 &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
|
99 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
100 #if SDL_VIDEO_DRIVER_XBIOS |
2753 | 101 &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
|
102 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
103 #if SDL_VIDEO_DRIVER_GEM |
2753 | 104 &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
|
105 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
106 #if SDL_VIDEO_DRIVER_DC |
2753 | 107 &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
|
108 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
109 #if SDL_VIDEO_DRIVER_RISCOS |
2753 | 110 &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
|
111 #endif |
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
112 #if SDL_VIDEO_DRIVER_OS2FS |
2753 | 113 &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
|
114 #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
|
115 #if SDL_VIDEO_DRIVER_NDS |
2753 | 116 &NDS_bootstrap, |
2735
204be4fc2726
Final merge of Google Summer of Code 2008 work...
Sam Lantinga <slouken@libsdl.org>
parents:
2702
diff
changeset
|
117 #endif |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
118 #if SDL_VIDEO_DRIVER_UIKIT |
2753 | 119 &UIKIT_bootstrap, |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
120 #endif |
1361
19418e4422cb
New configure-based build system. Still work in progress, but much improved
Sam Lantinga <slouken@libsdl.org>
parents:
1358
diff
changeset
|
121 #if SDL_VIDEO_DRIVER_DUMMY |
2753 | 122 &DUMMY_bootstrap, |
610
95433459fbd2
Date: Mon, 14 Apr 2003 22:08:27 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
580
diff
changeset
|
123 #endif |
3161
494559cc723b
OpenPandora support added by David Carré
Sam Lantinga <slouken@libsdl.org>
parents:
3139
diff
changeset
|
124 #if SDL_VIDEO_DRIVER_PANDORA |
494559cc723b
OpenPandora support added by David Carré
Sam Lantinga <slouken@libsdl.org>
parents:
3139
diff
changeset
|
125 &PND_bootstrap, |
494559cc723b
OpenPandora support added by David Carré
Sam Lantinga <slouken@libsdl.org>
parents:
3139
diff
changeset
|
126 #endif |
2753 | 127 NULL |
0 | 128 }; |
173
83018110dce8
Added initial support for EPOC/Symbian OS (thanks Hannu!)
Sam Lantinga <slouken@libsdl.org>
parents:
167
diff
changeset
|
129 |
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
|
130 static SDL_VideoDevice *_this = NULL; |
0 | 131 |
132 /* Various local functions */ | |
2876 | 133 static void SDL_UpdateWindowGrab(SDL_Window * window); |
1895
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
134 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
135 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
|
136 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
|
137 { |
2753 | 138 SDL_DisplayMode a = *(const SDL_DisplayMode *) A; |
139 SDL_DisplayMode b = *(const SDL_DisplayMode *) B; | |
0 | 140 |
2753 | 141 if (a.w != b.w) { |
142 return b.w - a.w; | |
143 } | |
144 if (a.h != b.h) { | |
145 return b.h - a.h; | |
146 } | |
147 if (SDL_BITSPERPIXEL(a.format) != SDL_BITSPERPIXEL(b.format)) { | |
148 return SDL_BITSPERPIXEL(b.format) - SDL_BITSPERPIXEL(a.format); | |
149 } | |
3178
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
150 if (SDL_PIXELLAYOUT(a.format) != SDL_PIXELLAYOUT(b.format)) { |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
151 return SDL_PIXELLAYOUT(b.format) - SDL_PIXELLAYOUT(a.format); |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
152 } |
2753 | 153 if (a.refresh_rate != b.refresh_rate) { |
154 return b.refresh_rate - a.refresh_rate; | |
155 } | |
156 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
|
157 } |
0 | 158 |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
159 static void |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
160 SDL_UninitializedVideo() |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
161 { |
2753 | 162 SDL_SetError("Video subsystem has not been initialized"); |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
163 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
164 |
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
|
165 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
|
166 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
|
167 { |
2753 | 168 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
|
169 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
170 |
2753 | 171 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
|
172 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
|
173 { |
2753 | 174 if (index >= 0 && index < SDL_GetNumVideoDrivers()) { |
175 return bootstrap[index]->name; | |
176 } | |
177 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
|
178 } |
0 | 179 |
180 /* | |
181 * Initialize the video and event subsystems -- determine native pixel format | |
182 */ | |
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
|
183 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
|
184 SDL_VideoInit(const char *driver_name, Uint32 flags) |
0 | 185 { |
2753 | 186 SDL_VideoDevice *video; |
187 int index; | |
188 int i; | |
0 | 189 |
2753 | 190 /* 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
|
191 #if defined(MUST_THREAD_EVENTS) |
2753 | 192 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
|
193 #elif defined(CANT_THREAD_EVENTS) |
2753 | 194 if ((flags & SDL_INIT_EVENTTHREAD) == SDL_INIT_EVENTTHREAD) { |
195 SDL_SetError("OS doesn't support threaded events"); | |
196 return -1; | |
197 } | |
1190 | 198 #endif |
229
4d24d5a660a8
Fix a crash if an OpenGL video mode can't be set.
Sam Lantinga <slouken@libsdl.org>
parents:
216
diff
changeset
|
199 |
2753 | 200 /* Start the event loop */ |
201 if (SDL_StartEventLoop(flags) < 0) { | |
202 return -1; | |
203 } | |
204 /* Check to make sure we don't overwrite '_this' */ | |
205 if (_this != NULL) { | |
206 SDL_VideoQuit(); | |
207 } | |
208 /* Select the proper video driver */ | |
209 index = 0; | |
210 video = NULL; | |
211 if (driver_name == NULL) { | |
212 driver_name = SDL_getenv("SDL_VIDEODRIVER"); | |
213 } | |
214 if (driver_name != NULL) { | |
215 for (i = 0; bootstrap[i]; ++i) { | |
216 if (SDL_strcasecmp(bootstrap[i]->name, driver_name) == 0) { | |
217 if (bootstrap[i]->available()) { | |
218 video = bootstrap[i]->create(index); | |
219 } | |
220 break; | |
221 } | |
222 } | |
223 } else { | |
224 for (i = 0; bootstrap[i]; ++i) { | |
225 if (bootstrap[i]->available()) { | |
226 video = bootstrap[i]->create(index); | |
227 if (video != NULL) { | |
228 break; | |
229 } | |
230 } | |
231 } | |
232 } | |
233 if (video == NULL) { | |
234 if (driver_name) { | |
235 SDL_SetError("%s not available", driver_name); | |
236 } else { | |
237 SDL_SetError("No available video device"); | |
238 } | |
239 return -1; | |
240 } | |
241 _this = video; | |
242 _this->name = bootstrap[i]->name; | |
243 _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
|
244 |
0 | 245 |
2753 | 246 /* Set some very sane GL defaults */ |
247 _this->gl_config.driver_loaded = 0; | |
248 _this->gl_config.dll_handle = NULL; | |
249 _this->gl_config.red_size = 3; | |
250 _this->gl_config.green_size = 3; | |
251 _this->gl_config.blue_size = 2; | |
252 _this->gl_config.alpha_size = 0; | |
253 _this->gl_config.buffer_size = 0; | |
254 _this->gl_config.depth_size = 16; | |
255 _this->gl_config.stencil_size = 0; | |
256 _this->gl_config.double_buffer = 1; | |
257 _this->gl_config.accum_red_size = 0; | |
258 _this->gl_config.accum_green_size = 0; | |
259 _this->gl_config.accum_blue_size = 0; | |
260 _this->gl_config.accum_alpha_size = 0; | |
261 _this->gl_config.stereo = 0; | |
262 _this->gl_config.multisamplebuffers = 0; | |
263 _this->gl_config.multisamplesamples = 0; | |
264 _this->gl_config.retained_backing = 1; | |
265 _this->gl_config.accelerated = -1; /* not known, don't set */ | |
3100
7dc982143c06
Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents:
3099
diff
changeset
|
266 _this->gl_config.major_version = 2; |
7dc982143c06
Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents:
3099
diff
changeset
|
267 _this->gl_config.minor_version = 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
|
268 |
2753 | 269 /* Initialize the video subsystem */ |
270 if (_this->VideoInit(_this) < 0) { | |
271 SDL_VideoQuit(); | |
272 return -1; | |
273 } | |
274 /* Make sure some displays were added */ | |
275 if (_this->num_displays == 0) { | |
276 SDL_SetError("The video driver did not add any displays"); | |
277 SDL_VideoQuit(); | |
278 return (-1); | |
279 } | |
280 /* The software renderer is always available */ | |
281 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
|
282 #if SDL_VIDEO_RENDER_OGL |
2753 | 283 SDL_AddRenderDriver(i, &GL_RenderDriver); |
2744
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
284 #endif |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
285 |
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
286 #if SDL_VIDEO_RENDER_OGL_ES |
2753 | 287 SDL_AddRenderDriver(i, &GL_ES_RenderDriver); |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
288 #endif |
2753 | 289 if (_this->displays[i].num_render_drivers > 0) { |
290 SDL_AddRenderDriver(i, &SW_RenderDriver); | |
291 } | |
292 } | |
0 | 293 |
2753 | 294 /* We're ready to go! */ |
295 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
|
296 } |
c121d94672cb
SDL 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 |
2753 | 298 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
|
299 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
|
300 { |
2753 | 301 if (!_this) { |
302 SDL_UninitializedVideo(); | |
303 return NULL; | |
304 } | |
305 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
|
306 } |
0 | 307 |
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
|
308 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
|
309 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
|
310 { |
2753 | 311 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
|
312 } |
c121d94672cb
SDL 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 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
314 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
|
315 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
|
316 { |
2753 | 317 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
|
318 |
2753 | 319 SDL_zero(display); |
320 if (desktop_mode) { | |
321 display.desktop_mode = *desktop_mode; | |
322 } | |
323 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
|
324 |
2753 | 325 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
|
326 } |
0 | 327 |
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
|
328 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
|
329 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
|
330 { |
2753 | 331 SDL_VideoDisplay *displays; |
332 int index = -1; | |
0 | 333 |
2753 | 334 displays = |
335 SDL_realloc(_this->displays, | |
336 (_this->num_displays + 1) * sizeof(*displays)); | |
337 if (displays) { | |
338 index = _this->num_displays++; | |
339 displays[index] = *display; | |
340 displays[index].device = _this; | |
341 _this->displays = displays; | |
342 } else { | |
343 SDL_OutOfMemory(); | |
344 } | |
345 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
|
346 } |
0 | 347 |
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
|
348 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
|
349 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
|
350 { |
2753 | 351 if (!_this) { |
352 SDL_UninitializedVideo(); | |
353 return 0; | |
354 } | |
355 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
|
356 } |
0 | 357 |
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
|
358 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
|
359 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
|
360 { |
2753 | 361 if (!_this) { |
362 SDL_UninitializedVideo(); | |
363 return (-1); | |
364 } | |
365 if (index < 0 || index >= _this->num_displays) { | |
366 SDL_SetError("index must be in the range 0 - %d", | |
367 _this->num_displays - 1); | |
368 return -1; | |
369 } | |
370 _this->current_display = index; | |
371 return 0; | |
1963
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
372 } |
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
373 |
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
374 int |
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
375 SDL_GetCurrentVideoDisplay(void) |
2590b68531ef
Added SDL_GetCurrentVideoDisplay()
Sam Lantinga <slouken@libsdl.org>
parents:
1956
diff
changeset
|
376 { |
2753 | 377 if (!_this) { |
378 SDL_UninitializedVideo(); | |
379 return (-1); | |
380 } | |
381 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
|
382 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
383 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
384 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
|
385 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
|
386 { |
2753 | 387 SDL_VideoDisplay *display = &_this->displays[displayIndex]; |
388 SDL_DisplayMode *modes; | |
389 int i, nmodes; | |
910
4ab6d1fd028f
Date: Sat, 26 Jun 2004 14:58:42 +0300
Sam Lantinga <slouken@libsdl.org>
parents:
883
diff
changeset
|
390 |
2753 | 391 /* Make sure we don't already have the mode in the list */ |
392 modes = display->display_modes; | |
393 nmodes = display->num_display_modes; | |
394 for (i = nmodes; i--;) { | |
395 if (SDL_memcmp(mode, &modes[i], sizeof(*mode)) == 0) { | |
396 return SDL_FALSE; | |
397 } | |
398 } | |
910
4ab6d1fd028f
Date: Sat, 26 Jun 2004 14:58:42 +0300
Sam Lantinga <slouken@libsdl.org>
parents:
883
diff
changeset
|
399 |
2753 | 400 /* Go ahead and add the new mode */ |
401 if (nmodes == display->max_display_modes) { | |
402 modes = | |
403 SDL_realloc(modes, | |
404 (display->max_display_modes + 32) * sizeof(*modes)); | |
405 if (!modes) { | |
406 return SDL_FALSE; | |
407 } | |
408 display->display_modes = modes; | |
409 display->max_display_modes += 32; | |
410 } | |
411 modes[nmodes] = *mode; | |
412 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
|
413 |
3178
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
414 /* Re-sort video modes */ |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
415 SDL_qsort(display->display_modes, display->num_display_modes, |
3186 | 416 sizeof(SDL_DisplayMode), cmpmodes); |
3178
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
417 |
2753 | 418 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
|
419 } |
0 | 420 |
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
|
421 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
|
422 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
|
423 { |
2753 | 424 if (_this) { |
425 SDL_VideoDisplay *display = &SDL_CurrentDisplay; | |
426 if (!display->num_display_modes && _this->GetDisplayModes) { | |
427 _this->GetDisplayModes(_this); | |
428 SDL_qsort(display->display_modes, display->num_display_modes, | |
429 sizeof(SDL_DisplayMode), cmpmodes); | |
430 } | |
431 return display->num_display_modes; | |
432 } | |
433 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
|
434 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
435 |
1967
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
436 int |
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
437 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
|
438 { |
2753 | 439 if (index < 0 || index >= SDL_GetNumDisplayModes()) { |
440 SDL_SetError("index must be in the range of 0 - %d", | |
441 SDL_GetNumDisplayModes() - 1); | |
442 return -1; | |
443 } | |
444 if (mode) { | |
445 *mode = SDL_CurrentDisplay.display_modes[index]; | |
446 } | |
447 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
|
448 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
449 |
1967
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
450 int |
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
451 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
|
452 { |
2753 | 453 if (!_this) { |
454 SDL_UninitializedVideo(); | |
455 return -1; | |
456 } | |
457 if (mode) { | |
458 *mode = SDL_CurrentDisplay.desktop_mode; | |
459 } | |
460 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
|
461 } |
0 | 462 |
1967
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
463 int |
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
464 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
|
465 { |
2753 | 466 if (!_this) { |
467 SDL_UninitializedVideo(); | |
468 return -1; | |
469 } | |
470 if (mode) { | |
471 *mode = SDL_CurrentDisplay.current_mode; | |
472 } | |
473 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
|
474 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
475 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
476 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
|
477 SDL_GetClosestDisplayMode(const SDL_DisplayMode * mode, |
2753 | 478 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
|
479 { |
2753 | 480 Uint32 target_format; |
481 int target_refresh_rate; | |
482 int i; | |
483 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
|
484 |
2753 | 485 if (!_this || !mode || !closest) { |
486 return NULL; | |
487 } | |
488 /* Default to the desktop format */ | |
489 if (mode->format) { | |
490 target_format = mode->format; | |
491 } else { | |
492 target_format = SDL_CurrentDisplay.desktop_mode.format; | |
493 } | |
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
|
494 |
2753 | 495 /* Default to the desktop refresh rate */ |
496 if (mode->refresh_rate) { | |
497 target_refresh_rate = mode->refresh_rate; | |
498 } else { | |
499 target_refresh_rate = SDL_CurrentDisplay.desktop_mode.refresh_rate; | |
500 } | |
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
|
501 |
2753 | 502 match = NULL; |
503 for (i = 0; i < SDL_GetNumDisplayModes(); ++i) { | |
504 current = &SDL_CurrentDisplay.display_modes[i]; | |
0 | 505 |
2789
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
506 if (current->w && (current->w < mode->w)) { |
2753 | 507 /* Out of sorted modes large enough here */ |
508 break; | |
509 } | |
2789
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
510 if (current->h && (current->h < mode->h)) { |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
511 if (current->w && (current->w == mode->w)) { |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
512 /* Out of sorted modes large enough here */ |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
513 break; |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
514 } |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
515 /* 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
|
516 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
|
517 modes may still follow. */ |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
518 continue; |
985001797115
Fixed bug #605, per Martin's suggestion
Sam Lantinga <slouken@libsdl.org>
parents:
2787
diff
changeset
|
519 } |
2753 | 520 if (!match || current->w < match->w || current->h < match->h) { |
521 match = current; | |
522 continue; | |
523 } | |
524 if (current->format != match->format) { | |
525 /* Sorted highest depth to lowest */ | |
526 if (current->format == target_format || | |
527 (SDL_BITSPERPIXEL(current->format) >= | |
528 SDL_BITSPERPIXEL(target_format) | |
529 && SDL_PIXELTYPE(current->format) == | |
530 SDL_PIXELTYPE(target_format))) { | |
531 match = current; | |
532 } | |
533 continue; | |
534 } | |
535 if (current->refresh_rate != match->refresh_rate) { | |
536 /* Sorted highest refresh to lowest */ | |
537 if (current->refresh_rate >= target_refresh_rate) { | |
538 match = current; | |
539 } | |
540 } | |
541 } | |
542 if (match) { | |
543 if (match->format) { | |
544 closest->format = match->format; | |
545 } else { | |
546 closest->format = mode->format; | |
547 } | |
548 if (match->w && match->h) { | |
549 closest->w = match->w; | |
550 closest->h = match->h; | |
551 } else { | |
552 closest->w = mode->w; | |
553 closest->h = mode->h; | |
554 } | |
555 if (match->refresh_rate) { | |
556 closest->refresh_rate = match->refresh_rate; | |
557 } else { | |
558 closest->refresh_rate = mode->refresh_rate; | |
559 } | |
560 closest->driverdata = match->driverdata; | |
0 | 561 |
2753 | 562 /* |
563 * Pick some reasonable defaults if the app and driver don't | |
564 * care | |
565 */ | |
566 if (!closest->format) { | |
567 closest->format = SDL_PIXELFORMAT_RGB888; | |
568 } | |
569 if (!closest->w) { | |
570 closest->w = 640; | |
571 } | |
572 if (!closest->h) { | |
573 closest->h = 480; | |
574 } | |
575 return closest; | |
576 } | |
577 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
|
578 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
579 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
580 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
|
581 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
|
582 { |
2753 | 583 SDL_VideoDisplay *display; |
584 SDL_DisplayMode display_mode; | |
585 SDL_DisplayMode current_mode; | |
586 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
|
587 |
2753 | 588 if (!_this) { |
589 SDL_UninitializedVideo(); | |
590 return -1; | |
591 } | |
592 display = &SDL_CurrentDisplay; | |
593 if (!mode) { | |
594 mode = &display->desktop_mode; | |
595 } | |
596 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
|
597 |
2753 | 598 /* Default to the current mode */ |
599 if (!display_mode.format) { | |
600 display_mode.format = display->current_mode.format; | |
601 } | |
602 if (!display_mode.w) { | |
603 display_mode.w = display->current_mode.w; | |
604 } | |
605 if (!display_mode.h) { | |
606 display_mode.h = display->current_mode.h; | |
607 } | |
608 if (!display_mode.refresh_rate) { | |
609 display_mode.refresh_rate = display->current_mode.refresh_rate; | |
610 } | |
611 /* Get a good video mode, the closest one possible */ | |
612 if (!SDL_GetClosestDisplayMode(&display_mode, &display_mode)) { | |
613 SDL_SetError("No video mode large enough for %dx%d", | |
614 display_mode.w, display_mode.h); | |
615 return -1; | |
616 } | |
617 /* See if there's anything left to do */ | |
618 SDL_GetCurrentDisplayMode(¤t_mode); | |
619 if (SDL_memcmp(&display_mode, ¤t_mode, sizeof(display_mode)) == 0) { | |
620 return 0; | |
621 } | |
622 /* Actually change the display mode */ | |
623 if (_this->SetDisplayMode(_this, &display_mode) < 0) { | |
624 return -1; | |
625 } | |
626 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
|
627 |
2753 | 628 /* Set up a palette, if necessary */ |
629 if (SDL_ISPIXELFORMAT_INDEXED(display_mode.format)) { | |
630 ncolors = (1 << SDL_BITSPERPIXEL(display_mode.format)); | |
631 } else { | |
632 ncolors = 0; | |
633 } | |
634 if ((!ncolors && display->palette) || (ncolors && !display->palette) | |
635 || (ncolors && ncolors != display->palette->ncolors)) { | |
636 if (display->palette) { | |
637 SDL_FreePalette(display->palette); | |
638 display->palette = NULL; | |
639 } | |
640 if (ncolors) { | |
641 display->palette = SDL_AllocPalette(ncolors); | |
642 if (!display->palette) { | |
643 return -1; | |
644 } | |
645 SDL_DitherColors(display->palette->colors, | |
646 SDL_BITSPERPIXEL(display_mode.format)); | |
647 } | |
648 } | |
649 /* Move any fullscreen windows into position */ | |
650 for (i = 0; i < display->num_windows; ++i) { | |
651 SDL_Window *window = &display->windows[i]; | |
652 if (FULLSCREEN_VISIBLE(window)) { | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
653 SDL_SetWindowPosition(window->id, window->x, window->y); |
2753 | 654 } |
655 } | |
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
|
656 |
2753 | 657 return 0; |
0 | 658 } |
659 | |
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
|
660 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
|
661 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
|
662 { |
2753 | 663 SDL_VideoDisplay *display; |
664 SDL_DisplayMode fullscreen_mode; | |
665 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
|
666 |
2753 | 667 if (!_this) { |
668 SDL_UninitializedVideo(); | |
669 return -1; | |
670 } | |
671 display = &SDL_CurrentDisplay; | |
672 if (!mode) { | |
673 mode = &display->desktop_mode; | |
674 } | |
2869
2fe507a2ef7d
Whoops, the X11 driver doesn't support fullscreen modes (yet)
Sam Lantinga <slouken@libsdl.org>
parents:
2860
diff
changeset
|
675 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
|
676 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
|
677 return -1; |
2fe507a2ef7d
Whoops, the X11 driver doesn't support fullscreen modes (yet)
Sam Lantinga <slouken@libsdl.org>
parents:
2860
diff
changeset
|
678 } |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3091
diff
changeset
|
679 |
2753 | 680 if (SDL_memcmp |
681 (&fullscreen_mode, &display->fullscreen_mode, | |
682 sizeof(fullscreen_mode)) == 0) { | |
683 /* Nothing to do... */ | |
684 return 0; | |
685 } | |
686 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
|
687 |
2753 | 688 /* Actually set the mode if we have a fullscreen window visible */ |
689 for (i = 0; i < display->num_windows; ++i) { | |
690 SDL_Window *window = &display->windows[i]; | |
691 if (FULLSCREEN_VISIBLE(window)) { | |
692 if (SDL_SetDisplayMode(&display->fullscreen_mode) < 0) { | |
693 return -1; | |
694 } | |
695 } | |
696 if (window->flags & SDL_WINDOW_FULLSCREEN) { | |
697 SDL_OnWindowResized(window); | |
698 } | |
699 } | |
700 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
|
701 } |
c121d94672cb
SDL 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 |
1967
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
703 int |
01e29c3e9a29
In general, fill in pointers to structures, rather than return them.
Sam Lantinga <slouken@libsdl.org>
parents:
1965
diff
changeset
|
704 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
|
705 { |
2753 | 706 if (!_this) { |
707 SDL_UninitializedVideo(); | |
708 return -1; | |
709 } | |
710 if (mode) { | |
711 *mode = SDL_CurrentDisplay.fullscreen_mode; | |
712 } | |
713 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
|
714 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
715 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
716 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
|
717 SDL_SetDisplayPalette(const SDL_Color * colors, int firstcolor, int ncolors) |
0 | 718 { |
2753 | 719 SDL_Palette *palette; |
720 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
|
721 |
2753 | 722 if (!_this) { |
723 SDL_UninitializedVideo(); | |
724 return -1; | |
725 } | |
726 palette = SDL_CurrentDisplay.palette; | |
727 if (!palette) { | |
728 SDL_SetError("Display mode does not have a palette"); | |
729 return -1; | |
730 } | |
731 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
|
732 |
2753 | 733 if (_this->SetDisplayPalette) { |
734 if (_this->SetDisplayPalette(_this, palette) < 0) { | |
735 status = -1; | |
736 } | |
737 } | |
738 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
|
739 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
740 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
741 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
|
742 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
|
743 { |
2753 | 744 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
|
745 |
2753 | 746 if (!_this) { |
747 SDL_UninitializedVideo(); | |
748 return -1; | |
749 } | |
750 palette = SDL_CurrentDisplay.palette; | |
751 if (!palette->ncolors) { | |
752 SDL_SetError("Display mode does not have a palette"); | |
753 return -1; | |
754 } | |
755 if (firstcolor < 0 || (firstcolor + ncolors) > palette->ncolors) { | |
756 SDL_SetError("Palette indices are out of range"); | |
757 return -1; | |
758 } | |
759 SDL_memcpy(colors, &palette->colors[firstcolor], | |
760 ncolors * sizeof(*colors)); | |
761 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
|
762 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
763 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
764 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
|
765 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
|
766 { |
2753 | 767 const Uint32 allowed_flags = (SDL_WINDOW_FULLSCREEN | |
768 SDL_WINDOW_OPENGL | | |
769 SDL_WINDOW_BORDERLESS | | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
770 SDL_WINDOW_RESIZABLE | |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
771 SDL_WINDOW_INPUT_GRABBED); |
2753 | 772 SDL_VideoDisplay *display; |
773 SDL_Window window; | |
774 int num_windows; | |
775 SDL_Window *windows; | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
776 |
2753 | 777 if (!_this) { |
778 SDL_UninitializedVideo(); | |
779 return 0; | |
780 } | |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
781 if (flags & SDL_WINDOW_OPENGL) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
782 if (!_this->GL_CreateContext) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
783 SDL_SetError("No OpenGL support in video driver"); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
784 return 0; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
785 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
786 SDL_GL_LoadLibrary(NULL); |
2753 | 787 } |
788 SDL_zero(window); | |
789 window.id = _this->next_object_id++; | |
790 window.x = x; | |
791 window.y = y; | |
792 window.w = w; | |
793 window.h = h; | |
794 window.flags = (flags & allowed_flags); | |
795 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
|
796 |
2753 | 797 if (_this->CreateWindow && _this->CreateWindow(_this, &window) < 0) { |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
798 if (flags & SDL_WINDOW_OPENGL) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
799 SDL_GL_UnloadLibrary(); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
800 } |
2753 | 801 return 0; |
802 } | |
803 display = &SDL_CurrentDisplay; | |
804 num_windows = display->num_windows; | |
805 windows = | |
806 SDL_realloc(display->windows, (num_windows + 1) * sizeof(*windows)); | |
807 if (!windows) { | |
808 if (_this->DestroyWindow) { | |
809 _this->DestroyWindow(_this, &window); | |
810 } | |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
811 if (flags & SDL_WINDOW_OPENGL) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
812 SDL_GL_UnloadLibrary(); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
813 } |
2753 | 814 return 0; |
815 } | |
816 windows[num_windows] = window; | |
817 display->windows = windows; | |
818 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
|
819 |
2753 | 820 if (title) { |
821 SDL_SetWindowTitle(window.id, title); | |
822 } | |
823 if (flags & SDL_WINDOW_MAXIMIZED) { | |
824 SDL_MaximizeWindow(window.id); | |
825 } | |
826 if (flags & SDL_WINDOW_MINIMIZED) { | |
827 SDL_MinimizeWindow(window.id); | |
828 } | |
829 if (flags & SDL_WINDOW_SHOWN) { | |
830 SDL_ShowWindow(window.id); | |
831 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
832 SDL_UpdateWindowGrab(&window); |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
833 |
2753 | 834 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
|
835 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
836 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
837 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
|
838 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
|
839 { |
2753 | 840 SDL_VideoDisplay *display; |
841 SDL_Window window; | |
842 int num_windows; | |
843 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
|
844 |
2753 | 845 if (!_this) { |
846 SDL_UninitializedVideo(); | |
847 return (0); | |
848 } | |
849 SDL_zero(window); | |
850 window.id = _this->next_object_id++; | |
851 window.display = _this->current_display; | |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
852 window.flags = SDL_WINDOW_FOREIGN; |
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
|
853 |
2753 | 854 if (!_this->CreateWindowFrom || |
855 _this->CreateWindowFrom(_this, &window, data) < 0) { | |
856 return 0; | |
857 } | |
858 display = &SDL_CurrentDisplay; | |
859 num_windows = display->num_windows; | |
860 windows = | |
861 SDL_realloc(display->windows, (num_windows + 1) * sizeof(*windows)); | |
862 if (!windows) { | |
863 if (_this->DestroyWindow) { | |
864 _this->DestroyWindow(_this, &window); | |
865 } | |
866 if (window.title) { | |
867 SDL_free(window.title); | |
868 } | |
869 return 0; | |
870 } | |
871 windows[num_windows] = window; | |
872 display->windows = windows; | |
873 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
|
874 |
2753 | 875 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
|
876 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
877 |
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
|
878 int |
1928
861bc36f0ab3
Fixed crash with multiple windows
Sam Lantinga <slouken@libsdl.org>
parents:
1926
diff
changeset
|
879 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
|
880 { |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
881 const Uint32 allowed_flags = (SDL_WINDOW_FULLSCREEN | |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
882 SDL_WINDOW_OPENGL | |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
883 SDL_WINDOW_BORDERLESS | |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
884 SDL_WINDOW_RESIZABLE | |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
885 SDL_WINDOW_INPUT_GRABBED); |
2753 | 886 char *title = window->title; |
1956
ba0d62354872
Simplified driver window creation code.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
887 |
2753 | 888 if ((flags & SDL_WINDOW_OPENGL) && !_this->GL_CreateContext) { |
889 SDL_SetError("No OpenGL support in video driver"); | |
890 return -1; | |
891 } | |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
892 if ((window->flags & SDL_WINDOW_OPENGL) != (flags & SDL_WINDOW_OPENGL)) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
893 if (flags & SDL_WINDOW_OPENGL) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
894 SDL_GL_LoadLibrary(NULL); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
895 } else { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
896 SDL_GL_UnloadLibrary(); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
897 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
898 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
899 |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
900 if (window->flags & SDL_WINDOW_FOREIGN) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
901 /* Can't destroy and re-create foreign windows, hrm */ |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
902 flags |= SDL_WINDOW_FOREIGN; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
903 } else { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
904 flags &= ~SDL_WINDOW_FOREIGN; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
905 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
906 |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
907 if (_this->DestroyWindow && !(flags & SDL_WINDOW_FOREIGN)) { |
2753 | 908 _this->DestroyWindow(_this, window); |
909 } | |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
910 |
2753 | 911 window->title = NULL; |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
912 window->flags = (flags & allowed_flags); |
1956
ba0d62354872
Simplified driver window creation code.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
913 |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
914 if (_this->CreateWindow && !(flags & SDL_WINDOW_FOREIGN)) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
915 if (_this->CreateWindow(_this, window) < 0) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
916 if (flags & SDL_WINDOW_OPENGL) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
917 SDL_GL_UnloadLibrary(); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
918 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
919 return -1; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
920 } |
2753 | 921 } |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
922 |
2753 | 923 if (title) { |
924 SDL_SetWindowTitle(window->id, title); | |
925 SDL_free(title); | |
926 } | |
927 if (flags & SDL_WINDOW_MAXIMIZED) { | |
928 SDL_MaximizeWindow(window->id); | |
929 } | |
930 if (flags & SDL_WINDOW_MINIMIZED) { | |
931 SDL_MinimizeWindow(window->id); | |
932 } | |
933 if (flags & SDL_WINDOW_SHOWN) { | |
934 SDL_ShowWindow(window->id); | |
935 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
936 SDL_UpdateWindowGrab(window); |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
937 |
2753 | 938 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
|
939 } |
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
|
940 |
2753 | 941 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
|
942 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
|
943 { |
2753 | 944 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
|
945 |
2753 | 946 if (!_this) { |
947 SDL_UninitializedVideo(); | |
948 return NULL; | |
949 } | |
950 for (i = 0; i < _this->num_displays; ++i) { | |
951 SDL_VideoDisplay *display = &_this->displays[i]; | |
952 for (j = 0; j < display->num_windows; ++j) { | |
953 SDL_Window *window = &display->windows[j]; | |
954 if (window->id == windowID) { | |
955 return window; | |
956 } | |
957 } | |
958 } | |
959 return NULL; | |
0 | 960 } |
961 | |
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
|
962 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
|
963 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
|
964 { |
2753 | 965 if (!_this) { |
966 SDL_UninitializedVideo(); | |
967 return NULL; | |
968 } | |
969 if (!window) { | |
970 return NULL; | |
971 } | |
972 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
|
973 } |
c121d94672cb
SDL 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 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
|
976 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
|
977 { |
2753 | 978 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
|
979 |
2753 | 980 if (!window) { |
981 return 0; | |
982 } | |
983 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
|
984 } |
c121d94672cb
SDL 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 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
|
987 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
|
988 { |
2753 | 989 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1956
ba0d62354872
Simplified driver window creation code.
Sam Lantinga <slouken@libsdl.org>
parents:
1952
diff
changeset
|
990 |
2753 | 991 if (!window || title == window->title) { |
992 return; | |
993 } | |
994 if (window->title) { | |
995 SDL_free(window->title); | |
996 } | |
997 if (title) { | |
998 window->title = SDL_strdup(title); | |
999 } else { | |
1000 window->title = NULL; | |
1001 } | |
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
|
1002 |
2753 | 1003 if (_this->SetWindowTitle) { |
1004 _this->SetWindowTitle(_this, window); | |
1005 } | |
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
|
1006 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1007 |
2753 | 1008 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
|
1009 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
|
1010 { |
2753 | 1011 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
|
1012 |
2753 | 1013 if (!window) { |
1014 return NULL; | |
1015 } | |
1016 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
|
1017 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1018 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1019 void |
2967
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1020 SDL_SetWindowIcon(SDL_WindowID windowID, SDL_Surface * icon) |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1021 { |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1022 SDL_Window *window = SDL_GetWindowFromID(windowID); |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1023 |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1024 if (!window) { |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1025 return; |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1026 } |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1027 if (_this->SetWindowIcon) { |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1028 _this->SetWindowIcon(_this, window, icon); |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1029 } |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1030 } |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1031 |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1032 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
|
1033 SDL_SetWindowData(SDL_WindowID windowID, void *userdata) |
0 | 1034 { |
2753 | 1035 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
|
1036 |
2753 | 1037 if (!window) { |
1038 return; | |
1039 } | |
1040 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
|
1041 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1042 |
2753 | 1043 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
|
1044 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
|
1045 { |
2753 | 1046 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
|
1047 |
2753 | 1048 if (!window) { |
1049 return NULL; | |
1050 } | |
1051 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
|
1052 } |
c121d94672cb
SDL 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 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
|
1055 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
|
1056 { |
2753 | 1057 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1058 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); | |
0 | 1059 |
2753 | 1060 if (!window) { |
1061 return; | |
1062 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1063 if (x != SDL_WINDOWPOS_UNDEFINED) { |
2753 | 1064 window->x = x; |
1065 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1066 if (y != SDL_WINDOWPOS_UNDEFINED) { |
2753 | 1067 window->y = y; |
1068 } | |
1069 if (_this->SetWindowPosition) { | |
1070 _this->SetWindowPosition(_this, window); | |
1071 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1072 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_MOVED, x, y); |
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
|
1073 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1074 |
c121d94672cb
SDL 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 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
|
1076 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
|
1077 { |
2753 | 1078 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
|
1079 |
2753 | 1080 if (!window) { |
1081 return; | |
1082 } | |
1083 if (x) { | |
1084 *x = window->x; | |
1085 } | |
1086 if (y) { | |
1087 *y = window->y; | |
1088 } | |
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
|
1089 } |
c121d94672cb
SDL 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 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
|
1092 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
|
1093 { |
2753 | 1094 SDL_Window *window = SDL_GetWindowFromID(windowID); |
0 | 1095 |
2753 | 1096 if (!window) { |
1097 return; | |
1098 } | |
1099 window->w = w; | |
1100 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
|
1101 |
2753 | 1102 if (_this->SetWindowSize) { |
1103 _this->SetWindowSize(_this, window); | |
1104 } | |
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
|
1105 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
|
1106 } |
c121d94672cb
SDL 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 |
c121d94672cb
SDL 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 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
|
1109 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
|
1110 { |
2753 | 1111 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
|
1112 |
2860
6ce28e5287e9
Date: Sun, 07 Dec 2008 13:35:23 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2859
diff
changeset
|
1113 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
|
1114 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
|
1115 *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
|
1116 } |
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
|
1117 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
|
1118 *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
|
1119 } |
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
|
1120 } 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
|
1121 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
|
1122 *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
|
1123 } |
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
|
1124 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
|
1125 *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
|
1126 } |
2753 | 1127 } |
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
|
1128 } |
c121d94672cb
SDL 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 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1130 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
|
1131 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
|
1132 { |
2753 | 1133 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
|
1134 |
2753 | 1135 if (!window || (window->flags & SDL_WINDOW_SHOWN)) { |
1136 return; | |
1137 } | |
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
|
1138 |
2753 | 1139 if (_this->ShowWindow) { |
1140 _this->ShowWindow(_this, window); | |
1141 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1142 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
|
1143 } |
c121d94672cb
SDL 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 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1145 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
|
1146 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
|
1147 { |
2753 | 1148 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
|
1149 |
2753 | 1150 if (!window || !(window->flags & SDL_WINDOW_SHOWN)) { |
1151 return; | |
1152 } | |
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
|
1153 |
2753 | 1154 if (_this->HideWindow) { |
1155 _this->HideWindow(_this, window); | |
1156 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1157 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
|
1158 } |
0 | 1159 |
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 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
|
1161 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
|
1162 { |
2753 | 1163 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
|
1164 |
2753 | 1165 if (!window || !(window->flags & SDL_WINDOW_SHOWN)) { |
1166 return; | |
1167 } | |
1168 if (_this->RaiseWindow) { | |
1169 _this->RaiseWindow(_this, window); | |
1170 } | |
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
|
1171 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1172 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1173 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
|
1174 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
|
1175 { |
2753 | 1176 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
|
1177 |
2753 | 1178 if (!window || (window->flags & SDL_WINDOW_MAXIMIZED)) { |
1179 return; | |
1180 } | |
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
|
1181 |
2753 | 1182 if (_this->MaximizeWindow) { |
1183 _this->MaximizeWindow(_this, window); | |
1184 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1185 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
|
1186 } |
0 | 1187 |
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
|
1188 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
|
1189 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
|
1190 { |
2753 | 1191 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
|
1192 |
2753 | 1193 if (!window || (window->flags & SDL_WINDOW_MINIMIZED)) { |
1194 return; | |
1195 } | |
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
|
1196 |
2753 | 1197 if (_this->MinimizeWindow) { |
1198 _this->MinimizeWindow(_this, window); | |
1199 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1200 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
|
1201 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1202 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1203 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
|
1204 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
|
1205 { |
2753 | 1206 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
|
1207 |
2753 | 1208 if (!window |
2934
1fcc36adc73d
Fixed logic problem with SDL_RestoreWindow()
Sam Lantinga <slouken@libsdl.org>
parents:
2928
diff
changeset
|
1209 || !(window->flags & (SDL_WINDOW_MAXIMIZED | SDL_WINDOW_MINIMIZED))) { |
2753 | 1210 return; |
1211 } | |
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
|
1212 |
2753 | 1213 if (_this->RestoreWindow) { |
1214 _this->RestoreWindow(_this, window); | |
1215 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1216 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_RESTORED, 0, 0); |
0 | 1217 } |
1218 | |
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
|
1219 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
|
1220 SDL_SetWindowFullscreen(SDL_WindowID windowID, int fullscreen) |
0 | 1221 { |
2753 | 1222 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
|
1223 |
2753 | 1224 if (!window) { |
1225 return -1; | |
1226 } | |
1227 if (fullscreen) { | |
1228 fullscreen = SDL_WINDOW_FULLSCREEN; | |
1229 } | |
1230 if ((window->flags & SDL_WINDOW_FULLSCREEN) == fullscreen) { | |
1231 return 0; | |
1232 } | |
1233 if (fullscreen) { | |
1234 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
|
1235 |
2753 | 1236 if (FULLSCREEN_VISIBLE(window)) { |
1237 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
|
1238 |
2753 | 1239 /* Hide any other fullscreen windows */ |
1240 int i; | |
1241 for (i = 0; i < display->num_windows; ++i) { | |
1242 SDL_Window *other = &display->windows[i]; | |
1243 if (other->id != windowID && FULLSCREEN_VISIBLE(other)) { | |
1244 SDL_MinimizeWindow(other->id); | |
1245 } | |
1246 } | |
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
|
1247 |
2753 | 1248 SDL_SetDisplayMode(&display->fullscreen_mode); |
1249 } | |
1250 } else { | |
1251 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
|
1252 |
2753 | 1253 if (FULLSCREEN_VISIBLE(window)) { |
1254 SDL_SetDisplayMode(NULL); | |
1255 } | |
1256 } | |
1257 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
|
1258 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1259 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1260 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
|
1261 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
|
1262 { |
2753 | 1263 SDL_Window *window = SDL_GetWindowFromID(windowID); |
0 | 1264 |
2753 | 1265 if (!window || (!!mode == !!(window->flags & SDL_WINDOW_INPUT_GRABBED))) { |
1266 return; | |
1267 } | |
1268 if (mode) { | |
1269 window->flags |= SDL_WINDOW_INPUT_GRABBED; | |
1270 } else { | |
1271 window->flags &= ~SDL_WINDOW_INPUT_GRABBED; | |
1272 } | |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1273 SDL_UpdateWindowGrab(window); |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1274 } |
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
|
1275 |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1276 static void |
2876 | 1277 SDL_UpdateWindowGrab(SDL_Window * window) |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1278 { |
2753 | 1279 if ((window->flags & SDL_WINDOW_INPUT_FOCUS) && _this->SetWindowGrab) { |
1280 _this->SetWindowGrab(_this, window); | |
1281 } | |
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
|
1282 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1283 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1284 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
|
1285 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
|
1286 { |
2753 | 1287 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
|
1288 |
2753 | 1289 if (!window) { |
1290 return 0; | |
1291 } | |
1292 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
|
1293 } |
0 | 1294 |
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 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
|
1296 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
|
1297 { |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1298 if (window->flags & SDL_WINDOW_FULLSCREEN) { |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1299 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_FOCUS_GAINED, 0, 0); |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1300 } |
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
|
1301 } |
c121d94672cb
SDL 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 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1303 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
|
1304 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
|
1305 { |
2875
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1306 if (window->flags & SDL_WINDOW_FULLSCREEN) { |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1307 SDL_SendWindowEvent(window->id, SDL_WINDOWEVENT_FOCUS_LOST, 0, 0); |
91a7e08cd238
* Implemented X11 fullscreen input grab
Sam Lantinga <slouken@libsdl.org>
parents:
2869
diff
changeset
|
1308 } |
0 | 1309 } |
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
|
1310 |
c121d94672cb
SDL 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 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
|
1312 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
|
1313 { |
2753 | 1314 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
|
1315 |
2753 | 1316 if (renderer && renderer->DisplayModeChanged) { |
1317 renderer->DisplayModeChanged(renderer); | |
1318 } | |
1970
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1969
diff
changeset
|
1319 } |
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1969
diff
changeset
|
1320 |
db3ba6c0d0df
Allow the render context to do necessary work when the video mode changes.
Sam Lantinga <slouken@libsdl.org>
parents:
1969
diff
changeset
|
1321 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
|
1322 SDL_OnWindowFocusGained(SDL_Window * window) |
0 | 1323 { |
2753 | 1324 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
|
1325 |
2753 | 1326 if (window->flags & SDL_WINDOW_FULLSCREEN) { |
1327 SDL_SetDisplayMode(&display->fullscreen_mode); | |
1328 } | |
1329 if (display->gamma && _this->SetDisplayGammaRamp) { | |
1330 _this->SetDisplayGammaRamp(_this, display->gamma); | |
1331 } | |
2876 | 1332 if ((window->flags & (SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_FULLSCREEN)) |
1333 && _this->SetWindowGrab) { | |
2753 | 1334 _this->SetWindowGrab(_this, window); |
1335 } | |
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
|
1336 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1337 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1338 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
|
1339 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
|
1340 { |
2753 | 1341 SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window); |
0 | 1342 |
2753 | 1343 if (window->flags & SDL_WINDOW_FULLSCREEN) { |
1344 SDL_MinimizeWindow(window->id); | |
1345 SDL_SetDisplayMode(NULL); | |
1346 } | |
1347 if (display->gamma && _this->SetDisplayGammaRamp) { | |
1348 _this->SetDisplayGammaRamp(_this, display->saved_gamma); | |
1349 } | |
2876 | 1350 if ((window->flags & (SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_FULLSCREEN)) |
1351 && _this->SetWindowGrab) { | |
2753 | 1352 _this->SetWindowGrab(_this, window); |
1353 } | |
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
|
1354 } |
c121d94672cb
SDL 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 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1356 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
|
1357 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
|
1358 { |
2753 | 1359 SDL_VideoDisplay *display; |
1360 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
|
1361 |
2753 | 1362 if (!_this) { |
1363 return 0; | |
1364 } | |
1365 display = &SDL_CurrentDisplay; | |
1366 for (i = 0; i < display->num_windows; ++i) { | |
1367 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
|
1368 |
2753 | 1369 if (window->flags & SDL_WINDOW_INPUT_FOCUS) { |
1370 return window->id; | |
1371 } | |
1372 } | |
1373 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
|
1374 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1375 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1376 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
|
1377 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
|
1378 { |
2753 | 1379 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
|
1380 |
2753 | 1381 if (!_this) { |
1382 return; | |
1383 } | |
1384 /* Restore video mode, etc. */ | |
1385 SDL_SendWindowEvent(windowID, SDL_WINDOWEVENT_FOCUS_LOST, 0, 0); | |
0 | 1386 |
2753 | 1387 for (i = 0; i < _this->num_displays; ++i) { |
1388 SDL_VideoDisplay *display = &_this->displays[i]; | |
1389 for (j = 0; j < display->num_windows; ++j) { | |
1390 SDL_Window *window = &display->windows[j]; | |
1391 if (window->id != windowID) { | |
1392 continue; | |
1393 } | |
1394 if (window->title) { | |
1395 SDL_free(window->title); | |
1396 window->title = NULL; | |
1397 } | |
1398 if (window->renderer) { | |
1399 SDL_DestroyRenderer(window->id); | |
1400 window->renderer = NULL; | |
1401 } | |
1402 if (_this->DestroyWindow) { | |
1403 _this->DestroyWindow(_this, window); | |
1404 } | |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1405 if (window->flags & SDL_WINDOW_OPENGL) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1406 SDL_GL_UnloadLibrary(); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1407 } |
2753 | 1408 if (j != display->num_windows - 1) { |
1409 SDL_memcpy(&display->windows[i], | |
1410 &display->windows[i + 1], | |
1411 (display->num_windows - i - 1) * sizeof(*window)); | |
1412 } | |
1413 --display->num_windows; | |
1414 return; | |
1415 } | |
1416 } | |
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
|
1417 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1418 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1419 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
|
1420 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
|
1421 { |
2753 | 1422 SDL_VideoDisplay *display; |
1423 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
|
1424 |
2753 | 1425 if (displayIndex >= _this->num_displays) { |
1426 return; | |
1427 } | |
1428 display = &_this->displays[displayIndex]; | |
2119
9341a884a4d9
Fixed running on Windows under VMware
Sam Lantinga <slouken@libsdl.org>
parents:
2075
diff
changeset
|
1429 |
2753 | 1430 render_drivers = |
1431 SDL_realloc(display->render_drivers, | |
1432 (display->num_render_drivers + | |
1433 1) * sizeof(*render_drivers)); | |
1434 if (render_drivers) { | |
1435 render_drivers[display->num_render_drivers] = *driver; | |
1436 display->render_drivers = render_drivers; | |
1437 display->num_render_drivers++; | |
1438 } | |
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 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1440 |
c121d94672cb
SDL 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 int |
1969
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1442 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
|
1443 { |
2753 | 1444 if (_this) { |
1445 return SDL_CurrentDisplay.num_render_drivers; | |
1446 } | |
1447 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
|
1448 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1449 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1450 int |
1969
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1451 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
|
1452 { |
2753 | 1453 if (!_this) { |
1454 SDL_UninitializedVideo(); | |
1455 return -1; | |
1456 } | |
1457 if (index < 0 || index >= SDL_GetNumRenderDrivers()) { | |
1458 SDL_SetError("index must be in the range of 0 - %d", | |
1459 SDL_GetNumRenderDrivers() - 1); | |
1460 return -1; | |
1461 } | |
1462 *info = SDL_CurrentDisplay.render_drivers[index].info; | |
1463 return 0; | |
0 | 1464 } |
1465 | |
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
|
1466 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
|
1467 SDL_CreateRenderer(SDL_WindowID windowID, int index, Uint32 flags) |
0 | 1468 { |
2753 | 1469 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
|
1470 |
2753 | 1471 if (!window) { |
3091
32efcc94b3da
Fixed return value for SDL_CreateRenderer()
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1472 SDL_SetError("Invalid window ID"); |
32efcc94b3da
Fixed return value for SDL_CreateRenderer()
Sam Lantinga <slouken@libsdl.org>
parents:
3083
diff
changeset
|
1473 return -1; |
2753 | 1474 } |
1475 if (index < 0) { | |
1476 const char *override = SDL_getenv("SDL_VIDEO_RENDERER"); | |
1477 int n = SDL_GetNumRenderDrivers(); | |
1478 for (index = 0; index < n; ++index) { | |
1479 SDL_RenderDriver *driver = | |
1480 &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
|
1481 |
2753 | 1482 if (override) { |
1483 if (SDL_strcasecmp(override, driver->info.name) == 0) { | |
1484 break; | |
1485 } | |
1486 } else { | |
1487 if ((driver->info.flags & flags) == flags) { | |
1488 break; | |
1489 } | |
1490 } | |
1491 } | |
1492 if (index == n) { | |
1493 SDL_SetError("Couldn't find matching render driver"); | |
1494 return -1; | |
1495 } | |
1496 } | |
1497 if (index >= SDL_GetNumRenderDrivers()) { | |
1498 SDL_SetError("index must be -1 or in the range of 0 - %d", | |
1499 SDL_GetNumRenderDrivers() - 1); | |
1500 return -1; | |
1501 } | |
1502 /* Free any existing renderer */ | |
1503 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
|
1504 |
2753 | 1505 /* Create a new renderer instance */ |
1506 window->renderer = SDL_CurrentDisplay.render_drivers[index] | |
1507 .CreateRenderer(window, flags); | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3091
diff
changeset
|
1508 |
3139 | 1509 if (window->renderer == NULL) { |
1510 /* Assuming renderer set its error */ | |
1511 return -1; | |
3092
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3091
diff
changeset
|
1512 } |
cad1aefa2ed9
Date: Thu, 12 Mar 2009 15:14:38 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3091
diff
changeset
|
1513 |
2753 | 1514 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
|
1515 |
2753 | 1516 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
|
1517 } |
0 | 1518 |
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
|
1519 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
|
1520 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
|
1521 { |
2753 | 1522 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1523 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
|
1524 |
2753 | 1525 if (!window || !window->renderer) { |
1526 return -1; | |
1527 } | |
1528 renderer = window->renderer; | |
1529 if (renderer && renderer->ActivateRenderer) { | |
1530 if (renderer->ActivateRenderer(renderer) < 0) { | |
1531 return -1; | |
1532 } | |
1533 } | |
1534 SDL_CurrentDisplay.current_renderer = renderer; | |
1535 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
|
1536 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1537 |
1969
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1538 int |
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1539 SDL_GetRendererInfo(SDL_RendererInfo * info) |
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1540 { |
2753 | 1541 if (!_this) { |
1542 SDL_UninitializedVideo(); | |
1543 return -1; | |
1544 } | |
1545 if (!SDL_CurrentDisplay.current_renderer) { | |
1546 SDL_SetError("There is no current renderer"); | |
1547 return -1; | |
1548 } | |
1549 *info = SDL_CurrentDisplay.current_renderer->info; | |
1550 return 0; | |
1969
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1551 } |
5d3724f64f2b
Clarified the difference between render drivers and render contexts
Sam Lantinga <slouken@libsdl.org>
parents:
1967
diff
changeset
|
1552 |
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
|
1553 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
|
1554 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
|
1555 { |
2753 | 1556 int hash; |
1557 SDL_Renderer *renderer; | |
1558 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
|
1559 |
2753 | 1560 if (!_this) { |
1561 SDL_UninitializedVideo(); | |
1562 return 0; | |
1563 } | |
1564 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
|
1565 if (!renderer) { |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1566 return 0; |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1567 } |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1568 if (!renderer->CreateTexture) { |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
1569 SDL_Unsupported(); |
2753 | 1570 return 0; |
1571 } | |
1572 texture = (SDL_Texture *) SDL_calloc(1, sizeof(*texture)); | |
1573 if (!texture) { | |
1574 SDL_OutOfMemory(); | |
1575 return 0; | |
1576 } | |
1577 texture->id = _this->next_object_id++; | |
1578 texture->format = format; | |
1579 texture->access = access; | |
1580 texture->w = w; | |
1581 texture->h = h; | |
1582 texture->r = 255; | |
1583 texture->g = 255; | |
1584 texture->b = 255; | |
1585 texture->a = 255; | |
1586 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
|
1587 |
2753 | 1588 if (renderer->CreateTexture(renderer, texture) < 0) { |
1589 if (renderer->DestroyTexture) { | |
1590 renderer->DestroyTexture(renderer, texture); | |
1591 } | |
1592 SDL_free(texture); | |
1593 return 0; | |
1594 } | |
1595 hash = (texture->id % SDL_arraysize(SDL_CurrentDisplay.textures)); | |
1596 texture->next = SDL_CurrentDisplay.textures[hash]; | |
1597 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
|
1598 |
2753 | 1599 return texture->id; |
0 | 1600 } |
1601 | |
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
|
1602 SDL_TextureID |
2222
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
2130
diff
changeset
|
1603 SDL_CreateTextureFromSurface(Uint32 format, SDL_Surface * surface) |
0 | 1604 { |
2753 | 1605 SDL_TextureID textureID; |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1606 Uint32 requested_format = format; |
2753 | 1607 SDL_PixelFormat *fmt; |
3166
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1608 SDL_Renderer *renderer; |
2753 | 1609 int bpp; |
1610 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
|
1611 |
2753 | 1612 if (!surface) { |
1613 SDL_SetError("SDL_CreateTextureFromSurface() passed NULL surface"); | |
1614 return 0; | |
1615 } | |
1616 fmt = surface->format; | |
0 | 1617 |
3166
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1618 renderer = SDL_CurrentDisplay.current_renderer; |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1619 if (!renderer) { |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1620 return 0; |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1621 } |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1622 |
2753 | 1623 if (format) { |
1624 if (!SDL_PixelFormatEnumToMasks | |
1625 (format, &bpp, &Rmask, &Gmask, &Bmask, &Amask)) { | |
1626 SDL_SetError("Unknown pixel format"); | |
1627 return 0; | |
1628 } | |
1629 } else { | |
1630 if (surface->format->Amask | |
1631 || !(surface->map->info.flags & | |
1632 (SDL_COPY_COLORKEY | SDL_COPY_MASK | SDL_COPY_BLEND))) { | |
3196
413672b09bb3
Fixed some compile errors and warnings under Visual C++
Sam Lantinga <slouken@libsdl.org>
parents:
3186
diff
changeset
|
1633 Uint32 it; |
3178
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1634 int pfmt; |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1635 |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1636 /* Pixel formats, sorted by best first */ |
3186 | 1637 static const Uint32 sdl_pformats[] = { |
1638 SDL_PIXELFORMAT_ARGB8888, | |
1639 SDL_PIXELFORMAT_RGBA8888, | |
1640 SDL_PIXELFORMAT_ABGR8888, | |
1641 SDL_PIXELFORMAT_BGRA8888, | |
1642 SDL_PIXELFORMAT_RGB888, | |
1643 SDL_PIXELFORMAT_BGR888, | |
1644 SDL_PIXELFORMAT_RGB24, | |
1645 SDL_PIXELFORMAT_BGR24, | |
1646 SDL_PIXELFORMAT_RGB565, | |
1647 SDL_PIXELFORMAT_BGR565, | |
1648 SDL_PIXELFORMAT_ARGB1555, | |
1649 SDL_PIXELFORMAT_ABGR1555, | |
1650 SDL_PIXELFORMAT_RGB555, | |
1651 SDL_PIXELFORMAT_BGR555, | |
1652 SDL_PIXELFORMAT_ARGB4444, | |
1653 SDL_PIXELFORMAT_ABGR4444, | |
1654 SDL_PIXELFORMAT_RGB444, | |
1655 SDL_PIXELFORMAT_ARGB2101010, | |
1656 SDL_PIXELFORMAT_INDEX8, | |
1657 SDL_PIXELFORMAT_INDEX4LSB, | |
1658 SDL_PIXELFORMAT_INDEX4MSB, | |
1659 SDL_PIXELFORMAT_RGB332, | |
1660 SDL_PIXELFORMAT_INDEX1LSB, | |
1661 SDL_PIXELFORMAT_INDEX1MSB, | |
1662 SDL_PIXELFORMAT_UNKNOWN | |
1663 }; | |
3178
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1664 |
2753 | 1665 bpp = fmt->BitsPerPixel; |
1666 Rmask = fmt->Rmask; | |
1667 Gmask = fmt->Gmask; | |
1668 Bmask = fmt->Bmask; | |
1669 Amask = fmt->Amask; | |
3178
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1670 |
3186 | 1671 format = |
1672 SDL_MasksToPixelFormatEnum(bpp, Rmask, Gmask, Bmask, Amask); | |
3178
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1673 if (!format) { |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1674 SDL_SetError("Unknown pixel format"); |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1675 return 0; |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1676 } |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1677 |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1678 /* Search requested format in the supported texture */ |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1679 /* formats by current renderer */ |
3186 | 1680 for (it = 0; it < renderer->info.num_texture_formats; it++) { |
1681 if (renderer->info.texture_formats[it] == format) { | |
1682 break; | |
3178
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1683 } |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1684 } |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1685 |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1686 /* If requested format can't be found, search any best */ |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1687 /* format which renderer provides */ |
3186 | 1688 if (it == renderer->info.num_texture_formats) { |
1689 pfmt = 0; | |
1690 for (;;) { | |
1691 if (sdl_pformats[pfmt] == SDL_PIXELFORMAT_UNKNOWN) { | |
3178
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1692 break; |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1693 } |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1694 |
3186 | 1695 for (it = 0; it < renderer->info.num_texture_formats; |
1696 it++) { | |
1697 if (renderer->info.texture_formats[it] == | |
1698 sdl_pformats[pfmt]) { | |
1699 break; | |
1700 } | |
3178
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1701 } |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1702 |
3186 | 1703 if (it != renderer->info.num_texture_formats) { |
1704 /* The best format has been found */ | |
1705 break; | |
3178
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1706 } |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1707 pfmt++; |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1708 } |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1709 |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1710 /* If any format can't be found, then return an error */ |
3186 | 1711 if (it == renderer->info.num_texture_formats) { |
1712 SDL_SetError | |
1713 ("Any of the supported pixel formats can't be found"); | |
3178
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1714 return 0; |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1715 } |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1716 |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1717 /* Convert found pixel format back to color masks */ |
3186 | 1718 if (SDL_PixelFormatEnumToMasks |
1719 (renderer->info.texture_formats[it], &bpp, &Rmask, &Gmask, | |
1720 &Bmask, &Amask) != SDL_TRUE) { | |
3178
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1721 SDL_SetError("Unknown pixel format"); |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1722 return 0; |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1723 } |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1724 } |
2753 | 1725 } else { |
1726 /* Need a format with alpha */ | |
3196
413672b09bb3
Fixed some compile errors and warnings under Visual C++
Sam Lantinga <slouken@libsdl.org>
parents:
3186
diff
changeset
|
1727 Uint32 it; |
3166
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1728 int apfmt; |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1729 |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1730 /* Pixel formats with alpha, sorted by best first */ |
3169 | 1731 static const Uint32 sdl_alpha_pformats[] = { |
1732 SDL_PIXELFORMAT_ARGB8888, | |
1733 SDL_PIXELFORMAT_RGBA8888, | |
1734 SDL_PIXELFORMAT_ABGR8888, | |
1735 SDL_PIXELFORMAT_BGRA8888, | |
1736 SDL_PIXELFORMAT_ARGB1555, | |
1737 SDL_PIXELFORMAT_ABGR1555, | |
1738 SDL_PIXELFORMAT_ARGB4444, | |
1739 SDL_PIXELFORMAT_ABGR4444, | |
1740 SDL_PIXELFORMAT_ARGB2101010, | |
1741 SDL_PIXELFORMAT_UNKNOWN | |
1742 }; | |
3166
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1743 |
3178
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1744 if (surface->format->Amask) { |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1745 /* If surface already has alpha, then try an original */ |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1746 /* surface format first */ |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1747 bpp = fmt->BitsPerPixel; |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1748 Rmask = fmt->Rmask; |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1749 Gmask = fmt->Gmask; |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1750 Bmask = fmt->Bmask; |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1751 Amask = fmt->Amask; |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1752 } else { |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1753 bpp = 32; |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1754 Rmask = 0x00FF0000; |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1755 Gmask = 0x0000FF00; |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1756 Bmask = 0x000000FF; |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1757 Amask = 0xFF000000; |
72edc980789b
1. SDL_CreateTextureFromSurface() now tries to find surface's pixel format.
Mike Gorchak <lestat@i.com.ua>
parents:
3169
diff
changeset
|
1758 } |
3166
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1759 |
3169 | 1760 format = |
1761 SDL_MasksToPixelFormatEnum(bpp, Rmask, Gmask, Bmask, Amask); | |
3166
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1762 if (!format) { |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1763 SDL_SetError("Unknown pixel format"); |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1764 return 0; |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1765 } |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1766 |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1767 /* Search this format in the supported texture formats */ |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1768 /* by current renderer */ |
3169 | 1769 for (it = 0; it < renderer->info.num_texture_formats; it++) { |
1770 if (renderer->info.texture_formats[it] == format) { | |
1771 break; | |
3166
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1772 } |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1773 } |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1774 |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1775 /* If this format can't be found, search any best */ |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1776 /* compatible format with alpha which renderer provides */ |
3169 | 1777 if (it == renderer->info.num_texture_formats) { |
1778 apfmt = 0; | |
1779 for (;;) { | |
1780 if (sdl_alpha_pformats[apfmt] == SDL_PIXELFORMAT_UNKNOWN) { | |
3166
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1781 break; |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1782 } |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1783 |
3169 | 1784 for (it = 0; it < renderer->info.num_texture_formats; |
1785 it++) { | |
1786 if (renderer->info.texture_formats[it] == | |
1787 sdl_alpha_pformats[apfmt]) { | |
1788 break; | |
1789 } | |
3166
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1790 } |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1791 |
3169 | 1792 if (it != renderer->info.num_texture_formats) { |
1793 /* Compatible format has been found */ | |
1794 break; | |
3166
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1795 } |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1796 apfmt++; |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1797 } |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1798 |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1799 /* If compatible format can't be found, then return an error */ |
3169 | 1800 if (it == renderer->info.num_texture_formats) { |
3166
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1801 SDL_SetError("Compatible pixel format can't be found"); |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1802 return 0; |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1803 } |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1804 |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1805 /* Convert found pixel format back to color masks */ |
3169 | 1806 if (SDL_PixelFormatEnumToMasks |
1807 (renderer->info.texture_formats[it], &bpp, &Rmask, &Gmask, | |
1808 &Bmask, &Amask) != SDL_TRUE) { | |
3166
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1809 SDL_SetError("Unknown pixel format"); |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1810 return 0; |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1811 } |
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1812 } |
2753 | 1813 } |
3166
3a63a5824557
Best pixel formats with alpha search code has been added to function which converts surface to texture with enabled color keys. Now "testsprite2 --renderer opengl_es" works fine with all pixel formats with alpha. This affects other renderers too.
Mike Gorchak <lestat@i.com.ua>
parents:
3162
diff
changeset
|
1814 |
2753 | 1815 format = SDL_MasksToPixelFormatEnum(bpp, Rmask, Gmask, Bmask, Amask); |
1816 if (!format) { | |
1817 SDL_SetError("Unknown pixel format"); | |
1818 return 0; | |
1819 } | |
1820 } | |
0 | 1821 |
2753 | 1822 textureID = |
1823 SDL_CreateTexture(format, SDL_TEXTUREACCESS_STATIC, surface->w, | |
1824 surface->h); | |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1825 if (!textureID && !requested_format) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1826 SDL_DisplayMode desktop_mode; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1827 SDL_GetDesktopDisplayMode(&desktop_mode); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1828 format = desktop_mode.format; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1829 textureID = |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1830 SDL_CreateTexture(format, SDL_TEXTUREACCESS_STATIC, surface->w, |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1831 surface->h); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
1832 } |
2753 | 1833 if (!textureID) { |
1834 return 0; | |
1835 } | |
1836 if (bpp == fmt->BitsPerPixel && Rmask == fmt->Rmask && Gmask == fmt->Gmask | |
1837 && Bmask == fmt->Bmask && Amask == fmt->Amask) { | |
1838 if (SDL_MUSTLOCK(surface)) { | |
1839 if (SDL_LockSurface(surface) < 0) { | |
1840 SDL_DestroyTexture(textureID); | |
1841 return 0; | |
1842 } | |
1843 SDL_UpdateTexture(textureID, NULL, surface->pixels, | |
1844 surface->pitch); | |
1845 SDL_UnlockSurface(surface); | |
1846 } else { | |
1847 SDL_UpdateTexture(textureID, NULL, surface->pixels, | |
1848 surface->pitch); | |
1849 } | |
1850 } else { | |
2967
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1851 SDL_PixelFormat dst_fmt; |
2753 | 1852 SDL_Surface *dst = NULL; |
2222
926294b2bb4e
Emphasized the separation between SDL_Surface and SDL_Texture
Sam Lantinga <slouken@libsdl.org>
parents:
2130
diff
changeset
|
1853 |
2753 | 1854 /* Set up a destination surface for the texture update */ |
2967
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1855 SDL_InitFormat(&dst_fmt, bpp, Rmask, Gmask, Bmask, Amask); |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1856 if (SDL_ISPIXELFORMAT_INDEXED(format)) { |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1857 dst_fmt.palette = |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1858 SDL_AllocPalette((1 << SDL_BITSPERPIXEL(format))); |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1859 if (dst_fmt.palette) { |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1860 /* |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1861 * FIXME: Should we try to copy |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1862 * fmt->palette? |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1863 */ |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1864 SDL_DitherColors(dst_fmt.palette->colors, |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1865 SDL_BITSPERPIXEL(format)); |
2753 | 1866 } |
2967
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1867 } |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1868 dst = SDL_ConvertSurface(surface, &dst_fmt, 0); |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1869 if (dst) { |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1870 SDL_UpdateTexture(textureID, NULL, dst->pixels, dst->pitch); |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1871 SDL_FreeSurface(dst); |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1872 } |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1873 if (dst_fmt.palette) { |
e4a469d6ddab
Implemented SDL_SetWindowIcon(), with translucent icon support under X11.
Sam Lantinga <slouken@libsdl.org>
parents:
2934
diff
changeset
|
1874 SDL_FreePalette(dst_fmt.palette); |
2753 | 1875 } |
1876 if (!dst) { | |
1877 SDL_DestroyTexture(textureID); | |
1878 return 0; | |
1879 } | |
1880 } | |
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
|
1881 |
3053
aa34d1180d30
When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents:
3029
diff
changeset
|
1882 { |
aa34d1180d30
When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents:
3029
diff
changeset
|
1883 Uint8 r, g, b, a; |
aa34d1180d30
When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents:
3029
diff
changeset
|
1884 int blendMode; |
aa34d1180d30
When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents:
3029
diff
changeset
|
1885 int scaleMode; |
aa34d1180d30
When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents:
3029
diff
changeset
|
1886 |
aa34d1180d30
When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents:
3029
diff
changeset
|
1887 SDL_GetSurfaceColorMod(surface, &r, &g, &b); |
aa34d1180d30
When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents:
3029
diff
changeset
|
1888 SDL_SetTextureColorMod(textureID, r, g, b); |
aa34d1180d30
When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents:
3029
diff
changeset
|
1889 |
aa34d1180d30
When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents:
3029
diff
changeset
|
1890 SDL_GetSurfaceAlphaMod(surface, &a); |
aa34d1180d30
When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents:
3029
diff
changeset
|
1891 SDL_SetTextureAlphaMod(textureID, a); |
aa34d1180d30
When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents:
3029
diff
changeset
|
1892 |
aa34d1180d30
When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents:
3029
diff
changeset
|
1893 SDL_GetSurfaceBlendMode(surface, &blendMode); |
aa34d1180d30
When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents:
3029
diff
changeset
|
1894 SDL_SetTextureBlendMode(textureID, blendMode); |
aa34d1180d30
When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents:
3029
diff
changeset
|
1895 |
aa34d1180d30
When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents:
3029
diff
changeset
|
1896 SDL_GetSurfaceScaleMode(surface, &scaleMode); |
aa34d1180d30
When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents:
3029
diff
changeset
|
1897 SDL_SetTextureScaleMode(textureID, scaleMode); |
aa34d1180d30
When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents:
3029
diff
changeset
|
1898 } |
aa34d1180d30
When creating a software texture, synchronize the surface with the texture.
Sam Lantinga <slouken@libsdl.org>
parents:
3029
diff
changeset
|
1899 |
2753 | 1900 if (SDL_ISPIXELFORMAT_INDEXED(format) && fmt->palette) { |
1901 SDL_SetTexturePalette(textureID, fmt->palette->colors, 0, | |
1902 fmt->palette->ncolors); | |
1903 } | |
1904 return textureID; | |
0 | 1905 } |
1906 | |
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
|
1907 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
|
1908 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
|
1909 { |
2753 | 1910 int hash; |
1911 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
|
1912 |
2753 | 1913 if (!_this) { |
1914 return NULL; | |
1915 } | |
1916 hash = (textureID % SDL_arraysize(SDL_CurrentDisplay.textures)); | |
1917 for (texture = SDL_CurrentDisplay.textures[hash]; texture; | |
1918 texture = texture->next) { | |
1919 if (texture->id == textureID) { | |
1920 return texture; | |
1921 } | |
1922 } | |
1923 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
|
1924 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1925 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1926 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
|
1927 SDL_QueryTexture(SDL_TextureID textureID, Uint32 * format, int *access, |
2753 | 1928 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
|
1929 { |
2753 | 1930 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
|
1931 |
2753 | 1932 if (!texture) { |
1933 return -1; | |
1934 } | |
1935 if (format) { | |
1936 *format = texture->format; | |
1937 } | |
1938 if (access) { | |
1939 *access = texture->access; | |
1940 } | |
1941 if (w) { | |
1942 *w = texture->w; | |
1943 } | |
1944 if (h) { | |
1945 *h = texture->h; | |
1946 } | |
1947 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
|
1948 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1949 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1950 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
|
1951 SDL_QueryTexturePixels(SDL_TextureID textureID, void **pixels, int *pitch) |
0 | 1952 { |
2753 | 1953 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1954 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
|
1955 |
2753 | 1956 if (!texture) { |
1957 return -1; | |
1958 } | |
1959 renderer = texture->renderer; | |
1960 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
|
1961 SDL_Unsupported(); |
2753 | 1962 return -1; |
1963 } | |
1964 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
|
1965 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1966 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1967 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
|
1968 SDL_SetTexturePalette(SDL_TextureID textureID, const SDL_Color * colors, |
2753 | 1969 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
|
1970 { |
2753 | 1971 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1972 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
|
1973 |
2753 | 1974 if (!texture) { |
1975 return -1; | |
1976 } | |
1977 renderer = texture->renderer; | |
1978 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
|
1979 SDL_Unsupported(); |
2753 | 1980 return -1; |
1981 } | |
1982 return renderer->SetTexturePalette(renderer, texture, colors, firstcolor, | |
1983 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
|
1984 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1985 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
1986 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
|
1987 SDL_GetTexturePalette(SDL_TextureID textureID, SDL_Color * colors, |
2753 | 1988 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
|
1989 { |
2753 | 1990 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1991 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
|
1992 |
2753 | 1993 if (!texture) { |
1994 return -1; | |
1995 } | |
1996 renderer = texture->renderer; | |
1997 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
|
1998 SDL_Unsupported(); |
2753 | 1999 return -1; |
2000 } | |
2001 return renderer->GetTexturePalette(renderer, texture, colors, firstcolor, | |
2002 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
|
2003 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2004 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2005 int |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2006 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
|
2007 { |
2753 | 2008 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
2009 SDL_Renderer *renderer; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2010 |
2753 | 2011 if (!texture) { |
2012 return -1; | |
2013 } | |
2014 renderer = texture->renderer; | |
2015 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
|
2016 SDL_Unsupported(); |
2753 | 2017 return -1; |
2018 } | |
2019 if (r < 255 || g < 255 || b < 255) { | |
2020 texture->modMode |= SDL_TEXTUREMODULATE_COLOR; | |
2021 } else { | |
2022 texture->modMode &= ~SDL_TEXTUREMODULATE_COLOR; | |
2023 } | |
2024 texture->r = r; | |
2025 texture->g = g; | |
2026 texture->b = b; | |
2027 return renderer->SetTextureColorMod(renderer, texture); | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2028 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2029 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2030 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2031 SDL_GetTextureColorMod(SDL_TextureID textureID, Uint8 * r, Uint8 * g, |
2753 | 2032 Uint8 * b) |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2033 { |
2753 | 2034 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
2035 SDL_Renderer *renderer; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2036 |
2753 | 2037 if (!texture) { |
2038 return -1; | |
2039 } | |
2040 renderer = texture->renderer; | |
2041 if (r) { | |
2042 *r = texture->r; | |
2043 } | |
2044 if (g) { | |
2045 *g = texture->g; | |
2046 } | |
2047 if (b) { | |
2048 *b = texture->b; | |
2049 } | |
2050 return 0; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2051 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2052 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2053 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2054 SDL_SetTextureAlphaMod(SDL_TextureID textureID, Uint8 alpha) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2055 { |
2753 | 2056 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
2057 SDL_Renderer *renderer; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2058 |
2753 | 2059 if (!texture) { |
2060 return -1; | |
2061 } | |
2062 renderer = texture->renderer; | |
2063 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
|
2064 SDL_Unsupported(); |
2753 | 2065 return -1; |
2066 } | |
2067 if (alpha < 255) { | |
2068 texture->modMode |= SDL_TEXTUREMODULATE_ALPHA; | |
2069 } else { | |
2070 texture->modMode &= ~SDL_TEXTUREMODULATE_ALPHA; | |
2071 } | |
2072 texture->a = alpha; | |
2073 return renderer->SetTextureAlphaMod(renderer, texture); | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2074 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2075 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2076 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2077 SDL_GetTextureAlphaMod(SDL_TextureID textureID, Uint8 * alpha) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2078 { |
2753 | 2079 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2080 |
2753 | 2081 if (!texture) { |
2082 return -1; | |
2083 } | |
2084 if (alpha) { | |
2085 *alpha = texture->a; | |
2086 } | |
2087 return 0; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2088 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2089 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2090 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2091 SDL_SetTextureBlendMode(SDL_TextureID textureID, int blendMode) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2092 { |
2753 | 2093 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
2094 SDL_Renderer *renderer; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2095 |
2753 | 2096 if (!texture) { |
2097 return -1; | |
2098 } | |
2099 renderer = texture->renderer; | |
2100 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
|
2101 SDL_Unsupported(); |
2753 | 2102 return -1; |
2103 } | |
2104 texture->blendMode = blendMode; | |
2105 return renderer->SetTextureBlendMode(renderer, texture); | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2106 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2107 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2108 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2109 SDL_GetTextureBlendMode(SDL_TextureID textureID, int *blendMode) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2110 { |
2753 | 2111 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2112 |
2753 | 2113 if (!texture) { |
2114 return -1; | |
2115 } | |
2116 if (blendMode) { | |
2117 *blendMode = texture->blendMode; | |
2118 } | |
2119 return 0; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2120 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2121 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2122 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2123 SDL_SetTextureScaleMode(SDL_TextureID textureID, int scaleMode) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2124 { |
2753 | 2125 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
2126 SDL_Renderer *renderer; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2127 |
2753 | 2128 if (!texture) { |
2129 return -1; | |
2130 } | |
2131 renderer = texture->renderer; | |
2132 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
|
2133 SDL_Unsupported(); |
2753 | 2134 return -1; |
2135 } | |
2136 texture->scaleMode = scaleMode; | |
2137 return renderer->SetTextureScaleMode(renderer, texture); | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2138 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2139 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2140 int |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2141 SDL_GetTextureScaleMode(SDL_TextureID textureID, int *scaleMode) |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2142 { |
2753 | 2143 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2144 |
2753 | 2145 if (!texture) { |
2146 return -1; | |
2147 } | |
2148 if (scaleMode) { | |
2149 *scaleMode = texture->scaleMode; | |
2150 } | |
2151 return 0; | |
1985
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2152 } |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2153 |
8055185ae4ed
Added source color and alpha modulation support.
Sam Lantinga <slouken@libsdl.org>
parents:
1981
diff
changeset
|
2154 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
|
2155 SDL_UpdateTexture(SDL_TextureID textureID, const SDL_Rect * rect, |
2753 | 2156 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
|
2157 { |
2753 | 2158 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
2159 SDL_Renderer *renderer; | |
2160 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
|
2161 |
2753 | 2162 if (!texture) { |
2163 return -1; | |
2164 } | |
2165 renderer = texture->renderer; | |
2166 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
|
2167 SDL_Unsupported(); |
2753 | 2168 return -1; |
2169 } | |
2170 if (!rect) { | |
2171 full_rect.x = 0; | |
2172 full_rect.y = 0; | |
2173 full_rect.w = texture->w; | |
2174 full_rect.h = texture->h; | |
2175 rect = &full_rect; | |
2176 } | |
2177 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
|
2178 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2179 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2180 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
|
2181 SDL_LockTexture(SDL_TextureID textureID, const SDL_Rect * rect, int markDirty, |
2753 | 2182 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
|
2183 { |
2753 | 2184 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
2185 SDL_Renderer *renderer; | |
2186 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
|
2187 |
2753 | 2188 if (!texture) { |
2189 return -1; | |
2190 } | |
2191 if (texture->access != SDL_TEXTUREACCESS_STREAMING) { | |
2192 SDL_SetError("SDL_LockTexture(): texture must be streaming"); | |
2193 return -1; | |
2194 } | |
2195 renderer = texture->renderer; | |
2196 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
|
2197 SDL_Unsupported(); |
2753 | 2198 return -1; |
2199 } | |
2200 if (!rect) { | |
2201 full_rect.x = 0; | |
2202 full_rect.y = 0; | |
2203 full_rect.w = texture->w; | |
2204 full_rect.h = texture->h; | |
2205 rect = &full_rect; | |
2206 } | |
2207 return renderer->LockTexture(renderer, texture, rect, markDirty, pixels, | |
2208 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
|
2209 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2210 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2211 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
|
2212 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
|
2213 { |
2753 | 2214 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
2215 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
|
2216 |
2753 | 2217 if (!texture) { |
2218 return; | |
2219 } | |
2220 if (texture->access != SDL_TEXTUREACCESS_STREAMING) { | |
2221 return; | |
2222 } | |
2223 renderer = texture->renderer; | |
2224 if (!renderer->UnlockTexture) { | |
2225 return; | |
2226 } | |
2227 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
|
2228 } |
0 | 2229 |
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
|
2230 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
|
2231 SDL_DirtyTexture(SDL_TextureID textureID, int numrects, |
2753 | 2232 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
|
2233 { |
2753 | 2234 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
2235 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
|
2236 |
2753 | 2237 if (!texture) { |
2238 return; | |
2239 } | |
2240 if (texture->access != SDL_TEXTUREACCESS_STREAMING) { | |
2241 return; | |
2242 } | |
2243 renderer = texture->renderer; | |
2244 if (!renderer->DirtyTexture) { | |
2245 return; | |
2246 } | |
2247 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
|
2248 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2249 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2250 int |
2884
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2251 SDL_SetRenderDrawColor(Uint8 r, Uint8 g, Uint8 b, Uint8 a) |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2252 { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2253 SDL_Renderer *renderer; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2254 |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2255 if (!_this) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2256 SDL_UninitializedVideo(); |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2257 return -1; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2258 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2259 renderer = SDL_CurrentDisplay.current_renderer; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2260 if (!renderer) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2261 return -1; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2262 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2263 renderer->r = r; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2264 renderer->g = g; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2265 renderer->b = b; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2266 renderer->a = a; |
2927
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
2267 if (renderer->SetDrawColor) { |
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
2268 return renderer->SetDrawColor(renderer); |
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
2269 } else { |
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
2270 return 0; |
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
2271 } |
2884
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2272 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2273 |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2274 int |
2885 | 2275 SDL_GetRenderDrawColor(Uint8 * r, Uint8 * g, Uint8 * b, Uint8 * a) |
2884
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2276 { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2277 SDL_Renderer *renderer; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2278 |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2279 if (!_this) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2280 SDL_UninitializedVideo(); |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2281 return -1; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2282 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2283 renderer = SDL_CurrentDisplay.current_renderer; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2284 if (!renderer) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2285 return -1; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2286 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2287 if (r) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2288 *r = renderer->r; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2289 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2290 if (g) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2291 *g = renderer->g; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2292 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2293 if (b) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2294 *b = renderer->b; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2295 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2296 if (a) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2297 *a = renderer->a; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2298 } |
2928
e171ce9bdbad
Fixed missing return value
Sam Lantinga <slouken@libsdl.org>
parents:
2927
diff
changeset
|
2299 return 0; |
2884
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2300 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2301 |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2302 int |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2303 SDL_SetRenderDrawBlendMode(int blendMode) |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2304 { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2305 SDL_Renderer *renderer; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2306 |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2307 if (!_this) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2308 SDL_UninitializedVideo(); |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2309 return -1; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2310 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2311 renderer = SDL_CurrentDisplay.current_renderer; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2312 if (!renderer) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2313 return -1; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2314 } |
2927
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
2315 renderer->blendMode = blendMode; |
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
2316 if (renderer->SetDrawBlendMode) { |
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
2317 return renderer->SetDrawBlendMode(renderer); |
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
2318 } else { |
2133d2d300fd
SetDrawColor() and SetDrawBlendMode() are optional
Sam Lantinga <slouken@libsdl.org>
parents:
2918
diff
changeset
|
2319 return 0; |
2884
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2320 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2321 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2322 |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2323 int |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2324 SDL_GetRenderDrawBlendMode(int *blendMode) |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2325 { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2326 SDL_Renderer *renderer; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2327 |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2328 if (!_this) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2329 SDL_UninitializedVideo(); |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2330 return -1; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2331 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2332 renderer = SDL_CurrentDisplay.current_renderer; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2333 if (!renderer) { |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2334 return -1; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2335 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2336 *blendMode = renderer->blendMode; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2337 return 0; |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2338 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2339 |
2901 | 2340 int |
2341 SDL_RenderPoint(int x, int y) | |
2342 { | |
2343 SDL_Renderer *renderer; | |
2344 SDL_Window *window; | |
2345 | |
2346 if (!_this) { | |
2347 SDL_UninitializedVideo(); | |
2348 return -1; | |
2349 } | |
2350 renderer = SDL_CurrentDisplay.current_renderer; | |
2351 if (!renderer) { | |
2352 return -1; | |
2353 } | |
2354 if (!renderer->RenderPoint) { | |
2355 SDL_Unsupported(); | |
2356 return -1; | |
2357 } | |
2358 window = SDL_GetWindowFromID(renderer->window); | |
2359 if (x < 0 || y < 0 || x >= window->w || y >= window->h) { | |
2360 return 0; | |
2361 } | |
2362 return renderer->RenderPoint(renderer, x, y); | |
2363 } | |
2364 | |
2365 int | |
2366 SDL_RenderLine(int x1, int y1, int x2, int y2) | |
2367 { | |
2368 SDL_Renderer *renderer; | |
2369 SDL_Window *window; | |
2370 SDL_Rect real_rect; | |
2371 | |
2372 if (x1 == x2 && y1 == y2) { | |
2373 return SDL_RenderPoint(x1, y1); | |
2374 } | |
2375 | |
2376 if (!_this) { | |
2377 SDL_UninitializedVideo(); | |
2378 return -1; | |
2379 } | |
2380 renderer = SDL_CurrentDisplay.current_renderer; | |
2381 if (!renderer) { | |
2382 return -1; | |
2383 } | |
2384 if (!renderer->RenderLine) { | |
2385 SDL_Unsupported(); | |
2386 return -1; | |
2387 } | |
2388 window = SDL_GetWindowFromID(renderer->window); | |
2909 | 2389 |
2901 | 2390 real_rect.x = 0; |
2391 real_rect.y = 0; | |
2392 real_rect.w = window->w; | |
2393 real_rect.h = window->h; | |
2910
27d8b12e0e8e
Fixed argument order to the line clipping routine
Sam Lantinga <slouken@libsdl.org>
parents:
2909
diff
changeset
|
2394 if (!SDL_IntersectRectAndLine(&real_rect, &x1, &y1, &x2, &y2)) { |
2909 | 2395 return (0); |
2901 | 2396 } |
2397 return renderer->RenderLine(renderer, x1, y1, x2, y2); | |
2398 } | |
2884
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2399 |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2400 int |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2401 SDL_RenderFill(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
|
2402 { |
2753 | 2403 SDL_Renderer *renderer; |
2404 SDL_Window *window; | |
2405 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
|
2406 |
2753 | 2407 if (!_this) { |
2408 SDL_UninitializedVideo(); | |
2409 return -1; | |
2410 } | |
2411 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
|
2412 if (!renderer) { |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2413 return -1; |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2414 } |
2814 | 2415 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
|
2416 SDL_Unsupported(); |
2753 | 2417 return -1; |
2418 } | |
2419 window = SDL_GetWindowFromID(renderer->window); | |
2908
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2420 |
2753 | 2421 real_rect.x = 0; |
2422 real_rect.y = 0; | |
2423 real_rect.w = window->w; | |
2424 real_rect.h = window->h; | |
2425 if (rect) { | |
2426 if (!SDL_IntersectRect(rect, &real_rect, &real_rect)) { | |
2427 return 0; | |
2428 } | |
2429 } | |
2884
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2430 return renderer->RenderFill(renderer, &real_rect); |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2431 } |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2432 |
9dde605c7540
Date: Fri, 19 Dec 2008 20:17:35 +0100
Sam Lantinga <slouken@libsdl.org>
parents:
2876
diff
changeset
|
2433 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
|
2434 SDL_RenderCopy(SDL_TextureID textureID, const SDL_Rect * srcrect, |
2753 | 2435 const SDL_Rect * dstrect) |
0 | 2436 { |
2753 | 2437 SDL_Texture *texture = SDL_GetTextureFromID(textureID); |
2438 SDL_Renderer *renderer; | |
2439 SDL_Window *window; | |
2440 SDL_Rect real_srcrect; | |
2441 SDL_Rect real_dstrect; | |
0 | 2442 |
2753 | 2443 if (!texture || texture->renderer != SDL_CurrentDisplay.current_renderer) { |
2444 return -1; | |
2445 } | |
2446 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
|
2447 if (!renderer) { |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2448 return -1; |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2449 } |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2450 if (!renderer->RenderCopy) { |
27cb878a278e
Implemented the X11 (non-OpenGL) renderer, no alpha or scaling available.
Sam Lantinga <slouken@libsdl.org>
parents:
2789
diff
changeset
|
2451 SDL_Unsupported(); |
2753 | 2452 return -1; |
2453 } | |
2454 window = SDL_GetWindowFromID(renderer->window); | |
2908
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2455 |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2456 real_srcrect.x = 0; |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2457 real_srcrect.y = 0; |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2458 real_srcrect.w = texture->w; |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2459 real_srcrect.h = texture->h; |
2753 | 2460 if (srcrect) { |
2908
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2461 if (!SDL_IntersectRect(srcrect, &real_srcrect, &real_srcrect)) { |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2462 return 0; |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2463 } |
2753 | 2464 } |
2908
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2465 |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2466 real_dstrect.x = 0; |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2467 real_dstrect.y = 0; |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2468 real_dstrect.w = window->w; |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2469 real_dstrect.h = window->h; |
2753 | 2470 if (dstrect) { |
2908
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2471 if (!SDL_IntersectRect(dstrect, &real_dstrect, &real_dstrect)) { |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2472 return 0; |
aa6ba38c1714
Added clipping for render copy
Sam Lantinga <slouken@libsdl.org>
parents:
2901
diff
changeset
|
2473 } |
2912
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2474 /* Clip srcrect by the same amount as dstrect was clipped */ |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2475 if (dstrect->w != real_dstrect.w) { |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2476 int deltax = (real_dstrect.x - dstrect->x); |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2477 int deltaw = (real_dstrect.w - dstrect->w); |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2478 real_srcrect.x += (deltax * dstrect->w) / real_srcrect.w; |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2479 real_srcrect.w += (deltaw * dstrect->w) / real_srcrect.w; |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2480 } |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2481 if (dstrect->h != real_dstrect.h) { |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2482 int deltay = (real_dstrect.y - dstrect->y); |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2483 int deltah = (real_dstrect.h - dstrect->h); |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2484 real_srcrect.y += (deltay * dstrect->h) / real_srcrect.h; |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2485 real_srcrect.h += (deltah * dstrect->h) / real_srcrect.h; |
1d50666ed3d5
Fixed clipping source rect to match destination rect clipping
Sam Lantinga <slouken@libsdl.org>
parents:
2910
diff
changeset
|
2486 } |
2753 | 2487 } |
0 | 2488 |
2753 | 2489 return renderer->RenderCopy(renderer, texture, &real_srcrect, |
2490 &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
|
2491 } |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2492 |
c121d94672cb
SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.
Sam Lantinga <slouken@libsdl.org>
parents:
1737
diff
changeset
|
2493 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
|
2494 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
|
2495 { |
2753 | 2496 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
|
2497 |
2753 | 2498 if (!_this) { |
2499 SDL_UninitializedVideo(); | |
2500 return; | |
2501 } | |
2502 renderer = SDL_CurrentDisplay.current_renderer; | |
2503 if (!renderer || !renderer->RenderPresent) { | |
2504 return; | |
2505 } | |
2506 renderer->RenderPresent(renderer); | |
0 | 2507 } |
2508 | |
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
|
2509 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
|
2510 SDL_DestroyTexture(SDL_TextureID textureID) |
0 | 2511 { |
2753 | 2512 int hash; |
2513 SDL_Texture *prev, *texture; | |
2514 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
|
2515 |
2753 | 2516 if (!_this) { |
2517 SDL_UninitializedVideo(); | |
2518 return; | |
2519 } | |
2520 /* Look up the texture in the hash table */ | |
2521 hash = (textureID % SDL_arraysize(SDL_CurrentDisplay.textures)); | |
2522 prev = NULL; | |
2523 for (texture = SDL_CurrentDisplay.textures[hash]; texture; | |
2524 prev = texture, texture = texture->next) { | |
2525 if (texture->id == textureID) { | |
2526 break; | |
2527 } | |
2528 } | |
2529 if (!texture) { | |
2530 return; | |
2531 } | |
2532 /* Unlink the texture from the list */ | |
2533 if (prev) { | |
2534 prev->next = texture->next; | |
2535 } else { | |
2536 SDL_CurrentDisplay.textures[hash] = texture->next; | |
2537 } | |
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
|
2538 |
2753 | 2539 /* Free the texture */ |
2540 renderer = texture->renderer; | |
2541 renderer->DestroyTexture(renderer, texture); | |
2542 SDL_free(texture); | |
0 | 2543 } |
2544 | |
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
|
2545 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
|
2546 SDL_DestroyRenderer(SDL_WindowID windowID) |
0 | 2547 { |
2753 | 2548 SDL_Window *window = SDL_GetWindowFromID(windowID); |
2549 SDL_Renderer *renderer; | |
2550 int i; | |
0 | 2551 |
2753 | 2552 if (!window) { |
2553 return; | |
2554 } | |
2555 renderer = window->renderer; | |
2556 if (!renderer) { | |
2557 return; | |
2558 } | |
2559 /* Free existing textures for this renderer */ | |
2560 for (i = 0; i < SDL_arraysize(SDL_CurrentDisplay.textures); ++i) { | |
2561 SDL_Texture *texture; | |
2562 SDL_Texture *prev = NULL; | |
2563 SDL_Texture *next; | |
2564 for (texture = SDL_CurrentDisplay.textures[i]; texture; | |
2565 texture = next) { | |
2566 next = texture->next; | |
2567 if (texture->renderer == renderer) { | |
2568 if (prev) { | |
2569 prev->next = next; | |
2570 } else { | |
2571 SDL_CurrentDisplay.textures[i] = next; | |
2572 } | |
2573 renderer->DestroyTexture(renderer, texture); | |
2574 SDL_free(texture); | |
2575 } else { | |
2576 prev = texture; | |
2577 } | |
2578 } | |
2579 } | |
0 | 2580 |
2753 | 2581 /* Free the renderer instance */ |
2582 renderer->DestroyRenderer(renderer); | |
0 | 2583 |
2753 | 2584 /* Clear references */ |
2585 window->renderer = NULL; | |
2586 if (SDL_CurrentDisplay.current_renderer == renderer) { | |
2587 SDL_CurrentDisplay.current_renderer = NULL; | |
2588 } | |
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
|
2589 } |
0 | 2590 |
3025
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2591 SDL_bool |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2592 SDL_IsScreenSaverEnabled() |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2593 { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2594 if (!_this) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2595 return SDL_TRUE; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2596 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2597 return _this->suspend_screensaver ? SDL_FALSE : SDL_TRUE; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2598 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2599 |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2600 void |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2601 SDL_EnableScreenSaver() |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2602 { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2603 if (!_this) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2604 return; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2605 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2606 if (!_this->suspend_screensaver) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2607 return; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2608 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2609 _this->suspend_screensaver = SDL_FALSE; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2610 if (_this->SuspendScreenSaver) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2611 _this->SuspendScreenSaver(_this); |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2612 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2613 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2614 |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2615 void |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2616 SDL_DisableScreenSaver() |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2617 { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2618 if (!_this) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2619 return; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2620 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2621 if (_this->suspend_screensaver) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2622 return; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2623 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2624 _this->suspend_screensaver = SDL_TRUE; |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2625 if (_this->SuspendScreenSaver) { |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2626 _this->SuspendScreenSaver(_this); |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2627 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2628 } |
54fac87e1f34
Added an API to enable/disable the screen saver.
Sam Lantinga <slouken@libsdl.org>
parents:
2999
diff
changeset
|
2629 |
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
|
2630 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
|
2631 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
|
2632 { |
2753 | 2633 int i, j; |
0 | 2634 |
2753 | 2635 if (!_this) { |
2636 return; | |
2637 } | |
2638 /* Halt event processing before doing anything else */ | |
2639 SDL_StopEventLoop(); | |
3029
89f8a72e1ee9
Re-enable the screensaver at exit, just in case it's needed...
Sam Lantinga <slouken@libsdl.org>
parents:
3025
diff
changeset
|
2640 SDL_EnableScreenSaver(); |
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
|
2641 |
2753 | 2642 /* Clean up the system video */ |
2643 for (i = _this->num_displays; i--;) { | |
2644 SDL_VideoDisplay *display = &_this->displays[i]; | |
2645 for (j = display->num_windows; j--;) { | |
2646 SDL_DestroyWindow(display->windows[i].id); | |
2647 } | |
2648 if (display->windows) { | |
2649 SDL_free(display->windows); | |
2650 display->windows = NULL; | |
2651 } | |
2652 display->num_windows = 0; | |
2653 if (display->render_drivers) { | |
2654 SDL_free(display->render_drivers); | |
2655 display->render_drivers = NULL; | |
2656 } | |
2657 display->num_render_drivers = 0; | |
2658 } | |
2659 _this->VideoQuit(_this); | |
0 | 2660 |
2753 | 2661 for (i = _this->num_displays; i--;) { |
2662 SDL_VideoDisplay *display = &_this->displays[i]; | |
2663 for (j = display->num_display_modes; j--;) { | |
2664 if (display->display_modes[j].driverdata) { | |
2665 SDL_free(display->display_modes[j].driverdata); | |
2666 display->display_modes[j].driverdata = NULL; | |
2667 } | |
2668 } | |
2669 if (display->display_modes) { | |
2670 SDL_free(display->display_modes); | |
2671 display->display_modes = NULL; | |
2672 } | |
2673 if (display->desktop_mode.driverdata) { | |
2674 SDL_free(display->desktop_mode.driverdata); | |
2675 display->desktop_mode.driverdata = NULL; | |
2676 } | |
2677 if (display->palette) { | |
2678 SDL_FreePalette(display->palette); | |
2679 display->palette = NULL; | |
2680 } | |
2681 if (display->gamma) { | |
2682 SDL_free(display->gamma); | |
2683 display->gamma = NULL; | |
2684 } | |
2685 if (display->driverdata) { | |
2686 SDL_free(display->driverdata); | |
2687 display->driverdata = NULL; | |
2688 } | |
2689 } | |
2690 if (_this->displays) { | |
2691 SDL_free(_this->displays); | |
2692 _this->displays = NULL; | |
2693 } | |
2694 _this->free(_this); | |
2695 _this = NULL; | |
0 | 2696 } |
2697 | |
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
|
2698 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
|
2699 SDL_GL_LoadLibrary(const char *path) |
0 | 2700 { |
2753 | 2701 int retval; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2702 |
2753 | 2703 if (!_this) { |
2704 SDL_UninitializedVideo(); | |
2705 return -1; | |
2706 } | |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2707 if (_this->gl_config.driver_loaded) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2708 if (path && SDL_strcmp(path, _this->gl_config.driver_path) != 0) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2709 SDL_SetError("OpenGL library already loaded"); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2710 return -1; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2711 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2712 retval = 0; |
2753 | 2713 } else { |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2714 if (!_this->GL_LoadLibrary) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2715 SDL_SetError("No dynamic GL support in video driver"); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2716 return -1; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2717 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2718 retval = _this->GL_LoadLibrary(_this, path); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2719 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2720 if (retval == 0) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2721 ++_this->gl_config.driver_loaded; |
2753 | 2722 } |
2723 return (retval); | |
0 | 2724 } |
2725 | |
2753 | 2726 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
|
2727 SDL_GL_GetProcAddress(const char *proc) |
0 | 2728 { |
2753 | 2729 void *func; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2730 |
2753 | 2731 if (!_this) { |
2732 SDL_UninitializedVideo(); | |
2733 return NULL; | |
2734 } | |
2735 func = NULL; | |
2736 if (_this->GL_GetProcAddress) { | |
2737 if (_this->gl_config.driver_loaded) { | |
2738 func = _this->GL_GetProcAddress(_this, proc); | |
2739 } else { | |
2740 SDL_SetError("No GL driver has been loaded"); | |
2741 } | |
2742 } else { | |
2743 SDL_SetError("No dynamic GL support in video driver"); | |
2744 } | |
2745 return func; | |
0 | 2746 } |
2747 | |
3057
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2748 void |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2749 SDL_GL_UnloadLibrary(void) |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2750 { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2751 if (!_this) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2752 SDL_UninitializedVideo(); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2753 return; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2754 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2755 if (_this->gl_config.driver_loaded > 0) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2756 if (--_this->gl_config.driver_loaded > 0) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2757 return; |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2758 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2759 if (_this->GL_UnloadLibrary) { |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2760 _this->GL_UnloadLibrary(_this); |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2761 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2762 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2763 } |
089a77aebb7d
Added test program for SDL_CreateWindowFrom()
Sam Lantinga <slouken@libsdl.org>
parents:
3053
diff
changeset
|
2764 |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2765 SDL_bool |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2766 SDL_GL_ExtensionSupported(const char *extension) |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2767 { |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2768 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES |
2753 | 2769 const GLubyte *(APIENTRY * glGetStringFunc) (GLenum); |
2770 const char *extensions; | |
2771 const char *start; | |
2772 const char *where, *terminator; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2773 |
2753 | 2774 /* Extension names should not have spaces. */ |
2775 where = SDL_strchr(extension, ' '); | |
2776 if (where || *extension == '\0') { | |
2777 return SDL_FALSE; | |
2778 } | |
2779 /* See if there's an environment variable override */ | |
2780 start = SDL_getenv(extension); | |
2781 if (start && *start == '0') { | |
2782 return SDL_FALSE; | |
2783 } | |
2784 /* Lookup the available extensions */ | |
2785 glGetStringFunc = SDL_GL_GetProcAddress("glGetString"); | |
2786 if (glGetStringFunc) { | |
2787 extensions = (const char *) glGetStringFunc(GL_EXTENSIONS); | |
2788 } else { | |
2789 extensions = NULL; | |
2790 } | |
2791 if (!extensions) { | |
2792 return SDL_FALSE; | |
2793 } | |
2794 /* | |
2795 * It takes a bit of care to be fool-proof about parsing the OpenGL | |
2796 * extensions string. Don't be fooled by sub-strings, etc. | |
2797 */ | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2798 |
2753 | 2799 start = extensions; |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2800 |
2753 | 2801 for (;;) { |
2802 where = SDL_strstr(start, extension); | |
2803 if (!where) | |
2804 break; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2805 |
2753 | 2806 terminator = where + SDL_strlen(extension); |
2807 if (where == start || *(where - 1) == ' ') | |
2808 if (*terminator == ' ' || *terminator == '\0') | |
2809 return SDL_TRUE; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2810 |
2753 | 2811 start = terminator; |
2812 } | |
2813 return SDL_FALSE; | |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2814 #else |
2753 | 2815 return SDL_FALSE; |
1926
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2816 #endif |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2817 } |
307355678142
Added SDL_GL_ExtensionSupported()
Sam Lantinga <slouken@libsdl.org>
parents:
1924
diff
changeset
|
2818 |
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
|
2819 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
|
2820 SDL_GL_SetAttribute(SDL_GLattr attr, int value) |
0 | 2821 { |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2822 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES |
2753 | 2823 int retval; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2824 |
2753 | 2825 if (!_this) { |
2826 SDL_UninitializedVideo(); | |
2827 return -1; | |
2828 } | |
2829 retval = 0; | |
2830 switch (attr) { | |
2831 case SDL_GL_RED_SIZE: | |
2832 _this->gl_config.red_size = value; | |
2833 break; | |
2834 case SDL_GL_GREEN_SIZE: | |
2835 _this->gl_config.green_size = value; | |
2836 break; | |
2837 case SDL_GL_BLUE_SIZE: | |
2838 _this->gl_config.blue_size = value; | |
2839 break; | |
2840 case SDL_GL_ALPHA_SIZE: | |
2841 _this->gl_config.alpha_size = value; | |
2842 break; | |
2843 case SDL_GL_DOUBLEBUFFER: | |
2844 _this->gl_config.double_buffer = value; | |
2845 break; | |
2846 case SDL_GL_BUFFER_SIZE: | |
2847 _this->gl_config.buffer_size = value; | |
2848 break; | |
2849 case SDL_GL_DEPTH_SIZE: | |
2850 _this->gl_config.depth_size = value; | |
2851 break; | |
2852 case SDL_GL_STENCIL_SIZE: | |
2853 _this->gl_config.stencil_size = value; | |
2854 break; | |
2855 case SDL_GL_ACCUM_RED_SIZE: | |
2856 _this->gl_config.accum_red_size = value; | |
2857 break; | |
2858 case SDL_GL_ACCUM_GREEN_SIZE: | |
2859 _this->gl_config.accum_green_size = value; | |
2860 break; | |
2861 case SDL_GL_ACCUM_BLUE_SIZE: | |
2862 _this->gl_config.accum_blue_size = value; | |
2863 break; | |
2864 case SDL_GL_ACCUM_ALPHA_SIZE: | |
2865 _this->gl_config.accum_alpha_size = value; | |
2866 break; | |
2867 case SDL_GL_STEREO: | |
2868 _this->gl_config.stereo = value; | |
2869 break; | |
2870 case SDL_GL_MULTISAMPLEBUFFERS: | |
2871 _this->gl_config.multisamplebuffers = value; | |
2872 break; | |
2873 case SDL_GL_MULTISAMPLESAMPLES: | |
2874 _this->gl_config.multisamplesamples = value; | |
2875 break; | |
2876 case SDL_GL_ACCELERATED_VISUAL: | |
2877 _this->gl_config.accelerated = value; | |
2878 break; | |
2879 case SDL_GL_RETAINED_BACKING: | |
2880 _this->gl_config.retained_backing = value; | |
2881 break; | |
3100
7dc982143c06
Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents:
3099
diff
changeset
|
2882 case SDL_GL_CONTEXT_MAJOR_VERSION: |
7dc982143c06
Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents:
3099
diff
changeset
|
2883 _this->gl_config.major_version = value; |
7dc982143c06
Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents:
3099
diff
changeset
|
2884 break; |
7dc982143c06
Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents:
3099
diff
changeset
|
2885 case SDL_GL_CONTEXT_MINOR_VERSION: |
7dc982143c06
Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents:
3099
diff
changeset
|
2886 _this->gl_config.minor_version = value; |
7dc982143c06
Date: Sun, 22 Mar 2009 12:52:29 +0000
Sam Lantinga <slouken@libsdl.org>
parents:
3099
diff
changeset
|
2887 break; |
2753 | 2888 default: |
2889 SDL_SetError("Unknown OpenGL attribute"); | |
2890 retval = -1; | |
2891 break; | |
2892 } | |
2893 return retval; | |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2894 #else |
2753 | 2895 SDL_Unsupported(); |
2896 return -1; | |
2897 #endif /* SDL_VIDEO_OPENGL */ | |
0 | 2898 } |
2899 | |
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
|
2900 int |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2901 SDL_GL_GetAttribute(SDL_GLattr attr, int *value) |
0 | 2902 { |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2903 #if SDL_VIDEO_OPENGL || SDL_VIDEO_OPENGL_ES |
2753 | 2904 void (APIENTRY * glGetIntegervFunc) (GLenum pname, GLint * params); |
3139 | 2905 GLenum(APIENTRY * glGetErrorFunc) (void); |
2753 | 2906 GLenum attrib = 0; |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2907 GLenum error = 0; |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
2908 |
2753 | 2909 glGetIntegervFunc = SDL_GL_GetProcAddress("glGetIntegerv"); |
2910 if (!glGetIntegervFunc) { | |
2911 return -1; | |
2912 } | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2913 |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2914 glGetErrorFunc = SDL_GL_GetProcAddress("glGetError"); |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2915 if (!glGetErrorFunc) { |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2916 return -1; |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2917 } |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2918 |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2919 /* Clear value in any case */ |
3139 | 2920 *value = 0; |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2921 |
2753 | 2922 switch (attr) { |
2923 case SDL_GL_RETAINED_BACKING: | |
2924 *value = _this->gl_config.retained_backing; | |
2925 return 0; | |
2926 case SDL_GL_RED_SIZE: | |
2927 attrib = GL_RED_BITS; | |
2928 break; | |
2929 case SDL_GL_BLUE_SIZE: | |
2930 attrib = GL_BLUE_BITS; | |
2931 break; | |
2932 case SDL_GL_GREEN_SIZE: | |
2933 attrib = GL_GREEN_BITS; | |
2934 break; | |
2935 case SDL_GL_ALPHA_SIZE: | |
2936 attrib = GL_ALPHA_BITS; | |
2937 break; | |
2938 case SDL_GL_DOUBLEBUFFER: | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2939 #ifndef SDL_VIDEO_OPENGL_ES |
2753 | 2940 attrib = GL_DOUBLEBUFFER; |
2941 break; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2942 #else |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2943 /* OpenGL ES 1.0 and above specifications have EGL_SINGLE_BUFFER */ |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2944 /* parameter which switches double buffer to single buffer. OpenGL ES */ |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2945 /* SDL driver must set proper value after initialization */ |
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
2946 *value = _this->gl_config.double_buffer; |
2753 | 2947 return 0; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2948 #endif |
2753 | 2949 case SDL_GL_DEPTH_SIZE: |
2950 attrib = GL_DEPTH_BITS; | |
2951 break; | |
2952 case SDL_GL_STENCIL_SIZE: | |
2953 attrib = GL_STENCIL_BITS; | |
2954 break; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2955 #ifndef SDL_VIDEO_OPENGL_ES |
2753 | 2956 case SDL_GL_ACCUM_RED_SIZE: |
2957 attrib = GL_ACCUM_RED_BITS; | |
2958 break; | |
2959 case SDL_GL_ACCUM_GREEN_SIZE: | |
2960 attrib = GL_ACCUM_GREEN_BITS; | |
2961 break; | |
2962 case SDL_GL_ACCUM_BLUE_SIZE: | |
2963 attrib = GL_ACCUM_BLUE_BITS; | |
2964 break; | |
2965 case SDL_GL_ACCUM_ALPHA_SIZE: | |
2966 attrib = GL_ACCUM_ALPHA_BITS; | |
2967 break; | |
2968 case SDL_GL_STEREO: | |
2969 attrib = GL_STEREO; | |
2970 break; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2971 #else |
2753 | 2972 case SDL_GL_ACCUM_RED_SIZE: |
2973 case SDL_GL_ACCUM_GREEN_SIZE: | |
2974 case SDL_GL_ACCUM_BLUE_SIZE: | |
2975 case SDL_GL_ACCUM_ALPHA_SIZE: | |
2976 case SDL_GL_STEREO: | |
2977 /* none of these are supported in OpenGL ES */ | |
2978 *value = 0; | |
2979 return 0; | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2980 #endif |
2753 | 2981 case SDL_GL_MULTISAMPLEBUFFERS: |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2982 #ifndef SDL_VIDEO_OPENGL_ES |
2753 | 2983 attrib = GL_SAMPLE_BUFFERS_ARB; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2984 #else |
2753 | 2985 attrib = GL_SAMPLE_BUFFERS; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2986 #endif |
2753 | 2987 break; |
2988 case SDL_GL_MULTISAMPLESAMPLES: | |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2989 #ifndef SDL_VIDEO_OPENGL_ES |
2753 | 2990 attrib = GL_SAMPLES_ARB; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2991 #else |
2753 | 2992 attrib = GL_SAMPLES; |
2745
587d2b5fb805
Added support for OpenGL ES renderer
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2744
diff
changeset
|
2993 #endif |
2753 | 2994 break; |
2995 case SDL_GL_BUFFER_SIZE: | |
2996 { | |
2997 GLint bits = 0; | |
2998 GLint component; | |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
2999 |
2753 | 3000 /* |
3001 * there doesn't seem to be a single flag in OpenGL | |
3002 * for this! | |
3003 */ | |
3004 glGetIntegervFunc(GL_RED_BITS, &component); | |
3005 bits += component; | |
3006 glGetIntegervFunc(GL_GREEN_BITS, &component); | |
3007 bits += component; | |
3008 glGetIntegervFunc(GL_BLUE_BITS, &component); | |
3009 bits += component; | |
3010 glGetIntegervFunc(GL_ALPHA_BITS, &component); | |
3011 bits += component; | |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
3012 |
2753 | 3013 *value = bits; |
3014 return 0; | |
3015 } | |
3016 case SDL_GL_ACCELERATED_VISUAL: | |
3017 { | |
3018 /* FIXME: How do we get this information? */ | |
3019 *value = (_this->gl_config.accelerated != 0); | |
3020 return 0; | |
3021 } | |
3022 default: | |
3023 SDL_SetError("Unknown OpenGL attribute"); | |
3024 return -1; | |
3025 } | |
0 | 3026 |
2753 | 3027 glGetIntegervFunc(attrib, (GLint *) value); |
3139 | 3028 error = glGetErrorFunc(); |
3029 if (error != GL_NO_ERROR) { | |
3030 switch (error) { | |
3031 case GL_INVALID_ENUM: | |
3032 { | |
3033 SDL_SetError("OpenGL error: GL_INVALID_ENUM"); | |
3034 } | |
3035 break; | |
3036 case GL_INVALID_VALUE: | |
3037 { | |
3038 SDL_SetError("OpenGL error: GL_INVALID_VALUE"); | |
3039 } | |
3040 break; | |
3041 default: | |
3042 { | |
3043 SDL_SetError("OpenGL error: %08X", error); | |
3044 } | |
3045 break; | |
3046 } | |
3047 return -1; | |
3099
82e60908fab1
Date: Mon, 23 Mar 2009 09:17:24 +0200
Sam Lantinga <slouken@libsdl.org>
parents:
3092
diff
changeset
|
3048 } |
2753 | 3049 return 0; |
1936
83946ee0ff1f
Implemented OpenGL support on Mac OS X
Sam Lantinga <slouken@libsdl.org>
parents:
1933
diff
changeset
|
3050 #else |
2753 | 3051 SDL_Unsupported(); |
3052 return -1; | |
3053 #endif /* SDL_VIDEO_OPENGL */ | |
0 | 3054 } |
3055 | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3056 SDL_GLContext |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3057 SDL_GL_CreateContext(SDL_WindowID windowID) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3058 { |
2753 | 3059 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3060 |
2753 | 3061 if (!window) { |
3062 return NULL; | |
3063 } | |
3064 if (!(window->flags & SDL_WINDOW_OPENGL)) { | |
3065 SDL_SetError("The specified window isn't an OpenGL window"); | |
3066 return NULL; | |
3067 } | |
3068 return _this->GL_CreateContext(_this, window); | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3069 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3070 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3071 int |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3072 SDL_GL_MakeCurrent(SDL_WindowID windowID, SDL_GLContext context) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3073 { |
2753 | 3074 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3075 |
2753 | 3076 if (window && !(window->flags & SDL_WINDOW_OPENGL)) { |
3077 SDL_SetError("The specified window isn't an OpenGL window"); | |
3078 return -1; | |
3079 } | |
3080 if (!context) { | |
3081 window = NULL; | |
3082 } | |
3083 return _this->GL_MakeCurrent(_this, window, context); | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3084 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3085 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3086 int |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3087 SDL_GL_SetSwapInterval(int interval) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3088 { |
2753 | 3089 if (!_this) { |
3090 SDL_UninitializedVideo(); | |
3091 return -1; | |
3092 } | |
3093 if (_this->GL_SetSwapInterval) { | |
3094 return _this->GL_SetSwapInterval(_this, interval); | |
3095 } else { | |
3096 SDL_SetError("Setting the swap interval is not supported"); | |
3097 return -1; | |
3098 } | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3099 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3100 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3101 int |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3102 SDL_GL_GetSwapInterval(void) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3103 { |
2753 | 3104 if (!_this) { |
3105 SDL_UninitializedVideo(); | |
3106 return -1; | |
3107 } | |
3108 if (_this->GL_GetSwapInterval) { | |
3109 return _this->GL_GetSwapInterval(_this); | |
3110 } else { | |
3111 SDL_SetError("Getting the swap interval is not supported"); | |
3112 return -1; | |
3113 } | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3114 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3115 |
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
|
3116 void |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3117 SDL_GL_SwapWindow(SDL_WindowID windowID) |
0 | 3118 { |
2753 | 3119 SDL_Window *window = SDL_GetWindowFromID(windowID); |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3120 |
2753 | 3121 if (!window) { |
3122 return; | |
3123 } | |
3124 if (!(window->flags & SDL_WINDOW_OPENGL)) { | |
3125 SDL_SetError("The specified window isn't an OpenGL window"); | |
3126 return; | |
3127 } | |
3128 _this->GL_SwapWindow(_this, window); | |
1912
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3129 } |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3130 |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3131 void |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3132 SDL_GL_DeleteContext(SDL_GLContext context) |
8d384b647307
Setting up the OpenGL support
Sam Lantinga <slouken@libsdl.org>
parents:
1909
diff
changeset
|
3133 { |
2753 | 3134 if (!_this || !context) { |
3135 return; | |
3136 } | |
3137 _this->GL_MakeCurrent(_this, NULL, NULL); | |
3138 _this->GL_DeleteContext(_this, context); | |
0 | 3139 } |
3140 | |
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
|
3141 #if 0 // FIXME |
2744
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
3142 /* |
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
3143 * 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
|
3144 * & 2 for alpha channel. |
1aede15771d0
Ran GNU indent on file
Holmes Futrell <hfutrell@umail.ucsb.edu>
parents:
2743
diff
changeset
|
3145 */ |
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
|
3146 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
|
3147 CreateMaskFromColorKeyOrAlpha(SDL_Surface * icon, Uint8 * mask, int flags) |
0 | 3148 { |
2753 | 3149 int x, y; |
3150 Uint32 colorkey; | |
0 | 3151 #define SET_MASKBIT(icon, x, y, mask) \ |
3152 mask[(y*((icon->w+7)/8))+(x/8)] &= ~(0x01<<(7-(x%8))) | |
3153 | |
2753 | 3154 colorkey = icon->format->colorkey; |
3155 switch (icon->format->BytesPerPixel) { | |
3156 case 1: | |
3157 { | |
3158 Uint8 *pixels; | |
3159 for (y = 0; y < icon->h; ++y) { | |
3160 pixels = (Uint8 *) icon->pixels + y * icon->pitch; | |
3161 for (x = 0; x < icon->w; ++x) { | |
3162 if (*pixels++ == colorkey) { | |
3163 SET_MASKBIT(icon, x, y, mask); | |
3164 } | |
3165 } | |
3166 } | |
3167 } | |
3168 break; | |
0 | 3169 |
2753 | 3170 case 2: |
3171 { | |
3172 Uint16 *pixels; | |
3173 for (y = 0; y < icon->h; ++y) { | |
3174 pixels = (Uint16 *) icon->pixels + y * icon->pitch / 2; | |
3175 for (x = 0; x < icon->w; ++x) { | |
3176 if ((flags & 1) && *pixels == colorkey) { | |
3177 SET_MASKBIT(icon, x, y, mask); | |
3178 } else if ((flags & 2) | |
3179 && (*pixels & icon->format->Amask) == 0) { | |
3180 SET_MASKBIT(icon, x, y, mask); | |
3181 } | |
3182 pixels++; | |
3183 } | |
3184 } | |
3185 } | |
3186 break; | |
0 | 3187 |
2753 | 3188 case 4: |
3189 { | |
3190 Uint32 *pixels; | |
3191 for (y = 0; y < icon->h; ++y) { | |
3192 pixels = (Uint32 *) icon->pixels + y * icon->pitch / 4; | |
3193 for (x = 0; x < icon->w; ++x) { | |
3194 if ((flags & 1) && *pixels == colorkey) { | |
3195 SET_MASKBIT(icon, x, y, mask); | |
3196 } else if ((flags & 2) | |
3197 && (*pixels & icon->format->Amask) == 0) { | |
3198 SET_MASKBIT(icon, x, y, mask); | |
3199 } | |
3200 pixels++; | |
3201 } | |
3202 } | |
3203 } | |
3204 break; | |
3205 } | |
0 | 3206 } |
3207 | |
3208 /* | |
3209 * Sets the window manager icon for the display window. | |
3210 */ | |
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
|
3211 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
|
3212 SDL_WM_SetIcon(SDL_Surface * icon, Uint8 * mask) |
0 | 3213 { |
2753 | 3214 if (icon && _this->SetIcon) { |
3215 /* Generate a mask if necessary, and create the icon! */ | |
3216 if (mask == NULL) { | |
3217 int mask_len = icon->h * (icon->w + 7) / 8; | |
3218 int flags = 0; | |
3219 mask = (Uint8 *) SDL_malloc(mask_len); | |
3220 if (mask == NULL) { | |
3221 return; | |
3222 } | |
3223 SDL_memset(mask, ~0, mask_len); | |
3224 if (icon->flags & SDL_SRCCOLORKEY) | |
3225 flags |= 1; | |
3226 if (icon->flags & SDL_SRCALPHA) | |
3227 flags |= 2; | |
3228 if (flags) { | |
3229 CreateMaskFromColorKeyOrAlpha(icon, mask, flags); | |
3230 } | |
3231 _this->SetIcon(_this, icon, mask); | |
3232 SDL_free(mask); | |
3233 } else { | |
3234 _this->SetIcon(_this, icon, mask); | |
3235 } | |
3236 } | |
0 | 3237 } |
3238 #endif | |
3239 | |
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
|
3240 SDL_bool |
2753 | 3241 SDL_GetWindowWMInfo(SDL_WindowID windowID, struct SDL_SysWMinfo *info) |
0 | 3242 { |
2753 | 3243 SDL_Window *window = SDL_GetWindowFromID(windowID); |
0 | 3244 |
2753 | 3245 if (!window || !_this->GetWindowWMInfo) { |
3246 return SDL_FALSE; | |
3247 } | |
3248 return (_this->GetWindowWMInfo(_this, window, info)); | |
0 | 3249 } |
3250 | |
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
|
3251 /* vi: set ts=4 sw=4 expandtab: */ |