#include "wx/dcmemory.h"
#include "wx/app.h"
+#ifdef __WXGTK20__
+ // need this to get gdk_image_new_bitmap()
+ #define GDK_ENABLE_BROKEN
+#endif
+
#include <gdk/gdk.h>
#include <gtk/gtk.h>
#include <gdk/gdkx.h>
-#if (GTK_MINOR_VERSION > 0)
-#include <gdk/gdkrgb.h>
-#endif
+#ifdef __WXGTK20__
+ #include <gdk/gdkimage.h>
+#else // GTK+ 1.2
+ // VZ: is this still needed? seems to compile fine without it...
+ #if (GTK_MINOR_VERSION > 0)
+ #include <gdk/gdkrgb.h>
+ #endif
+#endif // GTK+ 2.0/1.2
extern void gdk_wx_draw_bitmap (GdkDrawable *drawable,
GdkGC *gc,
m_bitmap = (GdkBitmap*) NULL;
}
- wxImage image( bitmap );
+ wxImage image = bitmap.ConvertToImage();
if (!image.Ok()) return FALSE;
m_bitmap = gdk_pixmap_new( wxGetRootWindow()->window, image.GetWidth(), image.GetHeight(), 1 );
bool wxBitmap::CreateFromXpm( const char **bits )
{
+ UnRef();
+
wxCHECK_MSG( bits != NULL, FALSE, wxT("invalid bitmap data") )
GdkVisual *visual = wxTheApp->GetGdkVisual();
bool wxBitmap::CreateFromImage( const wxImage& image, int depth )
{
+ UnRef();
+
wxCHECK_MSG( image.Ok(), FALSE, wxT("invalid image") )
wxCHECK_MSG( depth == -1 || depth == 1, FALSE, wxT("invalid bitmap depth") )
if (bpp > 8)
{
if ((visual->red_mask > visual->green_mask) && (visual->green_mask > visual->blue_mask)) b_o = RGB;
- else if ((visual->red_mask > visual->blue_mask) && (visual->blue_mask > visual->green_mask)) b_o = RGB;
+ else if ((visual->red_mask > visual->blue_mask) && (visual->blue_mask > visual->green_mask)) b_o = RBG;
else if ((visual->blue_mask > visual->red_mask) && (visual->red_mask > visual->green_mask)) b_o = BRG;
else if ((visual->blue_mask > visual->green_mask) && (visual->green_mask > visual->red_mask)) b_o = BGR;
else if ((visual->green_mask > visual->red_mask) && (visual->red_mask > visual->blue_mask)) b_o = GRB;
// Try to save the bitmap via wxImage handlers:
{
- wxImage image( *this );
+ wxImage image = ConvertToImage();
if (image.Ok()) return image.SaveFile( name, type );
}
{
wxImage image;
if (!image.LoadFile( name, type )) return FALSE;
- if (image.Ok()) *this = image.ConvertToBitmap();
+ if (image.Ok())
+ *this = wxBitmap(image);
else return FALSE;
}