More work in progress integrating SDL_Surface and the new SDL_Texture API

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%402628
This commit is contained in:
Sam Lantinga 2007-08-18 01:44:21 +00:00
parent 8379dac1e0
commit 2e91636dda
8 changed files with 536 additions and 395 deletions

View file

@ -265,10 +265,7 @@ typedef void *SDL_GLContext;
/* These are the currently supported flags for the SDL_surface */
/* Used internally (read-only) */
#define SDL_PREALLOC 0x00000001 /* Surface uses preallocated memory */
#define SDL_SRCALPHA 0x00000004 /* Blit uses source alpha blending */
#define SDL_SRCCOLORKEY 0x00000008 /* Blit uses a source color key */
#define SDL_RLEACCELOK 0x00000010 /* Private flag */
#define SDL_RLEACCEL 0x00000020 /* Surface is RLE encoded */
#define SDL_RLEACCEL 0x00000001 /* Surface is RLE encoded */
/* Evaluates to true if the surface needs to be locked before access */
#define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0)
@ -1401,34 +1398,157 @@ extern DECLSPEC int SDLCALL SDL_SaveBMP_RW
SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1)
/*
* Sets the color key (transparent pixel) in a blittable surface.
* If 'flag' is SDL_SRCCOLORKEY (optionally OR'd with SDL_RLEACCEL),
* 'key' will be the transparent pixel in the source image of a blit.
* SDL_RLEACCEL requests RLE acceleration for the surface if present,
* and removes RLE acceleration if absent.
* If 'flag' is 0, this function clears any current color key.
* This function returns 0, or -1 if there was an error.
* \fn int SDL_SetSurfaceRLE(SDL_Surface *surface, int flag)
*
* \brief Sets the RLE acceleration hint for a surface.
*
* \return 0 on success, or -1 if the surface is not valid
*
* \note If RLE is enabled, colorkey and alpha blending blits are much faster,
* but the surface must be locked before directly accessing the pixels.
*/
extern DECLSPEC int SDLCALL SDL_SetColorKey
(SDL_Surface * surface, Uint32 flag, Uint32 key);
extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface *surface, int flag);
/*
* This function sets the alpha value for the entire surface, as opposed to
* using the alpha component of each pixel. This value measures the range
* of transparency of the surface, 0 being completely transparent to 255
* being completely opaque. An 'alpha' value of 255 causes blits to be
* opaque, the source pixels copied to the destination (the default). Note
* that per-surface alpha can be combined with colorkey transparency.
* \fn int SDL_SetColorKey(SDL_Surface *surface, Uint32 flag, Uint32 key)
*
* If 'flag' is 0, alpha blending is disabled for the surface.
* If 'flag' is SDL_SRCALPHA, alpha blending is enabled for the surface.
* OR:ing the flag with SDL_RLEACCEL requests RLE acceleration for the
* surface; if SDL_RLEACCEL is not specified, the RLE accel will be removed.
* \brief Sets the color key (transparent pixel) in a blittable surface.
*
* The 'alpha' parameter is ignored for surfaces that have an alpha channel.
* \param surface The surface to update
* \param flag Non-zero to enable colorkey and 0 to disable colorkey
* \param key The transparent pixel in the native surface format
*
* \return 0 on success, or -1 if the surface is not valid
*/
extern DECLSPEC int SDLCALL SDL_SetAlpha(SDL_Surface * surface, Uint32 flag,
Uint8 alpha);
extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface *surface, Uint32 flag, Uint32 key);
/**
* \fn int SDL_SetSurfaceColorMod(SDL_Surface *surface, Uint8 r, Uint8 g, Uint8 b)
*
* \brief Set an additional color value used in blit operations
*
* \param surface The surface to update
* \param r The red source color value multiplied into blit operations
* \param g The green source color value multiplied into blit operations
* \param b The blue source color value multiplied into blit operations
*
* \return 0 on success, or -1 if the surface is not valid
*
* \sa SDL_GetSurfaceColorMod()
*/
extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface *surface,
Uint8 r, Uint8 g, Uint8 b);
/**
* \fn int SDL_GetSurfaceColorMod(SDL_Surface *surface, Uint8 *r, Uint8 *g, Uint8 *b)
*
* \brief Get the additional color value used in blit operations
*
* \param surface The surface to query
* \param r A pointer filled in with the source red color value
* \param g A pointer filled in with the source green color value
* \param b A pointer filled in with the source blue color value
*
* \return 0 on success, or -1 if the surface is not valid
*
* \sa SDL_SetSurfaceColorMod()
*/
extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface *surface,
Uint8 * r, Uint8 * g,
Uint8 * b);
/**
* \fn int SDL_SetSurfaceAlphaMod(SDL_Surface *surface, Uint8 alpha)
*
* \brief Set an additional alpha value used in blit operations
*
* \param surface The surface to update
* \param alpha The source alpha value multiplied into blit operations.
*
* \return 0 on success, or -1 if the surface is not valid
*
* \sa SDL_GetSurfaceAlphaMod()
*/
extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface *surface,
Uint8 alpha);
/**
* \fn int SDL_GetSurfaceAlphaMod(SDL_Surface *surface, Uint8 *alpha)
*
* \brief Get the additional alpha value used in blit operations
*
* \param surface The surface to query
* \param alpha A pointer filled in with the source alpha value
*
* \return 0 on success, or -1 if the surface is not valid
*
* \sa SDL_SetSurfaceAlphaMod()
*/
extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface *surface,
Uint8 * alpha);
/**
* \fn int SDL_SetSurfaceBlendMode(SDL_Surface *surface, int blendMode)
*
* \brief Set the blend mode used for blit operations
*
* \param surface The surface to update
* \param blendMode SDL_TextureBlendMode to use for blit blending
*
* \return 0 on success, or -1 if the parameters are not valid
*
* \sa SDL_GetSurfaceBlendMode()
*/
extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface *surface,
int blendMode);
/**
* \fn int SDL_GetSurfaceBlendMode(SDL_Surface *surface, int *blendMode)
*
* \brief Get the blend mode used for blit operations
*
* \param surface The surface to query
* \param blendMode A pointer filled in with the current blend mode
*
* \return 0 on success, or -1 if the surface is not valid
*
* \sa SDL_SetSurfaceBlendMode()
*/
extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface *surface,
int *blendMode);
/**
* \fn int SDL_SetSurfaceScaleMode(SDL_Surface *surface, int scaleMode)
*
* \brief Set the scale mode used for blit operations
*
* \param surface The surface to update
* \param scaleMode SDL_TextureScaleMode to use for blit scaling
*
* \return 0 on success, or -1 if the surface is not valid or the scale mode is not supported
*
* \note If the scale mode is not supported, the closest supported mode is chosen. Currently only SDL_TEXTURESCALEMODE_FAST is supported on surfaces.
*
* \sa SDL_GetSurfaceScaleMode()
*/
extern DECLSPEC int SDLCALL SDL_SetSurfaceScaleMode(SDL_Surface *surface,
int scaleMode);
/**
* \fn int SDL_GetSurfaceScaleMode(SDL_Surface *surface, int *scaleMode)
*
* \brief Get the scale mode used for blit operations
*
* \param surface The surface to query
* \param scaleMode A pointer filled in with the current scale mode
*
* \return 0 on success, or -1 if the surface is not valid
*
* \sa SDL_SetSurfaceScaleMode()
*/
extern DECLSPEC int SDLCALL SDL_GetSurfaceScaleMode(SDL_Surface *surface,
int *scaleMode);
/*
* Sets the clipping rectangle for the destination surface in a blit.