SDL_blit_0.c File Reference
`#include "../SDL_internal.h"`
`#include "SDL_video.h"`
`#include "SDL_blit.h"`
Include dependency graph for SDL_blit_0.c:

Go to the source code of this file.

## Functions

static void | BlitBto1 (SDL_BlitInfo *info)
static void | BlitBto2 (SDL_BlitInfo *info)
static void | BlitBto3 (SDL_BlitInfo *info)
static void | BlitBto4 (SDL_BlitInfo *info)
static void | BlitBto1Key (SDL_BlitInfo *info)
static void | BlitBto2Key (SDL_BlitInfo *info)
static void | BlitBto3Key (SDL_BlitInfo *info)
static void | BlitBto4Key (SDL_BlitInfo *info)
static void | BlitBtoNAlpha (SDL_BlitInfo *info)
static void | BlitBtoNAlphaKey (SDL_BlitInfo *info)
SDL_BlitFunc | SDL_CalculateBlit0 (SDL_Surface *surface)

## Variables

static const SDL_BlitFunc | bitmap_blit []
static const SDL_BlitFunc | colorkey_blit []

## Function Documentation

static void BlitBto1 | ( | SDL_BlitInfo * | info | ) |

static

Definition at line 29 of file SDL_blit_0.c.

References SDL_BlitInfo::dst, SDL_BlitInfo::dst_h, SDL_BlitInfo::dst_skip, SDL_BlitInfo::dst_w, map, SDL_BlitInfo::src, SDL_BlitInfo::src_skip, and SDL_BlitInfo::table.

{
int c;
int width, height;
Uint8 *src, *map, *dst;
int srcskip, dstskip;
/* Set up some basic variables */
width = info->dst_w;
height = info->dst_h;
src = info->src;
srcskip = info->src_skip;
dst = info->dst;
dstskip = info->dst_skip;
map = info->table;
srcskip += width - (width + 7) / 8;
if (map) {
while (height--) {
Uint8 byte = 0, bit;
for (c = 0; c < width; ++c) {
if ((c & 7) == 0) {
byte = *src++;
}
bit = (byte & 0x80) >> 7;
if (1) {
*dst = map[bit];
}
dst++;
byte <<= 1;
}
src += srcskip;
dst += dstskip;
}
} else {
while (height--) {
Uint8 byte = 0, bit;
for (c = 0; c < width; ++c) {
if ((c & 7) == 0) {
byte = *src++;
}
bit = (byte & 0x80) >> 7;
if (1) {
*dst = bit;
}
dst++;
byte <<= 1;
}
src += srcskip;
dst += dstskip;
}
}
}
SDL_BlitInfo::table
Uint8 * table
Definition: SDL_blit.h:67
dst
GLenum GLenum dst
Definition: SDL_opengl_glext.h:1737
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1565
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1565
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
SDL_BlitInfo::dst
Uint8 * dst
Definition: SDL_blit.h:61
Uint8
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:139
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11093
SDL_BlitInfo::src
Uint8 * src
Definition: SDL_blit.h:57
SDL_BlitInfo::dst_w
int dst_w
Definition: SDL_blit.h:62
map
const GLubyte GLuint GLuint GLuint GLuint alpha GLboolean GLboolean GLboolean GLboolean alpha GLint GLint GLsizei GLsizei GLenum type GLenum GLint GLenum GLint GLint GLsizei GLsizei GLint border GLenum GLint GLint GLint GLint GLint GLsizei GLsizei height GLsizei GLsizei GLenum GLenum const GLvoid *pixels GLenum GLint GLint GLint GLint j2 GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble zFar GLenum GLenum GLint *params GLenum GLenum GLint *params GLenum GLenum GLint *params GLenum GLenum GLfloat *params GLenum GLint GLenum GLenum GLvoid *pixels GLenum GLint GLenum GLint *params GLenum GLenum GLint *params GLenum GLsizei const GLvoid *pointer GLenum GLenum const GLint *params GLenum GLfloat GLfloat GLint GLint const GLfloat *points GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat *points GLint GLfloat GLfloat GLint GLfloat GLfloat v2 GLenum GLenum const GLint *params GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble zFar GLenum map
Definition: SDL_glfuncs.h:289
src
GLenum src
Definition: SDL_opengl_glext.h:1737

static void BlitBto1Key | ( | SDL_BlitInfo * | info | ) |

static

Definition at line 197 of file SDL_blit_0.c.

