wrc: Add support for PNG icons.

This commit is contained in:
Alexandre Julliard 2013-03-27 13:26:22 +01:00
parent a4cb7c46fe
commit c9d806a0d1
1 changed files with 17 additions and 14 deletions

View File

@ -34,6 +34,8 @@
#include "wingdi.h" /* for BITMAPINFOHEADER */ #include "wingdi.h" /* for BITMAPINFOHEADER */
#define ICO_PNG_MAGIC 0x474e5089
#include <pshpack2.h> #include <pshpack2.h>
typedef struct typedef struct
{ {
@ -397,27 +399,28 @@ static int convert_bitmap(char *data, int size)
} }
bmsize = bih->bV5Size; bmsize = bih->bV5Size;
if (bmsize >> 16) /* assume swapped */
{
#ifndef WORDS_BIGENDIAN
type |= FL_SIZEBE;
#endif
bmsize = BYTESWAP_DWORD( bmsize );
}
else
{
#ifdef WORDS_BIGENDIAN
type |= FL_SIZEBE;
#endif
}
switch (bmsize) switch (bmsize)
{ {
case sizeof(BITMAPOS2HEADER): case sizeof(BITMAPOS2HEADER):
case sizeof(BITMAPINFOHEADER): case sizeof(BITMAPINFOHEADER):
case sizeof(BITMAPV4HEADER): case sizeof(BITMAPV4HEADER):
case sizeof(BITMAPV5HEADER): case sizeof(BITMAPV5HEADER):
#ifdef WORDS_BIGENDIAN
type |= FL_SIZEBE;
#endif
break; break;
case BYTESWAP_DWORD( sizeof(BITMAPOS2HEADER) ):
case BYTESWAP_DWORD( sizeof(BITMAPINFOHEADER) ):
case BYTESWAP_DWORD( sizeof(BITMAPV4HEADER) ):
case BYTESWAP_DWORD( sizeof(BITMAPV5HEADER) ):
#ifndef WORDS_BIGENDIAN
type |= FL_SIZEBE;
#endif
bmsize = BYTESWAP_DWORD( bmsize );
break;
case ICO_PNG_MAGIC:
case BYTESWAP_DWORD( ICO_PNG_MAGIC ):
return 0; /* nothing to convert */
default: default:
parser_error("Invalid bitmap format, bih->biSize = %d", bih->bV5Size); parser_error("Invalid bitmap format, bih->biSize = %d", bih->bV5Size);
} }