1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: src/generic/mask.cpp
3 // Purpose: generic wxMask implementation
4 // Author: Vadim Zeitlin
5 // Created: 2006-09-28
6 // RCS-ID: $Id: mask.cpp 41495 2006-09-28 23:02:39Z VZ $
7 // Copyright: (c) 2006 Vadim Zeitlin <vadim@wxwindows.org>
8 // Licence: wxWindows licence
9 ///////////////////////////////////////////////////////////////////////////////
10
11 // ============================================================================
12 // declarations
13 // ============================================================================
14
15 // ----------------------------------------------------------------------------
16 // headers
17 // ----------------------------------------------------------------------------
18
19 // for compilers that support precompilation, includes "wx.h".
20 #include "wx/wxprec.h"
21
22 #ifdef __BORLANDC__
23 #pragma hdrstop
24 #endif
25
26 #ifndef WX_PRECOMP
27 #include "wx/bitmap.h"
28 #include "wx/image.h"
29 #endif // WX_PRECOMP
30
31 #if wxUSE_GENERIC_MASK
32
33 // ============================================================================
34 // wxMask implementation
35 // ============================================================================
36
IMPLEMENT_DYNAMIC_CLASS(wxMask,wxObject)37 IMPLEMENT_DYNAMIC_CLASS(wxMask, wxObject)
38
39 void wxMask::FreeData()
40 {
41 m_bitmap = wxNullBitmap;
42 }
43
InitFromColour(const wxBitmap & bitmap,const wxColour & colour)44 bool wxMask::InitFromColour(const wxBitmap& bitmap, const wxColour& colour)
45 {
46 #if wxUSE_IMAGE
47 const wxColour clr(bitmap.QuantizeColour(colour));
48
49 wxImage imgSrc(bitmap.ConvertToImage());
50 imgSrc.SetMask(false);
51 wxImage image(imgSrc.ConvertToMono(clr.Red(), clr.Green(), clr.Blue()));
52 if ( !image.Ok() )
53 return false;
54
55 m_bitmap = wxBitmap(image, 1);
56
57 return m_bitmap.Ok();
58 #else // !wxUSE_IMAGE
59 wxUnusedVar(bitmap);
60 wxUnusedVar(colour);
61
62 return false;
63 #endif // wxUSE_IMAGE/!wxUSE_IMAGE
64 }
65
InitFromMonoBitmap(const wxBitmap & bitmap)66 bool wxMask::InitFromMonoBitmap(const wxBitmap& bitmap)
67 {
68 wxCHECK_MSG( bitmap.Ok(), false, wxT("Invalid bitmap") );
69 wxCHECK_MSG( bitmap.GetDepth() == 1, false, wxT("Cannot create mask from colour bitmap") );
70
71 m_bitmap = bitmap;
72
73 return true;
74 }
75
76 #endif // wxUSE_GENERIC_MASK
77