SDL  2.0
SDL_blit.h File Reference
#include "../SDL_internal.h"
#include "SDL_cpuinfo.h"
#include "SDL_endian.h"
#include "SDL_surface.h"
+ Include dependency graph for SDL_blit.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  SDL_BlitInfo
 
struct  SDL_BlitFuncEntry
 
struct  SDL_BlitMap
 

Macros

#define SDL_COPY_MODULATE_COLOR   0x00000001
 
#define SDL_COPY_MODULATE_ALPHA   0x00000002
 
#define SDL_COPY_BLEND   0x00000010
 
#define SDL_COPY_ADD   0x00000020
 
#define SDL_COPY_MOD   0x00000040
 
#define SDL_COPY_COLORKEY   0x00000100
 
#define SDL_COPY_NEAREST   0x00000200
 
#define SDL_COPY_RLE_DESIRED   0x00001000
 
#define SDL_COPY_RLE_COLORKEY   0x00002000
 
#define SDL_COPY_RLE_ALPHAKEY   0x00004000
 
#define SDL_COPY_RLE_MASK   (SDL_COPY_RLE_DESIRED|SDL_COPY_RLE_COLORKEY|SDL_COPY_RLE_ALPHAKEY)
 
#define SDL_CPU_ANY   0x00000000
 
#define SDL_CPU_MMX   0x00000001
 
#define SDL_CPU_3DNOW   0x00000002
 
#define SDL_CPU_SSE   0x00000004
 
#define SDL_CPU_SSE2   0x00000008
 
#define SDL_CPU_ALTIVEC_PREFETCH   0x00000010
 
#define SDL_CPU_ALTIVEC_NOPREFETCH   0x00000020
 
#define DECLARE_ALIGNED(t, v, a)   t v
 
#define RGB_FROM_PIXEL(Pixel, fmt, r, g, b)
 
#define RGB_FROM_RGB565(Pixel, r, g, b)
 
#define RGB_FROM_RGB555(Pixel, r, g, b)
 
#define RGB_FROM_RGB888(Pixel, r, g, b)
 
#define RETRIEVE_RGB_PIXEL(buf, bpp, Pixel)
 
#define DISEMBLE_RGB(buf, bpp, fmt, Pixel, r, g, b)
 
#define PIXEL_FROM_RGB(Pixel, fmt, r, g, b)
 
#define RGB565_FROM_RGB(Pixel, r, g, b)
 
#define RGB555_FROM_RGB(Pixel, r, g, b)
 
#define RGB888_FROM_RGB(Pixel, r, g, b)
 
#define ARGB8888_FROM_RGBA(Pixel, r, g, b, a)
 
#define RGBA8888_FROM_RGBA(Pixel, r, g, b, a)
 
#define ABGR8888_FROM_RGBA(Pixel, r, g, b, a)
 
#define BGRA8888_FROM_RGBA(Pixel, r, g, b, a)
 
#define ARGB2101010_FROM_RGBA(Pixel, r, g, b, a)
 
#define ASSEMBLE_RGB(buf, bpp, fmt, r, g, b)
 
#define RGBA_FROM_PIXEL(Pixel, fmt, r, g, b, a)
 
#define RGBA_FROM_8888(Pixel, fmt, r, g, b, a)
 
#define RGBA_FROM_RGBA8888(Pixel, r, g, b, a)
 
#define RGBA_FROM_ARGB8888(Pixel, r, g, b, a)
 
#define RGBA_FROM_ABGR8888(Pixel, r, g, b, a)
 
#define RGBA_FROM_BGRA8888(Pixel, r, g, b, a)
 
#define RGBA_FROM_ARGB2101010(Pixel, r, g, b, a)
 
#define DISEMBLE_RGBA(buf, bpp, fmt, Pixel, r, g, b, a)
 
#define PIXEL_FROM_RGBA(Pixel, fmt, r, g, b, a)
 
#define ASSEMBLE_RGBA(buf, bpp, fmt, r, g, b, a)
 
#define ALPHA_BLEND_RGB(sR, sG, sB, A, dR, dG, dB)
 
#define ALPHA_BLEND_RGBA(sR, sG, sB, sA, dR, dG, dB, dA)
 
#define USE_DUFFS_LOOP
 
#define DUFFS_LOOP8(pixel_copy_increment, width)
 
#define DUFFS_LOOP4(pixel_copy_increment, width)
 
#define DUFFS_LOOP(pixel_copy_increment, width)   DUFFS_LOOP8(pixel_copy_increment, width)
 
#define DUFFS_LOOP_124(pixel_copy_increment1, pixel_copy_increment2, pixel_copy_increment4, width)
 

Typedefs

typedef void(* SDL_BlitFunc) (SDL_BlitInfo *info)
 

Functions

int SDL_CalculateBlit (SDL_Surface *surface)
 
SDL_BlitFunc SDL_CalculateBlit0 (SDL_Surface *surface)
 
SDL_BlitFunc SDL_CalculateBlit1 (SDL_Surface *surface)
 
SDL_BlitFunc SDL_CalculateBlitN (SDL_Surface *surface)
 
SDL_BlitFunc SDL_CalculateBlitA (SDL_Surface *surface)
 

Variables

Uint8SDL_expand_byte [9]
 

Macro Definition Documentation

#define ABGR8888_FROM_RGBA (   Pixel,
  r,
  g,
  b,
  a 
)
Value:
{ \
Pixel = (a<<24)|(b<<16)|(g<<8)|r; \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
GLboolean GLboolean GLboolean GLboolean a
GLboolean GLboolean GLboolean b

Definition at line 244 of file SDL_blit.h.

#define ALPHA_BLEND_RGB (   sR,
  sG,
  sB,
  A,
  dR,
  dG,
  dB 
)
Value:
do { \
dR = ((((unsigned)(sR-dR)*(unsigned)A)/255)+dR); \
dG = ((((unsigned)(sG-dG)*(unsigned)A)/255)+dG); \
dB = ((((unsigned)(sB-dB)*(unsigned)A)/255)+dB); \
} while(0)

Definition at line 444 of file SDL_blit.h.

Referenced by BlitNto1PixelAlpha(), BlitNto1SurfaceAlpha(), and BlitNto1SurfaceAlphaKey().

#define ALPHA_BLEND_RGBA (   sR,
  sG,
  sB,
  sA,
  dR,
  dG,
  dB,
  dA 
)
Value:
do { \
dR = ((((unsigned)(sR-dR)*(unsigned)sA)/255)+dR); \
dG = ((((unsigned)(sG-dG)*(unsigned)sA)/255)+dG); \
dB = ((((unsigned)(sB-dB)*(unsigned)sA)/255)+dB); \
dA = ((unsigned)sA+(unsigned)dA-((unsigned)sA*dA)/255); \
} while(0)

Definition at line 453 of file SDL_blit.h.

Referenced by Blit1toNAlpha(), Blit1toNAlphaKey(), BlitBtoNAlpha(), BlitBtoNAlphaKey(), BlitNtoNPixelAlpha(), BlitNtoNSurfaceAlpha(), and BlitNtoNSurfaceAlphaKey().

#define ARGB2101010_FROM_RGBA (   Pixel,
  r,
  g,
  b,
  a 
)
Value:
{ \
r = r ? ((r << 2) | 0x3) : 0; \
g = g ? ((g << 2) | 0x3) : 0; \
b = b ? ((b << 2) | 0x3) : 0; \
a = (a * 3) / 255; \
Pixel = (a<<30)|(r<<20)|(g<<10)|b; \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
GLboolean GLboolean GLboolean GLboolean a
GLboolean GLboolean GLboolean b

Definition at line 252 of file SDL_blit.h.

Referenced by BlitNto2101010().

#define ARGB8888_FROM_RGBA (   Pixel,
  r,
  g,
  b,
  a 
)
Value:
{ \
Pixel = (a<<24)|(r<<16)|(g<<8)|b; \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
GLboolean GLboolean GLboolean GLboolean a
GLboolean GLboolean GLboolean b

Definition at line 236 of file SDL_blit.h.

#define ASSEMBLE_RGB (   buf,
  bpp,
  fmt,
  r,
  g,
  b 
)

Definition at line 260 of file SDL_blit.h.

Referenced by SDL_Blit_Slow().

#define BGRA8888_FROM_RGBA (   Pixel,
  r,
  g,
  b,
  a 
)
Value:
{ \
Pixel = (b<<24)|(g<<16)|(r<<8)|a; \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
GLboolean GLboolean GLboolean GLboolean a
GLboolean GLboolean GLboolean b

Definition at line 248 of file SDL_blit.h.

#define DECLARE_ALIGNED (   t,
  v,
  a 
)    t v

Definition at line 117 of file SDL_blit.h.

#define DISEMBLE_RGB (   buf,
  bpp,
  fmt,
  Pixel,
  r,
  g,
  b 
)
#define DUFFS_LOOP4 (   pixel_copy_increment,
  width 
)
Value:
{ int n = (width+3)/4; \
switch (width & 3) { \
case 0: do { pixel_copy_increment; \
case 3: pixel_copy_increment; \
case 2: pixel_copy_increment; \
case 1: pixel_copy_increment; \
} while (--n > 0); \
} \
}
GLdouble n
GLint GLint GLsizei width
Definition: SDL_opengl.h:1565

Definition at line 487 of file SDL_blit.h.

