X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/021db427c30a79eef63ddc980b66a24c9dcab659..12b5f4b4d2d8a07962da7ba3b78c8c1ec2634a67:/src/osx/carbon/graphics.cpp?ds=sidebyside diff --git a/src/osx/carbon/graphics.cpp b/src/osx/carbon/graphics.cpp index 436b9f8dd1..6afb4468a4 100644 --- a/src/osx/carbon/graphics.cpp +++ b/src/osx/carbon/graphics.cpp @@ -690,7 +690,7 @@ void wxMacCoreGraphicsBrushData::CreateRadialGradientBrush( wxDouble xo, wxDoubl const wxColour &oColor, const wxColour &cColor ) { m_gradientFunction = CreateGradientFunction( oColor, cColor ); - m_shading = CGShadingCreateRadial( wxMacGetGenericRGBColorSpace(), CGPointMake((CGFloat) xo,(CGFloat) yo), 0, + m_shading = CGShadingCreateRadial( wxMacGetGenericRGBColorSpace(), CGPointMake((CGFloat) xo,(CGFloat) yo), 0, CGPointMake((CGFloat) xc,(CGFloat) yc), (CGFloat) radius, m_gradientFunction, true, true ) ; m_isShading = true ; } @@ -1145,7 +1145,7 @@ public : // gets the bounding box enclosing all points (possibly including control points) virtual void GetBox(wxDouble *x, wxDouble *y, wxDouble *w, wxDouble *y) const; - virtual bool Contains( wxDouble x, wxDouble y, int fillStyle = wxODDEVEN_RULE) const; + virtual bool Contains( wxDouble x, wxDouble y, wxPolygonFillMode fillStyle = wxODDEVEN_RULE) const; private : CGMutablePathRef m_path; }; @@ -1256,7 +1256,7 @@ void wxMacCoreGraphicsPathData::GetBox(wxDouble *x, wxDouble *y, wxDouble *w, wx *h = bounds.size.height; } -bool wxMacCoreGraphicsPathData::Contains( wxDouble x, wxDouble y, int fillStyle) const +bool wxMacCoreGraphicsPathData::Contains( wxDouble x, wxDouble y, wxPolygonFillMode fillStyle) const { return CGPathContainsPoint( m_path, NULL, CGPointMake((CGFloat) x,(CGFloat) y), fillStyle == wxODDEVEN_RULE ); } @@ -1314,7 +1314,7 @@ public: virtual void * GetNativeContext(); - bool SetLogicalFunction( int function ); + bool SetLogicalFunction( wxRasterOperationMode function ); // // transformation // @@ -1344,10 +1344,10 @@ public: virtual void StrokePath( const wxGraphicsPath &path ); // fills a path with the current brush - virtual void FillPath( const wxGraphicsPath &path, int fillStyle = wxODDEVEN_RULE ); + virtual void FillPath( const wxGraphicsPath &path, wxPolygonFillMode fillStyle = wxODDEVEN_RULE ); // draws a path by first filling and then stroking - virtual void DrawPath( const wxGraphicsPath &path, int fillStyle = wxODDEVEN_RULE ); + virtual void DrawPath( const wxGraphicsPath &path, wxPolygonFillMode fillStyle = wxODDEVEN_RULE ); virtual bool ShouldOffset() const { @@ -1364,10 +1364,6 @@ public: // text // - virtual void DrawText( const wxString &str, wxDouble x, wxDouble y ); - - virtual void DrawText( const wxString &str, wxDouble x, wxDouble y, wxDouble angle ); - virtual void GetTextExtent( const wxString &text, wxDouble *width, wxDouble *height, wxDouble *descent, wxDouble *externalLeading ) const; @@ -1390,6 +1386,9 @@ public: private: void EnsureIsValid(); + virtual void DoDrawText( const wxString &str, wxDouble x, wxDouble y ); + virtual void DoDrawRotatedText( const wxString &str, wxDouble x, wxDouble y, wxDouble angle ); + CGContextRef m_cgContext; #if wxOSX_USE_CARBON WindowRef m_windowRef; @@ -1575,7 +1574,7 @@ void wxMacCoreGraphicsContext::EnsureIsValid() // TODO test whether the private CGContextSetCompositeOperation works under 10.3 (using NSCompositingModes) -bool wxMacCoreGraphicsContext::SetLogicalFunction( int function ) +bool wxMacCoreGraphicsContext::SetLogicalFunction( wxRasterOperationMode function ) { if (m_logicalFunction == function) return true; @@ -1733,7 +1732,7 @@ void wxMacCoreGraphicsContext::StrokePath( const wxGraphicsPath &path ) CGContextStrokePath( m_cgContext ); } -void wxMacCoreGraphicsContext::DrawPath( const wxGraphicsPath &path , int fillStyle ) +void wxMacCoreGraphicsContext::DrawPath( const wxGraphicsPath &path , wxPolygonFillMode fillStyle ) { if ( !m_brush.IsNull() && ((wxMacCoreGraphicsBrushData*)m_brush.GetRefData())->IsShading() ) { @@ -1782,7 +1781,7 @@ void wxMacCoreGraphicsContext::DrawPath( const wxGraphicsPath &path , int fillSt CGContextDrawPath( m_cgContext , mode ); } -void wxMacCoreGraphicsContext::FillPath( const wxGraphicsPath &path , int fillStyle ) +void wxMacCoreGraphicsContext::FillPath( const wxGraphicsPath &path , wxPolygonFillMode fillStyle ) { if ( m_brush.IsNull() ) return; @@ -1944,7 +1943,7 @@ void wxMacCoreGraphicsContext::PopState() CGContextRestoreGState( m_cgContext ); } -void wxMacCoreGraphicsContext::DrawText( const wxString &str, wxDouble x, wxDouble y ) +void wxMacCoreGraphicsContext::DoDrawText( const wxString &str, wxDouble x, wxDouble y ) { wxCHECK_RET( !m_font.IsNull(), wxT("wxMacCoreGraphicsContext::DrawText - no valid font set") ); @@ -1989,7 +1988,7 @@ void wxMacCoreGraphicsContext::DrawText( const wxString &str, wxDouble x, wxDoub CGContextSaveGState(m_cgContext); CGColorRef col = wxMacCreateCGColor( fref->GetColour() ); - CGContextSetTextDrawingMode (m_cgContext, kCGTextFill); + CGContextSetTextDrawingMode (m_cgContext, kCGTextFill); CGContextSetFillColorWithColor( m_cgContext, col ); wxCFStringRef text(str, wxLocale::GetSystemEncoding() ); @@ -2000,7 +1999,9 @@ void wxMacCoreGraphicsContext::DrawText( const wxString &str, wxDouble x, wxDoub #endif } -void wxMacCoreGraphicsContext::DrawText( const wxString &str, wxDouble x, wxDouble y, wxDouble angle ) +void wxMacCoreGraphicsContext::DoDrawRotatedText(const wxString &str, + wxDouble x, wxDouble y, + wxDouble angle) { wxCHECK_RET( !m_font.IsNull(), wxT("wxMacCoreGraphicsContext::DrawText - no valid font set") ); @@ -2009,7 +2010,7 @@ void wxMacCoreGraphicsContext::DrawText( const wxString &str, wxDouble x, wxDoub if ( UMAGetSystemVersion() >= 0x1050 ) { // default implementation takes care of rotation and calls non rotated DrawText afterwards - wxGraphicsContext::DrawText( str, x, y, angle ); + wxGraphicsContext::DoDrawRotatedText( str, x, y, angle ); return; } #endif @@ -2099,7 +2100,7 @@ void wxMacCoreGraphicsContext::DrawText( const wxString &str, wxDouble x, wxDoub #endif #if wxOSX_USE_IPHONE // default implementation takes care of rotation and calls non rotated DrawText afterwards - wxGraphicsContext::DrawText( str, x, y, angle ); + wxGraphicsContext::DoDrawRotatedText( str, x, y, angle ); #endif } @@ -2191,7 +2192,7 @@ void wxMacCoreGraphicsContext::GetTextExtent( const wxString &str, wxDouble *wid wxCFStringRef text(str, wxLocale::GetSystemEncoding() ); CGSize sz = MeasureTextInContext( fref->GetUIFont() , text.AsNSString() ); - + if ( height ) *height = sz.height; /* @@ -2273,7 +2274,7 @@ void wxMacCoreGraphicsContext::GetPartialTextExtents(const wxString& text, wxArr #else ATSLayoutRecord *layoutRecords = NULL; ItemCount glyphCount = 0; - + // Get the glyph extents OSStatus err = ::ATSUDirectGetLayoutDataArrayPtrFromTextLayout(atsuLayout, 0, @@ -2282,7 +2283,7 @@ void wxMacCoreGraphicsContext::GetPartialTextExtents(const wxString& text, wxArr &layoutRecords, &glyphCount); wxASSERT(glyphCount == (text.length()+1)); - + if ( err == noErr && glyphCount == (text.length()+1)) { for ( int pos = 1; pos < (int)glyphCount ; pos ++ ) @@ -2290,7 +2291,7 @@ void wxMacCoreGraphicsContext::GetPartialTextExtents(const wxString& text, wxArr widths[pos-1] = FixedToInt( layoutRecords[pos].realPos ); } } - + ::ATSUDirectReleaseLayoutDataArrayPtr(NULL, kATSUDirectDataLayoutRecordATSLayoutRecordCurrent, (void **) &layoutRecords);