X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8cf73271dd6f442a98e86b559d4a55c37e25b99f..07c51ff1fa68e0667f164cfa8b2317666c367642:/include/wx/mac/carbon/pen.h diff --git a/include/wx/mac/carbon/pen.h b/include/wx/mac/carbon/pen.h index 50afa0d9c4..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: @@ -12,26 +12,36 @@ #ifndef _WX_PEN_H_ #define _WX_PEN_H_ -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma interface "pen.h" -#endif - #include "wx/gdiobj.h" #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; @@ -56,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) ; @@ -94,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