From: Paul Cornett Date: Sat, 17 Oct 2009 20:06:34 +0000 (+0000) Subject: derive wxMask from wxMaskBase X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/60a3d1c65bc65df9f9ba486587e3fab216beb470 derive wxMask from wxMaskBase git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62444 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/gtk/bitmap.h b/include/wx/gtk/bitmap.h index 32a612d4a9..b2d1c0eb37 100644 --- a/include/wx/gtk/bitmap.h +++ b/include/wx/gtk/bitmap.h @@ -17,7 +17,7 @@ class WXDLLIMPEXP_FWD_CORE wxPixelDataBase; // wxMask //----------------------------------------------------------------------------- -class WXDLLIMPEXP_CORE wxMask: public wxObject +class WXDLLIMPEXP_CORE wxMask: public wxMaskBase { public: wxMask(); @@ -28,18 +28,15 @@ public: wxMask( const wxBitmap& bitmap ); virtual ~wxMask(); - bool Create( const wxBitmap& bitmap, const wxColour& colour ); -#if wxUSE_PALETTE - bool Create( const wxBitmap& bitmap, int paletteIndex ); -#endif // wxUSE_PALETTE - bool Create( const wxBitmap& bitmap ); - // implementation GdkBitmap *m_bitmap; - GdkBitmap *GetBitmap() const; -private: +protected: + virtual void FreeData(); + virtual bool InitFromColour(const wxBitmap& bitmap, const wxColour& colour); + virtual bool InitFromMonoBitmap(const wxBitmap& bitmap); + DECLARE_DYNAMIC_CLASS(wxMask) }; diff --git a/src/gtk/bitmap.cpp b/src/gtk/bitmap.cpp index 65619c3d57..13d315e699 100644 --- a/src/gtk/bitmap.cpp +++ b/src/gtk/bitmap.cpp @@ -37,7 +37,7 @@ extern GtkWidget *wxGetRootWindow(); // wxMask //----------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(wxMask,wxObject) +IMPLEMENT_DYNAMIC_CLASS(wxMask, wxMaskBase) wxMask::wxMask() { @@ -47,7 +47,7 @@ wxMask::wxMask() wxMask::wxMask( const wxBitmap& bitmap, const wxColour& colour ) { m_bitmap = NULL; - Create( bitmap, colour ); + InitFromColour(bitmap, colour); } #if wxUSE_PALETTE @@ -61,7 +61,7 @@ wxMask::wxMask( const wxBitmap& bitmap, int paletteIndex ) wxMask::wxMask( const wxBitmap& bitmap ) { m_bitmap = NULL; - Create( bitmap ); + InitFromMonoBitmap(bitmap); } wxMask::~wxMask() @@ -70,15 +70,17 @@ wxMask::~wxMask() g_object_unref (m_bitmap); } -bool wxMask::Create( const wxBitmap& bitmap, - const wxColour& colour ) +void wxMask::FreeData() { if (m_bitmap) { g_object_unref (m_bitmap); m_bitmap = NULL; } +} +bool wxMask::InitFromColour(const wxBitmap& bitmap, const wxColour& colour) +{ const int w = bitmap.GetWidth(); const int h = bitmap.GetHeight(); @@ -136,28 +138,8 @@ bool wxMask::Create( const wxBitmap& bitmap, return true; } -#if wxUSE_PALETTE -bool wxMask::Create( const wxBitmap& bitmap, int paletteIndex ) -{ - unsigned char r,g,b; - wxPalette *pal = bitmap.GetPalette(); - - wxCHECK_MSG( pal, false, wxT("Cannot create mask from bitmap without palette") ); - - pal->GetRGB(paletteIndex, &r, &g, &b); - - return Create(bitmap, wxColour(r, g, b)); -} -#endif // wxUSE_PALETTE - -bool wxMask::Create( const wxBitmap& bitmap ) +bool wxMask::InitFromMonoBitmap(const wxBitmap& bitmap) { - if (m_bitmap) - { - g_object_unref (m_bitmap); - m_bitmap = NULL; - } - if (!bitmap.IsOk()) return false; wxCHECK_MSG( bitmap.GetDepth() == 1, false, wxT("Cannot create mask from colour bitmap") );