Referenced by Blit1toNAlpha(), Blit555to555SurfaceAlpha(), Blit565to565SurfaceAlpha(), BlitARGBto555PixelAlpha(), BlitARGBto565PixelAlpha(), BlitNto1PixelAlpha(), BlitNto1SurfaceAlpha(), BlitNto1SurfaceAlphaKey(), BlitNtoNPixelAlpha(), BlitNtoNSurfaceAlpha(), BlitNtoNSurfaceAlphaKey(), BlitRGBtoRGBPixelAlpha(), BlitRGBtoRGBSurfaceAlpha(), and BlitRGBtoRGBSurfaceAlpha128().

#define DUFFS_LOOP8 (   pixel_copy_increment,
  width 
)
Value:
{ int n = (width+7)/8; \
switch (width & 7) { \
case 0: do { pixel_copy_increment; \
case 7: pixel_copy_increment; \
case 6: pixel_copy_increment; \
case 5: pixel_copy_increment; \
case 4: pixel_copy_increment; \
case 3: pixel_copy_increment; \
case 2: pixel_copy_increment; \
case 1: pixel_copy_increment; \
} while ( --n > 0 ); \
} \
}
GLdouble n
GLint GLint GLsizei width
Definition: SDL_opengl.h:1565

Definition at line 471 of file SDL_blit.h.

#define DUFFS_LOOP_124 (   pixel_copy_increment1,
  pixel_copy_increment2,
  pixel_copy_increment4,
  width 
)
Value:
{ int n = width; \
if (n & 1) { \
pixel_copy_increment1; n -= 1; \
} \
if (n & 2) { \
pixel_copy_increment2; n -= 2; \
} \
if (n & 4) { \
pixel_copy_increment4; n -= 4; \
} \
if (n) { \
n /= 8; \
do { \
pixel_copy_increment4; \
pixel_copy_increment4; \
} while (--n > 0); \
} \
}
GLdouble n
GLint GLint GLsizei width
Definition: SDL_opengl.h:1565

Definition at line 503 of file SDL_blit.h.

Referenced by Blit16to16SurfaceAlpha128().

#define PIXEL_FROM_RGB (   Pixel,
  fmt,
  r,
  g,
  b 
)
Value:
{ \
Pixel = ((r>>fmt->Rloss)<<fmt->Rshift)| \
((g>>fmt->Gloss)<<fmt->Gshift)| \
((b>>fmt->Bloss)<<fmt->Bshift)| \
fmt->Amask; \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
GLboolean GLboolean GLboolean b

Definition at line 217 of file SDL_blit.h.

Referenced by copy_opaque_16(), copy_transl_555(), and copy_transl_565().

#define PIXEL_FROM_RGBA (   Pixel,
  fmt,
  r,
  g,
  b,
  a 
)
Value:
{ \
Pixel = ((r>>fmt->Rloss)<<fmt->Rshift)| \
((g>>fmt->Gloss)<<fmt->Gshift)| \
((b>>fmt->Bloss)<<fmt->Bshift)| \
((a>>fmt->Aloss)<<fmt->Ashift); \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
GLboolean GLboolean GLboolean GLboolean a
GLboolean GLboolean GLboolean b

Definition at line 394 of file SDL_blit.h.

Referenced by uncopy_32(), uncopy_opaque_16(), and uncopy_transl_16().

#define RETRIEVE_RGB_PIXEL (   buf,
  bpp,
  Pixel 
)
Value:
do { \
switch (bpp) { \
case 1: \
Pixel = *((Uint8 *)(buf)); \
break; \
\
case 2: \
Pixel = *((Uint16 *)(buf)); \
break; \
\
case 3: { \
Uint8 *B = (Uint8 *)(buf); \
Pixel = B[0] + (B[1] << 8) + (B[2] << 16); \
} else { \
Pixel = (B[0] << 16) + (B[1] << 8) + B[2]; \
} \
} \
break; \
\
case 4: \
Pixel = *((Uint32 *)(buf)); \
break; \
\
default: \
Pixel = 0; /* stop gcc complaints */ \
break; \
} \
} while (0)
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:155
#define SDL_LIL_ENDIAN
Definition: SDL_endian.h:37
uint8_t Uint8
An unsigned 8-bit integer type.
Definition: SDL_stdinc.h:139
GLenum GLuint GLenum GLsizei const GLchar * buf
uint16_t Uint16
An unsigned 16-bit integer type.
Definition: SDL_stdinc.h:147
#define SDL_BYTEORDER

Definition at line 145 of file SDL_blit.h.

Referenced by BlitNtoNKey(), and BlitNtoNSurfaceAlphaKey().

#define RGB555_FROM_RGB (   Pixel,
  r,
  g,
  b 
)
Value:
{ \
Pixel = ((r>>3)<<10)|((g>>3)<<5)|(b>>3); \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
GLboolean GLboolean GLboolean b

Definition at line 228 of file SDL_blit.h.

#define RGB565_FROM_RGB (   Pixel,
  r,
  g,
  b 
)
Value:
{ \
Pixel = ((r>>3)<<11)|((g>>2)<<5)|(b>>3); \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
GLboolean GLboolean GLboolean b

Definition at line 224 of file SDL_blit.h.

#define RGB888_FROM_RGB (   Pixel,
  r,
  g,
  b 
)
Value:
{ \
Pixel = (r<<16)|(g<<8)|b; \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
GLboolean GLboolean GLboolean b

Definition at line 232 of file SDL_blit.h.

#define RGB_FROM_PIXEL (   Pixel,
  fmt,
  r,
  g,
  b 
)
Value:
{ \
r = SDL_expand_byte[fmt->Rloss][((Pixel&fmt->Rmask)>>fmt->Rshift)]; \
g = SDL_expand_byte[fmt->Gloss][((Pixel&fmt->Gmask)>>fmt->Gshift)]; \
b = SDL_expand_byte[fmt->Bloss][((Pixel&fmt->Bmask)>>fmt->Bshift)]; \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
Uint8 * SDL_expand_byte[9]
Definition: SDL_pixels.c:71
GLboolean GLboolean GLboolean b

Definition at line 121 of file SDL_blit.h.

Referenced by BlitNtoNKey(), BlitNtoNSurfaceAlphaKey(), copy_opaque_16(), uncopy_32(), uncopy_opaque_16(), and uncopy_transl_16().

#define RGB_FROM_RGB555 (   Pixel,
  r,
  g,
  b 
)
Value:
{ \
r = SDL_expand_byte[3][((Pixel&0x7C00)>>10)]; \
g = SDL_expand_byte[3][((Pixel&0x03E0)>>5)]; \
b = SDL_expand_byte[3][(Pixel&0x001F)]; \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
Uint8 * SDL_expand_byte[9]
Definition: SDL_pixels.c:71
GLboolean GLboolean GLboolean b

Definition at line 133 of file SDL_blit.h.

#define RGB_FROM_RGB565 (   Pixel,
  r,
  g,
  b 
)
Value:
{ \
r = SDL_expand_byte[3][((Pixel&0xF800)>>11)]; \
g = SDL_expand_byte[2][((Pixel&0x07E0)>>5)]; \
b = SDL_expand_byte[3][(Pixel&0x001F)]; \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
Uint8 * SDL_expand_byte[9]
Definition: SDL_pixels.c:71
GLboolean GLboolean GLboolean b

Definition at line 127 of file SDL_blit.h.

#define RGB_FROM_RGB888 (   Pixel,
  r,
  g,
  b 
)
Value:
{ \
r = ((Pixel&0xFF0000)>>16); \
g = ((Pixel&0xFF00)>>8); \
b = (Pixel&0xFF); \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
GLboolean GLboolean GLboolean b

Definition at line 139 of file SDL_blit.h.

#define RGBA8888_FROM_RGBA (   Pixel,
  r,
  g,
  b,
  a 
)
Value:
{ \
Pixel = (r<<24)|(g<<16)|(b<<8)|a; \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
GLboolean GLboolean GLboolean GLboolean a
GLboolean GLboolean GLboolean b

Definition at line 240 of file SDL_blit.h.

#define RGBA_FROM_8888 (   Pixel,
  fmt,
  r,
  g,
  b,
  a 
)
Value:
{ \
r = (Pixel&fmt->Rmask)>>fmt->Rshift; \
g = (Pixel&fmt->Gmask)>>fmt->Gshift; \
b = (Pixel&fmt->Bmask)>>fmt->Bshift; \
a = (Pixel&fmt->Amask)>>fmt->Ashift; \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
GLboolean GLboolean GLboolean GLboolean a
GLboolean GLboolean GLboolean b

Definition at line 310 of file SDL_blit.h.

Referenced by copy_32(), copy_transl_555(), and copy_transl_565().

#define RGBA_FROM_ABGR8888 (   Pixel,
  r,
  g,
  b,
  a 
)
Value:
{ \
r = (Pixel&0xFF); \
g = ((Pixel>>8)&0xFF); \
b = ((Pixel>>16)&0xFF); \
a = (Pixel>>24); \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
GLboolean GLboolean GLboolean GLboolean a
GLboolean GLboolean GLboolean b

Definition at line 331 of file SDL_blit.h.

#define RGBA_FROM_ARGB2101010 (   Pixel,
  r,
  g,
  b,
  a 
)
Value:
{ \
r = ((Pixel>>22)&0xFF); \
g = ((Pixel>>12)&0xFF); \
b = ((Pixel>>2)&0xFF); \
a = SDL_expand_byte[6][(Pixel>>30)]; \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
Uint8 * SDL_expand_byte[9]
Definition: SDL_pixels.c:71
GLboolean GLboolean GLboolean GLboolean a
GLboolean GLboolean GLboolean b

Definition at line 345 of file SDL_blit.h.

Referenced by Blit2101010toN().

#define RGBA_FROM_ARGB8888 (   Pixel,
  r,
  g,
  b,
  a 
)
Value:
{ \
r = ((Pixel>>16)&0xFF); \
g = ((Pixel>>8)&0xFF); \
b = (Pixel&0xFF); \
a = (Pixel>>24); \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
GLboolean GLboolean GLboolean GLboolean a
GLboolean GLboolean GLboolean b

Definition at line 324 of file SDL_blit.h.

#define RGBA_FROM_BGRA8888 (   Pixel,
  r,
  g,
  b,
  a 
)
Value:
{ \
r = ((Pixel>>8)&0xFF); \
g = ((Pixel>>16)&0xFF); \
b = (Pixel>>24); \
a = (Pixel&0xFF); \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
GLboolean GLboolean GLboolean GLboolean a
GLboolean GLboolean GLboolean b

Definition at line 338 of file SDL_blit.h.

#define RGBA_FROM_PIXEL (   Pixel,
  fmt,
  r,
  g,
  b,
  a 
)
Value:
{ \
r = SDL_expand_byte[fmt->Rloss][((Pixel&fmt->Rmask)>>fmt->Rshift)]; \
g = SDL_expand_byte[fmt->Gloss][((Pixel&fmt->Gmask)>>fmt->Gshift)]; \
b = SDL_expand_byte[fmt->Bloss][((Pixel&fmt->Bmask)>>fmt->Bshift)]; \
a = SDL_expand_byte[fmt->Aloss][((Pixel&fmt->Amask)>>fmt->Ashift)]; \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
Uint8 * SDL_expand_byte[9]
Definition: SDL_pixels.c:71
GLboolean GLboolean GLboolean GLboolean a
GLboolean GLboolean GLboolean b

Definition at line 303 of file SDL_blit.h.

#define RGBA_FROM_RGBA8888 (   Pixel,
  r,
  g,
  b,
  a 
)
Value:
{ \
r = (Pixel>>24); \
g = ((Pixel>>16)&0xFF); \
b = ((Pixel>>8)&0xFF); \
a = (Pixel&0xFF); \
}
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2072
GLboolean GLboolean g
GLboolean GLboolean GLboolean GLboolean a
GLboolean GLboolean GLboolean b

