forked from Mirrorlandia_minetest/irrlicht
TGA images with palettes in 24 or 32 bit now create 32 bit images
Was creating 16-bit images for those before. Could also support 24-bit images, but either we need another convert function or another palette for that (the 16 and 32 bit both work with 32 bit palettes, the 24 bit conversion function only with 24 bit palettes) git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6533 dfc29bdd-3216-0410-991c-e03cc46cb475
This commit is contained in:
parent
05ebc43222
commit
f53af0f2cf
@ -192,14 +192,28 @@ IImage* CImageLoaderTGA::loadImage(io::IReadFile* file) const
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
image = new CImage(ECF_A1R5G5B5,
|
switch ( header.ColorMapEntrySize )
|
||||||
core::dimension2d<u32>(header.ImageWidth, header.ImageHeight));
|
{
|
||||||
|
case 16:
|
||||||
|
image = new CImage(ECF_A1R5G5B5, core::dimension2d<u32>(header.ImageWidth, header.ImageHeight));
|
||||||
if ( image )
|
if ( image )
|
||||||
CColorConverter::convert8BitTo16Bit((u8*)data,
|
CColorConverter::convert8BitTo16Bit((u8*)data,
|
||||||
(s16*)image->getData(),
|
(s16*)image->getData(),
|
||||||
header.ImageWidth,header.ImageHeight,
|
header.ImageWidth,header.ImageHeight,
|
||||||
(s32*) palette, 0,
|
(s32*) palette, 0,
|
||||||
(header.ImageDescriptor&0x20)==0);
|
(header.ImageDescriptor&0x20)==0);
|
||||||
|
break;
|
||||||
|
// Note: 24 bit with palette would need a 24 bit palette, too lazy doing that now (textures will prefer 32-bit later anyway)
|
||||||
|
default:
|
||||||
|
image = new CImage(ECF_A8R8G8B8, core::dimension2d<u32>(header.ImageWidth, header.ImageHeight));
|
||||||
|
if ( image )
|
||||||
|
CColorConverter::convert8BitTo32Bit((u8*)data,
|
||||||
|
(u8*)image->getData(),
|
||||||
|
header.ImageWidth,header.ImageHeight,
|
||||||
|
(u8*) palette, 0,
|
||||||
|
(header.ImageDescriptor&0x20)==0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user