// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "bitmap.h"
#endif
wxBitmapHandler *handler = FindHandler(type);
if ( handler == NULL ) {
- wxLogWarning("no data bitmap handler for type %ld defined.",
+ wxLogWarning(wxT("no data bitmap handler for type %ld defined."),
(long)type);
return FALSE;
return handler->Create(this, data, type, width, height, depth);
}
+bool wxBitmap::Create(WXPixmap pixmap)
+{
+ UnRef();
+ Pixmap xpixmap = (Pixmap)pixmap;
+ Display* xdisplay = wxGlobalDisplay();
+ int xscreen = DefaultScreen( xdisplay );
+ Window xroot = RootWindow( xdisplay, xscreen );
+
+ // make a copy of the Pixmap
+ Window root;
+ Pixmap copy;
+ int x, y;
+ unsigned width, height, border, depth;
+
+ XGetGeometry( xdisplay, (Drawable)xpixmap, &root, &x, &y,
+ &width, &height, &border, &depth );
+ copy = XCreatePixmap( xdisplay, xroot, width, height, depth );
+
+ GC gc = XCreateGC( xdisplay, copy, 0, NULL );
+ XCopyArea( xdisplay, xpixmap, copy, gc, 0, 0, width, height, 0, 0 );
+ XFreeGC( xdisplay, gc );
+
+ // fill in ref data
+ wxBitmapRefData* ref = new wxBitmapRefData();
+
+ if( depth == 1 )
+ ref->m_bitmap = (WXPixmap)copy;
+ else
+ ref->m_pixmap = (WXPixmap)copy;
+
+ ref->m_display = (WXDisplay*)xdisplay;
+ ref->m_width = width;
+ ref->m_height = height;
+ ref->m_bpp = depth;
+
+ m_refData = ref;
+
+ return true;
+}
+
bool wxBitmap::CreateFromXpm( const char **bits )
{
- wxCHECK_MSG( bits, FALSE, _T("NULL pointer in wxBitmap::CreateFromXpm") );
+ wxCHECK_MSG( bits, FALSE, wxT("NULL pointer in wxBitmap::CreateFromXpm") );
return Create(bits, wxBITMAP_TYPE_XPM_DATA, 0, 0, 0);
}
#if wxUSE_NANOX
if (!image.Ok())
{
- wxASSERT_MSG(image.Ok(), "Invalid wxImage passed to wxBitmap::CreateFromImage.");
+ wxASSERT_MSG(image.Ok(), wxT("Invalid wxImage passed to wxBitmap::CreateFromImage."));
return FALSE;
}
if (depth == 1)
{
- wxFAIL_MSG( "mono images later" );
+ wxFAIL_MSG( wxT("mono images later") );
}
else
{
int b_mask = image.GetMaskBlue();
unsigned char* data = image.GetData();
- wxASSERT_MSG( data, "No image data" );
+ wxASSERT_MSG( data, wxT("No image data") );
unsigned char *colorCube =
wxTheApp->GetVisualInfo(M_BMPDATA->m_display)->m_colorCube;
public:
wxXPMFileHandler()
{
- m_name = "XPM file";
- m_extension = "xpm";
+ m_name = wxT("XPM file");
+ m_extension = wxT("xpm");
m_type = wxBITMAP_TYPE_XPM;
};
public:
wxXPMDataHandler()
{
- m_name = "XPM data";
- m_extension = "xpm";
+ m_name = wxT("XPM data");
+ m_extension = wxT("xpm");
m_type = wxBITMAP_TYPE_XPM_DATA;
};
public:
inline wxXBMDataHandler()
{
- m_name = "XBM data";
- m_extension = "xbm";
+ m_name = wxT("XBM data");
+ m_extension = wxT("xbm");
m_type = wxBITMAP_TYPE_XBM_DATA;
};
M_BMPHANDLERDATA->m_bpp = 1;
return TRUE;
-#endif
- wxCHECK_MSG( M_BMPHANDLERDATA->m_bitmap, FALSE,
+#else
+ wxCHECK_MSG( M_BMPHANDLERDATA->m_bitmap, FALSE,
wxT("couldn't create bitmap") );
+#endif
}
void wxBitmap::InitStandardHandlers()