#include "wx/rawbmp.h"
#include "wx/gtk/private/object.h"
+#include "wx/gtk/private.h"
#include <gtk/gtk.h>
}
}
+wxBitmap::wxBitmap(GdkPixbuf* pixbuf)
+{
+ if (pixbuf)
+ {
+ wxBitmapRefData* bmpData = new wxBitmapRefData(
+ gdk_pixbuf_get_width(pixbuf), gdk_pixbuf_get_height(pixbuf),
+ gdk_pixbuf_get_n_channels(pixbuf) * 8);
+ m_refData = bmpData;
+ bmpData->m_pixbuf = pixbuf;
+ }
+}
+
wxBitmap::~wxBitmap()
{
}
default: break;
}
return type_name &&
- gdk_pixbuf_save(GetPixbuf(), name.fn_str(), type_name, NULL, NULL);
+ gdk_pixbuf_save(GetPixbuf(), wxGTK_CONV_FN(name), type_name, NULL, NULL);
}
bool wxBitmap::LoadFile( const wxString &name, wxBitmapType type )
{
wxUnusedVar(type); // The type is detected automatically by GDK.
- UnRef();
- GdkPixbuf* pixbuf = gdk_pixbuf_new_from_file(name.fn_str(), NULL);
- if (pixbuf)
- SetPixbuf(pixbuf);
+ *this = wxBitmap(gdk_pixbuf_new_from_file(wxGTK_CONV_FN(name), NULL));
}
return IsOk();
return M_BMPDATA->m_pixbuf != NULL;
}
-void wxBitmap::SetPixbuf(GdkPixbuf* pixbuf)
-{
- UnRef();
-
- if (!pixbuf)
- return;
-
- int depth = -1;
- if (gdk_pixbuf_get_has_alpha(pixbuf))
- depth = 32;
- m_refData = new wxBitmapRefData(
- gdk_pixbuf_get_width(pixbuf), gdk_pixbuf_get_height(pixbuf), depth);
-
- M_BMPDATA->m_pixbuf = pixbuf;
-}
-
void wxBitmap::PurgeOtherRepresentations(wxBitmap::Representation keep)
{
if (keep == Pixmap && HasPixbuf())