annotate SDL3/SDL_surface.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 Simple DirectMedia Layer
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 This software is provided 'as-is', without any express or implied
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 warranty. In no event will the authors be held liable for any damages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 arising from the use of this software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 Permission is granted to anyone to use this software for any purpose,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 including commercial applications, and to alter it and redistribute it
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 freely, subject to the following restrictions:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 1. The origin of this software must not be misrepresented; you must not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 claim that you wrote the original software. If you use this software
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 in a product, an acknowledgment in the product documentation would be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 appreciated but is not required.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 2. Altered source versions must be plainly marked as such, and must not be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 misrepresented as being the original software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 3. This notice may not be removed or altered from any source distribution.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 * # CategorySurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 * SDL surfaces are buffers of pixels in system RAM. These are useful for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 * passing around and manipulating images that are not stored in GPU memory.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 * SDL_Surface makes serious efforts to manage images in various formats, and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 * provides a reasonable toolbox for transforming the data, including copying
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 * between surfaces, filling rectangles in the image data, etc.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 * There is also a simple .bmp loader, SDL_LoadBMP(), and a simple .png
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 * loader, SDL_LoadPNG(). SDL itself does not provide loaders for other file
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 * formats, but there are several excellent external libraries that do,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 * including its own satellite library,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 * [SDL_image](https://wiki.libsdl.org/SDL3_image)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 * .
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 * In general these functions are thread-safe in that they can be called on
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 * different threads with different surfaces. You should not try to modify any
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 * surface from two threads simultaneously.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 #ifndef SDL_surface_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 #define SDL_surface_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 #include <SDL3/SDL_stdinc.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 #include <SDL3/SDL_error.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 #include <SDL3/SDL_blendmode.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 #include <SDL3/SDL_pixels.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 #include <SDL3/SDL_properties.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 #include <SDL3/SDL_rect.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 #include <SDL3/SDL_iostream.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 #include <SDL3/SDL_begin_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 /* Set up for C function definitions, even when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 extern "C" {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 * The flags on an SDL_Surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 * These are generally considered read-only.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 * \since This datatype is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 typedef Uint32 SDL_SurfaceFlags;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 #define SDL_SURFACE_PREALLOCATED 0x00000001u /**< Surface uses preallocated pixel memory */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 #define SDL_SURFACE_LOCK_NEEDED 0x00000002u /**< Surface needs to be locked to access pixels */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 #define SDL_SURFACE_LOCKED 0x00000004u /**< Surface is currently locked */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 #define SDL_SURFACE_SIMD_ALIGNED 0x00000008u /**< Surface uses pixel memory allocated with SDL_aligned_alloc() */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 * Evaluates to true if the surface needs to be locked before access.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 * \since This macro is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 #define SDL_MUSTLOCK(S) (((S)->flags & SDL_SURFACE_LOCK_NEEDED) == SDL_SURFACE_LOCK_NEEDED)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 * The scaling mode.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 * \since This enum is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 typedef enum SDL_ScaleMode
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 SDL_SCALEMODE_INVALID = -1,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 SDL_SCALEMODE_NEAREST, /**< nearest pixel sampling */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 SDL_SCALEMODE_LINEAR, /**< linear filtering */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 SDL_SCALEMODE_PIXELART /**< nearest pixel sampling with improved scaling for pixel art, available since SDL 3.4.0 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 } SDL_ScaleMode;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 * The flip mode.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 * \since This enum is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 typedef enum SDL_FlipMode
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 SDL_FLIP_NONE, /**< Do not flip */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 SDL_FLIP_HORIZONTAL, /**< flip horizontally */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 SDL_FLIP_VERTICAL, /**< flip vertically */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 SDL_FLIP_HORIZONTAL_AND_VERTICAL = (SDL_FLIP_HORIZONTAL | SDL_FLIP_VERTICAL) /**< flip horizontally and vertically (not a diagonal flip) */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 } SDL_FlipMode;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 #ifndef SDL_INTERNAL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 * A collection of pixels used in software blitting.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 * Pixels are arranged in memory in rows, with the top row first. Each row
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 * occupies an amount of memory given by the pitch (sometimes known as the row
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 * stride in non-SDL APIs).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 * Within each row, pixels are arranged from left to right until the width is
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 * reached. Each pixel occupies a number of bits appropriate for its format,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119 * with most formats representing each pixel as one or more whole bytes (in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 * some indexed formats, instead multiple pixels are packed into each byte),
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 * and a byte order given by the format. After encoding all pixels, any
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 * remaining bytes to reach the pitch are used as padding to reach a desired
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123 * alignment, and have undefined contents.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 * When a surface holds YUV format data, the planes are assumed to be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 * contiguous without padding between them, e.g. a 32x32 surface in NV12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127 * format with a pitch of 32 would consist of 32x32 bytes of Y plane followed
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 * by 32x16 bytes of UV plane.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 * When a surface holds MJPG format data, pixels points at the compressed JPEG
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 * image and pitch is the length of that data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 * \since This struct is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 * \sa SDL_CreateSurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 * \sa SDL_DestroySurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 struct SDL_Surface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140 SDL_SurfaceFlags flags; /**< The flags of the surface, read-only */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141 SDL_PixelFormat format; /**< The format of the surface, read-only */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 int w; /**< The width of the surface, read-only. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 int h; /**< The height of the surface, read-only. */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144 int pitch; /**< The distance in bytes between rows of pixels, read-only */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145 void *pixels; /**< A pointer to the pixels of the surface, the pixels are writeable if non-NULL */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147 int refcount; /**< Application reference count, used when freeing surface */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149 void *reserved; /**< Reserved for internal use */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151 #endif /* !SDL_INTERNAL */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 typedef struct SDL_Surface SDL_Surface;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 * Allocate a new surface with a specific pixel format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 * The pixels of the new surface are initialized to zero.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160 * \param width the width of the surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161 * \param height the height of the surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 * \param format the SDL_PixelFormat for the new surface's pixel format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 * \returns the new SDL_Surface structure that is created or NULL on failure;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164 * call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 * \sa SDL_CreateSurfaceFrom
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171 * \sa SDL_DestroySurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173 extern SDL_DECLSPEC SDL_Surface * SDLCALL SDL_CreateSurface(int width, int height, SDL_PixelFormat format);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 * Allocate a new surface with a specific pixel format and existing pixel
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177 * data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179 * No copy is made of the pixel data. Pixel data is not managed automatically;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180 * you must free the surface before you free the pixel data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182 * Pitch is the offset in bytes from one row of pixels to the next, e.g.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183 * `width*4` for `SDL_PIXELFORMAT_RGBA8888`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185 * You may pass NULL for pixels and 0 for pitch to create a surface that you
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186 * will fill in with valid values later.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188 * \param width the width of the surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189 * \param height the height of the surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190 * \param format the SDL_PixelFormat for the new surface's pixel format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191 * \param pixels a pointer to existing pixel data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192 * \param pitch the number of bytes between each row, including padding.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
193 * \returns the new SDL_Surface structure that is created or NULL on failure;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
194 * call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
195 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
196 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
197 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
198 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
199 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
200 * \sa SDL_CreateSurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
201 * \sa SDL_DestroySurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
202 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
203 extern SDL_DECLSPEC SDL_Surface * SDLCALL SDL_CreateSurfaceFrom(int width, int height, SDL_PixelFormat format, void *pixels, int pitch);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
204
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
205 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
206 * Free a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
207 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
208 * It is safe to pass NULL to this function.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
209 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
210 * \param surface the SDL_Surface to free.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
211 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
212 * \threadsafety No other thread should be using the surface when it is freed.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
213 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
214 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
215 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
216 * \sa SDL_CreateSurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
217 * \sa SDL_CreateSurfaceFrom
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
218 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
219 extern SDL_DECLSPEC void SDLCALL SDL_DestroySurface(SDL_Surface *surface);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
220
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
221 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
222 * Get the properties associated with a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
223 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
224 * The following properties are understood by SDL:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
225 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
226 * - `SDL_PROP_SURFACE_SDR_WHITE_POINT_FLOAT`: for HDR10 and floating point
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
227 * surfaces, this defines the value of 100% diffuse white, with higher
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
228 * values being displayed in the High Dynamic Range headroom. This defaults
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
229 * to 203 for HDR10 surfaces and 1.0 for floating point surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
230 * - `SDL_PROP_SURFACE_HDR_HEADROOM_FLOAT`: for HDR10 and floating point
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
231 * surfaces, this defines the maximum dynamic range used by the content, in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
232 * terms of the SDR white point. This defaults to 0.0, which disables tone
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
233 * mapping.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
234 * - `SDL_PROP_SURFACE_TONEMAP_OPERATOR_STRING`: the tone mapping operator
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
235 * used when compressing from a surface with high dynamic range to another
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
236 * with lower dynamic range. Currently this supports "chrome", which uses
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
237 * the same tone mapping that Chrome uses for HDR content, the form "*=N",
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
238 * where N is a floating point scale factor applied in linear space, and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
239 * "none", which disables tone mapping. This defaults to "chrome".
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
240 * - `SDL_PROP_SURFACE_HOTSPOT_X_NUMBER`: the hotspot pixel offset from the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
241 * left edge of the image, if this surface is being used as a cursor.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
242 * - `SDL_PROP_SURFACE_HOTSPOT_Y_NUMBER`: the hotspot pixel offset from the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
243 * top edge of the image, if this surface is being used as a cursor.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
244 * - `SDL_PROP_SURFACE_ROTATION_FLOAT`: the number of degrees a surface's data
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
245 * is meant to be rotated clockwise to make the image right-side up. Default
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
246 * 0. This is used by the camera API, if a mobile device is oriented
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
247 * differently than what its camera provides (i.e. - the camera always
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
248 * provides portrait images but the phone is being held in landscape
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
249 * orientation). Since SDL 3.4.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
250 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
251 * \param surface the SDL_Surface structure to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
252 * \returns a valid property ID on success or 0 on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
253 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
254 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
255 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
256 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
257 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
258 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
259 extern SDL_DECLSPEC SDL_PropertiesID SDLCALL SDL_GetSurfaceProperties(SDL_Surface *surface);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
260
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
261 #define SDL_PROP_SURFACE_SDR_WHITE_POINT_FLOAT "SDL.surface.SDR_white_point"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
262 #define SDL_PROP_SURFACE_HDR_HEADROOM_FLOAT "SDL.surface.HDR_headroom"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
263 #define SDL_PROP_SURFACE_TONEMAP_OPERATOR_STRING "SDL.surface.tonemap"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
264 #define SDL_PROP_SURFACE_HOTSPOT_X_NUMBER "SDL.surface.hotspot.x"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
265 #define SDL_PROP_SURFACE_HOTSPOT_Y_NUMBER "SDL.surface.hotspot.y"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
266 #define SDL_PROP_SURFACE_ROTATION_FLOAT "SDL.surface.rotation"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
267
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
268 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
269 * Set the colorspace used by a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
270 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
271 * Setting the colorspace doesn't change the pixels, only how they are
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
272 * interpreted in color operations.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
273 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
274 * \param surface the SDL_Surface structure to update.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
275 * \param colorspace an SDL_Colorspace value describing the surface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
276 * colorspace.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
277 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
278 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
279 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
280 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
281 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
282 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
283 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
284 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
285 * \sa SDL_GetSurfaceColorspace
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
286 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
287 extern SDL_DECLSPEC bool SDLCALL SDL_SetSurfaceColorspace(SDL_Surface *surface, SDL_Colorspace colorspace);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
288
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
289 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
290 * Get the colorspace used by a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
291 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
292 * The colorspace defaults to SDL_COLORSPACE_SRGB_LINEAR for floating point
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
293 * formats, SDL_COLORSPACE_HDR10 for 10-bit formats, SDL_COLORSPACE_SRGB for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
294 * other RGB surfaces and SDL_COLORSPACE_BT709_FULL for YUV textures.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
295 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
296 * \param surface the SDL_Surface structure to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
297 * \returns the colorspace used by the surface, or SDL_COLORSPACE_UNKNOWN if
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
298 * the surface is NULL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
299 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
300 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
301 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
302 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
303 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
304 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
305 * \sa SDL_SetSurfaceColorspace
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
306 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
307 extern SDL_DECLSPEC SDL_Colorspace SDLCALL SDL_GetSurfaceColorspace(SDL_Surface *surface);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
308
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
309 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
310 * Create a palette and associate it with a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
311 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
312 * This function creates a palette compatible with the provided surface. The
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
313 * palette is then returned for you to modify, and the surface will
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
314 * automatically use the new palette in future operations. You do not need to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
315 * destroy the returned palette, it will be freed when the reference count
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
316 * reaches 0, usually when the surface is destroyed.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
317 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
318 * Bitmap surfaces (with format SDL_PIXELFORMAT_INDEX1LSB or
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
319 * SDL_PIXELFORMAT_INDEX1MSB) will have the palette initialized with 0 as
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
320 * white and 1 as black. Other surfaces will get a palette initialized with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
321 * white in every entry.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
322 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
323 * If this function is called for a surface that already has a palette, a new
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
324 * palette will be created to replace it.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
325 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
326 * \param surface the SDL_Surface structure to update.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
327 * \returns a new SDL_Palette structure on success or NULL on failure (e.g. if
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
328 * the surface didn't have an index format); call SDL_GetError() for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
329 * more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
330 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
331 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
332 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
333 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
334 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
335 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
336 * \sa SDL_SetPaletteColors
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
337 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
338 extern SDL_DECLSPEC SDL_Palette * SDLCALL SDL_CreateSurfacePalette(SDL_Surface *surface);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
339
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
340 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
341 * Set the palette used by a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
342 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
343 * Setting the palette keeps an internal reference to the palette, which can
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
344 * be safely destroyed afterwards.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
345 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
346 * A single palette can be shared with many surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
347 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
348 * \param surface the SDL_Surface structure to update.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
349 * \param palette the SDL_Palette structure to use.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
350 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
351 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
352 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
353 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
354 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
355 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
356 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
357 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
358 * \sa SDL_CreatePalette
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
359 * \sa SDL_GetSurfacePalette
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
360 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
361 extern SDL_DECLSPEC bool SDLCALL SDL_SetSurfacePalette(SDL_Surface *surface, SDL_Palette *palette);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
362
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
363 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
364 * Get the palette used by a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
365 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
366 * \param surface the SDL_Surface structure to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
367 * \returns a pointer to the palette used by the surface, or NULL if there is
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
368 * no palette used.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
369 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
370 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
371 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
372 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
373 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
374 * \sa SDL_SetSurfacePalette
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
375 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
376 extern SDL_DECLSPEC SDL_Palette * SDLCALL SDL_GetSurfacePalette(SDL_Surface *surface);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
377
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
378 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
379 * Add an alternate version of a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
380 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
381 * This function adds an alternate version of this surface, usually used for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
382 * content with high DPI representations like cursors or icons. The size,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
383 * format, and content do not need to match the original surface, and these
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
384 * alternate versions will not be updated when the original surface changes.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
385 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
386 * This function adds a reference to the alternate version, so you should call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
387 * SDL_DestroySurface() on the image after this call.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
388 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
389 * \param surface the SDL_Surface structure to update.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
390 * \param image a pointer to an alternate SDL_Surface to associate with this
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
391 * surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
392 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
393 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
394 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
395 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
396 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
397 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
398 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
399 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
400 * \sa SDL_RemoveSurfaceAlternateImages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
401 * \sa SDL_GetSurfaceImages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
402 * \sa SDL_SurfaceHasAlternateImages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
403 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
404 extern SDL_DECLSPEC bool SDLCALL SDL_AddSurfaceAlternateImage(SDL_Surface *surface, SDL_Surface *image);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
405
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
406 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
407 * Return whether a surface has alternate versions available.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
408 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
409 * \param surface the SDL_Surface structure to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
410 * \returns true if alternate versions are available or false otherwise.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
411 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
412 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
413 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
414 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
415 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
416 * \sa SDL_AddSurfaceAlternateImage
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
417 * \sa SDL_RemoveSurfaceAlternateImages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
418 * \sa SDL_GetSurfaceImages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
419 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
420 extern SDL_DECLSPEC bool SDLCALL SDL_SurfaceHasAlternateImages(SDL_Surface *surface);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
421
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
422 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
423 * Get an array including all versions of a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
424 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
425 * This returns all versions of a surface, with the surface being queried as
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
426 * the first element in the returned array.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
427 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
428 * Freeing the array of surfaces does not affect the surfaces in the array.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
429 * They are still referenced by the surface being queried and will be cleaned
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
430 * up normally.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
431 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
432 * \param surface the SDL_Surface structure to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
433 * \param count a pointer filled in with the number of surface pointers
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
434 * returned, may be NULL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
435 * \returns a NULL terminated array of SDL_Surface pointers or NULL on
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
436 * failure; call SDL_GetError() for more information. This should be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
437 * freed with SDL_free() when it is no longer needed.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
438 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
439 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
440 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
441 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
442 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
443 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
444 * \sa SDL_AddSurfaceAlternateImage
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
445 * \sa SDL_RemoveSurfaceAlternateImages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
446 * \sa SDL_SurfaceHasAlternateImages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
447 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
448 extern SDL_DECLSPEC SDL_Surface ** SDLCALL SDL_GetSurfaceImages(SDL_Surface *surface, int *count);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
449
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
450 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
451 * Remove all alternate versions of a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
452 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
453 * This function removes a reference from all the alternative versions,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
454 * destroying them if this is the last reference to them.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
455 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
456 * \param surface the SDL_Surface structure to update.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
457 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
458 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
459 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
460 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
461 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
462 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
463 * \sa SDL_AddSurfaceAlternateImage
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
464 * \sa SDL_GetSurfaceImages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
465 * \sa SDL_SurfaceHasAlternateImages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
466 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
467 extern SDL_DECLSPEC void SDLCALL SDL_RemoveSurfaceAlternateImages(SDL_Surface *surface);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
468
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
469 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
470 * Set up a surface for directly accessing the pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
471 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
472 * Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
473 * and read from `surface->pixels`, using the pixel format stored in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
474 * `surface->format`. Once you are done accessing the surface, you should use
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
475 * SDL_UnlockSurface() to release it.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
476 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
477 * Not all surfaces require locking. If `SDL_MUSTLOCK(surface)` evaluates to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
478 * 0, then you can read and write to the surface at any time, and the pixel
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
479 * format of the surface will not change.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
480 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
481 * \param surface the SDL_Surface structure to be locked.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
482 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
483 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
484 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
485 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
486 * different surfaces. The locking referred to by this function
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
487 * is making the pixels available for direct access, not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
488 * thread-safe locking.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
489 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
490 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
491 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
492 * \sa SDL_MUSTLOCK
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
493 * \sa SDL_UnlockSurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
494 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
495 extern SDL_DECLSPEC bool SDLCALL SDL_LockSurface(SDL_Surface *surface);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
496
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
497 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
498 * Release a surface after directly accessing the pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
499 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
500 * \param surface the SDL_Surface structure to be unlocked.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
501 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
502 * \threadsafety This function is not thread safe. The locking referred to by
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
503 * this function is making the pixels available for direct
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
504 * access, not thread-safe locking.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
505 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
506 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
507 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
508 * \sa SDL_LockSurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
509 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
510 extern SDL_DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface *surface);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
511
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
512 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
513 * Load a BMP or PNG image from a seekable SDL data stream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
514 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
515 * The new surface should be freed with SDL_DestroySurface(). Not doing so
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
516 * will result in a memory leak.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
517 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
518 * \param src the data stream for the surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
519 * \param closeio if true, calls SDL_CloseIO() on `src` before returning, even
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
520 * in the case of an error.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
521 * \returns a pointer to a new SDL_Surface structure or NULL on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
522 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
523 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
524 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
525 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
526 * \since This function is available since SDL 3.4.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
527 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
528 * \sa SDL_DestroySurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
529 * \sa SDL_LoadSurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
530 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
531 extern SDL_DECLSPEC SDL_Surface * SDLCALL SDL_LoadSurface_IO(SDL_IOStream *src, bool closeio);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
532
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
533 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
534 * Load a BMP or PNG image from a file.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
535 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
536 * The new surface should be freed with SDL_DestroySurface(). Not doing so
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
537 * will result in a memory leak.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
538 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
539 * \param file the file to load.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
540 * \returns a pointer to a new SDL_Surface structure or NULL on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
541 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
542 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
543 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
544 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
545 * \since This function is available since SDL 3.4.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
546 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
547 * \sa SDL_DestroySurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
548 * \sa SDL_LoadSurface_IO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
549 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
550 extern SDL_DECLSPEC SDL_Surface * SDLCALL SDL_LoadSurface(const char *file);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
551
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
552 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
553 * Load a BMP image from a seekable SDL data stream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
554 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
555 * The new surface should be freed with SDL_DestroySurface(). Not doing so
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
556 * will result in a memory leak.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
557 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
558 * \param src the data stream for the surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
559 * \param closeio if true, calls SDL_CloseIO() on `src` before returning, even
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
560 * in the case of an error.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
561 * \returns a pointer to a new SDL_Surface structure or NULL on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
562 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
563 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
564 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
565 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
566 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
567 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
568 * \sa SDL_DestroySurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
569 * \sa SDL_LoadBMP
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
570 * \sa SDL_SaveBMP_IO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
571 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
572 extern SDL_DECLSPEC SDL_Surface * SDLCALL SDL_LoadBMP_IO(SDL_IOStream *src, bool closeio);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
573
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
574 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
575 * Load a BMP image from a file.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
576 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
577 * The new surface should be freed with SDL_DestroySurface(). Not doing so
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
578 * will result in a memory leak.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
579 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
580 * \param file the BMP file to load.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
581 * \returns a pointer to a new SDL_Surface structure or NULL on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
582 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
583 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
584 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
585 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
586 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
587 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
588 * \sa SDL_DestroySurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
589 * \sa SDL_LoadBMP_IO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
590 * \sa SDL_SaveBMP
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
591 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
592 extern SDL_DECLSPEC SDL_Surface * SDLCALL SDL_LoadBMP(const char *file);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
593
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
594 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
595 * Save a surface to a seekable SDL data stream in BMP format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
596 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
597 * Surfaces with a 24-bit, 32-bit and paletted 8-bit format get saved in the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
598 * BMP directly. Other RGB formats with 8-bit or higher get converted to a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
599 * 24-bit surface or, if they have an alpha mask or a colorkey, to a 32-bit
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
600 * surface before they are saved. YUV and paletted 1-bit and 4-bit formats are
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
601 * not supported.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
602 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
603 * \param surface the SDL_Surface structure containing the image to be saved.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
604 * \param dst a data stream to save to.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
605 * \param closeio if true, calls SDL_CloseIO() on `dst` before returning, even
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
606 * in the case of an error.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
607 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
608 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
609 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
610 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
611 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
612 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
613 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
614 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
615 * \sa SDL_LoadBMP_IO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
616 * \sa SDL_SaveBMP
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
617 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
618 extern SDL_DECLSPEC bool SDLCALL SDL_SaveBMP_IO(SDL_Surface *surface, SDL_IOStream *dst, bool closeio);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
619
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
620 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
621 * Save a surface to a file in BMP format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
622 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
623 * Surfaces with a 24-bit, 32-bit and paletted 8-bit format get saved in the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
624 * BMP directly. Other RGB formats with 8-bit or higher get converted to a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
625 * 24-bit surface or, if they have an alpha mask or a colorkey, to a 32-bit
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
626 * surface before they are saved. YUV and paletted 1-bit and 4-bit formats are
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
627 * not supported.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
628 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
629 * \param surface the SDL_Surface structure containing the image to be saved.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
630 * \param file a file to save to.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
631 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
632 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
633 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
634 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
635 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
636 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
637 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
638 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
639 * \sa SDL_LoadBMP
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
640 * \sa SDL_SaveBMP_IO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
641 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
642 extern SDL_DECLSPEC bool SDLCALL SDL_SaveBMP(SDL_Surface *surface, const char *file);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
643
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
644 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
645 * Load a PNG image from a seekable SDL data stream.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
646 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
647 * This is intended as a convenience function for loading images from trusted
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
648 * sources. If you want to load arbitrary images you should use libpng or
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
649 * another image loading library designed with security in mind.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
650 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
651 * The new surface should be freed with SDL_DestroySurface(). Not doing so
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
652 * will result in a memory leak.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
653 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
654 * \param src the data stream for the surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
655 * \param closeio if true, calls SDL_CloseIO() on `src` before returning, even
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
656 * in the case of an error.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
657 * \returns a pointer to a new SDL_Surface structure or NULL on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
658 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
659 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
660 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
661 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
662 * \since This function is available since SDL 3.4.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
663 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
664 * \sa SDL_DestroySurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
665 * \sa SDL_LoadPNG
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
666 * \sa SDL_SavePNG_IO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
667 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
668 extern SDL_DECLSPEC SDL_Surface * SDLCALL SDL_LoadPNG_IO(SDL_IOStream *src, bool closeio);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
669
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
670 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
671 * Load a PNG image from a file.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
672 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
673 * This is intended as a convenience function for loading images from trusted
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
674 * sources. If you want to load arbitrary images you should use libpng or
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
675 * another image loading library designed with security in mind.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
676 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
677 * The new surface should be freed with SDL_DestroySurface(). Not doing so
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
678 * will result in a memory leak.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
679 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
680 * \param file the PNG file to load.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
681 * \returns a pointer to a new SDL_Surface structure or NULL on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
682 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
683 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
684 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
685 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
686 * \since This function is available since SDL 3.4.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
687 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
688 * \sa SDL_DestroySurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
689 * \sa SDL_LoadPNG_IO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
690 * \sa SDL_SavePNG
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
691 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
692 extern SDL_DECLSPEC SDL_Surface * SDLCALL SDL_LoadPNG(const char *file);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
693
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
694 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
695 * Save a surface to a seekable SDL data stream in PNG format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
696 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
697 * \param surface the SDL_Surface structure containing the image to be saved.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
698 * \param dst a data stream to save to.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
699 * \param closeio if true, calls SDL_CloseIO() on `dst` before returning, even
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
700 * in the case of an error.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
701 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
702 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
703 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
704 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
705 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
706 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
707 * \since This function is available since SDL 3.4.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
708 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
709 * \sa SDL_LoadPNG_IO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
710 * \sa SDL_SavePNG
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
711 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
712 extern SDL_DECLSPEC bool SDLCALL SDL_SavePNG_IO(SDL_Surface *surface, SDL_IOStream *dst, bool closeio);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
713
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
714 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
715 * Save a surface to a file in PNG format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
716 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
717 * \param surface the SDL_Surface structure containing the image to be saved.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
718 * \param file a file to save to.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
719 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
720 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
721 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
722 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
723 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
724 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
725 * \since This function is available since SDL 3.4.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
726 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
727 * \sa SDL_LoadPNG
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
728 * \sa SDL_SavePNG_IO
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
729 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
730 extern SDL_DECLSPEC bool SDLCALL SDL_SavePNG(SDL_Surface *surface, const char *file);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
731
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
732 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
733 * Set the RLE acceleration hint for a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
734 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
735 * If RLE is enabled, color key and alpha blending blits are much faster, but
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
736 * the surface must be locked before directly accessing the pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
737 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
738 * \param surface the SDL_Surface structure to optimize.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
739 * \param enabled true to enable RLE acceleration, false to disable it.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
740 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
741 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
742 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
743 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
744 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
745 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
746 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
747 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
748 * \sa SDL_BlitSurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
749 * \sa SDL_LockSurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
750 * \sa SDL_UnlockSurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
751 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
752 extern SDL_DECLSPEC bool SDLCALL SDL_SetSurfaceRLE(SDL_Surface *surface, bool enabled);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
753
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
754 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
755 * Returns whether the surface is RLE enabled.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
756 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
757 * It is safe to pass a NULL `surface` here; it will return false.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
758 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
759 * \param surface the SDL_Surface structure to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
760 * \returns true if the surface is RLE enabled, false otherwise.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
761 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
762 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
763 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
764 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
765 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
766 * \sa SDL_SetSurfaceRLE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
767 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
768 extern SDL_DECLSPEC bool SDLCALL SDL_SurfaceHasRLE(SDL_Surface *surface);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
769
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
770 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
771 * Set the color key (transparent pixel) in a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
772 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
773 * The color key defines a pixel value that will be treated as transparent in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
774 * a blit. For example, one can use this to specify that cyan pixels should be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
775 * considered transparent, and therefore not rendered.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
776 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
777 * It is a pixel of the format used by the surface, as generated by
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
778 * SDL_MapRGB().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
779 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
780 * \param surface the SDL_Surface structure to update.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
781 * \param enabled true to enable color key, false to disable color key.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
782 * \param key the transparent pixel.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
783 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
784 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
785 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
786 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
787 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
788 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
789 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
790 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
791 * \sa SDL_GetSurfaceColorKey
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
792 * \sa SDL_SetSurfaceRLE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
793 * \sa SDL_SurfaceHasColorKey
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
794 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
795 extern SDL_DECLSPEC bool SDLCALL SDL_SetSurfaceColorKey(SDL_Surface *surface, bool enabled, Uint32 key);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
796
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
797 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
798 * Returns whether the surface has a color key.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
799 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
800 * It is safe to pass a NULL `surface` here; it will return false.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
801 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
802 * \param surface the SDL_Surface structure to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
803 * \returns true if the surface has a color key, false otherwise.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
804 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
805 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
806 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
807 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
808 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
809 * \sa SDL_SetSurfaceColorKey
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
810 * \sa SDL_GetSurfaceColorKey
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
811 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
812 extern SDL_DECLSPEC bool SDLCALL SDL_SurfaceHasColorKey(SDL_Surface *surface);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
813
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
814 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
815 * Get the color key (transparent pixel) for a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
816 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
817 * The color key is a pixel of the format used by the surface, as generated by
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
818 * SDL_MapRGB().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
819 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
820 * If the surface doesn't have color key enabled this function returns false.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
821 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
822 * \param surface the SDL_Surface structure to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
823 * \param key a pointer filled in with the transparent pixel.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
824 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
825 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
826 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
827 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
828 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
829 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
830 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
831 * \sa SDL_SetSurfaceColorKey
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
832 * \sa SDL_SurfaceHasColorKey
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
833 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
834 extern SDL_DECLSPEC bool SDLCALL SDL_GetSurfaceColorKey(SDL_Surface *surface, Uint32 *key);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
835
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
836 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
837 * Set an additional color value multiplied into blit operations.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
838 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
839 * When this surface is blitted, during the blit operation each source color
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
840 * channel is modulated by the appropriate color value according to the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
841 * following formula:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
842 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
843 * `srcC = srcC * (color / 255)`
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
844 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
845 * \param surface the SDL_Surface structure to update.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
846 * \param r the red color value multiplied into blit operations.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
847 * \param g the green color value multiplied into blit operations.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
848 * \param b the blue color value multiplied into blit operations.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
849 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
850 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
851 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
852 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
853 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
854 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
855 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
856 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
857 * \sa SDL_GetSurfaceColorMod
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
858 * \sa SDL_SetSurfaceAlphaMod
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
859 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
860 extern SDL_DECLSPEC bool SDLCALL SDL_SetSurfaceColorMod(SDL_Surface *surface, Uint8 r, Uint8 g, Uint8 b);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
861
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
862
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
863 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
864 * Get the additional color value multiplied into blit operations.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
865 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
866 * \param surface the SDL_Surface structure to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
867 * \param r a pointer filled in with the current red color value.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
868 * \param g a pointer filled in with the current green color value.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
869 * \param b a pointer filled in with the current blue color value.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
870 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
871 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
872 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
873 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
874 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
875 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
876 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
877 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
878 * \sa SDL_GetSurfaceAlphaMod
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
879 * \sa SDL_SetSurfaceColorMod
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
880 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
881 extern SDL_DECLSPEC bool SDLCALL SDL_GetSurfaceColorMod(SDL_Surface *surface, Uint8 *r, Uint8 *g, Uint8 *b);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
882
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
883 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
884 * Set an additional alpha value used in blit operations.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
885 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
886 * When this surface is blitted, during the blit operation the source alpha
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
887 * value is modulated by this alpha value according to the following formula:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
888 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
889 * `srcA = srcA * (alpha / 255)`
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
890 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
891 * \param surface the SDL_Surface structure to update.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
892 * \param alpha the alpha value multiplied into blit operations.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
893 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
894 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
895 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
896 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
897 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
898 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
899 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
900 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
901 * \sa SDL_GetSurfaceAlphaMod
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
902 * \sa SDL_SetSurfaceColorMod
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
903 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
904 extern SDL_DECLSPEC bool SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface *surface, Uint8 alpha);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
905
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
906 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
907 * Get the additional alpha value used in blit operations.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
908 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
909 * \param surface the SDL_Surface structure to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
910 * \param alpha a pointer filled in with the current alpha value.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
911 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
912 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
913 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
914 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
915 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
916 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
917 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
918 * \sa SDL_GetSurfaceColorMod
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
919 * \sa SDL_SetSurfaceAlphaMod
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
920 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
921 extern SDL_DECLSPEC bool SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface *surface, Uint8 *alpha);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
922
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
923 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
924 * Set the blend mode used for blit operations.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
925 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
926 * To copy a surface to another surface (or texture) without blending with the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
927 * existing data, the blendmode of the SOURCE surface should be set to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
928 * `SDL_BLENDMODE_NONE`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
929 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
930 * \param surface the SDL_Surface structure to update.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
931 * \param blendMode the SDL_BlendMode to use for blit blending.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
932 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
933 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
934 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
935 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
936 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
937 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
938 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
939 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
940 * \sa SDL_GetSurfaceBlendMode
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
941 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
942 extern SDL_DECLSPEC bool SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface *surface, SDL_BlendMode blendMode);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
943
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
944 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
945 * Get the blend mode used for blit operations.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
946 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
947 * \param surface the SDL_Surface structure to query.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
948 * \param blendMode a pointer filled in with the current SDL_BlendMode.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
949 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
950 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
951 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
952 * \threadsafety It is safe to call this function from any thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
953 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
954 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
955 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
956 * \sa SDL_SetSurfaceBlendMode
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
957 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
958 extern SDL_DECLSPEC bool SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface *surface, SDL_BlendMode *blendMode);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
959
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
960 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
961 * Set the clipping rectangle for a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
962 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
963 * When `surface` is the destination of a blit, only the area within the clip
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
964 * rectangle is drawn into.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
965 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
966 * Note that blits are automatically clipped to the edges of the source and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
967 * destination surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
968 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
969 * \param surface the SDL_Surface structure to be clipped.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
970 * \param rect the SDL_Rect structure representing the clipping rectangle, or
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
971 * NULL to disable clipping.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
972 * \returns true if the rectangle intersects the surface, otherwise false and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
973 * blits will be completely clipped.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
974 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
975 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
976 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
977 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
978 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
979 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
980 * \sa SDL_GetSurfaceClipRect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
981 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
982 extern SDL_DECLSPEC bool SDLCALL SDL_SetSurfaceClipRect(SDL_Surface *surface, const SDL_Rect *rect);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
983
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
984 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
985 * Get the clipping rectangle for a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
986 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
987 * When `surface` is the destination of a blit, only the area within the clip
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
988 * rectangle is drawn into.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
989 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
990 * \param surface the SDL_Surface structure representing the surface to be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
991 * clipped.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
992 * \param rect an SDL_Rect structure filled in with the clipping rectangle for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
993 * the surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
994 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
995 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
996 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
997 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
998 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
999 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1000 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1001 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1002 * \sa SDL_SetSurfaceClipRect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1003 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1004 extern SDL_DECLSPEC bool SDLCALL SDL_GetSurfaceClipRect(SDL_Surface *surface, SDL_Rect *rect);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1005
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1006 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1007 * Flip a surface vertically or horizontally.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1008 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1009 * \param surface the surface to flip.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1010 * \param flip the direction to flip.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1011 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1012 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1013 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1014 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1015 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1016 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1017 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1018 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1019 extern SDL_DECLSPEC bool SDLCALL SDL_FlipSurface(SDL_Surface *surface, SDL_FlipMode flip);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1020
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1021 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1022 * Return a copy of a surface rotated clockwise a number of degrees.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1023 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1024 * The angle of rotation can be negative for counter-clockwise rotation.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1025 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1026 * When the rotation isn't a multiple of 90 degrees, the resulting surface is
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1027 * larger than the original, with the background filled in with the colorkey,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1028 * if available, or RGBA 255/255/255/0 if not.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1029 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1030 * If `surface` has the SDL_PROP_SURFACE_ROTATION_FLOAT property set on it,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1031 * the new copy will have the adjusted value set: if the rotation property is
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1032 * 90 and `angle` was 30, the new surface will have a property value of 60
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1033 * (that is: to be upright vs gravity, this surface needs to rotate 60 more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1034 * degrees). However, note that further rotations on the new surface in this
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1035 * example will produce unexpected results, since the image will have resized
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1036 * and padded to accommodate the not-90 degree angle.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1037 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1038 * \param surface the surface to rotate.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1039 * \param angle the rotation angle, in degrees.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1040 * \returns a rotated copy of the surface or NULL on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1041 * SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1042 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1043 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1044 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1045 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1046 * \since This function is available since SDL 3.4.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1047 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1048 extern SDL_DECLSPEC SDL_Surface * SDLCALL SDL_RotateSurface(SDL_Surface *surface, float angle);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1049
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1050 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1051 * Creates a new surface identical to the existing surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1052 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1053 * If the original surface has alternate images, the new surface will have a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1054 * reference to them as well.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1055 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1056 * The returned surface should be freed with SDL_DestroySurface().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1057 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1058 * \param surface the surface to duplicate.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1059 * \returns a copy of the surface or NULL on failure; call SDL_GetError() for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1060 * more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1061 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1062 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1063 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1064 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1065 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1066 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1067 * \sa SDL_DestroySurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1068 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1069 extern SDL_DECLSPEC SDL_Surface * SDLCALL SDL_DuplicateSurface(SDL_Surface *surface);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1070
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1071 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1072 * Creates a new surface identical to the existing surface, scaled to the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1073 * desired size.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1074 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1075 * The returned surface should be freed with SDL_DestroySurface().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1076 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1077 * \param surface the surface to duplicate and scale.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1078 * \param width the width of the new surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1079 * \param height the height of the new surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1080 * \param scaleMode the SDL_ScaleMode to be used.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1081 * \returns a copy of the surface or NULL on failure; call SDL_GetError() for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1082 * more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1083 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1084 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1085 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1086 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1087 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1088 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1089 * \sa SDL_DestroySurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1090 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1091 extern SDL_DECLSPEC SDL_Surface * SDLCALL SDL_ScaleSurface(SDL_Surface *surface, int width, int height, SDL_ScaleMode scaleMode);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1092
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1093 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1094 * Copy an existing surface to a new surface of the specified format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1095 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1096 * This function is used to optimize images for faster *repeat* blitting. This
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1097 * is accomplished by converting the original and storing the result as a new
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1098 * surface. The new, optimized surface can then be used as the source for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1099 * future blits, making them faster.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1100 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1101 * If you are converting to an indexed surface and want to map colors to a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1102 * palette, you can use SDL_ConvertSurfaceAndColorspace() instead.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1103 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1104 * If the original surface has alternate images, the new surface will have a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1105 * reference to them as well.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1106 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1107 * \param surface the existing SDL_Surface structure to convert.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1108 * \param format the new pixel format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1109 * \returns the new SDL_Surface structure that is created or NULL on failure;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1110 * call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1111 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1112 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1113 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1114 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1115 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1116 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1117 * \sa SDL_ConvertSurfaceAndColorspace
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1118 * \sa SDL_DestroySurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1119 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1120 extern SDL_DECLSPEC SDL_Surface * SDLCALL SDL_ConvertSurface(SDL_Surface *surface, SDL_PixelFormat format);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1121
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1122 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1123 * Copy an existing surface to a new surface of the specified format and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1124 * colorspace.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1125 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1126 * This function converts an existing surface to a new format and colorspace
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1127 * and returns the new surface. This will perform any pixel format and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1128 * colorspace conversion needed.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1129 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1130 * If the original surface has alternate images, the new surface will have a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1131 * reference to them as well.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1132 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1133 * \param surface the existing SDL_Surface structure to convert.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1134 * \param format the new pixel format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1135 * \param palette an optional palette to use for indexed formats, may be NULL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1136 * \param colorspace the new colorspace.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1137 * \param props an SDL_PropertiesID with additional color properties, or 0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1138 * \returns the new SDL_Surface structure that is created or NULL on failure;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1139 * call SDL_GetError() for more information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1140 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1141 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1142 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1143 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1144 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1145 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1146 * \sa SDL_ConvertSurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1147 * \sa SDL_DestroySurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1148 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1149 extern SDL_DECLSPEC SDL_Surface * SDLCALL SDL_ConvertSurfaceAndColorspace(SDL_Surface *surface, SDL_PixelFormat format, SDL_Palette *palette, SDL_Colorspace colorspace, SDL_PropertiesID props);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1150
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1151 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1152 * Copy a block of pixels of one format to another format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1153 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1154 * \param width the width of the block to copy, in pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1155 * \param height the height of the block to copy, in pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1156 * \param src_format an SDL_PixelFormat value of the `src` pixels format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1157 * \param src a pointer to the source pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1158 * \param src_pitch the pitch of the source pixels, in bytes.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1159 * \param dst_format an SDL_PixelFormat value of the `dst` pixels format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1160 * \param dst a pointer to be filled in with new pixel data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1161 * \param dst_pitch the pitch of the destination pixels, in bytes.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1162 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1163 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1164 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1165 * \threadsafety The same destination pixels should not be used from two
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1166 * threads at once. It is safe to use the same source pixels
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1167 * from multiple threads.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1168 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1169 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1170 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1171 * \sa SDL_ConvertPixelsAndColorspace
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1172 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1173 extern SDL_DECLSPEC bool SDLCALL SDL_ConvertPixels(int width, int height, SDL_PixelFormat src_format, const void *src, int src_pitch, SDL_PixelFormat dst_format, void *dst, int dst_pitch);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1174
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1175 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1176 * Copy a block of pixels of one format and colorspace to another format and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1177 * colorspace.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1178 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1179 * \param width the width of the block to copy, in pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1180 * \param height the height of the block to copy, in pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1181 * \param src_format an SDL_PixelFormat value of the `src` pixels format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1182 * \param src_colorspace an SDL_Colorspace value describing the colorspace of
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1183 * the `src` pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1184 * \param src_properties an SDL_PropertiesID with additional source color
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1185 * properties, or 0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1186 * \param src a pointer to the source pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1187 * \param src_pitch the pitch of the source pixels, in bytes.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1188 * \param dst_format an SDL_PixelFormat value of the `dst` pixels format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1189 * \param dst_colorspace an SDL_Colorspace value describing the colorspace of
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1190 * the `dst` pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1191 * \param dst_properties an SDL_PropertiesID with additional destination color
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1192 * properties, or 0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1193 * \param dst a pointer to be filled in with new pixel data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1194 * \param dst_pitch the pitch of the destination pixels, in bytes.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1195 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1196 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1197 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1198 * \threadsafety The same destination pixels should not be used from two
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1199 * threads at once. It is safe to use the same source pixels
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1200 * from multiple threads.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1201 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1202 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1203 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1204 * \sa SDL_ConvertPixels
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1205 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1206 extern SDL_DECLSPEC bool SDLCALL SDL_ConvertPixelsAndColorspace(int width, int height, SDL_PixelFormat src_format, SDL_Colorspace src_colorspace, SDL_PropertiesID src_properties, const void *src, int src_pitch, SDL_PixelFormat dst_format, SDL_Colorspace dst_colorspace, SDL_PropertiesID dst_properties, void *dst, int dst_pitch);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1207
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1208 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1209 * Premultiply the alpha on a block of pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1210 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1211 * This is safe to use with src == dst, but not for other overlapping areas.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1212 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1213 * \param width the width of the block to convert, in pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1214 * \param height the height of the block to convert, in pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1215 * \param src_format an SDL_PixelFormat value of the `src` pixels format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1216 * \param src a pointer to the source pixels.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1217 * \param src_pitch the pitch of the source pixels, in bytes.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1218 * \param dst_format an SDL_PixelFormat value of the `dst` pixels format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1219 * \param dst a pointer to be filled in with premultiplied pixel data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1220 * \param dst_pitch the pitch of the destination pixels, in bytes.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1221 * \param linear true to convert from sRGB to linear space for the alpha
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1222 * multiplication, false to do multiplication in sRGB space.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1223 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1224 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1225 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1226 * \threadsafety The same destination pixels should not be used from two
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1227 * threads at once. It is safe to use the same source pixels
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1228 * from multiple threads.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1229 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1230 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1231 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1232 extern SDL_DECLSPEC bool SDLCALL SDL_PremultiplyAlpha(int width, int height, SDL_PixelFormat src_format, const void *src, int src_pitch, SDL_PixelFormat dst_format, void *dst, int dst_pitch, bool linear);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1233
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1234 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1235 * Premultiply the alpha in a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1236 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1237 * This is safe to use with src == dst, but not for other overlapping areas.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1238 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1239 * \param surface the surface to modify.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1240 * \param linear true to convert from sRGB to linear space for the alpha
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1241 * multiplication, false to do multiplication in sRGB space.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1242 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1243 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1244 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1245 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1246 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1247 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1248 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1249 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1250 extern SDL_DECLSPEC bool SDLCALL SDL_PremultiplySurfaceAlpha(SDL_Surface *surface, bool linear);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1251
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1252 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1253 * Clear a surface with a specific color, with floating point precision.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1254 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1255 * This function handles all surface formats, and ignores any clip rectangle.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1256 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1257 * If the surface is YUV, the color is assumed to be in the sRGB colorspace,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1258 * otherwise the color is assumed to be in the colorspace of the surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1259 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1260 * \param surface the SDL_Surface to clear.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1261 * \param r the red component of the pixel, normally in the range 0-1.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1262 * \param g the green component of the pixel, normally in the range 0-1.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1263 * \param b the blue component of the pixel, normally in the range 0-1.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1264 * \param a the alpha component of the pixel, normally in the range 0-1.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1265 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1266 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1267 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1268 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1269 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1270 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1271 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1272 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1273 extern SDL_DECLSPEC bool SDLCALL SDL_ClearSurface(SDL_Surface *surface, float r, float g, float b, float a);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1274
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1275 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1276 * Perform a fast fill of a rectangle with a specific color.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1277 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1278 * `color` should be a pixel of the format used by the surface, and can be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1279 * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1280 * alpha component then the destination is simply filled with that alpha
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1281 * information, no blending takes place.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1282 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1283 * If there is a clip rectangle set on the destination (set via
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1284 * SDL_SetSurfaceClipRect()), then this function will fill based on the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1285 * intersection of the clip rectangle and `rect`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1286 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1287 * \param dst the SDL_Surface structure that is the drawing target.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1288 * \param rect the SDL_Rect structure representing the rectangle to fill, or
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1289 * NULL to fill the entire surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1290 * \param color the color to fill with.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1291 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1292 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1293 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1294 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1295 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1296 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1297 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1298 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1299 * \sa SDL_FillSurfaceRects
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1300 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1301 extern SDL_DECLSPEC bool SDLCALL SDL_FillSurfaceRect(SDL_Surface *dst, const SDL_Rect *rect, Uint32 color);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1302
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1303 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1304 * Perform a fast fill of a set of rectangles with a specific color.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1305 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1306 * `color` should be a pixel of the format used by the surface, and can be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1307 * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1308 * alpha component then the destination is simply filled with that alpha
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1309 * information, no blending takes place.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1310 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1311 * If there is a clip rectangle set on the destination (set via
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1312 * SDL_SetSurfaceClipRect()), then this function will fill based on the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1313 * intersection of the clip rectangle and `rect`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1314 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1315 * \param dst the SDL_Surface structure that is the drawing target.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1316 * \param rects an array of SDL_Rects representing the rectangles to fill.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1317 * \param count the number of rectangles in the array.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1318 * \param color the color to fill with.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1319 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1320 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1321 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1322 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1323 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1324 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1325 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1326 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1327 * \sa SDL_FillSurfaceRect
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1328 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1329 extern SDL_DECLSPEC bool SDLCALL SDL_FillSurfaceRects(SDL_Surface *dst, const SDL_Rect *rects, int count, Uint32 color);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1330
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1331 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1332 * Performs a fast blit from the source surface to the destination surface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1333 * with clipping.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1334 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1335 * If either `srcrect` or `dstrect` are NULL, the entire surface (`src` or
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1336 * `dst`) is copied while ensuring clipping to `dst->clip_rect`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1337 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1338 * The blit function should not be called on a locked surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1339 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1340 * The blit semantics for surfaces with and without blending and colorkey are
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1341 * defined as follows:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1342 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1343 * ```
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1344 * RGBA->RGB:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1345 * Source surface blend mode set to SDL_BLENDMODE_BLEND:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1346 * alpha-blend (using the source alpha-channel and per-surface alpha)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1347 * SDL_SRCCOLORKEY ignored.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1348 * Source surface blend mode set to SDL_BLENDMODE_NONE:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1349 * copy RGB.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1350 * if SDL_SRCCOLORKEY set, only copy the pixels that do not match the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1351 * RGB values of the source color key, ignoring alpha in the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1352 * comparison.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1353 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1354 * RGB->RGBA:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1355 * Source surface blend mode set to SDL_BLENDMODE_BLEND:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1356 * alpha-blend (using the source per-surface alpha)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1357 * Source surface blend mode set to SDL_BLENDMODE_NONE:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1358 * copy RGB, set destination alpha to source per-surface alpha value.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1359 * both:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1360 * if SDL_SRCCOLORKEY set, only copy the pixels that do not match the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1361 * source color key.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1362 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1363 * RGBA->RGBA:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1364 * Source surface blend mode set to SDL_BLENDMODE_BLEND:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1365 * alpha-blend (using the source alpha-channel and per-surface alpha)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1366 * SDL_SRCCOLORKEY ignored.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1367 * Source surface blend mode set to SDL_BLENDMODE_NONE:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1368 * copy all of RGBA to the destination.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1369 * if SDL_SRCCOLORKEY set, only copy the pixels that do not match the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1370 * RGB values of the source color key, ignoring alpha in the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1371 * comparison.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1372 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1373 * RGB->RGB:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1374 * Source surface blend mode set to SDL_BLENDMODE_BLEND:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1375 * alpha-blend (using the source per-surface alpha)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1376 * Source surface blend mode set to SDL_BLENDMODE_NONE:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1377 * copy RGB.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1378 * both:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1379 * if SDL_SRCCOLORKEY set, only copy the pixels that do not match the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1380 * source color key.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1381 * ```
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1382 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1383 * \param src the SDL_Surface structure to be copied from.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1384 * \param srcrect the SDL_Rect structure representing the rectangle to be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1385 * copied, or NULL to copy the entire surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1386 * \param dst the SDL_Surface structure that is the blit target.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1387 * \param dstrect the SDL_Rect structure representing the x and y position in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1388 * the destination surface, or NULL for (0,0). The width and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1389 * height are ignored, and are copied from `srcrect`. If you
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1390 * want a specific width and height, you should use
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1391 * SDL_BlitSurfaceScaled().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1392 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1393 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1394 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1395 * \threadsafety Only one thread should be using the `src` and `dst` surfaces
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1396 * at any given time.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1397 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1398 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1399 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1400 * \sa SDL_BlitSurfaceScaled
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1401 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1402 extern SDL_DECLSPEC bool SDLCALL SDL_BlitSurface(SDL_Surface *src, const SDL_Rect *srcrect, SDL_Surface *dst, const SDL_Rect *dstrect);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1403
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1404 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1405 * Perform low-level surface blitting only.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1406 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1407 * This is a semi-private blit function and it performs low-level surface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1408 * blitting, assuming the input rectangles have already been clipped.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1409 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1410 * \param src the SDL_Surface structure to be copied from.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1411 * \param srcrect the SDL_Rect structure representing the rectangle to be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1412 * copied, may not be NULL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1413 * \param dst the SDL_Surface structure that is the blit target.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1414 * \param dstrect the SDL_Rect structure representing the target rectangle in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1415 * the destination surface, may not be NULL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1416 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1417 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1418 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1419 * \threadsafety Only one thread should be using the `src` and `dst` surfaces
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1420 * at any given time.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1421 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1422 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1423 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1424 * \sa SDL_BlitSurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1425 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1426 extern SDL_DECLSPEC bool SDLCALL SDL_BlitSurfaceUnchecked(SDL_Surface *src, const SDL_Rect *srcrect, SDL_Surface *dst, const SDL_Rect *dstrect);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1427
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1428 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1429 * Perform a scaled blit to a destination surface, which may be of a different
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1430 * format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1431 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1432 * \param src the SDL_Surface structure to be copied from.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1433 * \param srcrect the SDL_Rect structure representing the rectangle to be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1434 * copied, or NULL to copy the entire surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1435 * \param dst the SDL_Surface structure that is the blit target.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1436 * \param dstrect the SDL_Rect structure representing the target rectangle in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1437 * the destination surface, or NULL to fill the entire
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1438 * destination surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1439 * \param scaleMode the SDL_ScaleMode to be used.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1440 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1441 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1442 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1443 * \threadsafety Only one thread should be using the `src` and `dst` surfaces
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1444 * at any given time.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1445 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1446 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1447 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1448 * \sa SDL_BlitSurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1449 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1450 extern SDL_DECLSPEC bool SDLCALL SDL_BlitSurfaceScaled(SDL_Surface *src, const SDL_Rect *srcrect, SDL_Surface *dst, const SDL_Rect *dstrect, SDL_ScaleMode scaleMode);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1451
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1452 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1453 * Perform low-level surface scaled blitting only.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1454 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1455 * This is a semi-private function and it performs low-level surface blitting,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1456 * assuming the input rectangles have already been clipped.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1457 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1458 * \param src the SDL_Surface structure to be copied from.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1459 * \param srcrect the SDL_Rect structure representing the rectangle to be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1460 * copied, may not be NULL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1461 * \param dst the SDL_Surface structure that is the blit target.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1462 * \param dstrect the SDL_Rect structure representing the target rectangle in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1463 * the destination surface, may not be NULL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1464 * \param scaleMode the SDL_ScaleMode to be used.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1465 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1466 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1467 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1468 * \threadsafety Only one thread should be using the `src` and `dst` surfaces
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1469 * at any given time.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1470 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1471 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1472 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1473 * \sa SDL_BlitSurfaceScaled
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1474 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1475 extern SDL_DECLSPEC bool SDLCALL SDL_BlitSurfaceUncheckedScaled(SDL_Surface *src, const SDL_Rect *srcrect, SDL_Surface *dst, const SDL_Rect *dstrect, SDL_ScaleMode scaleMode);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1476
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1477 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1478 * Perform a stretched pixel copy from one surface to another.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1479 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1480 * \param src the SDL_Surface structure to be copied from.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1481 * \param srcrect the SDL_Rect structure representing the rectangle to be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1482 * copied, or NULL to copy the entire surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1483 * \param dst the SDL_Surface structure that is the blit target.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1484 * \param dstrect the SDL_Rect structure representing the target rectangle in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1485 * the destination surface, or NULL to fill the entire
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1486 * destination surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1487 * \param scaleMode the SDL_ScaleMode to be used.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1488 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1489 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1490 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1491 * \threadsafety Only one thread should be using the `src` and `dst` surfaces
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1492 * at any given time.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1493 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1494 * \since This function is available since SDL 3.4.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1495 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1496 * \sa SDL_BlitSurfaceScaled
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1497 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1498 extern SDL_DECLSPEC bool SDLCALL SDL_StretchSurface(SDL_Surface *src, const SDL_Rect *srcrect, SDL_Surface *dst, const SDL_Rect *dstrect, SDL_ScaleMode scaleMode);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1499
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1500 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1501 * Perform a tiled blit to a destination surface, which may be of a different
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1502 * format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1503 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1504 * The pixels in `srcrect` will be repeated as many times as needed to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1505 * completely fill `dstrect`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1506 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1507 * \param src the SDL_Surface structure to be copied from.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1508 * \param srcrect the SDL_Rect structure representing the rectangle to be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1509 * copied, or NULL to copy the entire surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1510 * \param dst the SDL_Surface structure that is the blit target.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1511 * \param dstrect the SDL_Rect structure representing the target rectangle in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1512 * the destination surface, or NULL to fill the entire surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1513 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1514 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1515 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1516 * \threadsafety Only one thread should be using the `src` and `dst` surfaces
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1517 * at any given time.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1518 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1519 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1520 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1521 * \sa SDL_BlitSurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1522 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1523 extern SDL_DECLSPEC bool SDLCALL SDL_BlitSurfaceTiled(SDL_Surface *src, const SDL_Rect *srcrect, SDL_Surface *dst, const SDL_Rect *dstrect);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1524
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1525 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1526 * Perform a scaled and tiled blit to a destination surface, which may be of a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1527 * different format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1528 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1529 * The pixels in `srcrect` will be scaled and repeated as many times as needed
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1530 * to completely fill `dstrect`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1531 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1532 * \param src the SDL_Surface structure to be copied from.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1533 * \param srcrect the SDL_Rect structure representing the rectangle to be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1534 * copied, or NULL to copy the entire surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1535 * \param scale the scale used to transform srcrect into the destination
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1536 * rectangle, e.g. a 32x32 texture with a scale of 2 would fill
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1537 * 64x64 tiles.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1538 * \param scaleMode scale algorithm to be used.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1539 * \param dst the SDL_Surface structure that is the blit target.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1540 * \param dstrect the SDL_Rect structure representing the target rectangle in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1541 * the destination surface, or NULL to fill the entire surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1542 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1543 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1544 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1545 * \threadsafety Only one thread should be using the `src` and `dst` surfaces
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1546 * at any given time.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1547 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1548 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1549 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1550 * \sa SDL_BlitSurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1551 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1552 extern SDL_DECLSPEC bool SDLCALL SDL_BlitSurfaceTiledWithScale(SDL_Surface *src, const SDL_Rect *srcrect, float scale, SDL_ScaleMode scaleMode, SDL_Surface *dst, const SDL_Rect *dstrect);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1553
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1554 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1555 * Perform a scaled blit using the 9-grid algorithm to a destination surface,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1556 * which may be of a different format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1557 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1558 * The pixels in the source surface are split into a 3x3 grid, using the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1559 * different corner sizes for each corner, and the sides and center making up
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1560 * the remaining pixels. The corners are then scaled using `scale` and fit
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1561 * into the corners of the destination rectangle. The sides and center are
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1562 * then stretched into place to cover the remaining destination rectangle.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1563 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1564 * \param src the SDL_Surface structure to be copied from.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1565 * \param srcrect the SDL_Rect structure representing the rectangle to be used
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1566 * for the 9-grid, or NULL to use the entire surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1567 * \param left_width the width, in pixels, of the left corners in `srcrect`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1568 * \param right_width the width, in pixels, of the right corners in `srcrect`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1569 * \param top_height the height, in pixels, of the top corners in `srcrect`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1570 * \param bottom_height the height, in pixels, of the bottom corners in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1571 * `srcrect`.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1572 * \param scale the scale used to transform the corner of `srcrect` into the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1573 * corner of `dstrect`, or 0.0f for an unscaled blit.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1574 * \param scaleMode scale algorithm to be used.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1575 * \param dst the SDL_Surface structure that is the blit target.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1576 * \param dstrect the SDL_Rect structure representing the target rectangle in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1577 * the destination surface, or NULL to fill the entire surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1578 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1579 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1580 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1581 * \threadsafety Only one thread should be using the `src` and `dst` surfaces
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1582 * at any given time.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1583 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1584 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1585 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1586 * \sa SDL_BlitSurface
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1587 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1588 extern SDL_DECLSPEC bool SDLCALL SDL_BlitSurface9Grid(SDL_Surface *src, const SDL_Rect *srcrect, int left_width, int right_width, int top_height, int bottom_height, float scale, SDL_ScaleMode scaleMode, SDL_Surface *dst, const SDL_Rect *dstrect);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1589
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1590 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1591 * Map an RGB triple to an opaque pixel value for a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1592 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1593 * This function maps the RGB color value to the specified pixel format and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1594 * returns the pixel value best approximating the given RGB color value for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1595 * the given pixel format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1596 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1597 * If the surface has a palette, the index of the closest matching color in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1598 * the palette will be returned.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1599 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1600 * If the surface pixel format has an alpha component it will be returned as
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1601 * all 1 bits (fully opaque).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1602 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1603 * If the pixel format bpp (color depth) is less than 32-bpp then the unused
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1604 * upper bits of the return value can safely be ignored (e.g., with a 16-bpp
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1605 * format the return value can be assigned to a Uint16, and similarly a Uint8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1606 * for an 8-bpp format).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1607 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1608 * \param surface the surface to use for the pixel format and palette.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1609 * \param r the red component of the pixel in the range 0-255.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1610 * \param g the green component of the pixel in the range 0-255.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1611 * \param b the blue component of the pixel in the range 0-255.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1612 * \returns a pixel value.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1613 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1614 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1615 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1616 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1617 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1618 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1619 * \sa SDL_MapSurfaceRGBA
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1620 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1621 extern SDL_DECLSPEC Uint32 SDLCALL SDL_MapSurfaceRGB(SDL_Surface *surface, Uint8 r, Uint8 g, Uint8 b);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1622
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1623 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1624 * Map an RGBA quadruple to a pixel value for a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1625 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1626 * This function maps the RGBA color value to the specified pixel format and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1627 * returns the pixel value best approximating the given RGBA color value for
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1628 * the given pixel format.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1629 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1630 * If the surface pixel format has no alpha component the alpha value will be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1631 * ignored (as it will be in formats with a palette).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1632 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1633 * If the surface has a palette, the index of the closest matching color in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1634 * the palette will be returned.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1635 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1636 * If the pixel format bpp (color depth) is less than 32-bpp then the unused
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1637 * upper bits of the return value can safely be ignored (e.g., with a 16-bpp
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1638 * format the return value can be assigned to a Uint16, and similarly a Uint8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1639 * for an 8-bpp format).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1640 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1641 * \param surface the surface to use for the pixel format and palette.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1642 * \param r the red component of the pixel in the range 0-255.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1643 * \param g the green component of the pixel in the range 0-255.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1644 * \param b the blue component of the pixel in the range 0-255.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1645 * \param a the alpha component of the pixel in the range 0-255.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1646 * \returns a pixel value.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1647 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1648 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1649 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1650 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1651 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1652 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1653 * \sa SDL_MapSurfaceRGB
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1654 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1655 extern SDL_DECLSPEC Uint32 SDLCALL SDL_MapSurfaceRGBA(SDL_Surface *surface, Uint8 r, Uint8 g, Uint8 b, Uint8 a);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1656
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1657 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1658 * Retrieves a single pixel from a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1659 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1660 * This function prioritizes correctness over speed: it is suitable for unit
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1661 * tests, but is not intended for use in a game engine.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1662 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1663 * Like SDL_GetRGBA, this uses the entire 0..255 range when converting color
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1664 * components from pixel formats with less than 8 bits per RGB component.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1665 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1666 * \param surface the surface to read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1667 * \param x the horizontal coordinate, 0 <= x < width.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1668 * \param y the vertical coordinate, 0 <= y < height.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1669 * \param r a pointer filled in with the red channel, 0-255, or NULL to ignore
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1670 * this channel.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1671 * \param g a pointer filled in with the green channel, 0-255, or NULL to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1672 * ignore this channel.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1673 * \param b a pointer filled in with the blue channel, 0-255, or NULL to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1674 * ignore this channel.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1675 * \param a a pointer filled in with the alpha channel, 0-255, or NULL to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1676 * ignore this channel.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1677 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1678 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1679 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1680 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1681 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1682 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1683 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1684 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1685 extern SDL_DECLSPEC bool SDLCALL SDL_ReadSurfacePixel(SDL_Surface *surface, int x, int y, Uint8 *r, Uint8 *g, Uint8 *b, Uint8 *a);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1686
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1687 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1688 * Retrieves a single pixel from a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1689 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1690 * This function prioritizes correctness over speed: it is suitable for unit
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1691 * tests, but is not intended for use in a game engine.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1692 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1693 * \param surface the surface to read.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1694 * \param x the horizontal coordinate, 0 <= x < width.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1695 * \param y the vertical coordinate, 0 <= y < height.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1696 * \param r a pointer filled in with the red channel, normally in the range
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1697 * 0-1, or NULL to ignore this channel.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1698 * \param g a pointer filled in with the green channel, normally in the range
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1699 * 0-1, or NULL to ignore this channel.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1700 * \param b a pointer filled in with the blue channel, normally in the range
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1701 * 0-1, or NULL to ignore this channel.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1702 * \param a a pointer filled in with the alpha channel, normally in the range
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1703 * 0-1, or NULL to ignore this channel.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1704 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1705 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1706 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1707 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1708 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1709 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1710 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1711 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1712 extern SDL_DECLSPEC bool SDLCALL SDL_ReadSurfacePixelFloat(SDL_Surface *surface, int x, int y, float *r, float *g, float *b, float *a);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1713
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1714 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1715 * Writes a single pixel to a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1716 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1717 * This function prioritizes correctness over speed: it is suitable for unit
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1718 * tests, but is not intended for use in a game engine.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1719 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1720 * Like SDL_MapRGBA, this uses the entire 0..255 range when converting color
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1721 * components from pixel formats with less than 8 bits per RGB component.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1722 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1723 * \param surface the surface to write.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1724 * \param x the horizontal coordinate, 0 <= x < width.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1725 * \param y the vertical coordinate, 0 <= y < height.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1726 * \param r the red channel value, 0-255.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1727 * \param g the green channel value, 0-255.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1728 * \param b the blue channel value, 0-255.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1729 * \param a the alpha channel value, 0-255.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1730 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1731 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1732 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1733 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1734 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1735 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1736 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1737 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1738 extern SDL_DECLSPEC bool SDLCALL SDL_WriteSurfacePixel(SDL_Surface *surface, int x, int y, Uint8 r, Uint8 g, Uint8 b, Uint8 a);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1739
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1740 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1741 * Writes a single pixel to a surface.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1742 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1743 * This function prioritizes correctness over speed: it is suitable for unit
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1744 * tests, but is not intended for use in a game engine.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1745 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1746 * \param surface the surface to write.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1747 * \param x the horizontal coordinate, 0 <= x < width.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1748 * \param y the vertical coordinate, 0 <= y < height.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1749 * \param r the red channel value, normally in the range 0-1.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1750 * \param g the green channel value, normally in the range 0-1.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1751 * \param b the blue channel value, normally in the range 0-1.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1752 * \param a the alpha channel value, normally in the range 0-1.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1753 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1754 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1755 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1756 * \threadsafety This function can be called on different threads with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1757 * different surfaces.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1758 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1759 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1760 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1761 extern SDL_DECLSPEC bool SDLCALL SDL_WriteSurfacePixelFloat(SDL_Surface *surface, int x, int y, float r, float g, float b, float a);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1762
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1763 /* Ends C function definitions when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1764 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1765 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1766 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1767 #include <SDL3/SDL_close_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1768
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1769 #endif /* SDL_surface_h_ */