X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/35d2f1b82e57689639183479b23cf13a6402fafa..3ab6b7e64c3f3e0ad945976dad35677fdf41dd35:/src/gtk/bitmap.cpp diff --git a/src/gtk/bitmap.cpp b/src/gtk/bitmap.cpp index 28ed8d1e56..91aa96accf 100644 --- a/src/gtk/bitmap.cpp +++ b/src/gtk/bitmap.cpp @@ -181,12 +181,14 @@ GdkBitmap *wxMask::GetBitmap() const // wxBitmap //----------------------------------------------------------------------------- -class wxBitmapRefData: public wxObjectRefData +class wxBitmapRefData: public wxGDIRefData { public: wxBitmapRefData(); virtual ~wxBitmapRefData(); + virtual bool IsOk() const { return m_pixmap || m_pixbuf; } + GdkPixmap *m_pixmap; GdkPixbuf *m_pixbuf; wxMask *m_mask; @@ -363,6 +365,8 @@ wxBitmap wxBitmap::Rescale(int clipx, int clipy, int clipwidth, int clipheight, return bmp; } +#if wxUSE_IMAGE + bool wxBitmap::CreateFromImage(const wxImage& image, int depth) { UnRef(); @@ -593,14 +597,7 @@ wxImage wxBitmap::ConvertToImage() const return image; } -bool wxBitmap::IsOk() const -{ - return (m_refData != NULL) && - ( - M_BMPDATA->m_pixbuf || - M_BMPDATA->m_pixmap - ); -} +#endif // wxUSE_IMAGE int wxBitmap::GetHeight() const { @@ -692,9 +689,16 @@ bool wxBitmap::SaveFile( const wxString &name, wxBitmapType type, const wxPalett { wxCHECK_MSG( Ok(), false, wxT("invalid bitmap") ); +#if wxUSE_IMAGE // Try to save the bitmap via wxImage handlers: wxImage image = ConvertToImage(); return image.Ok() && image.SaveFile(name, type); +#else // !wxUSE_IMAGE + wxUnusedVar(name); + wxUnusedVar(type); + + return false; +#endif // wxUSE_IMAGE } bool wxBitmap::LoadFile( const wxString &name, wxBitmapType type ) @@ -712,12 +716,14 @@ bool wxBitmap::LoadFile( const wxString &name, wxBitmapType type ) M_BMPDATA->m_mask->m_bitmap = mask; } } +#if wxUSE_IMAGE else // try if wxImage can load it { wxImage image; if (image.LoadFile(name, type) && image.Ok()) CreateFromImage(image, -1); } +#endif // wxUSE_IMAGE return Ok(); } @@ -786,7 +792,7 @@ GdkPixmap *wxBitmap::GetPixmap() const gdk_pixbuf_render_pixmap_and_mask(M_BMPDATA->m_pixbuf, &M_BMPDATA->m_pixmap, pmask, - wxIMAGE_ALPHA_THRESHOLD); + 0x80 /* alpha threshold */); } return M_BMPDATA->m_pixmap; @@ -917,25 +923,12 @@ bool wxBitmap::HasAlpha() const gdk_pixbuf_get_has_alpha(M_BMPDATA->m_pixbuf); } -void wxBitmap::UseAlpha() -{ - GdkPixbuf* pixbuf = GetPixbuf(); - // add alpha if necessary - if (!gdk_pixbuf_get_has_alpha(pixbuf)) - { - M_BMPDATA->m_pixbuf = NULL; - AllocExclusive(); - M_BMPDATA->m_pixbuf = gdk_pixbuf_add_alpha(pixbuf, false, 0, 0, 0); - g_object_unref(pixbuf); - } -} - -wxObjectRefData* wxBitmap::CreateRefData() const +wxGDIRefData* wxBitmap::CreateGDIRefData() const { return new wxBitmapRefData; } -wxObjectRefData* wxBitmap::CloneRefData(const wxObjectRefData* data) const +wxGDIRefData* wxBitmap::CloneGDIRefData(const wxGDIRefData* data) const { const wxBitmapRefData* oldRef = wx_static_cast(const wxBitmapRefData*, data); wxBitmapRefData* newRef = new wxBitmapRefData;