References SDL_BlitInfo::colorkey, SDL_BlitInfo::dst, SDL_BlitInfo::dst_h, SDL_BlitInfo::dst_skip, SDL_BlitInfo::dst_w, SDL_BlitInfo::src, SDL_BlitInfo::src_skip, and SDL_BlitInfo::table.

{
int width = info->dst_w;
int height = info->dst_h;
Uint8 *src = info->src;
Uint8 *dst = info->dst;
int srcskip = info->src_skip;
int dstskip = info->dst_skip;
Uint32 ckey = info->colorkey;
Uint8 *palmap = info->table;
int c;
/* Set up some basic variables */
srcskip += width - (width + 7) / 8;
if (palmap) {
while (height--) {
Uint8 byte = 0, bit;
for (c = 0; c < width; ++c) {
if ((c & 7) == 0) {
byte = *src++;
}
bit = (byte & 0x80) >> 7;
if (bit != ckey) {
*dst = palmap[bit];
}
dst++;
byte <<= 1;
}
src += srcskip;
dst += dstskip;
}
} else {
while (height--) {
Uint8 byte = 0, bit;
for (c = 0; c < width; ++c) {
if ((c & 7) == 0) {
byte = *src++;
}
bit = (byte & 0x80) >> 7;
if (bit != ckey) {
*dst = bit;
}
dst++;
byte <<= 1;
}
src += srcskip;
dst += dstskip;
}
}
}
SDL_BlitInfo::table
Uint8 * table
Definition: SDL_blit.h:67
dst
GLenum GLenum dst
Definition: SDL_opengl_glext.h:1737
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1565
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
Uint32
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:157
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1565
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
SDL_BlitInfo::colorkey
Uint32 colorkey
Definition: SDL_blit.h:69
SDL_BlitInfo::dst
Uint8 * dst
Definition: SDL_blit.h:61
Uint8
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:139
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11093
SDL_BlitInfo::src
Uint8 * src
Definition: SDL_blit.h:57
SDL_BlitInfo::dst_w
int dst_w
Definition: SDL_blit.h:62
src
GLenum src
Definition: SDL_opengl_glext.h:1737

static void BlitBto2 | ( | SDL_BlitInfo * | info | ) |

static

Definition at line 84 of file SDL_blit_0.c.

References SDL_BlitInfo::dst, SDL_BlitInfo::dst_h, SDL_BlitInfo::dst_skip, SDL_BlitInfo::dst_w, map, SDL_BlitInfo::src, SDL_BlitInfo::src_skip, and SDL_BlitInfo::table.

{
int c;
int width, height;
Uint8 *src;
Uint16 *map, *dst;
int srcskip, dstskip;
/* Set up some basic variables */
width = info->dst_w;
height = info->dst_h;
src = info->src;
srcskip = info->src_skip;
dst = (Uint16 *) info->dst;
dstskip = info->dst_skip / 2;
map = (Uint16 *) info->table;
srcskip += width - (width + 7) / 8;
while (height--) {
Uint8 byte = 0, bit;
for (c = 0; c < width; ++c) {
if ((c & 7) == 0) {
byte = *src++;
}
bit = (byte & 0x80) >> 7;
if (1) {
*dst = map[bit];
}
byte <<= 1;
dst++;
}
src += srcskip;
dst += dstskip;
}
}
SDL_BlitInfo::table
Uint8 * table
Definition: SDL_blit.h:67
dst
GLenum GLenum dst
Definition: SDL_opengl_glext.h:1737
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1565
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1565
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
SDL_BlitInfo::dst
Uint8 * dst
Definition: SDL_blit.h:61
Uint8
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:139
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11093
SDL_BlitInfo::src
Uint8 * src
Definition: SDL_blit.h:57
Uint16
uint16_t Uint16
An unsigned 16-bit integer type.
Definition: SDL_stdinc.h:147
SDL_BlitInfo::dst_w
int dst_w
Definition: SDL_blit.h:62
map
const GLubyte GLuint GLuint GLuint GLuint alpha GLboolean GLboolean GLboolean GLboolean alpha GLint GLint GLsizei GLsizei GLenum type GLenum GLint GLenum GLint GLint GLsizei GLsizei GLint border GLenum GLint GLint GLint GLint GLint GLsizei GLsizei height GLsizei GLsizei GLenum GLenum const GLvoid *pixels GLenum GLint GLint GLint GLint j2 GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble zFar GLenum GLenum GLint *params GLenum GLenum GLint *params GLenum GLenum GLint *params GLenum GLenum GLfloat *params GLenum GLint GLenum GLenum GLvoid *pixels GLenum GLint GLenum GLint *params GLenum GLenum GLint *params GLenum GLsizei const GLvoid *pointer GLenum GLenum const GLint *params GLenum GLfloat GLfloat GLint GLint const GLfloat *points GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat *points GLint GLfloat GLfloat GLint GLfloat GLfloat v2 GLenum GLenum const GLint *params GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble zFar GLenum map
Definition: SDL_glfuncs.h:289
src
GLenum src
Definition: SDL_opengl_glext.h:1737

