annotate src/video/SDL_video.c @ 3331:d44a0a913aa2

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