From: Václav Slavík Date: Tue, 10 Jul 2007 13:32:25 +0000 (+0000) Subject: cleanup of raw access to bitmaps: X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/650c0aa9180563eece310851973171cfaac83ad8 cleanup of raw access to bitmaps: 1. remove UseAlpha() on platforms that don't need it and call it automatically from ~wxPixelData instead of requiring explicit call; deprecate wxPixelData::UseAlpha() 2. don't call UngetRawData() if GetRawData() failed git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47295 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/cocoa/bitmap.h b/include/wx/cocoa/bitmap.h index 14618f0103..866b51a984 100644 --- a/include/wx/cocoa/bitmap.h +++ b/include/wx/cocoa/bitmap.h @@ -122,7 +122,6 @@ public: // raw bitmap access support functions void *GetRawData(wxPixelDataBase& data, int bpp); void UngetRawData(wxPixelDataBase& data); - void UseAlpha(); wxPalette* GetPalette() const; void SetPalette(const wxPalette& palette); diff --git a/include/wx/gtk/bitmap.h b/include/wx/gtk/bitmap.h index 9353049eb3..d78e4cab6d 100644 --- a/include/wx/gtk/bitmap.h +++ b/include/wx/gtk/bitmap.h @@ -117,7 +117,6 @@ public: void UngetRawData(wxPixelDataBase& data); bool HasAlpha() const; - void UseAlpha(); protected: bool CreateFromImage(const wxImage& image, int depth); diff --git a/include/wx/gtk1/bitmap.h b/include/wx/gtk1/bitmap.h index 5ecc5920ee..e41dbc4b61 100644 --- a/include/wx/gtk1/bitmap.h +++ b/include/wx/gtk1/bitmap.h @@ -130,7 +130,6 @@ public: void UngetRawData(wxPixelDataBase& data); bool HasAlpha() const; - void UseAlpha(); protected: bool CreateFromImage(const wxImage& image, int depth); diff --git a/include/wx/palmos/bitmap.h b/include/wx/palmos/bitmap.h index 1dece9b6bd..e55d2d1c6d 100644 --- a/include/wx/palmos/bitmap.h +++ b/include/wx/palmos/bitmap.h @@ -135,7 +135,6 @@ public: // these functions are internal and shouldn't be used, they risk to // disappear in the future bool HasAlpha() const; - void UseAlpha(); // implementation only from now on // ------------------------------- diff --git a/include/wx/rawbmp.h b/include/wx/rawbmp.h index d91754c879..cdd4e66759 100644 --- a/include/wx/rawbmp.h +++ b/include/wx/rawbmp.h @@ -9,8 +9,8 @@ // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// -#ifndef _WX_RAWBMP_H_BASE_ -#define _WX_RAWBMP_H_BASE_ +#ifndef _WX_RAWBMP_H_ +#define _WX_RAWBMP_H_ #include "wx/image.h" @@ -525,7 +525,7 @@ struct wxPixelDataOut { m_ptr = NULL; } - + // return true if this iterator is valid bool IsOk() const { return m_ptr != NULL; } @@ -631,11 +631,22 @@ struct wxPixelDataOut // dtor unlocks the bitmap ~wxPixelDataIn() { - m_bmp.UngetRawData(*this); + if ( m_pixels.IsOk() ) + { +#if defined(__WXMSW__) || defined(__WXMAC__) + // this is a hack to mark wxBitmap as using alpha channel + if ( Format::HasAlpha ) + m_bmp.UseAlpha(); +#endif + m_bmp.UngetRawData(*this); + } + // else: don't call UngetRawData() if GetRawData() failed } - // call this to indicate that we should use the alpha channel - void UseAlpha() { m_bmp.UseAlpha(); } +#if WXWIN_COMPATIBILITY_2_8 + // not needed anymore, calls to it should be simply removed + wxDEPRECATED( inline void UseAlpha() {} ); +#endif // private: -- see comment in the beginning of the file @@ -656,6 +667,7 @@ struct wxPixelDataOut } }; }; + #endif //wxUSE_GUI template > @@ -709,5 +721,4 @@ struct wxPixelIterator : public wxPixelData::Iterator { }; -#endif // _WX_RAWBMP_H_BASE_ - +#endif // _WX_RAWBMP_H_ diff --git a/samples/image/image.cpp b/samples/image/image.cpp index 1b1a20f77f..2ea3512b84 100644 --- a/samples/image/image.cpp +++ b/samples/image/image.cpp @@ -397,7 +397,6 @@ public: wxLogError(_T("Failed to gain raw access to bitmap data")); return; } - data.UseAlpha(); wxAlphaPixelData::Iterator p(data); for ( int y = 0; y < SIZE; ++y ) { @@ -421,7 +420,6 @@ public: return; } - data.UseAlpha(); wxAlphaPixelData::Iterator p(data); for ( int y = 0; y < REAL_SIZE; ++y ) diff --git a/src/cocoa/bitmap.mm b/src/cocoa/bitmap.mm index 452a92cbee..ff0cb8cd36 100644 --- a/src/cocoa/bitmap.mm +++ b/src/cocoa/bitmap.mm @@ -483,10 +483,6 @@ void wxBitmap::UngetRawData(wxPixelDataBase& data) { // TODO } -void wxBitmap::UseAlpha() -{ // TODO -} - // ======================================================================== // wxMask // ======================================================================== diff --git a/src/gtk/bitmap.cpp b/src/gtk/bitmap.cpp index 28ed8d1e56..0a2cf3fca6 100644 --- a/src/gtk/bitmap.cpp +++ b/src/gtk/bitmap.cpp @@ -917,19 +917,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; diff --git a/src/gtk1/bitmap.cpp b/src/gtk1/bitmap.cpp index c5d1e1685f..5948f4dfdf 100644 --- a/src/gtk1/bitmap.cpp +++ b/src/gtk1/bitmap.cpp @@ -1377,10 +1377,6 @@ bool wxBitmap::HasAlpha() const return false; } -void wxBitmap::UseAlpha() -{ -} - //----------------------------------------------------------------------------- // wxBitmapHandler //----------------------------------------------------------------------------- diff --git a/src/palmos/bitmap.cpp b/src/palmos/bitmap.cpp index 5855685a63..9af1c0882f 100644 --- a/src/palmos/bitmap.cpp +++ b/src/palmos/bitmap.cpp @@ -331,10 +331,6 @@ wxDC *wxBitmap::GetSelectedInto() const #endif -void wxBitmap::UseAlpha() -{ -} - bool wxBitmap::HasAlpha() const { return false;