+#endif // wxUSE_XPM
+
+// ----------------------------------------------------------------------------
+// wxXBMDataHandler
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxXBMDataHandler: public wxBitmapHandler
+{
+ DECLARE_DYNAMIC_CLASS(wxXBMDataHandler)
+public:
+ inline wxXBMDataHandler()
+ {
+ SetName( wxT("XBM data") );
+ SetExtension( wxT("xbm") );
+ SetType( wxBITMAP_TYPE_XBM_DATA );
+ };
+
+ virtual bool LoadFile(wxBitmap *WXUNUSED(bitmap),
+ const wxString& WXUNUSED(name),
+ wxBitmapType WXUNUSED(flags),
+ int WXUNUSED(desiredWidth),
+ int WXUNUSED(desiredHeight))
+ { return false; }
+
+ virtual bool SaveFile(const wxBitmap *WXUNUSED(bitmap),
+ const wxString& WXUNUSED(name),
+ wxBitmapType WXUNUSED(type),
+ const wxPalette *WXUNUSED(palette) = NULL) const
+ { return false; }
+
+ virtual bool Create(wxBitmap *bitmap, const void* data, wxBitmapType type,
+ int width, int height, int depth = 1);
+};
+
+IMPLEMENT_DYNAMIC_CLASS(wxXBMDataHandler, wxBitmapHandler)
+
+bool wxXBMDataHandler::Create( wxBitmap *bitmap, const void* bits,
+ wxBitmapType WXUNUSED(type),
+ int width, int height, int WXUNUSED(depth))
+{
+#if !wxUSE_NANOX
+ if (!bitmap->GetRefData())
+ bitmap->SetRefData( new wxBitmapRefData() );
+
+ M_BMPHANDLERDATA->m_display = wxGlobalDisplay();
+
+ Display *xdisplay = (Display*) M_BMPHANDLERDATA->m_display;
+
+ int xscreen = DefaultScreen( xdisplay );
+ Window xroot = RootWindow( xdisplay, xscreen );
+
+ M_BMPHANDLERDATA->m_mask = NULL;
+ M_BMPHANDLERDATA->m_bitmap =
+ XCreateBitmapFromData(xdisplay, xroot,
+ (char *) bits, width, height );
+ M_BMPHANDLERDATA->m_width = width;
+ M_BMPHANDLERDATA->m_height = height;
+ M_BMPHANDLERDATA->m_bpp = 1;
+
+ return true;
+#else
+ wxCHECK_MSG( M_BMPHANDLERDATA->m_bitmap, false,
+ wxT("couldn't create bitmap") );
+#endif
+}
+
+void wxBitmap::InitStandardHandlers()
+{
+ AddHandler(new wxXBMDataHandler);
+#if wxUSE_XPM
+#if wxHAVE_LIB_XPM || wxUSE_STREAMS
+ AddHandler(new wxXPMFileHandler);
+#endif
+ AddHandler(new wxXPMDataHandler);
+#endif