X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1a1498c08b07625baa087622e75637a2f15325b6..edd6813c826edc2311548da53eb83e7f1bc18d2b:/src/os2/brush.cpp diff --git a/src/os2/brush.cpp b/src/os2/brush.cpp index eeb6af0c86..73ac78a709 100644 --- a/src/os2/brush.cpp +++ b/src/os2/brush.cpp @@ -13,13 +13,12 @@ #include "wx/wxprec.h" #ifndef WX_PRECOMP -#include -#include "wx/setup.h" -#include "wx/list.h" -#include "wx/utils.h" -#include "wx/app.h" -#include "wx/brush.h" -#include "wx/log.h" + #include + #include "wx/list.h" + #include "wx/utils.h" + #include "wx/app.h" + #include "wx/brush.h" + #include "wx/log.h" #endif #include "wx/os2/private.h" @@ -35,9 +34,7 @@ wxBrushRefData::wxBrushRefData() memset(&m_vBundle, '\0', sizeof(AREABUNDLE)); } // end of wxBrushRefData::wxBrushRefData -wxBrushRefData::wxBrushRefData( - const wxBrushRefData& rData -) +wxBrushRefData::wxBrushRefData(const wxBrushRefData& rData) { m_nStyle = rData.m_nStyle; m_vStipple = rData.m_vStipple; @@ -55,19 +52,15 @@ wxBrushRefData::~wxBrushRefData() // wxBrush::wxBrush() { - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); } // end of wxBrush::wxBrush wxBrush::~wxBrush() { - if ( wxTheBrushList ) - wxTheBrushList->RemoveBrush(this); } // end of wxBrush::~wxBrush wxBrush::wxBrush( const wxColour& rColour -, int nStyle +, wxBrushStyle nStyle ) { m_refData = new wxBrushRefData; @@ -78,14 +71,9 @@ wxBrush::wxBrush( memset(&M_BRUSHDATA->m_vBundle, '\0', sizeof(AREABUNDLE)); RealizeResource(); - - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); } // end of wxBrush::wxBrush -wxBrush::wxBrush( - const wxBitmap& rStipple -) +wxBrush::wxBrush(const wxBitmap& rStipple) { m_refData = new wxBrushRefData; @@ -95,9 +83,6 @@ wxBrush::wxBrush( memset(&M_BRUSHDATA->m_vBundle, '\0', sizeof(AREABUNDLE)); RealizeResource(); - - if ( wxTheBrushList ) - wxTheBrushList->AddBrush(this); } // end of wxBrush::wxBrush bool wxBrush::RealizeResource() @@ -212,8 +197,8 @@ bool wxBrush::RealizeResource() bOk = (bool)::GpiSetAttrs( M_BRUSHDATA->m_hBrush ,PRIM_AREA ,ABB_COLOR | ABB_BACK_COLOR | ABB_MIX_MODE | ABB_BACK_MIX_MODE | - ABB_SET | ABB_SYMBOL - ,ABB_REF_POINT + ABB_SET | ABB_SYMBOL | ABB_REF_POINT + ,ABB_SET | ABB_SYMBOL | ABB_REF_POINT ,&M_BRUSHDATA->m_vBundle ); if (!bOk) @@ -227,7 +212,7 @@ bool wxBrush::RealizeResource() return false; } // end of wxBrush::RealizeResource -WXHANDLE wxBrush::GetResourceHandle() +WXHANDLE wxBrush::GetResourceHandle() const { if (!M_BRUSHDATA) return 0; @@ -249,40 +234,23 @@ bool wxBrush::IsFree() const return (M_BRUSHDATA && (M_BRUSHDATA->m_hBrush == 0)); } // end of wxBrush::IsFree -void wxBrush::Unshare() -{ - // - // Don't change shared data - // - if (!m_refData) - { - m_refData = new wxBrushRefData(); - } - else - { - wxBrushRefData* ref = new wxBrushRefData(*(wxBrushRefData*)m_refData); - UnRef(); - m_refData = ref; - } -} // end of wxBrush::Unshare - void wxBrush::SetColour( const wxColour& rColour ) { - Unshare(); + AllocExclusive(); M_BRUSHDATA->m_vColour = rColour; RealizeResource(); } void wxBrush::SetColour(unsigned char cRed, unsigned char cGreen, unsigned char cBlue) { - Unshare(); + AllocExclusive(); M_BRUSHDATA->m_vColour.Set( cRed, cGreen, cBlue ); RealizeResource(); } // end of wxBrush::SetColour -void wxBrush::SetStyle(int nStyle) +void wxBrush::SetStyle(wxBrushStyle nStyle) { - Unshare(); + AllocExclusive(); M_BRUSHDATA->m_nStyle = nStyle; RealizeResource(); } // end of wxBrush::SetStyle @@ -291,7 +259,7 @@ void wxBrush::SetStipple( const wxBitmap& rStipple ) { - Unshare(); + AllocExclusive(); M_BRUSHDATA->m_vStipple = rStipple; RealizeResource(); } // end of wxBrush::SetStipple @@ -300,9 +268,31 @@ void wxBrush::SetPS( HPS hPS ) { - Unshare(); + AllocExclusive(); if (M_BRUSHDATA->m_hBrush) ::GpiDestroyPS(M_BRUSHDATA->m_hBrush); M_BRUSHDATA->m_hBrush = hPS; RealizeResource(); } // end of WxWinGdi_CPen::SetPS + + +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 ); +} // end of wxBrush::operator == + +wxGDIRefData *wxBrush::CreateGDIRefData() const +{ + return new wxBrushRefData; +} + +wxGDIRefData *wxBrush::CloneGDIRefData(const wxGDIRefData *data) const +{ + return new wxBrushRefData(*(const wxBrushRefData *)data); +}