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

## BlitBto1()

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
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
dst
GLenum GLenum dst
Definition: SDL_opengl_glext.h:1737
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
src
GLenum src
Definition: SDL_opengl_glext.h:1737
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1572
SDL_BlitInfo::dst
Uint8 * dst
Definition: SDL_blit.h:61
Uint8
uint8_t Uint8
Definition: SDL_stdinc.h:157
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11093
SDL_BlitInfo::src
Uint8 * src
Definition: SDL_blit.h:57
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1572
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:290

## BlitBto1Key()

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
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
dst
GLenum GLenum dst
Definition: SDL_opengl_glext.h:1737
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
Uint32
uint32_t Uint32
Definition: SDL_stdinc.h:181
src
GLenum src
Definition: SDL_opengl_glext.h:1737
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1572
SDL_BlitInfo::colorkey
Uint32 colorkey
Definition: SDL_blit.h:69
SDL_BlitInfo::dst
Uint8 * dst
Definition: SDL_blit.h:61
Uint8
uint8_t Uint8
Definition: SDL_stdinc.h:157
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11093
SDL_BlitInfo::src
Uint8 * src
Definition: SDL_blit.h:57
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1572
SDL_BlitInfo::dst_w
int dst_w
Definition: SDL_blit.h:62

## BlitBto2()

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
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
dst
GLenum GLenum dst
Definition: SDL_opengl_glext.h:1737
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
src
GLenum src
Definition: SDL_opengl_glext.h:1737
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1572
SDL_BlitInfo::dst
Uint8 * dst
Definition: SDL_blit.h:61
Uint8
uint8_t Uint8
Definition: SDL_stdinc.h:157
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11093
SDL_BlitInfo::src
Uint8 * src
Definition: SDL_blit.h:57
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1572
Uint16
uint16_t Uint16
Definition: SDL_stdinc.h:169
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:290

## BlitBto2Key()

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
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
Uint32
uint32_t Uint32
Definition: SDL_stdinc.h:181
src
GLenum src
Definition: SDL_opengl_glext.h:1737
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1572
SDL_BlitInfo::colorkey
Uint32 colorkey
Definition: SDL_blit.h:69
SDL_BlitInfo::dst
Uint8 * dst
Definition: SDL_blit.h:61
Uint8
uint8_t Uint8
Definition: SDL_stdinc.h:157
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11093
SDL_BlitInfo::src
Uint8 * src
Definition: SDL_blit.h:57
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1572
Uint16
uint16_t Uint16
Definition: SDL_stdinc.h:169
SDL_BlitInfo::dst_w
int dst_w
Definition: SDL_blit.h:62

## BlitBto3()

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
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
dst
GLenum GLenum dst
Definition: SDL_opengl_glext.h:1737
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
src
GLenum src
Definition: SDL_opengl_glext.h:1737
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1572
SDL_BlitInfo::dst
Uint8 * dst
Definition: SDL_blit.h:61
Uint8
uint8_t Uint8
Definition: SDL_stdinc.h:157
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11093
SDL_BlitInfo::src
Uint8 * src
Definition: SDL_blit.h:57
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1572
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:290

## BlitBto3Key()

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
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
dst
GLenum GLenum dst
Definition: SDL_opengl_glext.h:1737
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
Uint32
uint32_t Uint32
Definition: SDL_stdinc.h:181
src
GLenum src
Definition: SDL_opengl_glext.h:1737
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1572
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:387
Uint8
uint8_t Uint8
Definition: SDL_stdinc.h:157
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11093
SDL_BlitInfo::src
Uint8 * src
Definition: SDL_blit.h:57
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1572
SDL_BlitInfo::dst_w
int dst_w
Definition: SDL_blit.h:62

## BlitBto4()

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
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
dst
GLenum GLenum dst
Definition: SDL_opengl_glext.h:1737
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
Uint32
uint32_t Uint32
Definition: SDL_stdinc.h:181
src
GLenum src
Definition: SDL_opengl_glext.h:1737
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1572
SDL_BlitInfo::dst
Uint8 * dst
Definition: SDL_blit.h:61
Uint8
uint8_t Uint8
Definition: SDL_stdinc.h:157
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11093
SDL_BlitInfo::src
Uint8 * src
Definition: SDL_blit.h:57
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1572
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:290

