My Project
SDL_surface.h
Go to the documentation of this file.
1 /*
2  Simple DirectMedia Layer
3  Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
4 
5  This software is provided 'as-is', without any express or implied
6  warranty. In no event will the authors be held liable for any damages
7  arising from the use of this software.
8 
9  Permission is granted to anyone to use this software for any purpose,
10  including commercial applications, and to alter it and redistribute it
11  freely, subject to the following restrictions:
12 
13  1. The origin of this software must not be misrepresented; you must not
14  claim that you wrote the original software. If you use this software
15  in a product, an acknowledgment in the product documentation would be
16  appreciated but is not required.
17  2. Altered source versions must be plainly marked as such, and must not be
18  misrepresented as being the original software.
19  3. This notice may not be removed or altered from any source distribution.
20 */
21 
28 #ifndef SDL_surface_h_
29 #define SDL_surface_h_
30 
31 #include "SDL_stdinc.h"
32 #include "SDL_pixels.h"
33 #include "SDL_rect.h"
34 #include "SDL_blendmode.h"
35 #include "SDL_rwops.h"
36 
37 #include "begin_code.h"
38 /* Set up for C function definitions, even when using C++ */
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42 
51 /* @{ */
52 #define SDL_SWSURFACE 0
53 #define SDL_PREALLOC 0x00000001
54 #define SDL_RLEACCEL 0x00000002
55 #define SDL_DONTFREE 0x00000004
56 /* @} *//* Surface flags */
57 
61 #define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0)
62 
69 typedef struct SDL_Surface
70 {
71  Uint32 flags;
73  int w, h;
74  int pitch;
75  void *pixels;
78  void *userdata;
81  int locked;
82  void *lock_data;
88  struct SDL_BlitMap *map;
91  int refcount;
92 } SDL_Surface;
93 
97 typedef int (SDLCALL *SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect,
98  struct SDL_Surface * dst, SDL_Rect * dstrect);
99 
103 typedef enum
104 {
110 
129 extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface
130  (Uint32 flags, int width, int height, int depth,
131  Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask);
132 
133 /* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */
134 extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat
135  (Uint32 flags, int width, int height, int depth, Uint32 format);
136 
137 extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels,
138  int width,
139  int height,
140  int depth,
141  int pitch,
142  Uint32 Rmask,
143  Uint32 Gmask,
144  Uint32 Bmask,
145  Uint32 Amask);
146 extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormatFrom
147  (void *pixels, int width, int height, int depth, int pitch, Uint32 format);
148 extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface * surface);
149 
157 extern DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface * surface,
158  SDL_Palette * palette);
159 
179 extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface);
181 extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface);
182 
192 extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops * src,
193  int freesrc);
194 
200 #define SDL_LoadBMP(file) SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1)
201 
215 extern DECLSPEC int SDLCALL SDL_SaveBMP_RW
216  (SDL_Surface * surface, SDL_RWops * dst, int freedst);
217 
223 #define SDL_SaveBMP(surface, file) \
224  SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1)
225 
234 extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface,
235  int flag);
236 
248 extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface,
249  int flag, Uint32 key);
250 
261 extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface,
262  Uint32 * key);
263 
276 extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface,
277  Uint8 r, Uint8 g, Uint8 b);
278 
279 
292 extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface,
293  Uint8 * r, Uint8 * g,
294  Uint8 * b);
295 
306 extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface,
307  Uint8 alpha);
308 
319 extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface,
320  Uint8 * alpha);
321 
332 extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface,
333  SDL_BlendMode blendMode);
334 
345 extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface,
346  SDL_BlendMode *blendMode);
347 
361 extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface,
362  const SDL_Rect * rect);
363 
370 extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface * surface,
371  SDL_Rect * rect);
372 
373 /*
374  * Creates a new surface identical to the existing surface
375  */
376 extern DECLSPEC SDL_Surface *SDLCALL SDL_DuplicateSurface(SDL_Surface * surface);
377 
388 extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface
389  (SDL_Surface * src, const SDL_PixelFormat * fmt, Uint32 flags);
390 extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat
391  (SDL_Surface * src, Uint32 pixel_format, Uint32 flags);
392 
398 extern DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height,
399  Uint32 src_format,
400  const void * src, int src_pitch,
401  Uint32 dst_format,
402  void * dst, int dst_pitch);
403 
414 extern DECLSPEC int SDLCALL SDL_FillRect
415  (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color);
416 extern DECLSPEC int SDLCALL SDL_FillRects
417  (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color);
418 
476 #define SDL_BlitSurface SDL_UpperBlit
477 
482 extern DECLSPEC int SDLCALL SDL_UpperBlit
483  (SDL_Surface * src, const SDL_Rect * srcrect,
484  SDL_Surface * dst, SDL_Rect * dstrect);
485 
490 extern DECLSPEC int SDLCALL SDL_LowerBlit
491  (SDL_Surface * src, SDL_Rect * srcrect,
492  SDL_Surface * dst, SDL_Rect * dstrect);
493 
500 extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src,
501  const SDL_Rect * srcrect,
502  SDL_Surface * dst,
503  const SDL_Rect * dstrect);
504 
505 #define SDL_BlitScaled SDL_UpperBlitScaled
506 
511 extern DECLSPEC int SDLCALL SDL_UpperBlitScaled
512  (SDL_Surface * src, const SDL_Rect * srcrect,
513  SDL_Surface * dst, SDL_Rect * dstrect);
514 
519 extern DECLSPEC int SDLCALL SDL_LowerBlitScaled
520  (SDL_Surface * src, SDL_Rect * srcrect,
521  SDL_Surface * dst, SDL_Rect * dstrect);
522 
526 extern DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mode);
527 
531 extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void);
532 
536 extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height);
537 
538 /* Ends C function definitions when using C++ */
539 #ifdef __cplusplus
540 }
541 #endif
542 #include "close_code.h"
543 
544 #endif /* SDL_surface_h_ */
545 
546 /* vi: set ts=4 sw=4 expandtab: */
Definition: SDL_surface.h:105
DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops *src, int freesrc)
int pitch
Definition: SDL_surface.h:74
void * lock_data
Definition: SDL_surface.h:82
int(SDLCALL * SDL_blit)(struct SDL_Surface *src, SDL_Rect *srcrect, struct SDL_Surface *dst, SDL_Rect *dstrect)
The type of function used for surface blitting functions.
Definition: SDL_surface.h:97
Definition: SDL_surface.h:106
DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface(SDL_Surface *src, const SDL_PixelFormat *fmt, Uint32 flags)
DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface *surface, SDL_BlendMode *blendMode)
Get the blend mode used for blit operations.
DECLSPEC int SDLCALL SDL_FillRect(SDL_Surface *dst, const SDL_Rect *rect, Uint32 color)
DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height, Uint32 src_format, const void *src, int src_pitch, Uint32 dst_format, void *dst, int dst_pitch)
Copy a block of pixels of one format to another format.
DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface *surface, SDL_Palette *palette)
Set the palette used by a surface.
DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface *surface, Uint8 *r, Uint8 *g, Uint8 *b)
Get the additional color value used in blit operations.
DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mode)
Set the YUV conversion mode.
DECLSPEC int SDLCALL SDL_LowerBlitScaled(SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect)
int refcount
Definition: SDL_surface.h:91
int locked
Definition: SDL_surface.h:81
Definition: SDL_surface.h:108
Definition: SDL_pixels.h:304
A rectangle, with the origin at the upper left.
Definition: SDL_rect.h:64
Uint32 flags
Definition: SDL_surface.h:71
DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface *src, const SDL_Rect *srcrect, SDL_Surface *dst, const SDL_Rect *dstrect)
Perform a fast, low quality, stretch blit between two surfaces of the same pixel format.
DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height)
Get the YUV conversion mode, returning the correct mode for the resolution when the current conversio...
DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface *surface)
A collection of pixels used in software blitting.
Definition: SDL_surface.h:69
void * userdata
Definition: SDL_surface.h:78
DECLSPEC int SDLCALL SDL_LowerBlit(SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect)
SDL_YUV_CONVERSION_MODE
The formula used for converting between YUV and RGB.
Definition: SDL_surface.h:103
DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface *surface, const SDL_Rect *rect)
void * pixels
Definition: SDL_surface.h:75
int h
Definition: SDL_surface.h:73
DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface *surface, SDL_BlendMode blendMode)
Set the blend mode used for blit operations.
SDL_PixelFormat * format
Definition: SDL_surface.h:72
Definition: SDL_surface.h:107
DECLSPEC int SDLCALL SDL_UpperBlit(SDL_Surface *src, const SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect)
DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface *surface, Uint8 *alpha)
Get the additional alpha value used in blit operations.
DECLSPEC int SDLCALL SDL_UpperBlitScaled(SDL_Surface *src, const SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect)
SDL_Rect clip_rect
Definition: SDL_surface.h:85
DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface *surface)
Sets up a surface for directly accessing the pixels.
SDL_BlendMode
The blend mode used in SDL_RenderCopy() and drawing operations.
Definition: SDL_blendmode.h:40
struct SDL_Surface SDL_Surface
A collection of pixels used in software blitting.
DECLSPEC int SDLCALL SDL_SaveBMP_RW(SDL_Surface *surface, SDL_RWops *dst, int freedst)
DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface *surface, Uint32 *key)
Gets the color key (transparent pixel) in a blittable surface.
DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface *surface, int flag)
Sets the RLE acceleration hint for a surface.
DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask)
DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void)
Get the YUV conversion mode.
struct SDL_BlitMap * map
Definition: SDL_surface.h:88
DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface *surface, SDL_Rect *rect)
Definition: SDL_pixels.h:315
Definition: SDL_rwops.h:52
DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface *surface, Uint8 alpha)
Set an additional alpha value used in blit operations.
DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface *surface, int flag, Uint32 key)
Sets the color key (transparent pixel) in a blittable surface.
DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface *surface, Uint8 r, Uint8 g, Uint8 b)
Set an additional color value used in blit operations.