mirror of
https://github.com/vcmi/vcmi.git
synced 2025-03-19 21:10:12 +02:00
Cleaned-up pcx loader.
This commit is contained in:
parent
8403d177aa
commit
c8f837b51b
@ -54,49 +54,28 @@ SDL_Surface * CPCXConv::getSurface() const
|
||||
int width = -1, height = -1;
|
||||
Epcxformat format;
|
||||
int fSize,y;
|
||||
bool check1, check2;
|
||||
unsigned char add;
|
||||
int it=0;
|
||||
|
||||
fSize = read_le_u32(pcx + it); it+=4;
|
||||
width = read_le_u32(pcx + it); it+=4;
|
||||
height = read_le_u32(pcx + it); it+=4;
|
||||
|
||||
if (fSize==width*height*3)
|
||||
check1=true;
|
||||
else
|
||||
check1=false;
|
||||
if (fSize==width*height)
|
||||
check2=true;
|
||||
else
|
||||
check2=false;
|
||||
if (check1)
|
||||
format=PCX24B;
|
||||
else if (check2)
|
||||
else if (fSize==width*height)
|
||||
format=PCX8B;
|
||||
else
|
||||
return NULL;
|
||||
|
||||
add = 4 - width%4;
|
||||
if (add==4)
|
||||
add=0;
|
||||
|
||||
if (format==PCX8B)
|
||||
{
|
||||
ret = SDL_CreateRGBSurface(SDL_SWSURFACE, width+add, height, 8, 0, 0, 0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
#if (SDL_BYTEORDER == SDL_BIG_ENDIAN)
|
||||
int bmask = 0xff0000;
|
||||
int gmask = 0x00ff00;
|
||||
int rmask = 0x0000ff;
|
||||
#else
|
||||
int bmask = 0x0000ff;
|
||||
int gmask = 0x00ff00;
|
||||
int rmask = 0xff0000;
|
||||
#endif
|
||||
ret = SDL_CreateRGBSurface(SDL_SWSURFACE, width+add, height, 24, rmask, gmask, bmask, 0);
|
||||
}
|
||||
if (format==PCX8B)
|
||||
{
|
||||
|
||||
it = pcxs-256*3;
|
||||
for (int i=0;i<256;i++)
|
||||
{
|
||||
@ -126,6 +105,17 @@ SDL_Surface * CPCXConv::getSurface() const
|
||||
}
|
||||
else
|
||||
{
|
||||
#if (SDL_BYTEORDER == SDL_BIG_ENDIAN)
|
||||
int bmask = 0xff0000;
|
||||
int gmask = 0x00ff00;
|
||||
int rmask = 0x0000ff;
|
||||
#else
|
||||
int bmask = 0x0000ff;
|
||||
int gmask = 0x00ff00;
|
||||
int rmask = 0xff0000;
|
||||
#endif
|
||||
ret = SDL_CreateRGBSurface(SDL_SWSURFACE, width+add, height, 24, rmask, gmask, bmask, 0);
|
||||
|
||||
for (y=height; y>0; y--)
|
||||
{
|
||||
it = 0xC + (y-1)*width*3;
|
||||
|
Loading…
x
Reference in New Issue
Block a user