Definition at line 317 of file SDL_blit.h.

#define SDL_COPY_ADD   0x00000020

Definition at line 37 of file SDL_blit.h.

Referenced by SDL_Blit_ABGR8888_ARGB8888_Blend(), SDL_Blit_ABGR8888_ARGB8888_Blend_Scale(), SDL_Blit_ABGR8888_ARGB8888_Modulate_Blend(), SDL_Blit_ABGR8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_ABGR8888_BGR888_Blend(), SDL_Blit_ABGR8888_BGR888_Blend_Scale(), SDL_Blit_ABGR8888_BGR888_Modulate_Blend(), SDL_Blit_ABGR8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_ABGR8888_RGB888_Blend(), SDL_Blit_ABGR8888_RGB888_Blend_Scale(), SDL_Blit_ABGR8888_RGB888_Modulate_Blend(), SDL_Blit_ABGR8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_ARGB8888_ARGB8888_Blend(), SDL_Blit_ARGB8888_ARGB8888_Blend_Scale(), SDL_Blit_ARGB8888_ARGB8888_Modulate_Blend(), SDL_Blit_ARGB8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_ARGB8888_BGR888_Blend(), SDL_Blit_ARGB8888_BGR888_Blend_Scale(), SDL_Blit_ARGB8888_BGR888_Modulate_Blend(), SDL_Blit_ARGB8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_ARGB8888_RGB888_Blend(), SDL_Blit_ARGB8888_RGB888_Blend_Scale(), SDL_Blit_ARGB8888_RGB888_Modulate_Blend(), SDL_Blit_ARGB8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_BGR888_ARGB8888_Blend(), SDL_Blit_BGR888_ARGB8888_Blend_Scale(), SDL_Blit_BGR888_ARGB8888_Modulate_Blend(), SDL_Blit_BGR888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_BGR888_BGR888_Blend(), SDL_Blit_BGR888_BGR888_Blend_Scale(), SDL_Blit_BGR888_BGR888_Modulate_Blend(), SDL_Blit_BGR888_BGR888_Modulate_Blend_Scale(), SDL_Blit_BGR888_RGB888_Blend(), SDL_Blit_BGR888_RGB888_Blend_Scale(), SDL_Blit_BGR888_RGB888_Modulate_Blend(), SDL_Blit_BGR888_RGB888_Modulate_Blend_Scale(), SDL_Blit_BGRA8888_ARGB8888_Blend(), SDL_Blit_BGRA8888_ARGB8888_Blend_Scale(), SDL_Blit_BGRA8888_ARGB8888_Modulate_Blend(), SDL_Blit_BGRA8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_BGRA8888_BGR888_Blend(), SDL_Blit_BGRA8888_BGR888_Blend_Scale(), SDL_Blit_BGRA8888_BGR888_Modulate_Blend(), SDL_Blit_BGRA8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_BGRA8888_RGB888_Blend(), SDL_Blit_BGRA8888_RGB888_Blend_Scale(), SDL_Blit_BGRA8888_RGB888_Modulate_Blend(), SDL_Blit_BGRA8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_RGB888_ARGB8888_Blend(), SDL_Blit_RGB888_ARGB8888_Blend_Scale(), SDL_Blit_RGB888_ARGB8888_Modulate_Blend(), SDL_Blit_RGB888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_RGB888_BGR888_Blend(), SDL_Blit_RGB888_BGR888_Blend_Scale(), SDL_Blit_RGB888_BGR888_Modulate_Blend(), SDL_Blit_RGB888_BGR888_Modulate_Blend_Scale(), SDL_Blit_RGB888_RGB888_Blend(), SDL_Blit_RGB888_RGB888_Blend_Scale(), SDL_Blit_RGB888_RGB888_Modulate_Blend(), SDL_Blit_RGB888_RGB888_Modulate_Blend_Scale(), SDL_Blit_RGBA8888_ARGB8888_Blend(), SDL_Blit_RGBA8888_ARGB8888_Blend_Scale(), SDL_Blit_RGBA8888_ARGB8888_Modulate_Blend(), SDL_Blit_RGBA8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_RGBA8888_BGR888_Blend(), SDL_Blit_RGBA8888_BGR888_Blend_Scale(), SDL_Blit_RGBA8888_BGR888_Modulate_Blend(), SDL_Blit_RGBA8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_RGBA8888_RGB888_Blend(), SDL_Blit_RGBA8888_RGB888_Blend_Scale(), SDL_Blit_RGBA8888_RGB888_Modulate_Blend(), SDL_Blit_RGBA8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_Slow(), SDL_ChooseBlitFunc(), SDL_GetSurfaceBlendMode(), SDL_LowerBlitScaled(), SDL_RLESurface(), and SDL_SetSurfaceBlendMode().

#define SDL_COPY_BLEND   0x00000010

Definition at line 36 of file SDL_blit.h.

Referenced by SDL_Blit_ABGR8888_ARGB8888_Blend(), SDL_Blit_ABGR8888_ARGB8888_Blend_Scale(), SDL_Blit_ABGR8888_ARGB8888_Modulate_Blend(), SDL_Blit_ABGR8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_ABGR8888_BGR888_Blend(), SDL_Blit_ABGR8888_BGR888_Blend_Scale(), SDL_Blit_ABGR8888_BGR888_Modulate_Blend(), SDL_Blit_ABGR8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_ABGR8888_RGB888_Blend(), SDL_Blit_ABGR8888_RGB888_Blend_Scale(), SDL_Blit_ABGR8888_RGB888_Modulate_Blend(), SDL_Blit_ABGR8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_ARGB8888_ARGB8888_Blend(), SDL_Blit_ARGB8888_ARGB8888_Blend_Scale(), SDL_Blit_ARGB8888_ARGB8888_Modulate_Blend(), SDL_Blit_ARGB8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_ARGB8888_BGR888_Blend(), SDL_Blit_ARGB8888_BGR888_Blend_Scale(), SDL_Blit_ARGB8888_BGR888_Modulate_Blend(), SDL_Blit_ARGB8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_ARGB8888_RGB888_Blend(), SDL_Blit_ARGB8888_RGB888_Blend_Scale(), SDL_Blit_ARGB8888_RGB888_Modulate_Blend(), SDL_Blit_ARGB8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_BGR888_ARGB8888_Blend(), SDL_Blit_BGR888_ARGB8888_Blend_Scale(), SDL_Blit_BGR888_ARGB8888_Modulate_Blend(), SDL_Blit_BGR888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_BGR888_BGR888_Blend(), SDL_Blit_BGR888_BGR888_Blend_Scale(), SDL_Blit_BGR888_BGR888_Modulate_Blend(), SDL_Blit_BGR888_BGR888_Modulate_Blend_Scale(), SDL_Blit_BGR888_RGB888_Blend(), SDL_Blit_BGR888_RGB888_Blend_Scale(), SDL_Blit_BGR888_RGB888_Modulate_Blend(), SDL_Blit_BGR888_RGB888_Modulate_Blend_Scale(), SDL_Blit_BGRA8888_ARGB8888_Blend(), SDL_Blit_BGRA8888_ARGB8888_Blend_Scale(), SDL_Blit_BGRA8888_ARGB8888_Modulate_Blend(), SDL_Blit_BGRA8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_BGRA8888_BGR888_Blend(), SDL_Blit_BGRA8888_BGR888_Blend_Scale(), SDL_Blit_BGRA8888_BGR888_Modulate_Blend(), SDL_Blit_BGRA8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_BGRA8888_RGB888_Blend(), SDL_Blit_BGRA8888_RGB888_Blend_Scale(), SDL_Blit_BGRA8888_RGB888_Modulate_Blend(), SDL_Blit_BGRA8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_RGB888_ARGB8888_Blend(), SDL_Blit_RGB888_ARGB8888_Blend_Scale(), SDL_Blit_RGB888_ARGB8888_Modulate_Blend(), SDL_Blit_RGB888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_RGB888_BGR888_Blend(), SDL_Blit_RGB888_BGR888_Blend_Scale(), SDL_Blit_RGB888_BGR888_Modulate_Blend(), SDL_Blit_RGB888_BGR888_Modulate_Blend_Scale(), SDL_Blit_RGB888_RGB888_Blend(), SDL_Blit_RGB888_RGB888_Blend_Scale(), SDL_Blit_RGB888_RGB888_Modulate_Blend(), SDL_Blit_RGB888_RGB888_Modulate_Blend_Scale(), SDL_Blit_RGBA8888_ARGB8888_Blend(), SDL_Blit_RGBA8888_ARGB8888_Blend_Scale(), SDL_Blit_RGBA8888_ARGB8888_Modulate_Blend(), SDL_Blit_RGBA8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_RGBA8888_BGR888_Blend(), SDL_Blit_RGBA8888_BGR888_Blend_Scale(), SDL_Blit_RGBA8888_BGR888_Modulate_Blend(), SDL_Blit_RGBA8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_RGBA8888_RGB888_Blend(), SDL_Blit_RGBA8888_RGB888_Blend_Scale(), SDL_Blit_RGBA8888_RGB888_Modulate_Blend(), SDL_Blit_RGBA8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_Slow(), SDL_CalculateBlit(), SDL_CalculateBlit0(), SDL_CalculateBlit1(), SDL_CalculateBlitA(), SDL_ChooseBlitFunc(), SDL_ConvertSurface(), SDL_GetSurfaceBlendMode(), SDL_LowerBlitScaled(), SDL_RLESurface(), and SDL_SetSurfaceBlendMode().

