X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f8855e47254a28f5141524b3aaaac03c2944e997..c319bc473425962581227b29b2128c7033c86f87:/include/wx/mac/carbon/pen.h diff --git a/include/wx/mac/carbon/pen.h b/include/wx/mac/carbon/pen.h index 5ff21fcf2b..ff6f65f12c 100644 --- a/include/wx/mac/carbon/pen.h +++ b/include/wx/mac/carbon/pen.h @@ -24,10 +24,24 @@ class WXDLLEXPORT wxPenRefData: public wxGDIRefData public: wxPenRefData(); wxPenRefData(const wxPenRefData& data); - ~wxPenRefData(); + virtual ~wxPenRefData(); wxPenRefData& operator=(const wxPenRefData& data); + bool operator==(const wxPenRefData& data) const + { + // we intentionally don't compare m_hPen fields here + return m_style == data.m_style && + m_width == data.m_width && + m_join == data.m_join && + m_cap == data.m_cap && + m_colour == data.m_colour && + (m_style != wxSTIPPLE || m_stipple.IsRefTo(&data.m_stipple)) && + (m_style != wxUSER_DASH || + (m_nbDash == data.m_nbDash && + memcmp(m_dash, data.m_dash, m_nbDash*sizeof(wxDash)) == 0)); + } + protected: int m_width; int m_style; @@ -52,12 +66,20 @@ public: wxPen(); wxPen(const wxColour& col, int width = 1, int style = wxSOLID); wxPen(const wxBitmap& stipple, int width); - ~wxPen(); + virtual ~wxPen(); + + inline bool operator == (const wxPen& pen) const + { + const wxPenRefData *penData = (wxPenRefData *)pen.m_refData; + + // an invalid pen is only equal to another invalid pen + return m_refData ? penData && *M_PENDATA == *penData : !penData; + } - inline bool operator == (const wxPen& pen) const { return m_refData == pen.m_refData; } - inline bool operator != (const wxPen& pen) const { return m_refData != pen.m_refData; } + inline bool operator != (const wxPen& pen) const { return *(this == pen); } - virtual bool Ok() const { return (m_refData != NULL) ; } + virtual bool Ok() const { return IsOk(); } + virtual bool IsOk() const { return (m_refData != NULL) ; } // Override in order to recreate the pen void SetColour(const wxColour& col) ;