forked from Mirrors/wine-wine
windowscodecs: Treat 16-bit channels as little endian.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>stable
parent
0c0def962f
commit
2b7b3abc5b
|
@ -458,8 +458,9 @@ static HRESULT copypixels_to_32bppBGRA(struct FormatConverter *This, const WICRe
|
|||
dstpixel=(DWORD*)dstrow;
|
||||
for (x=0; x<prc->Width; x++)
|
||||
{
|
||||
srcbyte++;
|
||||
*dstpixel++ = 0xff000000|(*srcbyte<<16)|(*srcbyte<<8)|*srcbyte;
|
||||
srcbyte+=2;
|
||||
srcbyte++;
|
||||
}
|
||||
srcrow += srcstride;
|
||||
dstrow += cbStride;
|
||||
|
@ -776,9 +777,9 @@ static HRESULT copypixels_to_32bppBGRA(struct FormatConverter *This, const WICRe
|
|||
dstpixel=(DWORD*)dstrow;
|
||||
for (x=0; x<prc->Width; x++) {
|
||||
BYTE red, green, blue;
|
||||
red = *srcpixel++; srcpixel++;
|
||||
green = *srcpixel++; srcpixel++;
|
||||
blue = *srcpixel++; srcpixel++;
|
||||
srcpixel++; red = *srcpixel++;
|
||||
srcpixel++; green = *srcpixel++;
|
||||
srcpixel++; blue = *srcpixel++;
|
||||
*dstpixel++=0xff000000|red<<16|green<<8|blue;
|
||||
}
|
||||
srcrow += srcstride;
|
||||
|
@ -820,10 +821,10 @@ static HRESULT copypixels_to_32bppBGRA(struct FormatConverter *This, const WICRe
|
|||
dstpixel=(DWORD*)dstrow;
|
||||
for (x=0; x<prc->Width; x++) {
|
||||
BYTE red, green, blue, alpha;
|
||||
red = *srcpixel++; srcpixel++;
|
||||
green = *srcpixel++; srcpixel++;
|
||||
blue = *srcpixel++; srcpixel++;
|
||||
alpha = *srcpixel++; srcpixel++;
|
||||
srcpixel++; red = *srcpixel++;
|
||||
srcpixel++; green = *srcpixel++;
|
||||
srcpixel++; blue = *srcpixel++;
|
||||
srcpixel++; alpha = *srcpixel++;
|
||||
*dstpixel++=alpha<<24|red<<16|green<<8|blue;
|
||||
}
|
||||
srcrow += srcstride;
|
||||
|
|
|
@ -491,6 +491,18 @@ static const struct bitmap_data testdata_32bppPBGRA = {
|
|||
static const struct bitmap_data testdata_32bppPRGBA = {
|
||||
&GUID_WICPixelFormat32bppPRGBA, 32, bits_32bppPBGRA, 32, 2, 96.0, 96.0};
|
||||
|
||||
static const BYTE bits_64bppRGBA[] = {
|
||||
128,255,128,0,128,0,128,255,128, 0,128,255,128,0,128,255,128, 0,128,0,128,255,128,255,128, 0,128,0,128,0,128,255,128, 255,128,0,128,0,128,255,128, 0,128,255,128,0,128,255,128, 0,128,0,128,255,128,255,128, 0,128,0,128,0,128,255,
|
||||
128,255,128,0,128,0,128,255,128, 0,128,255,128,0,128,255,128, 0,128,0,128,255,128,255,128, 0,128,0,128,0,128,255,128, 255,128,0,128,0,128,255,128, 0,128,255,128,0,128,255,128, 0,128,0,128,255,128,255,128, 0,128,0,128,0,128,255,
|
||||
128,255,128,0,128,0,128,255,128, 0,128,255,128,0,128,255,128, 0,128,0,128,255,128,255,128, 0,128,0,128,0,128,255,128, 255,128,0,128,0,128,255,128, 0,128,255,128,0,128,255,128, 0,128,0,128,255,128,255,128, 0,128,0,128,0,128,255,
|
||||
128,255,128,0,128,0,128,255,128, 0,128,255,128,0,128,255,128, 0,128,0,128,255,128,255,128, 0,128,0,128,0,128,255,128, 255,128,0,128,0,128,255,128, 0,128,255,128,0,128,255,128, 0,128,0,128,255,128,255,128, 0,128,0,128,0,128,255,
|
||||
128,0,128,255,128,255,128,255,128, 255,128,0,128,255,128,255,128, 255,128,255,128,0,128,255,128, 255,128,255,128,255,128,255,128, 0,128,255,128,255,128,255,128, 255,128,0,128,255,128,255,128, 255,128,255,128,0,128,255,128, 255,128,255,128,255,128,255,
|
||||
128,0,128,255,128,255,128,255,128, 255,128,0,128,255,128,255,128, 255,128,255,128,0,128,255,128, 255,128,255,128,255,128,255,128, 0,128,255,128,255,128,255,128, 255,128,0,128,255,128,255,128, 255,128,255,128,0,128,255,128, 255,128,255,128,255,128,255,
|
||||
128,0,128,255,128,255,128,255,128, 255,128,0,128,255,128,255,128, 255,128,255,128,0,128,255,128, 255,128,255,128,255,128,255,128, 0,128,255,128,255,128,255,128, 255,128,0,128,255,128,255,128, 255,128,255,128,0,128,255,128, 255,128,255,128,255,128,255,
|
||||
128,0,128,255,128,255,128,255,128, 255,128,0,128,255,128,255,128, 255,128,255,128,0,128,255,128, 255,128,255,128,255,128,255,128, 0,128,255,128,255,128,255,128, 255,128,0,128,255,128,255,128, 255,128,255,128,0,128,255,128, 255,128,255,128,255,128,255};
|
||||
static const struct bitmap_data testdata_64bppRGBA = {
|
||||
&GUID_WICPixelFormat64bppRGBA, 64, bits_64bppRGBA, 32, 2, 96.0, 96.0};
|
||||
|
||||
/* XP and 2003 use linear color conversion, later versions use sRGB gamma */
|
||||
static const float bits_32bppGrayFloat_xp[] = {
|
||||
0.114000f,0.587000f,0.299000f,0.000000f,0.114000f,0.587000f,0.299000f,0.000000f,
|
||||
|
@ -1807,6 +1819,9 @@ START_TEST(converter)
|
|||
test_conversion(&testdata_24bppRGB, &testdata_32bppBGR, "24bppRGB -> 32bppBGR", FALSE);
|
||||
test_conversion(&testdata_32bppBGRA, &testdata_24bppRGB, "32bppBGRA -> 24bppRGB", FALSE);
|
||||
|
||||
test_conversion(&testdata_64bppRGBA, &testdata_32bppRGBA, "64bppRGBA -> 32bppRGBA", FALSE);
|
||||
test_conversion(&testdata_64bppRGBA, &testdata_32bppRGB, "64bppRGBA -> 32bppRGB", FALSE);
|
||||
|
||||
test_conversion(&testdata_24bppRGB, &testdata_32bppGrayFloat, "24bppRGB -> 32bppGrayFloat", FALSE);
|
||||
test_conversion(&testdata_32bppBGR, &testdata_32bppGrayFloat, "32bppBGR -> 32bppGrayFloat", FALSE);
|
||||
|
||||
|
|
Loading…
Reference in New Issue