#include "wx/x11/private.h"
+#if wxUSE_XPM
#if wxHAVE_LIB_XPM
- #include <X11/xpm.h>
+#include <X11/xpm.h>
+#else
+#include "wx/xpmdecod.h"
+#include "wx/wfstream.h"
+#endif
#endif
#include <math.h>
bool wxBitmap::CreateFromXpm( const char **bits )
{
+#if wxUSE_XPM
+#if wxHAVE_LIB_XPM
UnRef();
wxCHECK_MSG( bits != NULL, FALSE, wxT("invalid bitmap data") )
M_BMPDATA->m_mask->SetBitmap( (WXPixmap) mask );
M_BMPDATA->m_mask->SetDisplay( xdisplay );
}
+ return TRUE;
}
else
{
return FALSE;
}
-
- return TRUE;
+#else
+ wxXPMDecoder decoder;
+ wxImage image(decoder.ReadData(bits));
+ if (image.Ok())
+ return CreateFromImage(image);
+ else
+ return FALSE;
+#endif
+#endif
+ return FALSE;
}
bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
GC gc = XCreateGC( xdisplay, (Pixmap) M_BMPDATA->m_pixmap, 0, NULL );
XPutImage( xdisplay, (Pixmap) M_BMPDATA->m_pixmap, gc, data_image, 0, 0, 0, 0, width, height );
+#ifdef __WXDEBUG__
+ XSync(wxGlobalDisplay(), False);
+#endif
XDestroyImage( data_image );
XFreeGC( xdisplay, gc );
if (type == wxBITMAP_TYPE_XPM)
{
+#if wxUSE_XPM
+#if wxHAVE_LIB_XPM
m_refData = new wxBitmapRefData();
M_BMPDATA->m_display = wxGlobalDisplay();
return FALSE;
}
+#else
+#if wxUSE_STREAMS
+ wxXPMDecoder decoder;
+ wxFileInputStream stream(name);
+ if (stream.Ok())
+ {
+ wxImage image(decoder.Read(stream));
+ if (image.Ok())
+ return CreateFromImage(image);
+ else
+ return FALSE;
+ }
+ else
+ return FALSE;
+#else
+ return FALSE;
+#endif
+ // wxUSE_STREAMS
+#endif
+ // wxHAVE_LIB_XPM
+#endif
+ // wxUSE_XPM
+ return FALSE;
}
else // try if wxImage can load it
{