wined3d: Introduce a separate function for WINED3D_CT_CK_B8G8R8X8.

This commit is contained in:
Henri Verbeet 2014-10-03 09:19:19 +02:00 committed by Alexandre Julliard
parent 548978dec4
commit dabe5b4479
1 changed files with 25 additions and 15 deletions

View File

@ -3259,6 +3259,29 @@ static void convert_b8g8r8_unorm_b8g8r8a8_unorm_color_key(const BYTE *src, unsig
} }
} }
static void convert_b8g8r8x8_unorm_b8g8r8a8_unorm_color_key(const BYTE *src, unsigned int src_pitch,
BYTE *dst, unsigned int dst_pitch, unsigned int width, unsigned int height,
const struct wined3d_color_key *color_key)
{
const DWORD *src_row;
unsigned int x, y;
DWORD *dst_row;
for (y = 0; y < height; ++y)
{
src_row = (DWORD *)&src[src_pitch * y];
dst_row = (DWORD *)&dst[dst_pitch * y];
for (x = 0; x < width; ++x)
{
DWORD src_color = src_row[x];
if (color_in_range(color_key, src_color))
dst_row[x] = src_color & ~0xff000000;
else
dst_row[x] = src_color | 0xff000000;
}
}
}
static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UINT width, UINT height, static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UINT width, UINT height,
UINT outpitch, enum wined3d_conversion_type conversion_type, struct wined3d_surface *surface) UINT outpitch, enum wined3d_conversion_type conversion_type, struct wined3d_surface *surface)
{ {
@ -3297,21 +3320,8 @@ static HRESULT d3dfmt_convert_surface(const BYTE *src, BYTE *dst, UINT pitch, UI
break; break;
case WINED3D_CT_CK_B8G8R8X8: case WINED3D_CT_CK_B8G8R8X8:
for (y = 0; y < height; ++y) convert_b8g8r8x8_unorm_b8g8r8a8_unorm_color_key(src, pitch, dst, outpitch,
{ width, height, &texture->src_blt_color_key);
source = src + pitch * y;
dest = dst + outpitch * y;
for (x = 0; x < width; ++x)
{
DWORD color = *(const DWORD *)source;
if (color_in_range(&texture->src_blt_color_key, color))
*(DWORD *)dest = color & ~0xff000000;
else
*(DWORD *)dest = color | 0xff000000;
source += 4;
dest += 4;
}
}
break; break;
case WINED3D_CT_CK_B8G8R8A8: case WINED3D_CT_CK_B8G8R8A8: