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 
256 extern DECLSPEC SDL_bool SDLCALL SDL_HasColorKey(SDL_Surface * surface);
257 
268 extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface,
269  Uint32 * key);
270 
283 extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface,
284  Uint8 r, Uint8 g, Uint8 b);
285 
286 
299 extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface,
300  Uint8 * r, Uint8 * g,
301  Uint8 * b);
302 
313 extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface,
314  Uint8 alpha);
315 
326 extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface,
327  Uint8 * alpha);
328 
339 extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface,
340  SDL_BlendMode blendMode);
341 
352 extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface,
353  SDL_BlendMode *blendMode);
354 
368 extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface,
369  const SDL_Rect * rect);
370 
377 extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface * surface,
378  SDL_Rect * rect);
379 
380 /*
381  * Creates a new surface identical to the existing surface
382  */
383 extern DECLSPEC SDL_Surface *SDLCALL SDL_DuplicateSurface(SDL_Surface * surface);
384 
395 extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface
396  (SDL_Surface * src, const SDL_PixelFormat * fmt, Uint32 flags);
397 extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat
398  (SDL_Surface * src, Uint32 pixel_format, Uint32 flags);
399 
405 extern DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height,
406  Uint32 src_format,
407  const void * src, int src_pitch,
408  Uint32 dst_format,
409  void * dst, int dst_pitch);
410 
421 extern DECLSPEC int SDLCALL SDL_FillRect
422  (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color);
423 extern DECLSPEC int SDLCALL SDL_FillRects
424  (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color);
425 
483 #define SDL_BlitSurface SDL_UpperBlit
484 
489 extern DECLSPEC int SDLCALL SDL_UpperBlit
490  (SDL_Surface * src, const SDL_Rect * srcrect,
491  SDL_Surface * dst, SDL_Rect * dstrect);
492 
497 extern DECLSPEC int SDLCALL SDL_LowerBlit
498  (SDL_Surface * src, SDL_Rect * srcrect,
499  SDL_Surface * dst, SDL_Rect * dstrect);
500 
507 extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src,
508  const SDL_Rect * srcrect,
509  SDL_Surface * dst,
510  const SDL_Rect * dstrect);
511 
512 #define SDL_BlitScaled SDL_UpperBlitScaled
513 
518 extern DECLSPEC int SDLCALL SDL_UpperBlitScaled
519  (SDL_Surface * src, const SDL_Rect * srcrect,
520  SDL_Surface * dst, SDL_Rect * dstrect);
521 
526 extern DECLSPEC int SDLCALL SDL_LowerBlitScaled
527  (SDL_Surface * src, SDL_Rect * srcrect,
528  SDL_Surface * dst, SDL_Rect * dstrect);
529 
533 extern DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mode);
534 
538 extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void);
539 
543 extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height);
544 
545 /* Ends C function definitions when using C++ */
546 #ifdef __cplusplus
547 }
548 #endif
549 #include "close_code.h"
550 
551 #endif /* SDL_surface_h_ */
552 
553 /* 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 SDL_bool SDLCALL SDL_HasColorKey(SDL_Surface *surface)
Returns whether the surface has a color key.
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.