static void BlitBto2Key | ( | SDL_BlitInfo * | info | ) |

static

Definition at line 250 of file SDL_blit_0.c.

References SDL_BlitInfo::colorkey, SDL_BlitInfo::dst, SDL_BlitInfo::dst_h, SDL_BlitInfo::dst_skip, SDL_BlitInfo::dst_w, SDL_BlitInfo::src, SDL_BlitInfo::src_skip, and SDL_BlitInfo::table.

{
int width = info->dst_w;
int height = info->dst_h;
Uint8 *src = info->src;
Uint16 *dstp = (Uint16 *) info->dst;
int srcskip = info->src_skip;
int dstskip = info->dst_skip;
Uint32 ckey = info->colorkey;
Uint8 *palmap = info->table;
int c;
/* Set up some basic variables */
srcskip += width - (width + 7) / 8;
dstskip /= 2;
while (height--) {
Uint8 byte = 0, bit;
for (c = 0; c < width; ++c) {
if ((c & 7) == 0) {
byte = *src++;
}
bit = (byte & 0x80) >> 7;
if (bit != ckey) {
*dstp = ((Uint16 *) palmap)[bit];
}
byte <<= 1;
dstp++;
}
src += srcskip;
dstp += dstskip;
}
}
SDL_BlitInfo::table
Uint8 * table
Definition: SDL_blit.h:67
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1565
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
Uint32
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:157
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1565
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
SDL_BlitInfo::colorkey
Uint32 colorkey
Definition: SDL_blit.h:69
SDL_BlitInfo::dst
Uint8 * dst
Definition: SDL_blit.h:61
Uint8
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:139
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11093
SDL_BlitInfo::src
Uint8 * src
Definition: SDL_blit.h:57
Uint16
uint16_t Uint16
An unsigned 16-bit integer type.
Definition: SDL_stdinc.h:147
SDL_BlitInfo::dst_w
int dst_w
Definition: SDL_blit.h:62
src
GLenum src
Definition: SDL_opengl_glext.h:1737

static void BlitBto3 | ( | SDL_BlitInfo * | info | ) |

static

Definition at line 121 of file SDL_blit_0.c.

References SDL_BlitInfo::dst, SDL_BlitInfo::dst_h, SDL_BlitInfo::dst_skip, SDL_BlitInfo::dst_w, map, SDL_BlitInfo::src, SDL_BlitInfo::src_skip, and SDL_BlitInfo::table.

{
int c, o;
int width, height;
Uint8 *src, *map, *dst;
int srcskip, dstskip;
/* Set up some basic variables */
width = info->dst_w;
height = info->dst_h;
src = info->src;
srcskip = info->src_skip;
dst = info->dst;
dstskip = info->dst_skip;
map = info->table;
srcskip += width - (width + 7) / 8;
while (height--) {
Uint8 byte = 0, bit;
for (c = 0; c < width; ++c) {
if ((c & 7) == 0) {
byte = *src++;
}
bit = (byte & 0x80) >> 7;
if (1) {
o = bit * 4;
dst[0] = map[o++];
dst[1] = map[o++];
dst[2] = map[o++];
}
byte <<= 1;
dst += 3;
}
src += srcskip;
dst += dstskip;
}
}
SDL_BlitInfo::table
Uint8 * table
Definition: SDL_blit.h:67
dst
GLenum GLenum dst
Definition: SDL_opengl_glext.h:1737
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1565
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1565
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
SDL_BlitInfo::dst
Uint8 * dst
Definition: SDL_blit.h:61
Uint8
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:139
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11093
SDL_BlitInfo::src
Uint8 * src
Definition: SDL_blit.h:57
SDL_BlitInfo::dst_w
int dst_w
Definition: SDL_blit.h:62
map
const GLubyte GLuint GLuint GLuint GLuint alpha GLboolean GLboolean GLboolean GLboolean alpha GLint GLint GLsizei GLsizei GLenum type GLenum GLint GLenum GLint GLint GLsizei GLsizei GLint border GLenum GLint GLint GLint GLint GLint GLsizei GLsizei height GLsizei GLsizei GLenum GLenum const GLvoid *pixels GLenum GLint GLint GLint GLint j2 GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble zFar GLenum GLenum GLint *params GLenum GLenum GLint *params GLenum GLenum GLint *params GLenum GLenum GLfloat *params GLenum GLint GLenum GLenum GLvoid *pixels GLenum GLint GLenum GLint *params GLenum GLenum GLint *params GLenum GLsizei const GLvoid *pointer GLenum GLenum const GLint *params GLenum GLfloat GLfloat GLint GLint const GLfloat *points GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat *points GLint GLfloat GLfloat GLint GLfloat GLfloat v2 GLenum GLenum const GLint *params GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble zFar GLenum map
Definition: SDL_glfuncs.h:289
src
GLenum src
Definition: SDL_opengl_glext.h:1737

