X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1f631557e0eb3c640ac296ad44c7aeaef269d957..95725e35d8bfa902349fea22349935dc260c591e:/src/cocoa/pen.mm diff --git a/src/cocoa/pen.mm b/src/cocoa/pen.mm index 5446e50d4c..5ff2d91a51 100644 --- a/src/cocoa/pen.mm +++ b/src/cocoa/pen.mm @@ -6,13 +6,18 @@ // Created: 2003/08/02 // RCS-ID: $Id$ // Copyright: (c) 2003 David Elliott -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#include "wx/setup.h" -#include "wx/pen.h" -#include "wx/bitmap.h" -#include "wx/colour.h" +#include "wx/wxprec.h" + +#ifndef WX_PRECOMP + #include "wx/pen.h" + #include "wx/bitmap.h" + #include "wx/colour.h" +#endif //WX_PRECOMP + +#include "wx/cocoa/ObjcRef.h" #import @@ -21,7 +26,6 @@ // ======================================================================== class WXDLLEXPORT wxPenRefData: public wxGDIRefData { - friend class WXDLLEXPORT wxPen; public: wxPenRefData(const wxColour& colour = wxNullColour, int width = 1, int style = wxSOLID, @@ -51,7 +55,7 @@ public: m_style = wxSTIPPLE; } WX_NSColor GetNSColor(); - int GetCocoaLineDash(const float **pattern); + int GetCocoaLineDash(const CGFloat **pattern); protected: void FreeCocoaNSColor(); void FreeCocoaDash(); @@ -65,36 +69,39 @@ protected: wxDash *m_dash; wxBitmap m_stipple; WX_NSColor m_cocoaNSColor; - float *m_cocoaDash; + CGFloat *m_cocoaDash; // Predefined dash patterns static const int scm_countDot; - static const float scm_patternDot[]; + static const CGFloat scm_patternDot[]; static const int scm_countLongDash; - static const float scm_patternLongDash[]; + static const CGFloat scm_patternLongDash[]; static const int scm_countShortDash; - static const float scm_patternShortDash[]; + static const CGFloat scm_patternShortDash[]; static const int scm_countDotDash; - static const float scm_patternDotDash[]; + static const CGFloat scm_patternDotDash[]; + + friend class WXDLLIMPEXP_FWD_CORE wxPen; + private: // Don't allow assignment wxPenRefData& operator=(const wxPenRefData& data); }; const int wxPenRefData::scm_countDot = 1; -const float wxPenRefData::scm_patternDot[] = { +const CGFloat wxPenRefData::scm_patternDot[] = { 1.0 }; const int wxPenRefData::scm_countLongDash = 1; -const float wxPenRefData::scm_patternLongDash[] = { +const CGFloat wxPenRefData::scm_patternLongDash[] = { 10.0 }; const int wxPenRefData::scm_countShortDash = 1; -const float wxPenRefData::scm_patternShortDash[] = { +const CGFloat wxPenRefData::scm_patternShortDash[] = { 5.0 }; const int wxPenRefData::scm_countDotDash = 4; -const float wxPenRefData::scm_patternDotDash[] = { +const CGFloat wxPenRefData::scm_patternDotDash[] = { 1.0 , 1.0 , 5.0 @@ -128,12 +135,13 @@ inline wxPenRefData::wxPenRefData(const wxPenRefData& data) m_nbDash = data.m_nbDash; m_dash = data.m_dash; m_stipple = data.m_stipple; - m_cocoaNSColor = [data.m_cocoaNSColor retain]; + m_cocoaNSColor = wxGCSafeRetain(data.m_cocoaNSColor); + m_cocoaDash = NULL; } inline void wxPenRefData::FreeCocoaNSColor() { - [m_cocoaNSColor release]; + wxGCSafeRelease(m_cocoaNSColor); m_cocoaNSColor = nil; } @@ -150,7 +158,7 @@ inline WX_NSColor wxPenRefData::GetNSColor() switch( m_style ) { case wxTRANSPARENT: - m_cocoaNSColor = [[NSColor clearColor] retain]; + m_cocoaNSColor = wxGCSafeRetain([NSColor clearColor]); break; case wxSTIPPLE: // wxBitmap isn't implemented yet @@ -175,13 +183,14 @@ inline WX_NSColor wxPenRefData::GetNSColor() if(!colour_NSColor) colour_NSColor = [NSColor clearColor]; m_cocoaNSColor = [colour_NSColor copyWithZone:nil]; + [wxGCSafeRetain(m_cocoaNSColor) release]; // retain in GC. no change in RR. break; } } return m_cocoaNSColor; } -int wxPenRefData::GetCocoaLineDash(const float **pattern) +int wxPenRefData::GetCocoaLineDash(const CGFloat **pattern) { int count; switch( m_style ) @@ -212,7 +221,7 @@ int wxPenRefData::GetCocoaLineDash(const float **pattern) { if(!m_cocoaDash) { - m_cocoaDash = new float[count]; + m_cocoaDash = new CGFloat[count]; for(int i=0; iSetStipple(Stipple); } -wxColour& wxPen::GetColour() const +wxColour wxPen::GetColour() const { - return (M_PENDATA ? M_PENDATA->m_colour : wxNullColour); + return (M_PENDATA ? M_PENDATA->m_colour : wxNullColour); } int wxPen::GetWidth() const { - return (M_PENDATA ? M_PENDATA->m_width : 0); + return (M_PENDATA ? M_PENDATA->m_width : 0); } int wxPen::GetStyle() const { - return (M_PENDATA ? M_PENDATA->m_style : 0); + return (M_PENDATA ? M_PENDATA->m_style : 0); } int wxPen::GetJoin() const { - return (M_PENDATA ? M_PENDATA->m_join : 0); + return (M_PENDATA ? M_PENDATA->m_join : 0); } int wxPen::GetCap() const { - return (M_PENDATA ? M_PENDATA->m_cap : 0); + return (M_PENDATA ? M_PENDATA->m_cap : 0); } int wxPen::GetDashes(wxDash **ptr) const @@ -350,7 +359,7 @@ int wxPen::GetDashes(wxDash **ptr) const wxBitmap *wxPen::GetStipple() const { - return (M_PENDATA ? (& M_PENDATA->m_stipple) : (wxBitmap*) NULL); + return (M_PENDATA ? (& M_PENDATA->m_stipple) : (wxBitmap*) NULL); } WX_NSColor wxPen::GetNSColor() @@ -358,7 +367,7 @@ WX_NSColor wxPen::GetNSColor() return (M_PENDATA ? M_PENDATA->GetNSColor() : nil); } -int wxPen::GetCocoaLineDash(const float **pattern) +int wxPen::GetCocoaLineDash(const CGFloat **pattern) { if(M_PENDATA) return M_PENDATA->GetCocoaLineDash(pattern); @@ -366,4 +375,3 @@ int wxPen::GetCocoaLineDash(const float **pattern) *pattern = NULL; return 0; } -