X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fbfb8bcc3fa17e079d4219655b173f8ed2ccc65a..c319bc473425962581227b29b2128c7033c86f87:/include/wx/mac/carbon/pen.h diff --git a/include/wx/mac/carbon/pen.h b/include/wx/mac/carbon/pen.h index a6055de188..ff6f65f12c 100644 --- a/include/wx/mac/carbon/pen.h +++ b/include/wx/mac/carbon/pen.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: wx/mac/pen.h +// Name: wx/mac/carbon/pen.h // Purpose: wxPen class // Author: Stefan Csomor // Modified by: @@ -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,20 +66,24 @@ public: wxPen(); wxPen(const wxColour& col, int width = 1, int style = wxSOLID); wxPen(const wxBitmap& stipple, int width); - wxPen(const wxPen& pen) - : wxGDIObject() - { Ref(pen); } - ~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 wxPen& operator = (const wxPen& pen) { if (*this == pen) return (*this); Ref(pen); return *this; } - 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) ; - void SetColour(unsigned char r, unsigned char g, unsigned char b) ; + void SetColour(unsigned char r, unsigned char g, unsigned char b) ; void SetWidth(int width) ; void SetStyle(int style) ;