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; \
}

Definition at line 245 of file SDL_blit.h.

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

Definition at line 445 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 = (Uint8)((((int)(sR-dR)*(int)sA)/255)+dR); \
dG = (Uint8)((((int)(sG-dG)*(int)sA)/255)+dG); \
dB = (Uint8)((((int)(sB-dB)*(int)sA)/255)+dB); \
dA = (Uint8)((int)sA+dA-((int)sA*dA)/255); \
} while(0)

Definition at line 454 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; \
}

Definition at line 253 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; \
}

Definition at line 237 of file SDL_blit.h.

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

Definition at line 261 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; \
}

Definition at line 249 of file SDL_blit.h.

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

Definition at line 118 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; /* fallthrough */ \
case 3: pixel_copy_increment; /* fallthrough */ \
case 2: pixel_copy_increment; /* fallthrough */ \
case 1: pixel_copy_increment; /* fallthrough */ \
} while (--n > 0); \
} \
}

Definition at line 488 of file SDL_blit.h.

Referenced by Blit1toNAlpha(), Blit555to555SurfaceAlpha(), Blit565to565SurfaceAlpha(), BlitARGBto555PixelAlpha(), BlitARGBto565PixelAlpha(), BlitNto1PixelAlpha(), BlitNto1SurfaceAlpha(), 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; /* fallthrough */ \
case 7: pixel_copy_increment; /* fallthrough */ \
case 6: pixel_copy_increment; /* fallthrough */ \
case 5: pixel_copy_increment; /* fallthrough */ \
case 4: pixel_copy_increment; /* fallthrough */ \
case 3: pixel_copy_increment; /* fallthrough */ \
case 2: pixel_copy_increment; /* fallthrough */ \
case 1: pixel_copy_increment; /* fallthrough */ \
} while ( --n > 0 ); \
} \
}

Definition at line 472 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); \
} \
}

Definition at line 504 of file SDL_blit.h.

#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; \
}

Definition at line 218 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); \
}

Definition at line 395 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)

Definition at line 146 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); \
}

Definition at line 229 of file SDL_blit.h.

#define RGB565_FROM_RGB (   Pixel,
  r,
  g,
  b 
)
Value:
{ \
Pixel = ((r>>3)<<11)|((g>>2)<<5)|(b>>3); \
}

Definition at line 225 of file SDL_blit.h.

#define RGB888_FROM_RGB (   Pixel,
  r,
  g,
  b 
)
Value:
{ \
Pixel = (r<<16)|(g<<8)|b; \
}

Definition at line 233 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)]; \
}

Definition at line 122 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)]; \
}

Definition at line 134 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)]; \
}

Definition at line 128 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); \
}

Definition at line 140 of file SDL_blit.h.

#define RGBA8888_FROM_RGBA (   Pixel,
  r,
  g,
  b,
  a 
)
Value:
{ \
Pixel = (r<<24)|(g<<16)|(b<<8)|a; \
}

Definition at line 241 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; \
}

Definition at line 311 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); \
}

Definition at line 332 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)]; \
}

Definition at line 346 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); \
}

Definition at line 325 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); \
}

Definition at line 339 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)]; \
}

Definition at line 304 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); \
}

Definition at line 318 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 467 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_PixelFormat::Rloss, 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().

{
SDL_BlitMap *map = surface->map;
SDL_Surface *dst = map->dst;
/* We don't currently support blitting to < 8 bpp surfaces */
if (dst->format->BitsPerPixel < 8) {
return SDL_SetError("Blit combination not supported");
}
/* Clean everything out to start */
if ((surface->flags & SDL_RLEACCEL) == SDL_RLEACCEL) {
SDL_UnRLESurface(surface, 1);
}
map->info.src_fmt = surface->format;
map->info.src_pitch = surface->pitch;
map->info.dst_fmt = dst->format;
map->info.dst_pitch = dst->pitch;
/* See if we can do RLE acceleration */
if (SDL_RLESurface(surface) == 0) {
return 0;
}
}
/* Choose a standard blit function */
if (map->identity && !(map->info.flags & ~SDL_COPY_RLE_DESIRED)) {
blit = SDL_BlitCopy;
} else if (surface->format->Rloss > 8 || dst->format->Rloss > 8) {
/* Greater than 8 bits per channel not supported yet */
return SDL_SetError("Blit combination not supported");
} else if (surface->format->BitsPerPixel < 8 &&
blit = SDL_CalculateBlit0(surface);
} else if (surface->format->BytesPerPixel == 1 &&
blit = SDL_CalculateBlit1(surface);
} else if (map->info.flags & SDL_COPY_BLEND) {
blit = SDL_CalculateBlitA(surface);
} else {
blit = SDL_CalculateBlitN(surface);
}
if (blit == NULL) {
Uint32 src_format = surface->format->format;
Uint32 dst_format = dst->format->format;
blit =
SDL_ChooseBlitFunc(src_format, dst_format, map->info.flags,
}
#ifndef TEST_SLOW_BLIT
if (blit == NULL)
#endif
{
Uint32 src_format = surface->format->format;
Uint32 dst_format = dst->format->format;
if (!SDL_ISPIXELFORMAT_INDEXED(src_format) &&
!SDL_ISPIXELFORMAT_FOURCC(src_format) &&
!SDL_ISPIXELFORMAT_INDEXED(dst_format) &&
!SDL_ISPIXELFORMAT_FOURCC(dst_format)) {
blit = SDL_Blit_Slow;
}
}
map->data = blit;
/* Make sure we have a blit function */
if (blit == NULL) {
return SDL_SetError("Blit combination not supported");
}
return 0;
}
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, 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];
return colorkey_blit[which];
return which >= 2 ? BlitBtoNAlpha : (SDL_BlitFunc) NULL;
return which >= 2 ? BlitBtoNAlphaKey : (SDL_BlitFunc) NULL;
}
return (SDL_BlitFunc) NULL;
}
SDL_BlitFunc SDL_CalculateBlit1 ( SDL_Surface surface)

