]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/xpmdecod.cpp
make it possible to use wxToolBarSimple as wxToolBar with wxUniv
[wxWidgets.git] / src / common / xpmdecod.cpp
index 28d81ca4a3fa14e48e946de4d78fe5d0a3442822..a0d99a11db2db24a8d8661dba00c578af78de168 100644 (file)
@@ -105,6 +105,7 @@ license is as follows:
 #  include "wx/defs.h"
 #endif
 
 #  include "wx/defs.h"
 #endif
 
+#if wxUSE_IMAGE && wxUSE_XPM
 
 #include "wx/stream.h"
 #include "wx/image.h"
 
 #include "wx/stream.h"
 #include "wx/image.h"
@@ -522,12 +523,14 @@ static bool GetRGBFromName(const char *inname, bool *isNone,
     char *name;
     char *grey, *p;
 
     char *name;
     char *grey, *p;
 
-    // #rrggbb are not in database, we parse them directly
-    if ( *inname == '#' && strlen(inname) == 7 )
+    // Neither #rrggbb nor #rrrrggggbbbb are in database, we parse them directly
+    size_t inname_len = strlen(inname);
+    if ( *inname == '#' && (inname_len == 7 || inname_len == 13))
     {
     {
+        size_t ofs = (inname_len == 7) ? 2 : 4;
         *r = ParseHexadecimal(inname[1], inname[2]);
         *r = ParseHexadecimal(inname[1], inname[2]);
-        *g = ParseHexadecimal(inname[3], inname[4]);
-        *b = ParseHexadecimal(inname[5], inname[6]);
+        *g = ParseHexadecimal(inname[1*ofs+1], inname[1*ofs+2]);
+        *b = ParseHexadecimal(inname[2*ofs+1], inname[2*ofs+2]);
         *isNone = FALSE;
         return TRUE;
     }
         *isNone = FALSE;
         return TRUE;
     }
@@ -751,4 +754,4 @@ wxImage wxXPMDecoder::ReadData(const char **xpm_data)
     return img;
 }
 
     return img;
 }
 
-
+#endif // wxUSE_IMAGE && wxUSE_XPM