static void BlitBto3Key | ( | SDL_BlitInfo * | info | ) |

static

Definition at line 285 of file SDL_blit_0.c.

References SDL_BlitInfo::colorkey, SDL_BlitInfo::dst, SDL_BlitInfo::dst_h, SDL_BlitInfo::dst_skip, SDL_BlitInfo::dst_w, SDL_memcpy, SDL_BlitInfo::src, SDL_BlitInfo::src_skip, and SDL_BlitInfo::table.

{
int width = info->dst_w;
int height = info->dst_h;
Uint8 *src = info->src;
Uint8 *dst = info->dst;
int srcskip = info->src_skip;
int dstskip = info->dst_skip;
Uint32 ckey = info->colorkey;
Uint8 *palmap = info->table;
int c;
/* Set up some basic variables */
srcskip += width - (width + 7) / 8;
while (height--) {
Uint8 byte = 0, bit;
for (c = 0; c < width; ++c) {
if ((c & 7) == 0) {
byte = *src++;
}
bit = (byte & 0x80) >> 7;
if (bit != ckey) {
SDL_memcpy(dst, &palmap[bit * 4], 3);
}
byte <<= 1;
dst += 3;
}
src += srcskip;
dst += dstskip;
}
}
SDL_BlitInfo::table
Uint8 * table
Definition: SDL_blit.h:67
dst
GLenum GLenum dst
Definition: SDL_opengl_glext.h:1737
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1565
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
Uint32
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:157
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1565
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
SDL_BlitInfo::colorkey
Uint32 colorkey
Definition: SDL_blit.h:69
SDL_BlitInfo::dst
Uint8 * dst
Definition: SDL_blit.h:61
SDL_memcpy
#define SDL_memcpy
Definition: SDL_dynapi_overrides.h:393
Uint8
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:139
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11093
SDL_BlitInfo::src
Uint8 * src
Definition: SDL_blit.h:57
SDL_BlitInfo::dst_w
int dst_w
Definition: SDL_blit.h:62
src
GLenum src
Definition: SDL_opengl_glext.h:1737

static void BlitBto4 | ( | SDL_BlitInfo * | info | ) |

static

Definition at line 160 of file SDL_blit_0.c.

References SDL_BlitInfo::dst, SDL_BlitInfo::dst_h, SDL_BlitInfo::dst_skip, SDL_BlitInfo::dst_w, map, SDL_BlitInfo::src, SDL_BlitInfo::src_skip, and SDL_BlitInfo::table.

