Alexandre Julliard : wrc: Add support for PNG icons.

Alexandre Julliard julliard at winehq.org
Wed Mar 27 15:40:05 CDT 2013


Module: wine
Branch: master
Commit: c9d806a0d19379ee8f6dd50bb0945e714bfa847d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=c9d806a0d19379ee8f6dd50bb0945e714bfa847d

Author: Alexandre Julliard <julliard at 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);
         }




More information about the wine-cvs mailing list