Definition at line 522 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, SDL_COPY_BLEND, SDL_COPY_COLORKEY, SDL_COPY_MODULATE_ALPHA, and SDL_COPY_RLE_MASK.

Referenced by SDL_CalculateBlit().

{
int which;
SDL_PixelFormat *dstfmt;
dstfmt = surface->map->dst->format;
if (dstfmt->BitsPerPixel < 8) {
which = 0;
} else {
which = dstfmt->BytesPerPixel;
}
switch (surface->map->info.flags & ~SDL_COPY_RLE_MASK) {
case 0:
return one_blit[which];
return one_blitkey[which];
/* Supporting 8bpp->8bpp alpha is doable but requires lots of
tables which consume space and takes time to precompute,
so is better left to the user */
return which >= 2 ? Blit1toNAlpha : (SDL_BlitFunc) NULL;
return which >= 2 ? Blit1toNAlphaKey : (SDL_BlitFunc) NULL;
}
return (SDL_BlitFunc) NULL;
}
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().

{
SDL_PixelFormat *sf = surface->format;
SDL_PixelFormat *df = surface->map->dst->format;
switch (surface->map->info.flags & ~SDL_COPY_RLE_MASK) {
/* Per-pixel alpha blits */
switch (df->BytesPerPixel) {
case 1:
case 2:
if (sf->BytesPerPixel == 4 && sf->Amask == 0xff000000
&& sf->Gmask == 0xff00
&& ((sf->Rmask == 0xff && df->Rmask == 0x1f)
|| (sf->Bmask == 0xff && df->Bmask == 0x1f))) {
if (df->Gmask == 0x7e0)
else if (df->Gmask == 0x3e0)
}
case 4:
if (sf->Rmask == df->Rmask
&& sf->Gmask == df->Gmask
&& sf->Bmask == df->Bmask && sf->BytesPerPixel == 4) {
#if defined(__MMX__) || defined(__3dNOW__)
if (sf->Rshift % 8 == 0
&& sf->Gshift % 8 == 0
&& sf->Bshift % 8 == 0
&& sf->Ashift % 8 == 0 && sf->Aloss == 0) {
#ifdef __3dNOW__
if (SDL_Has3DNow())
return BlitRGBtoRGBPixelAlphaMMX3DNOW;
#endif
#ifdef __MMX__
if (SDL_HasMMX())
return BlitRGBtoRGBPixelAlphaMMX;
#endif
}
#endif /* __MMX__ || __3dNOW__ */
if (sf->Amask == 0xff000000) {
}
}
case 3:
default:
break;
}
if (sf->Amask == 0) {
/* Per-surface alpha blits */
switch (df->BytesPerPixel) {
case 1:
case 2:
if (surface->map->identity) {
if (df->Gmask == 0x7e0) {
#ifdef __MMX__
if (SDL_HasMMX())
return Blit565to565SurfaceAlphaMMX;
else
#endif
} else if (df->Gmask == 0x3e0) {
#ifdef __MMX__
if (SDL_HasMMX())
return Blit555to555SurfaceAlphaMMX;
else
#endif
}
}
case 4:
if (sf->Rmask == df->Rmask
&& sf->Gmask == df->Gmask
&& sf->Bmask == df->Bmask && sf->BytesPerPixel == 4) {
#ifdef __MMX__
if (sf->Rshift % 8 == 0
&& sf->Gshift % 8 == 0
&& sf->Bshift % 8 == 0 && SDL_HasMMX())
return BlitRGBtoRGBSurfaceAlphaMMX;
#endif
if ((sf->Rmask | sf->Gmask | sf->Bmask) == 0xffffff) {
}
}
case 3:
default:
}
}
break;
if (sf->Amask == 0) {
if (df->BytesPerPixel == 1) {
} else {
}
}
break;
}
return NULL;
}
SDL_BlitFunc SDL_CalculateBlitN ( SDL_Surface surface)

