check for NA(no alpha) in formatHeader in RDP6_BITMAP_STREAM
This commit is contained in:
parent
f6cd71026e
commit
d8e0df3af7
@ -251,6 +251,7 @@ static uint32 ExtractRunLength(uint32 code, uint8* pbOrderHdr, uint32* advance)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* decompress a color plane
|
* decompress a color plane
|
||||||
|
* RDP6_BITMAP_STREAM
|
||||||
*/
|
*/
|
||||||
static int process_plane(uint8* in, int width, int height, uint8* out, int size)
|
static int process_plane(uint8* in, int width, int height, uint8* out, int size)
|
||||||
{
|
{
|
||||||
@ -358,22 +359,28 @@ static int process_plane(uint8* in, int width, int height, uint8* out, int size)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 4 byte bitmap decompress
|
* 4 byte bitmap decompress
|
||||||
|
* RDP6_BITMAP_STREAM
|
||||||
*/
|
*/
|
||||||
static boolean bitmap_decompress4(uint8* srcData, uint8* dstData, int width, int height, int size)
|
static boolean bitmap_decompress4(uint8* srcData, uint8* dstData, int width, int height, int size)
|
||||||
{
|
{
|
||||||
int code;
|
int code;
|
||||||
int bytes_pro;
|
int bytes_pro;
|
||||||
int total_pro;
|
int total_pro;
|
||||||
|
int RLE;
|
||||||
|
int NA; /* no alpha */
|
||||||
|
|
||||||
code = IN_UINT8_MV(srcData);
|
code = IN_UINT8_MV(srcData);
|
||||||
|
RLE = code & 0x10;
|
||||||
if (code != 0x10)
|
if (RLE == 0)
|
||||||
return False;
|
return False;
|
||||||
|
|
||||||
total_pro = 1;
|
total_pro = 1;
|
||||||
bytes_pro = process_plane(srcData, width, height, dstData + 3, size - total_pro);
|
NA = code & 0x20;
|
||||||
total_pro += bytes_pro;
|
if (NA == 0)
|
||||||
srcData += bytes_pro;
|
{
|
||||||
|
bytes_pro = process_plane(srcData, width, height, dstData + 3, size - total_pro);
|
||||||
|
total_pro += bytes_pro;
|
||||||
|
srcData += bytes_pro;
|
||||||
|
}
|
||||||
bytes_pro = process_plane(srcData, width, height, dstData + 2, size - total_pro);
|
bytes_pro = process_plane(srcData, width, height, dstData + 2, size - total_pro);
|
||||||
total_pro += bytes_pro;
|
total_pro += bytes_pro;
|
||||||
srcData += bytes_pro;
|
srcData += bytes_pro;
|
||||||
@ -382,7 +389,6 @@ static boolean bitmap_decompress4(uint8* srcData, uint8* dstData, int width, int
|
|||||||
srcData += bytes_pro;
|
srcData += bytes_pro;
|
||||||
bytes_pro = process_plane(srcData, width, height, dstData + 0, size - total_pro);
|
bytes_pro = process_plane(srcData, width, height, dstData + 0, size - total_pro);
|
||||||
total_pro += bytes_pro;
|
total_pro += bytes_pro;
|
||||||
|
|
||||||
return (size == total_pro) ? True : False;
|
return (size == total_pro) ? True : False;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -419,7 +425,7 @@ boolean bitmap_decompress(uint8* srcData, uint8* dstData, int width, int height,
|
|||||||
}
|
}
|
||||||
else if (srcBpp == 32 && dstBpp == 32)
|
else if (srcBpp == 32 && dstBpp == 32)
|
||||||
{
|
{
|
||||||
if (bitmap_decompress4(srcData, dstData, width, height, size) != True)
|
if (!bitmap_decompress4(srcData, dstData, width, height, size))
|
||||||
return False;
|
return False;
|
||||||
}
|
}
|
||||||
else if (srcBpp == 15 && dstBpp == 15)
|
else if (srcBpp == 15 && dstBpp == 15)
|
||||||
|
Loading…
Reference in New Issue
Block a user