#define SDL_COPY_MOD   0x00000040

Definition at line 38 of file SDL_blit.h.

Referenced by SDL_Blit_ABGR8888_ARGB8888_Blend(), SDL_Blit_ABGR8888_ARGB8888_Blend_Scale(), SDL_Blit_ABGR8888_ARGB8888_Modulate_Blend(), SDL_Blit_ABGR8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_ABGR8888_BGR888_Blend(), SDL_Blit_ABGR8888_BGR888_Blend_Scale(), SDL_Blit_ABGR8888_BGR888_Modulate_Blend(), SDL_Blit_ABGR8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_ABGR8888_RGB888_Blend(), SDL_Blit_ABGR8888_RGB888_Blend_Scale(), SDL_Blit_ABGR8888_RGB888_Modulate_Blend(), SDL_Blit_ABGR8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_ARGB8888_ARGB8888_Blend(), SDL_Blit_ARGB8888_ARGB8888_Blend_Scale(), SDL_Blit_ARGB8888_ARGB8888_Modulate_Blend(), SDL_Blit_ARGB8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_ARGB8888_BGR888_Blend(), SDL_Blit_ARGB8888_BGR888_Blend_Scale(), SDL_Blit_ARGB8888_BGR888_Modulate_Blend(), SDL_Blit_ARGB8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_ARGB8888_RGB888_Blend(), SDL_Blit_ARGB8888_RGB888_Blend_Scale(), SDL_Blit_ARGB8888_RGB888_Modulate_Blend(), SDL_Blit_ARGB8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_BGR888_ARGB8888_Blend(), SDL_Blit_BGR888_ARGB8888_Blend_Scale(), SDL_Blit_BGR888_ARGB8888_Modulate_Blend(), SDL_Blit_BGR888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_BGR888_BGR888_Blend(), SDL_Blit_BGR888_BGR888_Blend_Scale(), SDL_Blit_BGR888_BGR888_Modulate_Blend(), SDL_Blit_BGR888_BGR888_Modulate_Blend_Scale(), SDL_Blit_BGR888_RGB888_Blend(), SDL_Blit_BGR888_RGB888_Blend_Scale(), SDL_Blit_BGR888_RGB888_Modulate_Blend(), SDL_Blit_BGR888_RGB888_Modulate_Blend_Scale(), SDL_Blit_BGRA8888_ARGB8888_Blend(), SDL_Blit_BGRA8888_ARGB8888_Blend_Scale(), SDL_Blit_BGRA8888_ARGB8888_Modulate_Blend(), SDL_Blit_BGRA8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_BGRA8888_BGR888_Blend(), SDL_Blit_BGRA8888_BGR888_Blend_Scale(), SDL_Blit_BGRA8888_BGR888_Modulate_Blend(), SDL_Blit_BGRA8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_BGRA8888_RGB888_Blend(), SDL_Blit_BGRA8888_RGB888_Blend_Scale(), SDL_Blit_BGRA8888_RGB888_Modulate_Blend(), SDL_Blit_BGRA8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_RGB888_ARGB8888_Blend(), SDL_Blit_RGB888_ARGB8888_Blend_Scale(), SDL_Blit_RGB888_ARGB8888_Modulate_Blend(), SDL_Blit_RGB888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_RGB888_BGR888_Blend(), SDL_Blit_RGB888_BGR888_Blend_Scale(), SDL_Blit_RGB888_BGR888_Modulate_Blend(), SDL_Blit_RGB888_BGR888_Modulate_Blend_Scale(), SDL_Blit_RGB888_RGB888_Blend(), SDL_Blit_RGB888_RGB888_Blend_Scale(), SDL_Blit_RGB888_RGB888_Modulate_Blend(), SDL_Blit_RGB888_RGB888_Modulate_Blend_Scale(), SDL_Blit_RGBA8888_ARGB8888_Blend(), SDL_Blit_RGBA8888_ARGB8888_Blend_Scale(), SDL_Blit_RGBA8888_ARGB8888_Modulate_Blend(), SDL_Blit_RGBA8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_RGBA8888_BGR888_Blend(), SDL_Blit_RGBA8888_BGR888_Blend_Scale(), SDL_Blit_RGBA8888_BGR888_Modulate_Blend(), SDL_Blit_RGBA8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_RGBA8888_RGB888_Blend(), SDL_Blit_RGBA8888_RGB888_Blend_Scale(), SDL_Blit_RGBA8888_RGB888_Modulate_Blend(), SDL_Blit_RGBA8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_Slow(), SDL_ChooseBlitFunc(), SDL_GetSurfaceBlendMode(), SDL_LowerBlitScaled(), SDL_RLESurface(), and SDL_SetSurfaceBlendMode().

#define SDL_COPY_MODULATE_ALPHA   0x00000002

Definition at line 35 of file SDL_blit.h.

Referenced by SDL_Blit_ABGR8888_ARGB8888_Modulate(), SDL_Blit_ABGR8888_ARGB8888_Modulate_Blend(), SDL_Blit_ABGR8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_ABGR8888_ARGB8888_Modulate_Scale(), SDL_Blit_ABGR8888_BGR888_Modulate_Blend(), SDL_Blit_ABGR8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_ABGR8888_RGB888_Modulate_Blend(), SDL_Blit_ABGR8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_ARGB8888_ARGB8888_Modulate(), SDL_Blit_ARGB8888_ARGB8888_Modulate_Blend(), SDL_Blit_ARGB8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_ARGB8888_ARGB8888_Modulate_Scale(), SDL_Blit_ARGB8888_BGR888_Modulate_Blend(), SDL_Blit_ARGB8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_ARGB8888_RGB888_Modulate_Blend(), SDL_Blit_ARGB8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_BGR888_ARGB8888_Modulate(), SDL_Blit_BGR888_ARGB8888_Modulate_Blend(), SDL_Blit_BGR888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_BGR888_ARGB8888_Modulate_Scale(), SDL_Blit_BGR888_BGR888_Modulate_Blend(), SDL_Blit_BGR888_BGR888_Modulate_Blend_Scale(), SDL_Blit_BGR888_RGB888_Modulate_Blend(), SDL_Blit_BGR888_RGB888_Modulate_Blend_Scale(), SDL_Blit_BGRA8888_ARGB8888_Modulate(), SDL_Blit_BGRA8888_ARGB8888_Modulate_Blend(), SDL_Blit_BGRA8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_BGRA8888_ARGB8888_Modulate_Scale(), SDL_Blit_BGRA8888_BGR888_Modulate_Blend(), SDL_Blit_BGRA8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_BGRA8888_RGB888_Modulate_Blend(), SDL_Blit_BGRA8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_RGB888_ARGB8888_Modulate(), SDL_Blit_RGB888_ARGB8888_Modulate_Blend(), SDL_Blit_RGB888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_RGB888_ARGB8888_Modulate_Scale(), SDL_Blit_RGB888_BGR888_Modulate_Blend(), SDL_Blit_RGB888_BGR888_Modulate_Blend_Scale(), SDL_Blit_RGB888_RGB888_Modulate_Blend(), SDL_Blit_RGB888_RGB888_Modulate_Blend_Scale(), SDL_Blit_RGBA8888_ARGB8888_Modulate(), SDL_Blit_RGBA8888_ARGB8888_Modulate_Blend(), SDL_Blit_RGBA8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_RGBA8888_ARGB8888_Modulate_Scale(), SDL_Blit_RGBA8888_BGR888_Modulate_Blend(), SDL_Blit_RGBA8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_RGBA8888_RGB888_Modulate_Blend(), SDL_Blit_RGBA8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_Slow(), SDL_CalculateBlit0(), SDL_CalculateBlit1(), SDL_CalculateBlitA(), SDL_ChooseBlitFunc(), SDL_ConvertSurface(), SDL_LowerBlitScaled(), SDL_RLESurface(), and SDL_SetSurfaceAlphaMod().

