+ if (type == wxBITMAP_TYPE_XPM)
+ {
+ m_refData = new wxBitmapRefData();
+
+ GdkBitmap *mask = (GdkBitmap*) NULL;
+ GdkWindow *parent = (GdkWindow*) &gdk_root_parent;
+
+ M_BMPDATA->m_pixmap = gdk_pixmap_create_from_xpm( parent, &mask, NULL, name );
+
+ if (mask)
+ {
+ M_BMPDATA->m_mask = new wxMask();
+ M_BMPDATA->m_mask->m_bitmap = mask;
+ }
+
+ gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) );
+ M_BMPDATA->m_bpp = gdk_window_get_visual( parent )->depth;
+ }
+ else if (type == wxBITMAP_TYPE_PNG)
+ {
+ wxImage image;
+ image.LoadFile( name, type );
+ if (image.Ok()) *this = image.ConvertToBitmap();
+ }
+ else if (type == wxBITMAP_TYPE_BMP)
+ {
+ wxImage image;
+ image.LoadFile( name, type );
+ if (image.Ok()) *this = image.ConvertToBitmap();
+ }
+ else
+ return FALSE;
+
+ return TRUE;
+}
+
+wxPalette *wxBitmap::GetPalette(void) const
+{
+ if (!Ok()) return (wxPalette *) NULL;
+
+ return M_BMPDATA->m_palette;