mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +00:00
[MSRLE32] Sync with Wine Staging 1.9.11. CORE-11368
svn path=/trunk/; revision=71573
This commit is contained in:
parent
122a7bd37d
commit
1314203868
2 changed files with 25 additions and 11 deletions
|
@ -1567,8 +1567,16 @@ static LRESULT DecompressGetFormat(CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn,
|
|||
|
||||
size = lpbiIn->biSize;
|
||||
|
||||
if (lpbiIn->biBitCount <= 8)
|
||||
size += lpbiIn->biClrUsed * sizeof(RGBQUAD);
|
||||
if (lpbiIn->biBitCount <= 8) {
|
||||
int colors;
|
||||
|
||||
if (lpbiIn->biClrUsed == 0)
|
||||
colors = 1 << lpbiIn->biBitCount;
|
||||
else
|
||||
colors = lpbiIn->biClrUsed;
|
||||
|
||||
size += colors * sizeof(RGBQUAD);
|
||||
}
|
||||
|
||||
if (lpbiOut != NULL) {
|
||||
memcpy(lpbiOut, lpbiIn, size);
|
||||
|
@ -1647,27 +1655,33 @@ static LRESULT DecompressBegin(CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn,
|
|||
|
||||
if (lpbiIn->biCompression != BI_RGB)
|
||||
{
|
||||
int colors;
|
||||
|
||||
if (lpbiIn->biBitCount <= 8 && lpbiIn->biClrUsed == 0)
|
||||
colors = 1 << lpbiIn->biBitCount;
|
||||
else
|
||||
colors = lpbiIn->biClrUsed;
|
||||
|
||||
rgbIn = (const RGBQUAD*)((const BYTE*)lpbiIn + lpbiIn->biSize);
|
||||
rgbOut = (const RGBQUAD*)((const BYTE*)lpbiOut + lpbiOut->biSize);
|
||||
|
||||
switch (lpbiOut->biBitCount) {
|
||||
case 4:
|
||||
case 8:
|
||||
pi->palette_map = LocalAlloc(LPTR, lpbiIn->biClrUsed);
|
||||
pi->palette_map = LocalAlloc(LPTR, colors);
|
||||
if (pi->palette_map == NULL)
|
||||
return ICERR_MEMORY;
|
||||
|
||||
for (i = 0; i < lpbiIn->biClrUsed; i++) {
|
||||
pi->palette_map[i] = MSRLE32_GetNearestPaletteIndex(lpbiOut->biClrUsed, rgbOut, rgbIn[i]);
|
||||
}
|
||||
for (i = 0; i < colors; i++)
|
||||
pi->palette_map[i] = MSRLE32_GetNearestPaletteIndex(colors, rgbOut, rgbIn[i]);
|
||||
break;
|
||||
case 15:
|
||||
case 16:
|
||||
pi->palette_map = LocalAlloc(LPTR, lpbiIn->biClrUsed * 2);
|
||||
pi->palette_map = LocalAlloc(LPTR, colors * 2);
|
||||
if (pi->palette_map == NULL)
|
||||
return ICERR_MEMORY;
|
||||
|
||||
for (i = 0; i < lpbiIn->biClrUsed; i++) {
|
||||
for (i = 0; i < colors; i++) {
|
||||
WORD color;
|
||||
|
||||
if (lpbiOut->biBitCount == 15)
|
||||
|
@ -1683,10 +1697,10 @@ static LRESULT DecompressBegin(CodecInfo *pi, LPCBITMAPINFOHEADER lpbiIn,
|
|||
break;
|
||||
case 24:
|
||||
case 32:
|
||||
pi->palette_map = LocalAlloc(LPTR, lpbiIn->biClrUsed * sizeof(RGBQUAD));
|
||||
pi->palette_map = LocalAlloc(LPTR, colors * sizeof(RGBQUAD));
|
||||
if (pi->palette_map == NULL)
|
||||
return ICERR_MEMORY;
|
||||
memcpy(pi->palette_map, rgbIn, lpbiIn->biClrUsed * sizeof(RGBQUAD));
|
||||
memcpy(pi->palette_map, rgbIn, colors * sizeof(RGBQUAD));
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -121,7 +121,7 @@ reactos/dll/win32/msisip # Synced to WineStaging-1.9.4
|
|||
reactos/dll/win32/msisys.ocx # Synced to WineStaging-1.9.4
|
||||
reactos/dll/win32/msnet32 # Synced to WineStaging-1.9.4
|
||||
reactos/dll/win32/mspatcha # Synced to WineStaging-1.9.4
|
||||
reactos/dll/win32/msrle32 # Synced to WineStaging-1.9.4
|
||||
reactos/dll/win32/msrle32 # Synced to WineStaging-1.9.11
|
||||
reactos/dll/win32/mssign32 # Synced to WineStaging-1.9.4
|
||||
reactos/dll/win32/mssip32 # Synced to WineStaging-1.9.4
|
||||
reactos/dll/win32/mstask # Synced to WineStaging-1.9.4
|
||||
|
|
Loading…
Reference in a new issue