windowscodecs: Use predefined WICBitmapPaletteTypeFixedGray16 palette instead of a handmade one.
This commit is contained in:
parent
045ac64c1a
commit
b82023b7c2
|
@ -82,16 +82,6 @@ static inline FormatConverter *impl_from_IWICFormatConverter(IWICFormatConverter
|
||||||
return CONTAINING_RECORD(iface, FormatConverter, IWICFormatConverter_iface);
|
return CONTAINING_RECORD(iface, FormatConverter, IWICFormatConverter_iface);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void make_grayscale_palette(WICColor *colors, UINT num_colors)
|
|
||||||
{
|
|
||||||
int i, v;
|
|
||||||
for (i=0; i<num_colors; i++)
|
|
||||||
{
|
|
||||||
v = i * 255 / (num_colors-1);
|
|
||||||
colors[i] = 0xff000000 | v<<16 | v<<8 | v;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT copypixels_to_32bppBGRA(struct FormatConverter *This, const WICRect *prc,
|
static HRESULT copypixels_to_32bppBGRA(struct FormatConverter *This, const WICRect *prc,
|
||||||
UINT cbStride, UINT cbBufferSize, BYTE *pbBuffer, enum pixelformat source_format)
|
UINT cbStride, UINT cbBufferSize, BYTE *pbBuffer, enum pixelformat source_format)
|
||||||
{
|
{
|
||||||
|
@ -248,21 +238,19 @@ static HRESULT copypixels_to_32bppBGRA(struct FormatConverter *This, const WICRe
|
||||||
IWICPalette *palette;
|
IWICPalette *palette;
|
||||||
UINT actualcolors;
|
UINT actualcolors;
|
||||||
|
|
||||||
|
res = PaletteImpl_Create(&palette);
|
||||||
|
if (FAILED(res)) return res;
|
||||||
|
|
||||||
if (source_format == format_4bppIndexed)
|
if (source_format == format_4bppIndexed)
|
||||||
{
|
|
||||||
res = PaletteImpl_Create(&palette);
|
|
||||||
if (FAILED(res)) return res;
|
|
||||||
|
|
||||||
res = IWICBitmapSource_CopyPalette(This->source, palette);
|
res = IWICBitmapSource_CopyPalette(This->source, palette);
|
||||||
if (SUCCEEDED(res))
|
|
||||||
res = IWICPalette_GetColors(palette, 16, colors, &actualcolors);
|
|
||||||
|
|
||||||
IWICPalette_Release(palette);
|
|
||||||
|
|
||||||
if (FAILED(res)) return res;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
make_grayscale_palette(colors, 16);
|
res = IWICPalette_InitializePredefined(palette, WICBitmapPaletteTypeFixedGray16, FALSE);
|
||||||
|
|
||||||
|
if (SUCCEEDED(res))
|
||||||
|
res = IWICPalette_GetColors(palette, 16, colors, &actualcolors);
|
||||||
|
|
||||||
|
IWICPalette_Release(palette);
|
||||||
|
if (FAILED(res)) return res;
|
||||||
|
|
||||||
srcstride = (prc->Width+1)/2;
|
srcstride = (prc->Width+1)/2;
|
||||||
srcdatasize = srcstride * prc->Height;
|
srcdatasize = srcstride * prc->Height;
|
||||||
|
|
Loading…
Reference in New Issue