X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8907154c1a8a6882c6797d1f16393ddfb23e7f3a..3c029873c66cfdc0dcbf52958970273435ba02fc:/include/wx/mac/carbon/pen.h diff --git a/include/wx/mac/carbon/pen.h b/include/wx/mac/carbon/pen.h index db2d4ebc53..859448d154 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: @@ -16,18 +16,32 @@ #include "wx/colour.h" #include "wx/bitmap.h" -class WXDLLEXPORT wxPen; +class WXDLLIMPEXP_FWD_CORE wxPen; class WXDLLEXPORT wxPenRefData: public wxGDIRefData { - friend class WXDLLEXPORT wxPen; + friend class WXDLLIMPEXP_FWD_CORE wxPen; 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.IsSameAs(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) { return m_refData == pen.m_refData; } - inline bool operator != (const wxPen& pen) { 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) ; @@ -90,9 +108,8 @@ public: // Useful helper: create the brush resource bool RealizeResource(); - // When setting properties, we must make sure we're not changing - // another object - void Unshare(); +private: + void Unshare(); }; #endif