#define SDL_COPY_MODULATE_COLOR   0x00000001

Definition at line 34 of file SDL_blit.h.

Referenced by SDL_Blit_ABGR8888_ARGB8888_Modulate(), SDL_Blit_ABGR8888_ARGB8888_Modulate_Blend(), SDL_Blit_ABGR8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_ABGR8888_ARGB8888_Modulate_Scale(), SDL_Blit_ABGR8888_BGR888_Modulate(), SDL_Blit_ABGR8888_BGR888_Modulate_Blend(), SDL_Blit_ABGR8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_ABGR8888_BGR888_Modulate_Scale(), SDL_Blit_ABGR8888_RGB888_Modulate(), SDL_Blit_ABGR8888_RGB888_Modulate_Blend(), SDL_Blit_ABGR8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_ABGR8888_RGB888_Modulate_Scale(), SDL_Blit_ARGB8888_ARGB8888_Modulate(), SDL_Blit_ARGB8888_ARGB8888_Modulate_Blend(), SDL_Blit_ARGB8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_ARGB8888_ARGB8888_Modulate_Scale(), SDL_Blit_ARGB8888_BGR888_Modulate(), SDL_Blit_ARGB8888_BGR888_Modulate_Blend(), SDL_Blit_ARGB8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_ARGB8888_BGR888_Modulate_Scale(), SDL_Blit_ARGB8888_RGB888_Modulate(), SDL_Blit_ARGB8888_RGB888_Modulate_Blend(), SDL_Blit_ARGB8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_ARGB8888_RGB888_Modulate_Scale(), SDL_Blit_BGR888_ARGB8888_Modulate(), SDL_Blit_BGR888_ARGB8888_Modulate_Blend(), SDL_Blit_BGR888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_BGR888_ARGB8888_Modulate_Scale(), SDL_Blit_BGR888_BGR888_Modulate(), SDL_Blit_BGR888_BGR888_Modulate_Blend(), SDL_Blit_BGR888_BGR888_Modulate_Blend_Scale(), SDL_Blit_BGR888_BGR888_Modulate_Scale(), SDL_Blit_BGR888_RGB888_Modulate(), SDL_Blit_BGR888_RGB888_Modulate_Blend(), SDL_Blit_BGR888_RGB888_Modulate_Blend_Scale(), SDL_Blit_BGR888_RGB888_Modulate_Scale(), SDL_Blit_BGRA8888_ARGB8888_Modulate(), SDL_Blit_BGRA8888_ARGB8888_Modulate_Blend(), SDL_Blit_BGRA8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_BGRA8888_ARGB8888_Modulate_Scale(), SDL_Blit_BGRA8888_BGR888_Modulate(), SDL_Blit_BGRA8888_BGR888_Modulate_Blend(), SDL_Blit_BGRA8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_BGRA8888_BGR888_Modulate_Scale(), SDL_Blit_BGRA8888_RGB888_Modulate(), SDL_Blit_BGRA8888_RGB888_Modulate_Blend(), SDL_Blit_BGRA8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_BGRA8888_RGB888_Modulate_Scale(), SDL_Blit_RGB888_ARGB8888_Modulate(), SDL_Blit_RGB888_ARGB8888_Modulate_Blend(), SDL_Blit_RGB888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_RGB888_ARGB8888_Modulate_Scale(), SDL_Blit_RGB888_BGR888_Modulate(), SDL_Blit_RGB888_BGR888_Modulate_Blend(), SDL_Blit_RGB888_BGR888_Modulate_Blend_Scale(), SDL_Blit_RGB888_BGR888_Modulate_Scale(), SDL_Blit_RGB888_RGB888_Modulate(), SDL_Blit_RGB888_RGB888_Modulate_Blend(), SDL_Blit_RGB888_RGB888_Modulate_Blend_Scale(), SDL_Blit_RGB888_RGB888_Modulate_Scale(), SDL_Blit_RGBA8888_ARGB8888_Modulate(), SDL_Blit_RGBA8888_ARGB8888_Modulate_Blend(), SDL_Blit_RGBA8888_ARGB8888_Modulate_Blend_Scale(), SDL_Blit_RGBA8888_ARGB8888_Modulate_Scale(), SDL_Blit_RGBA8888_BGR888_Modulate(), SDL_Blit_RGBA8888_BGR888_Modulate_Blend(), SDL_Blit_RGBA8888_BGR888_Modulate_Blend_Scale(), SDL_Blit_RGBA8888_BGR888_Modulate_Scale(), SDL_Blit_RGBA8888_RGB888_Modulate(), SDL_Blit_RGBA8888_RGB888_Modulate_Blend(), SDL_Blit_RGBA8888_RGB888_Modulate_Blend_Scale(), SDL_Blit_RGBA8888_RGB888_Modulate_Scale(), SDL_Blit_Slow(), SDL_ChooseBlitFunc(), SDL_LowerBlitScaled(), SDL_RLESurface(), and SDL_SetSurfaceColorMod().

#define SDL_COPY_NEAREST   0x00000200

Definition at line 40 of file SDL_blit.h.

Referenced by SDL_ChooseBlitFunc(), SDL_LowerBlitScaled(), SDL_RLESurface(), and SDL_UpperBlit().

#define SDL_COPY_RLE_ALPHAKEY   0x00004000

Definition at line 43 of file SDL_blit.h.

Referenced by SDL_ConvertSurface(), SDL_RLESurface(), and SDL_UnRLESurface().

#define SDL_COPY_RLE_COLORKEY   0x00002000

Definition at line 42 of file SDL_blit.h.

Referenced by SDL_ConvertSurface(), SDL_RLESurface(), and SDL_UnRLESurface().

#define SDL_COPY_RLE_DESIRED   0x00001000

Definition at line 41 of file SDL_blit.h.

Referenced by SDL_CalculateBlit(), SDL_ConvertSurface(), and SDL_SetSurfaceRLE().

#define SDL_CPU_3DNOW   0x00000002

Definition at line 49 of file SDL_blit.h.

Referenced by SDL_ChooseBlitFunc().

#define SDL_CPU_ALTIVEC_NOPREFETCH   0x00000020

Definition at line 53 of file SDL_blit.h.

Referenced by SDL_ChooseBlitFunc().

#define SDL_CPU_ALTIVEC_PREFETCH   0x00000010

Definition at line 52 of file SDL_blit.h.

Referenced by SDL_ChooseBlitFunc().

#define SDL_CPU_ANY   0x00000000

Definition at line 47 of file SDL_blit.h.

Referenced by SDL_ChooseBlitFunc().

#define SDL_CPU_MMX   0x00000001

Definition at line 48 of file SDL_blit.h.

Referenced by SDL_ChooseBlitFunc().

#define SDL_CPU_SSE   0x00000004

Definition at line 50 of file SDL_blit.h.

Referenced by SDL_ChooseBlitFunc().

#define SDL_CPU_SSE2   0x00000008

Definition at line 51 of file SDL_blit.h.

Referenced by SDL_ChooseBlitFunc().

#define USE_DUFFS_LOOP

Definition at line 466 of file SDL_blit.h.

Referenced by Blit1to2().

Typedef Documentation

typedef void( * SDL_BlitFunc) (SDL_BlitInfo *info)

Definition at line 73 of file SDL_blit.h.

Function Documentation

int SDL_CalculateBlit ( SDL_Surface surface)

Definition at line 216 of file SDL_blit.c.

References SDL_PixelFormat::BitsPerPixel, SDL_BlitMap::blit, SDL_PixelFormat::BytesPerPixel, SDL_BlitMap::data, SDL_BlitMap::dst, SDL_BlitInfo::dst_fmt, SDL_BlitInfo::dst_pitch, SDL_BlitInfo::flags, SDL_Surface::flags, SDL_Surface::format, SDL_PixelFormat::format, SDL_BlitMap::identity, SDL_BlitMap::info, SDL_Surface::map, map, NULL, SDL_Surface::pitch, SDL_Blit_Slow(), SDL_BlitCopy(), SDL_CalculateBlit0(), SDL_CalculateBlit1(), SDL_CalculateBlitA(), SDL_CalculateBlitN(), SDL_ChooseBlitFunc(), SDL_COPY_BLEND, SDL_COPY_RLE_DESIRED, SDL_GeneratedBlitFuncTable, SDL_InvalidateMap(), SDL_ISPIXELFORMAT_FOURCC, SDL_ISPIXELFORMAT_INDEXED, SDL_RLEACCEL, SDL_RLESurface(), SDL_SetError, SDL_SoftBlit(), SDL_UnRLESurface(), SDL_BlitInfo::src_fmt, and SDL_BlitInfo::src_pitch.

Referenced by SDL_MapSurface().

