]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/bitmap.cpp
corrected use of Print Manager Session APIs for Carbon targets
[wxWidgets.git] / src / msw / bitmap.cpp
index 959590f87998957e8793200c737dbe518a5797a6..4c21494fcb4ba8ccde1635807669420f1d111aba 100644 (file)
@@ -45,6 +45,7 @@
 
 #include "wx/msw/dib.h"
 #include "wx/image.h"
 
 #include "wx/msw/dib.h"
 #include "wx/image.h"
+#include "wx/xpmdecod.h"
 
 // missing from mingw32 header
 #ifndef CLR_INVALID
 
 // missing from mingw32 header
 #ifndef CLR_INVALID
@@ -283,9 +284,20 @@ wxBitmap::wxBitmap(const char bits[], int width, int height, int depth)
 // Create from XPM data
 bool wxBitmap::CreateFromXpm(const char **data)
 {
 // Create from XPM data
 bool wxBitmap::CreateFromXpm(const char **data)
 {
+#if wxUSE_IMAGE && wxUSE_XPM
     Init();
 
     Init();
 
-    return Create((void *)data, wxBITMAP_TYPE_XPM_DATA, 0, 0, 0);
+    wxCHECK_MSG( data != NULL, FALSE, wxT("invalid bitmap data") )
+    
+    wxXPMDecoder decoder;
+    wxImage img = decoder.ReadData(data);
+    wxCHECK_MSG( img.Ok(), FALSE, wxT("invalid bitmap data") )
+    
+    *this = wxBitmap(img);
+    return TRUE;
+#else
+       return FALSE;
+#endif
 }
 
 wxBitmap::wxBitmap(int w, int h, int d)
 }
 
 wxBitmap::wxBitmap(int w, int h, int d)