X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/533b005afddad05e3d126b5d3ad9227e8eb05701..3cfe87da6e54dc7ce367c6028cf659667e695413:/src/gtk/bitmap.cpp diff --git a/src/gtk/bitmap.cpp b/src/gtk/bitmap.cpp index bc18293081..663c9ec721 100644 --- a/src/gtk/bitmap.cpp +++ b/src/gtk/bitmap.cpp @@ -304,9 +304,6 @@ wxBitmap wxBitmap::Rescale(int clipx, int clipy, int clipwidth, int clipheight, wxCHECK_MSG(Ok(), bmp, wxT("invalid bitmap")); - if (newx==M_BMPDATA->m_width && newy==M_BMPDATA->m_height) - return *this; - int width = wxMax(newx, 1); int height = wxMax(newy, 1); width = wxMin(width, clipwidth); @@ -336,7 +333,7 @@ wxBitmap wxBitmap::Rescale(int clipx, int clipy, int clipwidth, int clipheight, // images, but the only one which preserves sharp edges gdk_pixbuf_scale( pixbuf, pixbuf_scaled, - 0, 0, width, height, clipx, clipy, scale_x, scale_y, + 0, 0, width, height, -clipx, -clipy, scale_x, scale_y, GDK_INTERP_NEAREST); g_object_unref(pixbuf); @@ -353,7 +350,7 @@ wxBitmap wxBitmap::Rescale(int clipx, int clipy, int clipwidth, int clipheight, gdk_pixbuf_scale( pixbuf, pixbuf_scaled, - 0, 0, width, height, clipx, clipy, scale_x, scale_y, + 0, 0, width, height, -clipx, -clipy, scale_x, scale_y, GDK_INTERP_NEAREST); g_object_unref(pixbuf); @@ -366,6 +363,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(); @@ -596,6 +595,8 @@ wxImage wxBitmap::ConvertToImage() const return image; } +#endif // wxUSE_IMAGE + bool wxBitmap::IsOk() const { return (m_refData != NULL) && @@ -695,9 +696,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 ) @@ -715,12 +723,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(); } @@ -789,7 +799,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; @@ -920,19 +930,6 @@ 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 { return new wxBitmapRefData;