]> git.saurik.com Git - wxWidgets.git/commitdiff
cleanup of raw access to bitmaps:
authorVáclav Slavík <vslavik@fastmail.fm>
Tue, 10 Jul 2007 13:32:25 +0000 (13:32 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Tue, 10 Jul 2007 13:32:25 +0000 (13:32 +0000)
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

include/wx/cocoa/bitmap.h
include/wx/gtk/bitmap.h
include/wx/gtk1/bitmap.h
include/wx/palmos/bitmap.h
include/wx/rawbmp.h
samples/image/image.cpp
src/cocoa/bitmap.mm
src/gtk/bitmap.cpp
src/gtk1/bitmap.cpp
src/palmos/bitmap.cpp

index 14618f01033f1f77f04f04c63db4e7f1b33086cf..866b51a984d7e22c4f97a4d86dd77f244e595d35 100644 (file)
@@ -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);
index 9353049eb3fa450e67f1ad9d07f9f1d010911cdf..d78e4cab6d989ddc989138d57913713a04da604a 100644 (file)
@@ -117,7 +117,6 @@ public:
     void UngetRawData(wxPixelDataBase& data);
 
     bool HasAlpha() const;
-    void UseAlpha();
 
 protected:
     bool CreateFromImage(const wxImage& image, int depth);
index 5ecc5920ee7ef0cb528610b16b528f0a080c6342..e41dbc4b61d8a2ca5495630d435bc698baf92937 100644 (file)
@@ -130,7 +130,6 @@ public:
     void UngetRawData(wxPixelDataBase& data);
 
     bool HasAlpha() const;
-    void UseAlpha();
 
 protected:
     bool CreateFromImage(const wxImage& image, int depth);
index 1dece9b6bd5473ad048ded093e575af6d9fa7c1b..e55d2d1c6dbfd7da5c4a15d5fda36763ec775fb3 100644 (file)
@@ -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
     // -------------------------------
index d91754c8790a7fc59f20dbb1021341743a103408..cdd4e66759a4ecfd821c3a8a4aa89296d9f157a8 100644 (file)
@@ -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<wxBitmap>
             {
                 m_ptr = NULL;
             }
-            
+
             // return true if this iterator is valid
             bool IsOk() const { return m_ptr != NULL; }
 
@@ -631,11 +631,22 @@ struct wxPixelDataOut<wxBitmap>
         // 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<wxBitmap>
         }
     };
 };
+
 #endif //wxUSE_GUI
 
 template <class Image, class PixelFormat = wxPixelFormatFor<Image> >
@@ -709,5 +721,4 @@ struct wxPixelIterator : public wxPixelData<Image, PixelFormat>::Iterator
 {
 };
 
-#endif // _WX_RAWBMP_H_BASE_
-
+#endif // _WX_RAWBMP_H_
index 1b1a20f77fddb324b0e11a15b3922324ed6cae17..2ea3512b84168aefd7e054cedb0be1b2d2afd459 100644 (file)
@@ -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 )
index 452a92cbeedf9564a0464c5f915f4fef049794ed..ff0cb8cd36aaf035a9d179ba5194f1cbf73d834e 100644 (file)
@@ -483,10 +483,6 @@ void wxBitmap::UngetRawData(wxPixelDataBase& data)
 {   // TODO
 }
 
-void wxBitmap::UseAlpha()
-{   // TODO
-}
-
 // ========================================================================
 // wxMask
 // ========================================================================
index 28ed8d1e561a3095455cc0c2ee9ca7f4d101b013..0a2cf3fca6ab90ec57f34217ab16fbd5ceed756e 100644 (file)
@@ -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;
index c5d1e1685f4fe96705e4255fe993728a0b08ffd9..5948f4dfdf47cbb92ab0aec104dec077a8ba9c5a 100644 (file)
@@ -1377,10 +1377,6 @@ bool wxBitmap::HasAlpha() const
     return false;
 }
 
-void wxBitmap::UseAlpha()
-{
-}
-
 //-----------------------------------------------------------------------------
 // wxBitmapHandler
 //-----------------------------------------------------------------------------
index 5855685a63e6f1dab30814777ee4b99183d4f84d..9af1c0882f450e64dcd24dea5c823b067d75a850 100644 (file)
@@ -331,10 +331,6 @@ wxDC *wxBitmap::GetSelectedInto() const
 
 #endif
 
-void wxBitmap::UseAlpha()
-{
-}
-
 bool wxBitmap::HasAlpha() const
 {
     return false;