{
int width, height;
Uint8 *src;
Uint32 *map, *dst;
int srcskip, dstskip;
int c;
/* Set up some basic variables */
width = info->dst_w;
height = info->dst_h;
src = info->src;
srcskip = info->src_skip;
dst = (Uint32 *) info->dst;
dstskip = info->dst_skip / 4;
map = (Uint32 *) info->table;
srcskip += width - (width + 7) / 8;
while (height--) {
Uint8 byte = 0, bit;
for (c = 0; c < width; ++c) {
if ((c & 7) == 0) {
byte = *src++;
}
bit = (byte & 0x80) >> 7;
if (1) {
*dst = map[bit];
}
byte <<= 1;
dst++;
}
src += srcskip;
dst += dstskip;
}
}
SDL_BlitInfo::table
Uint8 * table
Definition: SDL_blit.h:67
dst
GLenum GLenum dst
Definition: SDL_opengl_glext.h:1737
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1565
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
Uint32
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:157
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1565
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
SDL_BlitInfo::dst
Uint8 * dst
Definition: SDL_blit.h:61
Uint8
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:139
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11093
SDL_BlitInfo::src
Uint8 * src
Definition: SDL_blit.h:57
SDL_BlitInfo::dst_w
int dst_w
Definition: SDL_blit.h:62
map
const GLubyte GLuint GLuint GLuint GLuint alpha GLboolean GLboolean GLboolean GLboolean alpha GLint GLint GLsizei GLsizei GLenum type GLenum GLint GLenum GLint GLint GLsizei GLsizei GLint border GLenum GLint GLint GLint GLint GLint GLsizei GLsizei height GLsizei GLsizei GLenum GLenum const GLvoid *pixels GLenum GLint GLint GLint GLint j2 GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble zFar GLenum GLenum GLint *params GLenum GLenum GLint *params GLenum GLenum GLint *params GLenum GLenum GLfloat *params GLenum GLint GLenum GLenum GLvoid *pixels GLenum GLint GLenum GLint *params GLenum GLenum GLint *params GLenum GLsizei const GLvoid *pointer GLenum GLenum const GLint *params GLenum GLfloat GLfloat GLint GLint const GLfloat *points GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat *points GLint GLfloat GLfloat GLint GLfloat GLfloat v2 GLenum GLenum const GLint *params GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble zFar GLenum map
Definition: SDL_glfuncs.h:289
src
GLenum src
Definition: SDL_opengl_glext.h:1737

static void BlitBto4Key | ( | SDL_BlitInfo * | info | ) |

static

Definition at line 319 of file SDL_blit_0.c.

References SDL_BlitInfo::colorkey, SDL_BlitInfo::dst, SDL_BlitInfo::dst_h, SDL_BlitInfo::dst_skip, SDL_BlitInfo::dst_w, SDL_BlitInfo::src, SDL_BlitInfo::src_skip, and SDL_BlitInfo::table.

{
int width = info->dst_w;
int height = info->dst_h;
Uint8 *src = info->src;
Uint32 *dstp = (Uint32 *) info->dst;
int srcskip = info->src_skip;
int dstskip = info->dst_skip;
Uint32 ckey = info->colorkey;
Uint8 *palmap = info->table;
int c;
/* Set up some basic variables */
srcskip += width - (width + 7) / 8;
dstskip /= 4;
while (height--) {
Uint8 byte = 0, bit;
for (c = 0; c < width; ++c) {
if ((c & 7) == 0) {
byte = *src++;
}
bit = (byte & 0x80) >> 7;
if (bit != ckey) {
*dstp = ((Uint32 *) palmap)[bit];
}
byte <<= 1;
dstp++;
}
src += srcskip;
dstp += dstskip;
}
}
SDL_BlitInfo::table
Uint8 * table
Definition: SDL_blit.h:67
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1565
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
Uint32
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:157
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1565
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
SDL_BlitInfo::colorkey
Uint32 colorkey
Definition: SDL_blit.h:69
SDL_BlitInfo::dst
Uint8 * dst
Definition: SDL_blit.h:61
Uint8
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:139
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11093
SDL_BlitInfo::src
Uint8 * src
Definition: SDL_blit.h:57
SDL_BlitInfo::dst_w
int dst_w
Definition: SDL_blit.h:62
src
GLenum src
Definition: SDL_opengl_glext.h:1737

static void BlitBtoNAlpha | ( | SDL_BlitInfo * | info | ) |

static

Definition at line 354 of file SDL_blit_0.c.

References SDL_BlitInfo::a, ALPHA_BLEND_RGBA, ASSEMBLE_RGBA, SDL_Color::b, SDL_PixelFormat::BytesPerPixel, SDL_Palette::colors, DISEMBLE_RGBA, SDL_BlitInfo::dst, SDL_BlitInfo::dst_fmt, SDL_BlitInfo::dst_h, SDL_BlitInfo::dst_skip, SDL_BlitInfo::dst_w, SDL_Color::g, SDL_PixelFormat::palette, SDL_Color::r, SDL_BlitInfo::src, SDL_BlitInfo::src_fmt, and SDL_BlitInfo::src_skip.

Referenced by SDL_CalculateBlit0().