Definition at line 2590 of file SDL_blit_N.c.

References blit_table::alpha, 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, 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, NO_ALPHA, NULL, SDL_PixelFormat::Rmask, SDL_COPY_COLORKEY, SDL_COPY_RLE_MASK, SDL_HasAltiVec, SDL_PIXELFORMAT_ARGB2101010, SET_ALPHA, blit_table::srcB, blit_table::srcG, and blit_table::srcR.

Referenced by SDL_CalculateBlit().

{
SDL_PixelFormat *srcfmt;
SDL_PixelFormat *dstfmt;
const struct blit_table *table;
int which;
SDL_BlitFunc blitfun;
/* Set up data for choosing the blit */
srcfmt = surface->format;
dstfmt = surface->map->dst->format;
/* We don't support destinations less than 8-bits */
if (dstfmt->BitsPerPixel < 8) {
return (NULL);
}
switch (surface->map->info.flags & ~SDL_COPY_RLE_MASK) {
case 0:
blitfun = NULL;
if (dstfmt->BitsPerPixel == 8) {
if ((srcfmt->BytesPerPixel == 4) &&
(srcfmt->Rmask == 0x00FF0000) &&
(srcfmt->Gmask == 0x0000FF00) &&
(srcfmt->Bmask == 0x000000FF)) {
blitfun = Blit_RGB888_index8;
} else if ((srcfmt->BytesPerPixel == 4) &&
(srcfmt->Rmask == 0x3FF00000) &&
(srcfmt->Gmask == 0x000FFC00) &&
(srcfmt->Bmask == 0x000003FF)) {
} else {
blitfun = BlitNto1;
}
} else {
/* Now the meat, choose the blitter we want */
int a_need = NO_ALPHA;
if (dstfmt->Amask)
a_need = srcfmt->Amask ? COPY_ALPHA : SET_ALPHA;
table = normal_blit[srcfmt->BytesPerPixel - 1];
for (which = 0; table[which].dstbpp; ++which) {
if (MASKOK(srcfmt->Rmask, table[which].srcR) &&
MASKOK(srcfmt->Gmask, table[which].srcG) &&
MASKOK(srcfmt->Bmask, table[which].srcB) &&
MASKOK(dstfmt->Rmask, table[which].dstR) &&
MASKOK(dstfmt->Gmask, table[which].dstG) &&
MASKOK(dstfmt->Bmask, table[which].dstB) &&
dstfmt->BytesPerPixel == table[which].dstbpp &&
(a_need & table[which].alpha) == a_need &&
((table[which].blit_features & GetBlitFeatures()) ==
table[which].blit_features))
break;
}
blitfun = table[which].blitfunc;
if (blitfun == BlitNtoN) { /* default C fallback catch-all. Slow! */
blitfun = Blit2101010toN;
} else if (dstfmt->format == SDL_PIXELFORMAT_ARGB2101010) {
blitfun = BlitNto2101010;
} else if (srcfmt->BytesPerPixel == 4 &&
dstfmt->BytesPerPixel == 4 &&
srcfmt->Rmask == dstfmt->Rmask &&
srcfmt->Gmask == dstfmt->Gmask &&
srcfmt->Bmask == dstfmt->Bmask) {
if (a_need == COPY_ALPHA) {
if (srcfmt->Amask == dstfmt->Amask) {
/* Fastpath C fallback: 32bit RGBA<->RGBA blit with matching RGBA */
blitfun = Blit4to4CopyAlpha;
} else {
blitfun = BlitNtoNCopyAlpha;
}
} else {
/* Fastpath C fallback: 32bit RGB<->RGBA blit with matching RGB */
blitfun = Blit4to4MaskAlpha;
}
} else if (a_need == COPY_ALPHA) {
blitfun = BlitNtoNCopyAlpha;
}
}
}
return (blitfun);
/* colorkey blit: Here we don't have too many options, mostly
because RLE is the preferred fast way to deal with this.
If a particular case turns out to be useful we'll add it. */
if (srcfmt->BytesPerPixel == 2 && surface->map->identity)
return Blit2to2Key;
else if (dstfmt->BytesPerPixel == 1)
return BlitNto1Key;
else {
#if SDL_ALTIVEC_BLITTERS
if ((srcfmt->BytesPerPixel == 4) && (dstfmt->BytesPerPixel == 4)
return Blit32to32KeyAltivec;
} else
#endif
if (srcfmt->Amask && dstfmt->Amask) {
} else {
return BlitNtoNKey;
}
}
}
return NULL;
}

Variable Documentation

Uint8* SDL_expand_byte[9]

Definition at line 71 of file SDL_pixels.c.

Referenced by SDL_GetRGB(), and SDL_GetRGBA().