annotate src/video/SDL_video.c @ 3197:434ce3242e1c

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