217 {
218  SDL_BlitFunc blit = NULL;
219  SDL_BlitMap *map = surface->map;
220  SDL_Surface *dst = map->dst;
221 
222  /* Clean everything out to start */
223  if ((surface->flags & SDL_RLEACCEL) == SDL_RLEACCEL) {
224  SDL_UnRLESurface(surface, 1);
225  }
226  map->blit = SDL_SoftBlit;
227  map->info.src_fmt = surface->format;
228  map->info.src_pitch = surface->pitch;
229  map->info.dst_fmt = dst->format;
230  map->info.dst_pitch = dst->pitch;
231 
232  /* See if we can do RLE acceleration */
233  if (map->info.flags & SDL_COPY_RLE_DESIRED) {
234  if (SDL_RLESurface(surface) == 0) {
235  return 0;
236  }
237  }
238 
239  /* Choose a standard blit function */
240  if (map->identity && !(map->info.flags & ~SDL_COPY_RLE_DESIRED)) {
241  blit = SDL_BlitCopy;
242  } else if (surface->format->BitsPerPixel < 8 &&
244  blit = SDL_CalculateBlit0(surface);
245  } else if (surface->format->BytesPerPixel == 1 &&
247  blit = SDL_CalculateBlit1(surface);
248  } else if (map->info.flags & SDL_COPY_BLEND) {
249  blit = SDL_CalculateBlitA(surface);
250  } else {
251  blit = SDL_CalculateBlitN(surface);
252  }
253  if (blit == NULL) {
254  Uint32 src_format = surface->format->format;
255  Uint32 dst_format = dst->format->format;
256 
257  blit =
258  SDL_ChooseBlitFunc(src_format, dst_format, map->info.flags,
260  }
261 #ifndef TEST_SLOW_BLIT
262  if (blit == NULL)
263 #endif
264  {
265  Uint32 src_format = surface->format->format;
266  Uint32 dst_format = dst->format->format;
267 
268  if (!SDL_ISPIXELFORMAT_INDEXED(src_format) &&
269  !SDL_ISPIXELFORMAT_FOURCC(src_format) &&
270  !SDL_ISPIXELFORMAT_INDEXED(dst_format) &&
271  !SDL_ISPIXELFORMAT_FOURCC(dst_format)) {
272  blit = SDL_Blit_Slow;
273  }
274  }
275  map->data = blit;
276 
277  /* Make sure we have a blit function */
278  if (blit == NULL) {
279  SDL_InvalidateMap(map);
280  return SDL_SetError("Blit combination not supported");
281  }
282 
283  return 0;
284 }
GLenum GLenum dst
SDL_BlitFunc SDL_CalculateBlitN(SDL_Surface *surface)
Definition: SDL_blit_N.c:2527
SDL_blit blit
Definition: SDL_blit.h:89
uint32_t Uint32
An unsigned 32-bit integer type.
Definition: SDL_stdinc.h:155
#define SDL_ISPIXELFORMAT_INDEXED(format)
Definition: SDL_pixels.h:133
Uint8 BytesPerPixel
Definition: SDL_pixels.h:304
const GLubyte GLuint GLuint GLuint GLuint sw_64 GLboolean GLboolean GLboolean GLboolean sw_64 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
SDL_PixelFormat * src_fmt
Definition: SDL_blit.h:65
void SDL_Blit_Slow(SDL_BlitInfo *info)
Definition: SDL_blit_slow.c:31
A collection of pixels used in software blitting.
Definition: SDL_surface.h:69
void SDL_UnRLESurface(SDL_Surface *surface, int recode)
int dst_pitch
Definition: SDL_blit.h:63
Uint32 flags
Definition: SDL_surface.h:71
#define SDL_COPY_RLE_DESIRED
Definition: SDL_blit.h:41
void SDL_InvalidateMap(SDL_BlitMap *map)
Definition: SDL_pixels.c:974
struct SDL_BlitMap * map
Definition: SDL_surface.h:88
void SDL_BlitCopy(SDL_BlitInfo *info)
Definition: SDL_blit_copy.c:91
static SDL_BlitFunc SDL_ChooseBlitFunc(Uint32 src_format, Uint32 dst_format, int flags, SDL_BlitFuncEntry *entries)
Definition: SDL_blit.c:128
Uint8 BitsPerPixel
Definition: SDL_pixels.h:303
SDL_PixelFormat * dst_fmt
Definition: SDL_blit.h:66
SDL_BlitFuncEntry SDL_GeneratedBlitFuncTable[]
int src_pitch
Definition: SDL_blit.h:59
int SDL_RLESurface(SDL_Surface *surface)
SDL_Surface * dst
Definition: SDL_blit.h:87
#define NULL
Definition: begin_code.h:143
SDL_PixelFormat * format
Definition: SDL_surface.h:72
SDL_BlitFunc SDL_CalculateBlit0(SDL_Surface *surface)
Definition: SDL_blit_0.c:454
#define SDL_SetError
SDL_BlitFunc SDL_CalculateBlit1(SDL_Surface *surface)
Definition: SDL_blit_1.c:520
void(* SDL_BlitFunc)(SDL_BlitInfo *info)
Definition: SDL_blit.h:73
static int SDL_SoftBlit(SDL_Surface *src, SDL_Rect *srcrect, SDL_Surface *dst, SDL_Rect *dstrect)
Definition: SDL_blit.c:34
void * data
Definition: SDL_blit.h:90
#define SDL_ISPIXELFORMAT_FOURCC(format)
Definition: SDL_pixels.h:166
SDL_BlitFunc SDL_CalculateBlitA(SDL_Surface *surface)
Definition: SDL_blit_A.c:1269
int identity
Definition: SDL_blit.h:88
#define SDL_COPY_BLEND
Definition: SDL_blit.h:36
SDL_BlitInfo info
Definition: SDL_blit.h:91
#define SDL_RLEACCEL
Definition: SDL_surface.h:54
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().

455 {
456  int which;
457 
458  if (surface->format->BitsPerPixel != 1) {
459  /* We don't support sub 8-bit packed pixel modes */
460  return (SDL_BlitFunc) NULL;
461  }
462  if (surface->map->dst->format->BitsPerPixel < 8) {
463  which = 0;
464  } else {
465  which = surface->map->dst->format->BytesPerPixel;
466  }
467  switch (surface->map->info.flags & ~SDL_COPY_RLE_MASK) {
468  case 0:
469  return bitmap_blit[which];
470 
471  case SDL_COPY_COLORKEY:
472  return colorkey_blit[which];
473 
475  return which >= 2 ? BlitBtoNAlpha : (SDL_BlitFunc) NULL;
476 
478  return which >= 2 ? BlitBtoNAlphaKey : (SDL_BlitFunc) NULL;
479  }
480  return (SDL_BlitFunc) NULL;
481 }
#define SDL_COPY_COLORKEY
Definition: SDL_blit.h:39
Uint8 BytesPerPixel
Definition: SDL_pixels.h:304
#define SDL_COPY_RLE_MASK
Definition: SDL_blit.h:44
struct SDL_BlitMap * map
Definition: SDL_surface.h:88
Uint8 BitsPerPixel
Definition: SDL_pixels.h:303
static void BlitBtoNAlpha(SDL_BlitInfo *info)
Definition: SDL_blit_0.c:354
static void BlitBtoNAlphaKey(SDL_BlitInfo *info)
Definition: SDL_blit_0.c:399
SDL_Surface * dst
Definition: SDL_blit.h:87
#define NULL
Definition: begin_code.h:143
SDL_PixelFormat * format
Definition: SDL_surface.h:72
#define SDL_COPY_MODULATE_ALPHA
Definition: SDL_blit.h:35
static const SDL_BlitFunc bitmap_blit[]
Definition: SDL_blit_0.c:445
void(* SDL_BlitFunc)(SDL_BlitInfo *info)
Definition: SDL_blit.h:73
static const SDL_BlitFunc colorkey_blit[]
Definition: SDL_blit_0.c:449
#define SDL_COPY_BLEND
Definition: SDL_blit.h:36
SDL_BlitInfo info
Definition: SDL_blit.h:91
SDL_BlitFunc SDL_CalculateBlit1 ( SDL_Surface surface)

Definition at line 520 of file SDL_blit_1.c.

References SDL_PixelFormat::BitsPerPixel, Blit1toNAlpha(), Blit1toNAlphaKey(), SDL_PixelFormat::BytesPerPixel, SDL_BlitMap::dst, SDL_BlitInfo::flags, SDL_Surface::format, SDL_BlitMap::info, SDL_Surface::map, NULL, one_blit, one_blitkey, SDL_COPY_BLEND, SDL_COPY_COLORKEY, SDL_COPY_MODULATE_ALPHA, and SDL_COPY_RLE_MASK.

Referenced by SDL_CalculateBlit().

521 {
522  int which;
523  SDL_PixelFormat *dstfmt;
524 
525  dstfmt = surface->map->dst->format;
526  if (dstfmt->BitsPerPixel < 8) {
527  which = 0;
528  } else {
529  which = dstfmt->BytesPerPixel;
530  }
531  switch (surface->map->info.flags & ~SDL_COPY_RLE_MASK) {
532  case 0:
533  return one_blit[which];
534 
535  case SDL_COPY_COLORKEY:
536  return one_blitkey[which];
537 
539  /* Supporting 8bpp->8bpp alpha is doable but requires lots of
540  tables which consume space and takes time to precompute,
541  so is better left to the user */
542  return which >= 2 ? Blit1toNAlpha : (SDL_BlitFunc) NULL;
543 
545  return which >= 2 ? Blit1toNAlphaKey : (SDL_BlitFunc) NULL;
546  }
547  return (SDL_BlitFunc) NULL;
548 }
#define SDL_COPY_COLORKEY
Definition: SDL_blit.h:39
Uint8 BytesPerPixel
Definition: SDL_pixels.h:304
static const SDL_BlitFunc one_blitkey[]
Definition: SDL_blit_1.c:515
#define SDL_COPY_RLE_MASK
Definition: SDL_blit.h:44
struct SDL_BlitMap * map
Definition: SDL_surface.h:88
Uint8 BitsPerPixel
Definition: SDL_pixels.h:303
static const SDL_BlitFunc one_blit[]
Definition: SDL_blit_1.c:511
static void Blit1toNAlphaKey(SDL_BlitInfo *info)
Definition: SDL_blit_1.c:469
SDL_Surface * dst
Definition: SDL_blit.h:87
#define NULL
Definition: begin_code.h:143
SDL_PixelFormat * format
Definition: SDL_surface.h:72
#define SDL_COPY_MODULATE_ALPHA
Definition: SDL_blit.h:35
static void Blit1toNAlpha(SDL_BlitInfo *info)
Definition: SDL_blit_1.c:429
void(* SDL_BlitFunc)(SDL_BlitInfo *info)
Definition: SDL_blit.h:73
#define SDL_COPY_BLEND
Definition: SDL_blit.h:36
SDL_BlitInfo info
Definition: SDL_blit.h:91
SDL_BlitFunc SDL_CalculateBlitA ( SDL_Surface surface)

Definition at line 1269 of file SDL_blit_A.c.

References SDL_PixelFormat::Aloss, SDL_PixelFormat::Amask, SDL_PixelFormat::Ashift, Blit555to555SurfaceAlpha(), Blit565to565SurfaceAlpha(), BlitARGBto555PixelAlpha(), BlitARGBto565PixelAlpha(), BlitNto1PixelAlpha(), BlitNto1SurfaceAlpha(), BlitNto1SurfaceAlphaKey(), BlitNtoNPixelAlpha(), BlitNtoNSurfaceAlpha(), BlitNtoNSurfaceAlphaKey(), BlitRGBtoRGBPixelAlpha(), BlitRGBtoRGBSurfaceAlpha(), SDL_PixelFormat::Bmask, SDL_PixelFormat::Bshift, SDL_PixelFormat::BytesPerPixel, SDL_BlitMap::dst, SDL_BlitInfo::flags, SDL_Surface::format, SDL_PixelFormat::Gmask, SDL_PixelFormat::Gshift, SDL_BlitMap::identity, SDL_BlitMap::info, SDL_Surface::map, NULL, SDL_PixelFormat::Rmask, SDL_PixelFormat::Rshift, SDL_COPY_BLEND, SDL_COPY_COLORKEY, SDL_COPY_MODULATE_ALPHA, SDL_COPY_RLE_MASK, SDL_Has3DNow, and SDL_HasMMX.

Referenced by SDL_CalculateBlit().

1270 {
1271  SDL_PixelFormat *sf = surface->format;
1272  SDL_PixelFormat *df = surface->map->dst->format;
1273 
1274  switch (surface->map->info.flags & ~SDL_COPY_RLE_MASK) {
1275  case SDL_COPY_BLEND:
1276  /* Per-pixel alpha blits */
1277  switch (df->BytesPerPixel) {
1278  case 1:
1279  return BlitNto1PixelAlpha;
1280 
1281  case 2:
1282  if (sf->BytesPerPixel == 4 && sf->Amask == 0xff000000
1283  && sf->Gmask == 0xff00
1284  && ((sf->Rmask == 0xff && df->Rmask == 0x1f)
1285  || (sf->Bmask == 0xff && df->Bmask == 0x1f))) {
1286  if (df->Gmask == 0x7e0)
1287  return BlitARGBto565PixelAlpha;
1288  else if (df->Gmask == 0x3e0)
1289  return BlitARGBto555PixelAlpha;
1290  }
1291  return BlitNtoNPixelAlpha;
1292 
1293  case 4:
1294  if (sf->Rmask == df->Rmask
1295  && sf->Gmask == df->Gmask
1296  && sf->Bmask == df->Bmask && sf->BytesPerPixel == 4) {
1297 #if defined(__MMX__) || defined(__3dNOW__)
1298  if (sf->Rshift % 8 == 0
1299  && sf->Gshift % 8 == 0
1300  && sf->Bshift % 8 == 0
1301  && sf->Ashift % 8 == 0 && sf->Aloss == 0) {
1302 #ifdef __3dNOW__
1303  if (SDL_Has3DNow())
1304  return BlitRGBtoRGBPixelAlphaMMX3DNOW;
1305 #endif
1306 #ifdef __MMX__
1307  if (SDL_HasMMX())
1308  return BlitRGBtoRGBPixelAlphaMMX;
1309 #endif
1310  }
1311 #endif /* __MMX__ || __3dNOW__ */
1312  if (sf->Amask == 0xff000000) {
1313  return BlitRGBtoRGBPixelAlpha;
1314  }
1315  }
1316  return BlitNtoNPixelAlpha;
1317 
1318  case 3:
1319  default:
1320  return BlitNtoNPixelAlpha;
1321  }
1322  break;
1323 
1325  if (sf->Amask == 0) {
1326  /* Per-surface alpha blits */
1327  switch (df->BytesPerPixel) {
1328  case 1:
1329  return BlitNto1SurfaceAlpha;
1330 
1331  case 2:
1332  if (surface->map->identity) {
1333  if (df->Gmask == 0x7e0) {
1334 #ifdef __MMX__
1335  if (SDL_HasMMX())
1336  return Blit565to565SurfaceAlphaMMX;
1337  else
1338 #endif
1339  return Blit565to565SurfaceAlpha;
1340  } else if (df->Gmask == 0x3e0) {
1341 #ifdef __MMX__
1342  if (SDL_HasMMX())
1343  return Blit555to555SurfaceAlphaMMX;
1344  else
1345 #endif
1346  return Blit555to555SurfaceAlpha;
1347  }
1348  }
1349  return BlitNtoNSurfaceAlpha;
1350 
1351  case 4:
1352  if (sf->Rmask == df->Rmask
1353  && sf->Gmask == df->Gmask
1354  && sf->Bmask == df->Bmask && sf->BytesPerPixel == 4) {
1355 #ifdef __MMX__
1356  if (sf->Rshift % 8 == 0
1357  && sf->Gshift % 8 == 0
1358  && sf->Bshift % 8 == 0 && SDL_HasMMX())
1359  return BlitRGBtoRGBSurfaceAlphaMMX;
1360 #endif
1361  if ((sf->Rmask | sf->Gmask | sf->Bmask) == 0xffffff) {
1362  return BlitRGBtoRGBSurfaceAlpha;
1363  }
1364  }
1365  return BlitNtoNSurfaceAlpha;
1366 
1367  case 3:
1368  default:
1369  return BlitNtoNSurfaceAlpha;
1370  }
1371  }
1372  break;
1373 
1375  if (sf->Amask == 0) {
1376  if (df->BytesPerPixel == 1) {
1377  return BlitNto1SurfaceAlphaKey;
1378  } else {
1379  return BlitNtoNSurfaceAlphaKey;
1380  }
1381  }
1382  break;
1383  }
1384 
1385  return NULL;
1386 }
static void BlitARGBto565PixelAlpha(SDL_BlitInfo *info)
Definition: SDL_blit_A.c:1054
static void BlitNto1SurfaceAlpha(SDL_BlitInfo *info)
Definition: SDL_blit_A.c:30
#define SDL_Has3DNow
static void BlitNtoNSurfaceAlphaKey(SDL_BlitInfo *info)
Definition: SDL_blit_A.c:1186
#define SDL_COPY_COLORKEY
Definition: SDL_blit.h:39
Uint8 BytesPerPixel
Definition: SDL_pixels.h:304
static void BlitNto1SurfaceAlphaKey(SDL_BlitInfo *info)
Definition: SDL_blit_A.c:123
#define SDL_COPY_RLE_MASK
Definition: SDL_blit.h:44
static void BlitARGBto555PixelAlpha(SDL_BlitInfo *info)
Definition: SDL_blit_A.c:1100
static void BlitNtoNPixelAlpha(SDL_BlitInfo *info)
Definition: SDL_blit_A.c:1227
struct SDL_BlitMap * map
Definition: SDL_surface.h:88
static void Blit555to555SurfaceAlpha(SDL_BlitInfo *info)
Definition: SDL_blit_A.c:1015
static void Blit565to565SurfaceAlpha(SDL_BlitInfo *info)
Definition: SDL_blit_A.c:976
static void BlitRGBtoRGBPixelAlpha(SDL_BlitInfo *info)
Definition: SDL_blit_A.c:461
static void BlitRGBtoRGBSurfaceAlpha(SDL_BlitInfo *info)
Definition: SDL_blit_A.c:419
#define SDL_HasMMX
SDL_Surface * dst
Definition: SDL_blit.h:87
#define NULL
Definition: begin_code.h:143
SDL_PixelFormat * format
Definition: SDL_surface.h:72
#define SDL_COPY_MODULATE_ALPHA
Definition: SDL_blit.h:35
static void BlitNto1PixelAlpha(SDL_BlitInfo *info)
Definition: SDL_blit_A.c:77
static void BlitNtoNSurfaceAlpha(SDL_BlitInfo *info)
Definition: SDL_blit_A.c:1147
int identity
Definition: SDL_blit.h:88
#define SDL_COPY_BLEND
Definition: SDL_blit.h:36
SDL_BlitInfo info
Definition: SDL_blit.h:91
SDL_BlitFunc SDL_CalculateBlitN ( SDL_Surface surface)

Definition at line 2527 of file SDL_blit_N.c.

References SDL_PixelFormat::Amask, SDL_PixelFormat::BitsPerPixel, Blit2101010toN(), Blit2to2Key(), Blit4to4CopyAlpha(), Blit4to4MaskAlpha(), blit_table::blit_features, Blit_RGB101010_index8(), Blit_RGB888_index8(), blit_table::blitfunc, BlitNto1(), BlitNto1Key(), BlitNto2101010(), BlitNtoN(), BlitNtoNCopyAlpha(), BlitNtoNKey(), BlitNtoNKeyCopyAlpha(), SDL_PixelFormat::Bmask, SDL_PixelFormat::BytesPerPixel, blit_table::COPY_ALPHA, SDL_BlitMap::dst, blit_table::dstB, blit_table::dstbpp, blit_table::dstG, blit_table::dstR, SDL_BlitInfo::flags, SDL_Surface::format, SDL_PixelFormat::format, GetBlitFeatures, SDL_PixelFormat::Gmask, SDL_BlitMap::identity, SDL_BlitMap::info, SDL_Surface::map, MASKOK, blit_table::NO_ALPHA, NULL, SDL_PixelFormat::Rmask, SDL_COPY_COLORKEY, SDL_COPY_RLE_MASK, SDL_HasAltiVec, SDL_PIXELFORMAT_ARGB2101010, blit_table::SET_ALPHA, blit_table::srcB, blit_table::srcG, and blit_table::srcR.

Referenced by SDL_CalculateBlit().

2528 {
2529  SDL_PixelFormat *srcfmt;
2530  SDL_PixelFormat *dstfmt;
2531  const struct blit_table *table;
2532  int which;
2533  SDL_BlitFunc blitfun;
2534 
2535  /* Set up data for choosing the blit */
2536  srcfmt = surface->format;
2537  dstfmt = surface->map->dst->format;
2538 
2539  /* We don't support destinations less than 8-bits */
2540  if (dstfmt->BitsPerPixel < 8) {
2541  return (NULL);
2542  }
2543 
2544  switch (surface->map->info.flags & ~SDL_COPY_RLE_MASK) {
2545  case 0:
2546  blitfun = NULL;
2547  if (dstfmt->BitsPerPixel == 8) {
2548  if ((srcfmt->BytesPerPixel == 4) &&
2549  (srcfmt->Rmask == 0x00FF0000) &&
2550  (srcfmt->Gmask == 0x0000FF00) &&
2551  (srcfmt->Bmask == 0x000000FF)) {
2552  blitfun = Blit_RGB888_index8;
2553  } else if ((srcfmt->BytesPerPixel == 4) &&
2554  (srcfmt->Rmask == 0x3FF00000) &&
2555  (srcfmt->Gmask == 0x000FFC00) &&
2556  (srcfmt->Bmask == 0x000003FF)) {
2557  blitfun = Blit_RGB101010_index8;
2558  } else {
2559  blitfun = BlitNto1;
2560  }
2561  } else {
2562  /* Now the meat, choose the blitter we want */
2563  int a_need = NO_ALPHA;
2564  if (dstfmt->Amask)
2565  a_need = srcfmt->Amask ? COPY_ALPHA : SET_ALPHA;
2566  table = normal_blit[srcfmt->BytesPerPixel - 1];
2567  for (which = 0; table[which].dstbpp; ++which) {
2568  if (MASKOK(srcfmt->Rmask, table[which].srcR) &&
2569  MASKOK(srcfmt->Gmask, table[which].srcG) &&
2570  MASKOK(srcfmt->Bmask, table[which].srcB) &&
2571  MASKOK(dstfmt->Rmask, table[which].dstR) &&
2572  MASKOK(dstfmt->Gmask, table[which].dstG) &&
2573  MASKOK(dstfmt->Bmask, table[which].dstB) &&
2574  dstfmt->BytesPerPixel == table[which].dstbpp &&
2575  (a_need & table[which].sw_64) == a_need &&
2576  ((table[which].blit_features & GetBlitFeatures()) ==
2577  table[which].blit_features))
2578  break;
2579  }
2580  blitfun = table[which].blitfunc;
2581 
2582  if (blitfun == BlitNtoN) { /* default C fallback catch-all. Slow! */
2583  if (srcfmt->format == SDL_PIXELFORMAT_ARGB2101010) {
2584  blitfun = Blit2101010toN;
2585  } else if (dstfmt->format == SDL_PIXELFORMAT_ARGB2101010) {
2586  blitfun = BlitNto2101010;
2587  } else if (srcfmt->BytesPerPixel == 4 &&
2588  dstfmt->BytesPerPixel == 4 &&
2589  srcfmt->Rmask == dstfmt->Rmask &&
2590  srcfmt->Gmask == dstfmt->Gmask &&
2591  srcfmt->Bmask == dstfmt->Bmask) {
2592  if (a_need == COPY_ALPHA) {
2593  if (srcfmt->Amask == dstfmt->Amask) {
2594  /* Fastpath C fallback: 32bit RGBA<->RGBA blit with matching RGBA */
2595  blitfun = Blit4to4CopyAlpha;
2596  } else {
2597  blitfun = BlitNtoNCopyAlpha;
2598  }
2599  } else {
2600  /* Fastpath C fallback: 32bit RGB<->RGBA blit with matching RGB */
2601  blitfun = Blit4to4MaskAlpha;
2602  }
2603  } else if (a_need == COPY_ALPHA) {
2604  blitfun = BlitNtoNCopyAlpha;
2605  }
2606  }
2607  }
2608  return (blitfun);
2609 
2610  case SDL_COPY_COLORKEY:
2611  /* colorkey blit: Here we don't have too many options, mostly
2612  because RLE is the preferred fast way to deal with this.
2613  If a particular case turns out to be useful we'll add it. */
2614 
2615  if (srcfmt->BytesPerPixel == 2 && surface->map->identity)
2616  return Blit2to2Key;
2617  else if (dstfmt->BytesPerPixel == 1)
2618  return BlitNto1Key;
2619  else {
2620 #if SDL_ALTIVEC_BLITTERS
2621  if ((srcfmt->BytesPerPixel == 4) && (dstfmt->BytesPerPixel == 4)
2622  && SDL_HasAltiVec()) {
2623  return Blit32to32KeyAltivec;
2624  } else
2625 #endif
2626  if (srcfmt->Amask && dstfmt->Amask) {
2627  return BlitNtoNKeyCopyAlpha;
2628  } else {
2629  return BlitNtoNKey;
2630  }
2631  }
2632  }
2633 
2634  return NULL;
2635 }
SDL_BlitFunc blitfunc
Definition: SDL_blit_N.c:2464
#define SDL_HasAltiVec
Uint32 srcG
Definition: SDL_blit_N.c:2460
Uint32 srcB
Definition: SDL_blit_N.c:2460
#define MASKOK(x, y)
Definition: SDL_blit_N.c:2524
GLenum GLsizei GLenum GLenum const void * table
#define SDL_COPY_COLORKEY
Definition: SDL_blit.h:39
Uint32 blit_features
Definition: SDL_blit_N.c:2463
Uint32 dstB
Definition: SDL_blit_N.c:2462
Uint32 dstR
Definition: SDL_blit_N.c:2462
Uint8 BytesPerPixel
Definition: SDL_pixels.h:304
static void BlitNto2101010(SDL_BlitInfo *info)
Definition: SDL_blit_N.c:2427
#define SDL_COPY_RLE_MASK
Definition: SDL_blit.h:44
Uint32 srcR
Definition: SDL_blit_N.c:2460
static void BlitNtoNCopyAlpha(SDL_BlitInfo *info)
Definition: SDL_blit_N.c:2180
struct SDL_BlitMap * map
Definition: SDL_surface.h:88
Uint32 dstG
Definition: SDL_blit_N.c:2462
static void Blit2to2Key(SDL_BlitInfo *info)
Definition: SDL_blit_N.c:2275
Uint8 BitsPerPixel
Definition: SDL_pixels.h:303
static void Blit4to4MaskAlpha(SDL_BlitInfo *info)
Definition: SDL_blit_N.c:2069
static void BlitNto1Key(SDL_BlitInfo *info)
Definition: SDL_blit_N.c:2209
static void Blit_RGB888_index8(SDL_BlitInfo *info)
Definition: SDL_blit_N.c:893
SDL_Surface * dst
Definition: SDL_blit.h:87
#define NULL
Definition: begin_code.h:143
SDL_PixelFormat * format
Definition: SDL_surface.h:72
static const struct blit_table *const normal_blit[]
Definition: SDL_blit_N.c:2519
static void BlitNtoNKey(SDL_BlitInfo *info)
Definition: SDL_blit_N.c:2309
static void Blit2101010toN(SDL_BlitInfo *info)
Definition: SDL_blit_N.c:2395
static void BlitNtoNKeyCopyAlpha(SDL_BlitInfo *info)
Definition: SDL_blit_N.c:2352
#define GetBlitFeatures()
Definition: SDL_blit_N.c:874
void(* SDL_BlitFunc)(SDL_BlitInfo *info)
Definition: SDL_blit.h:73
static void Blit_RGB101010_index8(SDL_BlitInfo *info)
Definition: SDL_blit_N.c:1003
static void Blit4to4CopyAlpha(SDL_BlitInfo *info)
Definition: SDL_blit_N.c:2119
static void BlitNtoN(SDL_BlitInfo *info)
Definition: SDL_blit_N.c:2145
int identity
Definition: SDL_blit.h:88
SDL_BlitInfo info
Definition: SDL_blit.h:91
static void BlitNto1(SDL_BlitInfo *info)
Definition: SDL_blit_N.c:1974

Variable Documentation

Uint8* SDL_expand_byte[9]

Definition at line 71 of file SDL_pixels.c.

Referenced by SDL_GetRGB(), and SDL_GetRGBA().