X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1a1498c08b07625baa087622e75637a2f15325b6..1c104648931c9e1b52b243732d9dacf28703f5dc:/src/mac/carbon/brush.cpp diff --git a/src/mac/carbon/brush.cpp b/src/mac/carbon/brush.cpp index 5846462020..95bb600893 100644 --- a/src/mac/carbon/brush.cpp +++ b/src/mac/carbon/brush.cpp @@ -11,9 +11,12 @@ #include "wx/wxprec.h" -#include "wx/utils.h" #include "wx/brush.h" +#ifndef WX_PRECOMP + #include "wx/utils.h" +#endif + #include "wx/mac/private.h" IMPLEMENT_DYNAMIC_CLASS(wxBrush, wxGDIObject) @@ -21,10 +24,23 @@ IMPLEMENT_DYNAMIC_CLASS(wxBrush, wxGDIObject) class WXDLLEXPORT wxBrushRefData: public wxGDIRefData { friend class WXDLLEXPORT wxBrush; + public: wxBrushRefData(); wxBrushRefData(const wxBrushRefData& data); - ~wxBrushRefData(); + virtual ~wxBrushRefData(); + + bool operator == ( const wxBrushRefData& brush ) const + { + return m_style == brush.m_style && + m_stipple.IsSameAs(brush.m_stipple) && + m_colour == brush.m_colour && + m_macBrushKind == brush.m_macBrushKind && + m_macThemeBrush == brush.m_macThemeBrush && + m_macThemeBackground == brush.m_macThemeBackground && + EqualRect(&m_macThemeBackgroundExtent, &brush.m_macThemeBackgroundExtent); + } + protected: wxMacBrushKind m_macBrushKind ; @@ -40,6 +56,7 @@ protected: #define M_BRUSHDATA ((wxBrushRefData *)m_refData) + wxBrushRefData::wxBrushRefData() : m_style(wxSOLID) { @@ -62,7 +79,6 @@ wxBrushRefData::~wxBrushRefData() { } -// Brushes wxBrush::wxBrush() { } @@ -96,7 +112,7 @@ wxBrush::wxBrush(const wxBitmap& stipple) RealizeResource(); } -wxBrush::wxBrush(ThemeBrush macThemeBrush ) +wxBrush::wxBrush( ThemeBrush macThemeBrush ) { m_refData = new wxBrushRefData; @@ -105,6 +121,7 @@ wxBrush::wxBrush(ThemeBrush macThemeBrush ) RealizeResource(); } + void wxBrush::Unshare() { // Don't change shared data @@ -165,9 +182,10 @@ void wxBrush::MacSetTheme(ThemeBrush macThemeBrush) M_BRUSHDATA->m_macBrushKind = kwxMacBrushTheme; M_BRUSHDATA->m_macThemeBrush = macThemeBrush; + RGBColor color ; GetThemeBrushAsColor( macThemeBrush , 32, true, &color ); - M_BRUSHDATA->m_colour.Set( color.red >> 8 , color.green >> 8 , color.blue >> 8 ) ; + M_BRUSHDATA->m_colour.Set( color.red >> 8 , color.green >> 8 , color.blue >> 8 ); RealizeResource(); } @@ -178,7 +196,8 @@ void wxBrush::MacSetThemeBackground(unsigned long macThemeBackground, const WXRE M_BRUSHDATA->m_macBrushKind = kwxMacBrushThemeBackground; M_BRUSHDATA->m_macThemeBackground = macThemeBackground; - M_BRUSHDATA->m_macThemeBackgroundExtent = *(Rect*)extent ; + M_BRUSHDATA->m_macThemeBackgroundExtent = *(Rect*)extent; + RealizeResource(); } @@ -187,23 +206,24 @@ bool wxBrush::RealizeResource() return true; } -unsigned long wxBrush::MacGetThemeBackground( WXRECTPTR extent) const +unsigned long wxBrush::MacGetThemeBackground(WXRECTPTR extent) const { if ( M_BRUSHDATA && M_BRUSHDATA->m_macBrushKind == kwxMacBrushThemeBackground ) { if ( extent ) - *(Rect*)extent = M_BRUSHDATA->m_macThemeBackgroundExtent ; - return M_BRUSHDATA->m_macThemeBackground ; + *(Rect*)extent = M_BRUSHDATA->m_macThemeBackgroundExtent; + + return M_BRUSHDATA->m_macThemeBackground; } else { - return 0 ; + return 0; } } short wxBrush::MacGetTheme() const { - return (M_BRUSHDATA ? ( M_BRUSHDATA->m_macBrushKind == kwxMacBrushTheme ? M_BRUSHDATA->m_macThemeBrush : kThemeBrushBlack) : kThemeBrushBlack); + return (M_BRUSHDATA ? ((M_BRUSHDATA->m_macBrushKind == kwxMacBrushTheme) ? M_BRUSHDATA->m_macThemeBrush : kThemeBrushBlack) : kThemeBrushBlack); } wxColour& wxBrush::GetColour() const @@ -221,7 +241,16 @@ wxBitmap *wxBrush::GetStipple() const return (M_BRUSHDATA ? & M_BRUSHDATA->m_stipple : 0); } -wxMacBrushKind wxBrush::MacGetBrushKind() const +wxMacBrushKind wxBrush::MacGetBrushKind() const { return (M_BRUSHDATA ? M_BRUSHDATA->m_macBrushKind : kwxMacBrushColour); } + +bool wxBrush::operator == ( const wxBrush& brush ) const +{ + if (m_refData == brush.m_refData) return true; + + if (!m_refData || !brush.m_refData) return false; + + return ( *(wxBrushRefData*)m_refData == *(wxBrushRefData*)brush.m_refData ); +}