derive wxMask from wxMaskBase

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62444 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Paul Cornett
2009-10-17 20:06:34 +00:00
parent 8478ed64d7
commit 60a3d1c65b
2 changed files with 14 additions and 35 deletions

View File

@@ -17,7 +17,7 @@ class WXDLLIMPEXP_FWD_CORE wxPixelDataBase;
// wxMask // wxMask
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class WXDLLIMPEXP_CORE wxMask: public wxObject class WXDLLIMPEXP_CORE wxMask: public wxMaskBase
{ {
public: public:
wxMask(); wxMask();
@@ -28,18 +28,15 @@ public:
wxMask( const wxBitmap& bitmap ); wxMask( const wxBitmap& bitmap );
virtual ~wxMask(); 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 // implementation
GdkBitmap *m_bitmap; GdkBitmap *m_bitmap;
GdkBitmap *GetBitmap() const; 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) DECLARE_DYNAMIC_CLASS(wxMask)
}; };

View File

@@ -37,7 +37,7 @@ extern GtkWidget *wxGetRootWindow();
// wxMask // wxMask
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxMask,wxObject) IMPLEMENT_DYNAMIC_CLASS(wxMask, wxMaskBase)
wxMask::wxMask() wxMask::wxMask()
{ {
@@ -47,7 +47,7 @@ wxMask::wxMask()
wxMask::wxMask( const wxBitmap& bitmap, const wxColour& colour ) wxMask::wxMask( const wxBitmap& bitmap, const wxColour& colour )
{ {
m_bitmap = NULL; m_bitmap = NULL;
Create( bitmap, colour ); InitFromColour(bitmap, colour);
} }
#if wxUSE_PALETTE #if wxUSE_PALETTE
@@ -61,7 +61,7 @@ wxMask::wxMask( const wxBitmap& bitmap, int paletteIndex )
wxMask::wxMask( const wxBitmap& bitmap ) wxMask::wxMask( const wxBitmap& bitmap )
{ {
m_bitmap = NULL; m_bitmap = NULL;
Create( bitmap ); InitFromMonoBitmap(bitmap);
} }
wxMask::~wxMask() wxMask::~wxMask()
@@ -70,15 +70,17 @@ wxMask::~wxMask()
g_object_unref (m_bitmap); g_object_unref (m_bitmap);
} }
bool wxMask::Create( const wxBitmap& bitmap, void wxMask::FreeData()
const wxColour& colour )
{ {
if (m_bitmap) if (m_bitmap)
{ {
g_object_unref (m_bitmap); g_object_unref (m_bitmap);
m_bitmap = NULL; m_bitmap = NULL;
} }
}
bool wxMask::InitFromColour(const wxBitmap& bitmap, const wxColour& colour)
{
const int w = bitmap.GetWidth(); const int w = bitmap.GetWidth();
const int h = bitmap.GetHeight(); const int h = bitmap.GetHeight();
@@ -136,28 +138,8 @@ bool wxMask::Create( const wxBitmap& bitmap,
return true; return true;
} }
#if wxUSE_PALETTE bool wxMask::InitFromMonoBitmap(const wxBitmap& bitmap)
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 )
{
if (m_bitmap)
{
g_object_unref (m_bitmap);
m_bitmap = NULL;
}
if (!bitmap.IsOk()) return false; if (!bitmap.IsOk()) return false;
wxCHECK_MSG( bitmap.GetDepth() == 1, false, wxT("Cannot create mask from colour bitmap") ); wxCHECK_MSG( bitmap.GetDepth() == 1, false, wxT("Cannot create mask from colour bitmap") );