Module: wine Branch: master Commit: c9d806a0d19379ee8f6dd50bb0945e714bfa847d URL: http://source.winehq.org/git/wine.git/?a=commit;h=c9d806a0d19379ee8f6dd50bb0...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Mar 27 13:26:22 2013 +0100
wrc: Add support for PNG icons.
---
tools/wrc/newstruc.c | 31 +++++++++++++++++-------------- 1 files changed, 17 insertions(+), 14 deletions(-)
diff --git a/tools/wrc/newstruc.c b/tools/wrc/newstruc.c index 4651617..52bafbd 100644 --- a/tools/wrc/newstruc.c +++ b/tools/wrc/newstruc.c @@ -34,6 +34,8 @@
#include "wingdi.h" /* for BITMAPINFOHEADER */
+#define ICO_PNG_MAGIC 0x474e5089 + #include <pshpack2.h> typedef struct { @@ -397,27 +399,28 @@ static int convert_bitmap(char *data, int size) }
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) { case sizeof(BITMAPOS2HEADER): case sizeof(BITMAPINFOHEADER): case sizeof(BITMAPV4HEADER): case sizeof(BITMAPV5HEADER): +#ifdef WORDS_BIGENDIAN + type |= FL_SIZEBE; +#endif + 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: parser_error("Invalid bitmap format, bih->biSize = %d", bih->bV5Size); }