{
int width = info->dst_w;
int height = info->dst_h;
Uint8 *src = info->src;
Uint8 *dst = info->dst;
int srcskip = info->src_skip;
int dstskip = info->dst_skip;
const SDL_Color *srcpal = info->src_fmt->palette->colors;
SDL_PixelFormat *dstfmt = info->dst_fmt;
int dstbpp;
int c;
Uint32 pixel;
unsigned sR, sG, sB;
unsigned dR, dG, dB, dA;
const unsigned A = info->a;
/* Set up some basic variables */
dstbpp = dstfmt->BytesPerPixel;
srcskip += width - (width + 7) / 8;
while (height--) {
Uint8 byte = 0, bit;
for (c = 0; c < width; ++c) {
if ((c & 7) == 0) {
byte = *src++;
}
bit = (byte & 0x80) >> 7;
if (1) {
sR = srcpal[bit].r;
sG = srcpal[bit].g;
sB = srcpal[bit].b;
DISEMBLE_RGBA(dst, dstbpp, dstfmt, pixel, dR, dG, dB, dA);
ALPHA_BLEND_RGBA(sR, sG, sB, A, dR, dG, dB, dA);
ASSEMBLE_RGBA(dst, dstbpp, dstfmt, dR, dG, dB, dA);
}
byte <<= 1;
dst += dstbpp;
}
src += srcskip;
dst += dstskip;
}
}
dst
GLenum GLenum dst
Definition: SDL_opengl_glext.h:1737
SDL_Color
Definition: SDL_pixels.h:279
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1565
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
Uint32
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:157
SDL_Color::g
Uint8 g
Definition: SDL_pixels.h:282
ALPHA_BLEND_RGBA
#define ALPHA_BLEND_RGBA(sR, sG, sB, sA, dR, dG, dB, dA)
Definition: SDL_blit.h:453
SDL_PixelFormat::BytesPerPixel
Uint8 BytesPerPixel
Definition: SDL_pixels.h:304
SDL_BlitInfo::src_fmt
SDL_PixelFormat * src_fmt
Definition: SDL_blit.h:65
ASSEMBLE_RGBA
#define ASSEMBLE_RGBA(buf, bpp, fmt, r, g, b, a)
Definition: SDL_blit.h:401
SDL_Color::b
Uint8 b
Definition: SDL_pixels.h:283
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1565
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
blit_table::dstbpp
int dstbpp
Definition: SDL_blit_N.c:2461
SDL_BlitInfo::dst
Uint8 * dst
Definition: SDL_blit.h:61
DISEMBLE_RGBA
#define DISEMBLE_RGBA(buf, bpp, fmt, Pixel, r, g, b, a)
Definition: SDL_blit.h:352
SDL_Color::r
Uint8 r
Definition: SDL_pixels.h:281
Uint8
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:139
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11093
SDL_BlitInfo::src
Uint8 * src
Definition: SDL_blit.h:57
SDL_BlitInfo::dst_fmt
SDL_PixelFormat * dst_fmt
Definition: SDL_blit.h:66
SDL_Palette::colors
SDL_Color * colors
Definition: SDL_pixels.h:291
SDL_PixelFormat
Definition: SDL_pixels.h:299
SDL_PixelFormat::palette
SDL_Palette * palette
Definition: SDL_pixels.h:302
SDL_BlitInfo::dst_w
int dst_w
Definition: SDL_blit.h:62
src
GLenum src
Definition: SDL_opengl_glext.h:1737
SDL_BlitInfo::a
Uint8 a
Definition: SDL_blit.h:70

static void BlitBtoNAlphaKey | ( | SDL_BlitInfo * | info | ) |

static

Definition at line 399 of file SDL_blit_0.c.

References SDL_BlitInfo::a, ALPHA_BLEND_RGBA, ASSEMBLE_RGBA, SDL_Color::b, SDL_PixelFormat::BytesPerPixel, SDL_BlitInfo::colorkey, SDL_Palette::colors, DISEMBLE_RGBA, SDL_BlitInfo::dst, SDL_BlitInfo::dst_fmt, SDL_BlitInfo::dst_h, SDL_BlitInfo::dst_skip, SDL_BlitInfo::dst_w, SDL_Color::g, SDL_PixelFormat::palette, SDL_Color::r, SDL_BlitInfo::src, SDL_BlitInfo::src_fmt, and SDL_BlitInfo::src_skip.

Referenced by SDL_CalculateBlit0().