## BlitBto4Key()

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
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
Uint32
uint32_t Uint32
Definition: SDL_stdinc.h:181
src
GLenum src
Definition: SDL_opengl_glext.h:1737
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1572
SDL_BlitInfo::colorkey
Uint32 colorkey
Definition: SDL_blit.h:69
SDL_BlitInfo::dst
Uint8 * dst
Definition: SDL_blit.h:61
Uint8
uint8_t Uint8
Definition: SDL_stdinc.h:157
c
const GLubyte * c
Definition: SDL_opengl_glext.h:11093
SDL_BlitInfo::src
Uint8 * src
Definition: SDL_blit.h:57
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1572
SDL_BlitInfo::dst_w
int dst_w
Definition: SDL_blit.h:62

## BlitBtoNAlpha()

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;
}
}
SDL_Color
Definition: SDL_pixels.h:295
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
SDL_Color::g
Uint8 g
Definition: SDL_pixels.h:298
dst
GLenum GLenum dst
Definition: SDL_opengl_glext.h:1737
ALPHA_BLEND_RGBA
#define ALPHA_BLEND_RGBA(sR, sG, sB, sA, dR, dG, dB, dA)
Definition: SDL_blit.h:454
SDL_PixelFormat::BytesPerPixel
Uint8 BytesPerPixel
Definition: SDL_pixels.h:320
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:402
SDL_Color::b
Uint8 b
Definition: SDL_pixels.h:299
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
Uint32
uint32_t Uint32
Definition: SDL_stdinc.h:181
src
GLenum src
Definition: SDL_opengl_glext.h:1737
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
blit_table::dstbpp
int dstbpp
Definition: SDL_blit_N.c:2472
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1572
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:353
SDL_Color::r
Uint8 r
Definition: SDL_pixels.h:297
Uint8
uint8_t Uint8
Definition: SDL_stdinc.h:157
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:307
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1572
SDL_PixelFormat
Definition: SDL_pixels.h:315
SDL_PixelFormat::palette
SDL_Palette * palette
Definition: SDL_pixels.h:318
SDL_BlitInfo::dst_w
int dst_w
Definition: SDL_blit.h:62
SDL_BlitInfo::a
Uint8 a
Definition: SDL_blit.h:70

## BlitBtoNAlphaKey()

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;
}
}
SDL_Color
Definition: SDL_pixels.h:295
SDL_BlitInfo::src_skip
int src_skip
Definition: SDL_blit.h:60
SDL_Color::g
Uint8 g
Definition: SDL_pixels.h:298
dst
GLenum GLenum dst
Definition: SDL_opengl_glext.h:1737
ALPHA_BLEND_RGBA
#define ALPHA_BLEND_RGBA(sR, sG, sB, sA, dR, dG, dB, dA)
Definition: SDL_blit.h:454
SDL_PixelFormat::BytesPerPixel
Uint8 BytesPerPixel
Definition: SDL_pixels.h:320
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:402
SDL_Color::b
Uint8 b
Definition: SDL_pixels.h:299
SDL_BlitInfo::dst_skip
int dst_skip
Definition: SDL_blit.h:64
Uint32
uint32_t Uint32
Definition: SDL_stdinc.h:181
src
GLenum src
Definition: SDL_opengl_glext.h:1737
SDL_BlitInfo::dst_h
int dst_h
Definition: SDL_blit.h:62
blit_table::dstbpp
int dstbpp
Definition: SDL_blit_N.c:2472
width
GLint GLint GLsizei width
Definition: SDL_opengl.h:1572
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:353
SDL_Color::r
Uint8 r
Definition: SDL_pixels.h:297
Uint8
uint8_t Uint8
Definition: SDL_stdinc.h:157
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:307
height
GLint GLint GLsizei GLsizei height
Definition: SDL_opengl.h:1572
SDL_PixelFormat
Definition: SDL_pixels.h:315
SDL_PixelFormat::palette
SDL_Palette * palette
Definition: SDL_pixels.h:318
SDL_BlitInfo::dst_w
int dst_w
Definition: SDL_blit.h:62
SDL_BlitInfo::a
Uint8 a
Definition: SDL_blit.h:70

## SDL_CalculateBlit0()

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:320
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:319
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:88
NULL
#define NULL
Definition: begin_code.h:164
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:92

## Variable Documentation

## bitmap_blit

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:164
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().

## colorkey_blit

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:164
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().