My Project
SDL_surface.h
Go to the documentation of this file.
1 /*
2  Simple DirectMedia Layer
3  Copyright (C) 1997-2016 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 {
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 (*SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect,
98  struct SDL_Surface * dst, SDL_Rect * dstrect);
99 
118 extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface
119  (Uint32 flags, int width, int height, int depth,
120  Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask);
121 extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat
122  (Uint32 flags, int width, int height, int depth, Uint32 format);
123 extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels,
124  int width,
125  int height,
126  int depth,
127  int pitch,
128  Uint32 Rmask,
129  Uint32 Gmask,
130  Uint32 Bmask,
131  Uint32 Amask);
132 extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormatFrom
133  (void *pixels, int width, int height, int depth, int pitch, Uint32 format);
134 extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface * surface);
135 
143 extern DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface * surface,
144  SDL_Palette * palette);
145 
165 extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface);
167 extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface);
168 
178 extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops * src,
179  int freesrc);
180 
186 #define SDL_LoadBMP(file) SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1)
187 
201 extern DECLSPEC int SDLCALL SDL_SaveBMP_RW
202  (SDL_Surface * surface, SDL_RWops * dst, int freedst);
203 
209 #define SDL_SaveBMP(surface, file) \
210  SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1)
211 
220 extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface,
221  int flag);
222 
234 extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface,
235  int flag, Uint32 key);
236 
247 extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface,
248  Uint32 * key);
249 
262 extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface,
263  Uint8 r, Uint8 g, Uint8 b);
264 
265 
278 extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface,
279  Uint8 * r, Uint8 * g,
280  Uint8 * b);
281 
292 extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface,
293  Uint8 alpha);
294 
305 extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface,
306  Uint8 * alpha);
307 
318 extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface,
319  SDL_BlendMode blendMode);
320 
331 extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface,
332  SDL_BlendMode *blendMode);
333 
347 extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface,
348  const SDL_Rect * rect);
349 
356 extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface * surface,
357  SDL_Rect * rect);
358 
369 extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface
370  (SDL_Surface * src, const SDL_PixelFormat * fmt, Uint32 flags);
371 extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat
372  (SDL_Surface * src, Uint32 pixel_format, Uint32 flags);
373 
379 extern DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height,
380  Uint32 src_format,
381  const void * src, int src_pitch,
382  Uint32 dst_format,
383  void * dst, int dst_pitch);
384 
395 extern DECLSPEC int SDLCALL SDL_FillRect
396  (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color);
397 extern DECLSPEC int SDLCALL SDL_FillRects
398  (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color);
399 
457 #define SDL_BlitSurface SDL_UpperBlit
458 
463 extern DECLSPEC int SDLCALL SDL_UpperBlit
464  (SDL_Surface * src, const SDL_Rect * srcrect,
465  SDL_Surface * dst, SDL_Rect * dstrect);
466 
471 extern DECLSPEC int SDLCALL SDL_LowerBlit
472  (SDL_Surface * src, SDL_Rect * srcrect,
473  SDL_Surface * dst, SDL_Rect * dstrect);
474 
481 extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src,
482  const SDL_Rect * srcrect,
483  SDL_Surface * dst,
484  const SDL_Rect * dstrect);
485 
486 #define SDL_BlitScaled SDL_UpperBlitScaled
487 
492 extern DECLSPEC int SDLCALL SDL_UpperBlitScaled
493  (SDL_Surface * src, const SDL_Rect * srcrect,
494  SDL_Surface * dst, SDL_Rect * dstrect);
495 
500 extern DECLSPEC int SDLCALL SDL_LowerBlitScaled
501  (SDL_Surface * src, SDL_Rect * srcrect,
502  SDL_Surface * dst, SDL_Rect * dstrect);
503 
504 
505 /* Ends C function definitions when using C++ */
506 #ifdef __cplusplus
507 }
508 #endif
509 #include "close_code.h"
510 
511 #endif /* _SDL_surface_h */
512 
513 /* vi: set ts=4 sw=4 expandtab: */
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:143
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
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)
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:159
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 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_pixels.h:302
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 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)
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
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)
int(* 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
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)
struct SDL_BlitMap * map
Definition: SDL_surface.h:88
DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface *surface, SDL_Rect *rect)
Definition: SDL_pixels.h:313
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.