{
int width = info->dst_w;
int height = info->dst_h;
Uint8 *src = info->src;
Uint8 *dst = info->dst;
int srcskip = info->src_skip;
int dstskip = info->dst_skip;
SDL_PixelFormat *srcfmt = info->src_fmt;
SDL_PixelFormat *dstfmt = info->dst_fmt;
const SDL_Color *srcpal = srcfmt->palette->colors;
int dstbpp;
int c;
Uint32 pixel;
unsigned sR, sG, sB;
unsigned dR, dG, dB, dA;
const unsigned A = info->a;
Uint32 ckey = info->colorkey;
/* Set up some basic variables */
dstbpp = dstfmt->BytesPerPixel;
srcskip += width - (width + 7) / 8;
while (height--) {
Uint8 byte = 0, bit;
for (c = 0; c < width; ++c) {
if ((c & 7) == 0) {
byte = *src++;
}
bit = (byte & 0x80) >> 7;
if (bit != ckey) {
sR = srcpal[bit].r;
sG = srcpal[bit].g;
sB = srcpal[bit].b;
DISEMBLE_RGBA(dst, dstbpp, dstfmt, pixel, dR, dG, dB, dA);
ALPHA_BLEND_RGBA(sR, sG, sB, A, dR, dG, dB, dA);
ASSEMBLE_RGBA(dst, dstbpp, dstfmt, dR, dG, dB, dA);
}
byte <<= 1;
dst += dstbpp;
}
src += srcskip;
dst += dstskip;
}
}
dst
GLenum GLenum dst
Definition: SDL_opengl_glext.h:1737
SDL_Color
Definition: SDL_pixels.h:279
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1565
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
Uint32
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:157
SDL_Color::g
Uint8 g
Definition: SDL_pixels.h:282
ALPHA_BLEND_RGBA
#define ALPHA_BLEND_RGBA(sR, sG, sB, sA, dR, dG, dB, dA)
Definition: SDL_blit.h:453
SDL_PixelFormat::BytesPerPixel
Uint8 BytesPerPixel
Definition: SDL_pixels.h:304
SDL_BlitInfo::src_fmt
SDL_PixelFormat * src_fmt
Definition: SDL_blit.h:65
ASSEMBLE_RGBA
#define ASSEMBLE_RGBA(buf, bpp, fmt, r, g, b, a)
Definition: SDL_blit.h:401
SDL_Color::b
Uint8 b
Definition: SDL_pixels.h:283
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1565
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
blit_table::dstbpp
int dstbpp
Definition: SDL_blit_N.c:2461
SDL_BlitInfo::colorkey
Uint32 colorkey
Definition: SDL_blit.h:69
SDL_BlitInfo::dst
Uint8 * dst
Definition: SDL_blit.h:61
DISEMBLE_RGBA
#define DISEMBLE_RGBA(buf, bpp, fmt, Pixel, r, g, b, a)
Definition: SDL_blit.h:352
SDL_Color::r
Uint8 r
Definition: SDL_pixels.h:281
Uint8
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:139
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11093
SDL_BlitInfo::src
Uint8 * src
Definition: SDL_blit.h:57
SDL_BlitInfo::dst_fmt
SDL_PixelFormat * dst_fmt
Definition: SDL_blit.h:66
SDL_Palette::colors
SDL_Color * colors
Definition: SDL_pixels.h:291
SDL_PixelFormat
Definition: SDL_pixels.h:299
SDL_PixelFormat::palette
SDL_Palette * palette
Definition: SDL_pixels.h:302
SDL_BlitInfo::dst_w
int dst_w
Definition: SDL_blit.h:62
src
GLenum src
Definition: SDL_opengl_glext.h:1737
SDL_BlitInfo::a
Uint8 a
Definition: SDL_blit.h:70

SDL_BlitFunc SDL_CalculateBlit0 | ( | SDL_Surface * | surface | ) |

Definition at line 454 of file SDL_blit_0.c.

References bitmap_blit, SDL_PixelFormat::BitsPerPixel, BlitBtoNAlpha(), BlitBtoNAlphaKey(), SDL_PixelFormat::BytesPerPixel, colorkey_blit, SDL_BlitMap::dst, SDL_BlitInfo::flags, SDL_Surface::format, SDL_BlitMap::info, SDL_Surface::map, NULL, SDL_COPY_BLEND, SDL_COPY_COLORKEY, SDL_COPY_MODULATE_ALPHA, and SDL_COPY_RLE_MASK.

Referenced by SDL_CalculateBlit().

{
int which;
if (surface->format->BitsPerPixel != 1) {
/* We don't support sub 8-bit packed pixel modes */
return (SDL_BlitFunc) NULL;
}
if (surface->map->dst->format->BitsPerPixel < 8) {
which = 0;
} else {
which = surface->map->dst->format->BytesPerPixel;
}
switch (surface->map->info.flags & ~SDL_COPY_RLE_MASK) {
case 0:
return bitmap_blit[which];
case SDL_COPY_COLORKEY:
return colorkey_blit[which];
case SDL_COPY_MODULATE_ALPHA | SDL_COPY_BLEND:
return which >= 2 ? BlitBtoNAlpha : (SDL_BlitFunc) NULL;
case SDL_COPY_COLORKEY | SDL_COPY_MODULATE_ALPHA | SDL_COPY_BLEND:
return which >= 2 ? BlitBtoNAlphaKey : (SDL_BlitFunc) NULL;
}
return (SDL_BlitFunc) NULL;
}
SDL_COPY_COLORKEY
#define SDL_COPY_COLORKEY
Definition: SDL_blit.h:39
SDL_PixelFormat::BytesPerPixel
Uint8 BytesPerPixel
Definition: SDL_pixels.h:304
SDL_BlitInfo::flags
int flags
Definition: SDL_blit.h:68
SDL_COPY_RLE_MASK
#define SDL_COPY_RLE_MASK
Definition: SDL_blit.h:44
SDL_Surface::map
struct SDL_BlitMap * map
Definition: SDL_surface.h:88
SDL_PixelFormat::BitsPerPixel
Uint8 BitsPerPixel
Definition: SDL_pixels.h:303
BlitBtoNAlpha
static void BlitBtoNAlpha(SDL_BlitInfo *info)
Definition: SDL_blit_0.c:354
BlitBtoNAlphaKey
static void BlitBtoNAlphaKey(SDL_BlitInfo *info)
Definition: SDL_blit_0.c:399
SDL_BlitMap::dst
SDL_Surface * dst
Definition: SDL_blit.h:87
NULL
#define NULL
Definition: begin_code.h:143
SDL_Surface::format
SDL_PixelFormat * format
Definition: SDL_surface.h:72
SDL_COPY_MODULATE_ALPHA
#define SDL_COPY_MODULATE_ALPHA
Definition: SDL_blit.h:35
bitmap_blit
static const SDL_BlitFunc bitmap_blit[]
Definition: SDL_blit_0.c:445
SDL_BlitFunc
void(* SDL_BlitFunc)(SDL_BlitInfo *info)
Definition: SDL_blit.h:73
colorkey_blit
static const SDL_BlitFunc colorkey_blit[]
Definition: SDL_blit_0.c:449
SDL_COPY_BLEND
#define SDL_COPY_BLEND
Definition: SDL_blit.h:36
SDL_BlitMap::info
SDL_BlitInfo info
Definition: SDL_blit.h:91

## Variable Documentation

const SDL_BlitFunc bitmap_blit[]

static

Initial value:
= {
(SDL_BlitFunc) NULL, BlitBto1, BlitBto2, BlitBto3, BlitBto4
}
BlitBto2
static void BlitBto2(SDL_BlitInfo *info)
Definition: SDL_blit_0.c:84
BlitBto4
static void BlitBto4(SDL_BlitInfo *info)
Definition: SDL_blit_0.c:160
BlitBto1
static void BlitBto1(SDL_BlitInfo *info)
Definition: SDL_blit_0.c:29
NULL
#define NULL
Definition: begin_code.h:143
BlitBto3
static void BlitBto3(SDL_BlitInfo *info)
Definition: SDL_blit_0.c:121
SDL_BlitFunc
void(* SDL_BlitFunc)(SDL_BlitInfo *info)
Definition: SDL_blit.h:73

Definition at line 445 of file SDL_blit_0.c.

Referenced by SDL_CalculateBlit0().

const SDL_BlitFunc colorkey_blit[]

static

Initial value:
= {
(SDL_BlitFunc) NULL, BlitBto1Key, BlitBto2Key, BlitBto3Key, BlitBto4Key
}
BlitBto2Key
static void BlitBto2Key(SDL_BlitInfo *info)
Definition: SDL_blit_0.c:250
BlitBto1Key
static void BlitBto1Key(SDL_BlitInfo *info)
Definition: SDL_blit_0.c:197
BlitBto3Key
static void BlitBto3Key(SDL_BlitInfo *info)
Definition: SDL_blit_0.c:285
BlitBto4Key
static void BlitBto4Key(SDL_BlitInfo *info)
Definition: SDL_blit_0.c:319
NULL
#define NULL
Definition: begin_code.h:143
SDL_BlitFunc
void(* SDL_BlitFunc)(SDL_BlitInfo *info)
Definition: SDL_blit.h:73

Definition at line 449 of file SDL_blit_0.c.

Referenced by SDL_CalculateBlit0().