X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1f0c8f31f407ecfce909060464c0ea655221cdab..12b5f4b4d2d8a07962da7ba3b78c8c1ec2634a67:/src/osx/carbon/graphics.cpp?ds=sidebyside diff --git a/src/osx/carbon/graphics.cpp b/src/osx/carbon/graphics.cpp index 37596e8268..6afb4468a4 100644 --- a/src/osx/carbon/graphics.cpp +++ b/src/osx/carbon/graphics.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: src/mac/carbon/dccg.cpp +// Name: src/osx/carbon/dccg.cpp // Purpose: wxDC class // Author: Stefan Csomor // Modified by: @@ -35,8 +35,16 @@ #endif #ifdef __WXMAC__ - #include "wx/osx/uma.h" + #include "wx/osx/private.h" #include "wx/osx/dcprint.h" + #include "wx/osx/dcclient.h" + #include "wx/osx/dcmemory.h" +#if wxOSX_USE_CARBON +#include "wx/osx/uma.h" +#else +#include "wx/osx/private.h" +#endif + #else #include "CoreServices/CoreServices.h" #include "ApplicationServices/ApplicationServices.h" @@ -64,7 +72,7 @@ int UMAGetSystemVersion() } -#define wxMAC_USE_CORE_TEXT 1 +#define wxOSX_USE_CORE_TEXT 1 #endif @@ -92,12 +100,17 @@ OSStatus wxMacDrawCGImage( const CGRect * inBounds, CGImageRef inImage) { -#if defined( __LP64__ ) || defined(__WXCOCOA__) - // todo flip - CGContextDrawImage(inContext, *inBounds, inImage ); - return noErr; -#else +#if wxOSX_USE_CARBON return HIViewDrawCGImage( inContext, inBounds, inImage ); +#else + CGContextSaveGState(inContext); + CGContextTranslateCTM(inContext, inBounds->origin.x, inBounds->origin.y + inBounds->size.height); + CGRect r = *inBounds; + r.origin.x = r.origin.y = 0; + CGContextScaleCTM(inContext, 1, -1); + CGContextDrawImage(inContext, r, inImage ); + CGContextRestoreGState(inContext); + return noErr; #endif } @@ -122,7 +135,7 @@ CGColorRef wxMacCreateCGColor( const wxColour& col ) return retval; } -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 && defined(wxMAC_USE_CORE_TEXT) +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 && wxOSX_USE_CORE_TEXT CTFontRef wxMacCreateCTFont( const wxFont& font ) { @@ -677,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 ; } @@ -758,30 +771,44 @@ CGFunctionRef wxMacCoreGraphicsBrushData::CreateGradientFunction( const wxColour // Font // +#if wxOSX_USE_IPHONE + +extern UIFont* CreateUIFont( const wxFont& font ); +extern void DrawTextInContext( CGContextRef context, CGPoint where, UIFont *font, NSString* text ); +extern CGSize MeasureTextInContext( UIFont *font, NSString* text ); + +#endif + class wxMacCoreGraphicsFontData : public wxGraphicsObjectRefData { public: wxMacCoreGraphicsFontData( wxGraphicsRenderer* renderer, const wxFont &font, const wxColour& col ); ~wxMacCoreGraphicsFontData(); -#if wxMAC_USE_ATSU_TEXT +#if wxOSX_USE_ATSU_TEXT virtual ATSUStyle GetATSUStyle() { return m_macATSUIStyle; } #endif -#if wxMAC_USE_CORE_TEXT +#if wxOSX_USE_CORE_TEXT CTFontRef GetCTFont() const { return m_ctFont ; } #endif wxColour GetColour() const { return m_colour ; } bool GetUnderlined() const { return m_underlined ; } +#if wxOSX_USE_IPHONE + UIFont* GetUIFont() const { return m_uiFont; } +#endif private : wxColour m_colour; bool m_underlined; -#if wxMAC_USE_ATSU_TEXT +#if wxOSX_USE_ATSU_TEXT ATSUStyle m_macATSUIStyle; #endif -#if wxMAC_USE_CORE_TEXT +#if wxOSX_USE_CORE_TEXT wxCFRef< CTFontRef > m_ctFont; #endif +#if wxOSX_USE_IPHONE + UIFont* m_uiFont; +#endif }; wxMacCoreGraphicsFontData::wxMacCoreGraphicsFontData(wxGraphicsRenderer* renderer, const wxFont &font, const wxColour& col) : wxGraphicsObjectRefData( renderer ) @@ -789,10 +816,14 @@ wxMacCoreGraphicsFontData::wxMacCoreGraphicsFontData(wxGraphicsRenderer* rendere m_colour = col; m_underlined = font.GetUnderlined(); -#if wxMAC_USE_CORE_TEXT +#if wxOSX_USE_CORE_TEXT m_ctFont.reset( wxMacCreateCTFont( font ) ); #endif -#if wxMAC_USE_ATSU_TEXT +#if wxOSX_USE_IPHONE + m_uiFont = CreateUIFont(font); + wxMacCocoaRetain( m_uiFont ); +#endif +#if wxOSX_USE_ATSU_TEXT OSStatus status = noErr; m_macATSUIStyle = NULL; @@ -827,22 +858,21 @@ wxMacCoreGraphicsFontData::wxMacCoreGraphicsFontData(wxGraphicsRenderer* rendere wxASSERT_MSG( status == noErr , wxT("couldn't modify ATSU style") ); #endif -#if wxMAC_USE_CG_TEXT -#endif } wxMacCoreGraphicsFontData::~wxMacCoreGraphicsFontData() { -#if wxMAC_USE_CORE_TEXT +#if wxOSX_USE_CORE_TEXT #endif -#if wxMAC_USE_ATSU_TEXT +#if wxOSX_USE_ATSU_TEXT if ( m_macATSUIStyle ) { ::ATSUDisposeStyle((ATSUStyle)m_macATSUIStyle); m_macATSUIStyle = NULL; } #endif -#if wxMAC_USE_CG_TEXT +#if wxOSX_USE_IPHONE + wxMacCocoaRelease( m_uiFont ); #endif } @@ -1115,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; }; @@ -1226,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 ); } @@ -1244,7 +1274,9 @@ class WXDLLEXPORT wxMacCoreGraphicsContext : public wxGraphicsContext public: wxMacCoreGraphicsContext( wxGraphicsRenderer* renderer, CGContextRef cgcontext, wxDouble width = 0, wxDouble height = 0 ); +#if wxOSX_USE_CARBON wxMacCoreGraphicsContext( wxGraphicsRenderer* renderer, WindowRef window ); +#endif wxMacCoreGraphicsContext( wxGraphicsRenderer* renderer, wxWindow* window ); @@ -1282,7 +1314,7 @@ public: virtual void * GetNativeContext(); - bool SetLogicalFunction( int function ); + bool SetLogicalFunction( wxRasterOperationMode function ); // // transformation // @@ -1312,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 { @@ -1332,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; @@ -1353,20 +1381,26 @@ public: void SetNativeContext( CGContextRef cg ); - DECLARE_NO_COPY_CLASS(wxMacCoreGraphicsContext) - DECLARE_DYNAMIC_CLASS(wxMacCoreGraphicsContext) + DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacCoreGraphicsContext) 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; +#endif bool m_releaseContext; CGAffineTransform m_windowTransform; wxDouble m_width; wxDouble m_height; +#if wxOSX_USE_CARBON wxCFRef m_clipRgn; +#endif }; //----------------------------------------------------------------------------- @@ -1411,7 +1445,9 @@ void wxMacCoreGraphicsContext::Init() { m_cgContext = NULL; m_releaseContext = false; +#if wxOSX_USE_CARBON m_windowRef = NULL; +#endif m_width = 0; m_height = 0; } @@ -1424,11 +1460,13 @@ wxMacCoreGraphicsContext::wxMacCoreGraphicsContext( wxGraphicsRenderer* renderer m_height = height; } +#if wxOSX_USE_CARBON wxMacCoreGraphicsContext::wxMacCoreGraphicsContext( wxGraphicsRenderer* renderer, WindowRef window ): wxGraphicsContext(renderer) { Init(); m_windowRef = window; } +#endif wxMacCoreGraphicsContext::wxMacCoreGraphicsContext( wxGraphicsRenderer* renderer, wxWindow* window ): wxGraphicsContext(renderer) { @@ -1438,7 +1476,7 @@ wxMacCoreGraphicsContext::wxMacCoreGraphicsContext( wxGraphicsRenderer* renderer originX = originY = 0; Rect bounds = { 0,0,0,0 }; -#if defined( __LP64__ ) || defined(__WXCOCOA__) +#if defined(__WXCOCOA__) || !wxOSX_USE_CARBON #else m_windowRef = (WindowRef) window->MacGetTopLevelWindowRef(); window->MacWindowToRootWindow( &originX , &originY ); @@ -1499,12 +1537,10 @@ void wxMacCoreGraphicsContext::EnsureIsValid() { if ( !m_cgContext ) { - OSStatus status = -#if ! ( defined( __LP64__ ) || defined(__WXCOCOA__) ) - QDBeginCGContext( GetWindowPort( m_windowRef ) , &m_cgContext ); +#if defined(__WXCOCOA__) || ! wxOSX_USE_CARBON + wxFAIL_MSG("Cannot create wxDCs lazily"); #else - paramErr; -#endif + OSStatus status = QDBeginCGContext( GetWindowPort( m_windowRef ) , &m_cgContext ); if ( status != noErr ) { wxFAIL_MSG("Cannot nest wxDCs on the same window"); @@ -1532,12 +1568,13 @@ void wxMacCoreGraphicsContext::EnsureIsValid() } } CGContextSaveGState( m_cgContext ); +#endif } } // 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; @@ -1548,8 +1585,12 @@ bool wxMacCoreGraphicsContext::SetLogicalFunction( int function ) bool shouldAntiAlias = true; CGBlendMode mode = kCGBlendModeNormal; -#if defined(__WXMAC__) && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 ) +#if defined(__WXMAC__) && ( wxOSX_USE_IPHONE || ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 ) ) +#if wxOSX_USE_IPHONE + if ( 1 ) +#else if ( UMAGetSystemVersion() >= 0x1050 ) +#endif { retval = true; switch ( function ) @@ -1597,7 +1638,7 @@ bool wxMacCoreGraphicsContext::SetLogicalFunction( int function ) void wxMacCoreGraphicsContext::Clip( const wxRegion ®ion ) { -#ifdef __WXMAC__ +#if wxOSX_USE_CARBON if( m_cgContext ) { wxCFRef shape = wxCFRefFromGet(region.GetWXHRGN()); @@ -1623,6 +1664,9 @@ void wxMacCoreGraphicsContext::Clip( const wxRegion ®ion ) HIShapeOffset( mutableShape, transformedOrigin.x, transformedOrigin.y ); m_clipRgn.reset(mutableShape); } +#else + // allow usage as measuring context + // wxASSERT_MSG( m_cgContext != NULL, "Needs a valid context for clipping" ); #endif } @@ -1636,10 +1680,15 @@ void wxMacCoreGraphicsContext::Clip( wxDouble x, wxDouble y, wxDouble w, wxDoubl } else { +#if wxOSX_USE_CARBON // the clipping itself must be stored as device coordinates, otherwise // we cannot apply it back correctly r.origin= CGPointApplyAffineTransform( r.origin, m_windowTransform ); m_clipRgn.reset(HIShapeCreateWithRect(&r)); +#else + // allow usage as measuring context + // wxFAIL_MSG( "Needs a valid context for clipping" ); +#endif } } @@ -1660,7 +1709,12 @@ void wxMacCoreGraphicsContext::ResetClip() } else { +#if wxOSX_USE_CARBON m_clipRgn.reset(); +#else + // allow usage as measuring context + // wxFAIL_MSG( "Needs a valid context for clipping" ); +#endif } } @@ -1678,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() ) { @@ -1727,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; @@ -1765,7 +1819,7 @@ void wxMacCoreGraphicsContext::SetNativeContext( CGContextRef cg ) CGContextRestoreGState( m_cgContext ); if ( m_releaseContext ) { -#if ! ( defined( __LP64__ ) || defined(__WXCOCOA__) ) +#if wxOSX_USE_CARBON QDEndCGContext( GetWindowPort( m_windowRef ) , &m_cgContext); #endif } @@ -1868,7 +1922,7 @@ void wxMacCoreGraphicsContext::DrawIcon( const wxIcon &icon, wxDouble x, wxDoubl CGContextSaveGState( m_cgContext ); CGContextTranslateCTM( m_cgContext,(CGFloat) x ,(CGFloat) (y + h) ); CGContextScaleCTM( m_cgContext, 1, -1 ); -#ifdef __WXMAC__ +#if wxOSX_USE_CARBON PlotIconRefInContext( m_cgContext , &r , kAlignNone , kTransformNone , NULL , kPlotIconRefNormalFlags , MAC_WXHICON( icon.GetHICON() ) ); #endif @@ -1889,13 +1943,12 @@ 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 ) { - if ( m_font.IsNull() ) - return; + wxCHECK_RET( !m_font.IsNull(), wxT("wxMacCoreGraphicsContext::DrawText - no valid font set") ); EnsureIsValid(); -#if wxMAC_USE_CORE_TEXT +#if wxOSX_USE_CORE_TEXT if ( UMAGetSystemVersion() >= 0x1050 ) { wxMacCoreGraphicsFontData* fref = (wxMacCoreGraphicsFontData*)m_font.GetRefData(); @@ -1923,32 +1976,45 @@ void wxMacCoreGraphicsContext::DrawText( const wxString &str, wxDouble x, wxDoub return; } #endif -#if wxMAC_USE_ATSU_TEXT +#if wxOSX_USE_ATSU_TEXT { DrawText(str, x, y, 0.0); return; } #endif -#if wxMAC_USE_CG_TEXT - // TODO core graphics text implementation here +#if wxOSX_USE_IPHONE + wxMacCoreGraphicsFontData* fref = (wxMacCoreGraphicsFontData*)m_font.GetRefData(); + + CGContextSaveGState(m_cgContext); + + CGColorRef col = wxMacCreateCGColor( fref->GetColour() ); + CGContextSetTextDrawingMode (m_cgContext, kCGTextFill); + CGContextSetFillColorWithColor( m_cgContext, col ); + + wxCFStringRef text(str, wxLocale::GetSystemEncoding() ); + DrawTextInContext( m_cgContext, CGPointMake( x, y ), fref->GetUIFont() , text.AsNSString() ); + + CGContextRestoreGState(m_cgContext); + CFRelease( col ); #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) { - if ( m_font.IsNull() ) - return; + wxCHECK_RET( !m_font.IsNull(), wxT("wxMacCoreGraphicsContext::DrawText - no valid font set") ); EnsureIsValid(); -#if wxMAC_USE_CORE_TEXT +#if wxOSX_USE_CORE_TEXT 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 -#if wxMAC_USE_ATSU_TEXT +#if wxOSX_USE_ATSU_TEXT { OSStatus status = noErr; ATSUTextLayout atsuLayout; @@ -2032,16 +2098,16 @@ void wxMacCoreGraphicsContext::DrawText( const wxString &str, wxDouble x, wxDoub return; } #endif -#if wxMAC_USE_CG_TEXT +#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 } void wxMacCoreGraphicsContext::GetTextExtent( const wxString &str, wxDouble *width, wxDouble *height, wxDouble *descent, wxDouble *externalLeading ) const { - wxCHECK_RET( !m_font.IsNull(), wxT("wxDC(cg)::DoGetTextExtent - no valid font set") ); + wxCHECK_RET( !m_font.IsNull(), wxT("wxMacCoreGraphicsContext::GetTextExtent - no valid font set") ); if ( width ) *width = 0; @@ -2055,7 +2121,7 @@ void wxMacCoreGraphicsContext::GetTextExtent( const wxString &str, wxDouble *wid if (str.empty()) return; -#if wxMAC_USE_CORE_TEXT +#if wxOSX_USE_CORE_TEXT if ( UMAGetSystemVersion() >= 0x1050 ) { wxMacCoreGraphicsFontData* fref = (wxMacCoreGraphicsFontData*)m_font.GetRefData(); @@ -2084,7 +2150,7 @@ void wxMacCoreGraphicsContext::GetTextExtent( const wxString &str, wxDouble *wid return; } #endif -#if wxMAC_USE_ATSU_TEXT +#if wxOSX_USE_ATSU_TEXT { OSStatus status = noErr; @@ -2121,8 +2187,22 @@ void wxMacCoreGraphicsContext::GetTextExtent( const wxString &str, wxDouble *wid return; } #endif -#if wxMAC_USE_CG_TEXT - // TODO core graphics text implementation here +#if wxOSX_USE_IPHONE + wxMacCoreGraphicsFontData* fref = (wxMacCoreGraphicsFontData*)m_font.GetRefData(); + + wxCFStringRef text(str, wxLocale::GetSystemEncoding() ); + CGSize sz = MeasureTextInContext( fref->GetUIFont() , text.AsNSString() ); + + if ( height ) + *height = sz.height; + /* + if ( descent ) + *descent = FixedToInt(textDescent); + if ( externalLeading ) + *externalLeading = 0; + */ + if ( width ) + *width = sz.width; #endif } @@ -2131,10 +2211,12 @@ void wxMacCoreGraphicsContext::GetPartialTextExtents(const wxString& text, wxArr widths.Empty(); widths.Add(0, text.length()); + wxCHECK_RET( !m_font.IsNull(), wxT("wxMacCoreGraphicsContext::DrawText - no valid font set") ); + if (text.empty()) return; -#if wxMAC_USE_CORE_TEXT +#if wxOSX_USE_CORE_TEXT { wxMacCoreGraphicsFontData* fref = (wxMacCoreGraphicsFontData*)m_font.GetRefData(); CTFontRef font = fref->GetCTFont(); @@ -2156,7 +2238,7 @@ void wxMacCoreGraphicsContext::GetPartialTextExtents(const wxString& text, wxArr return; } #endif -#if wxMAC_USE_ATSU_TEXT +#if wxOSX_USE_ATSU_TEXT { OSStatus status = noErr; ATSUTextLayout atsuLayout; @@ -2192,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, @@ -2201,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 ++ ) @@ -2209,7 +2291,7 @@ void wxMacCoreGraphicsContext::GetPartialTextExtents(const wxString& text, wxArr widths[pos-1] = FixedToInt( layoutRecords[pos].realPos ); } } - + ::ATSUDirectReleaseLayoutDataArrayPtr(NULL, kATSUDirectDataLayoutRecordATSLayoutRecordCurrent, (void **) &layoutRecords); @@ -2217,7 +2299,7 @@ void wxMacCoreGraphicsContext::GetPartialTextExtents(const wxString& text, wxArr ::ATSUDisposeTextLayout(atsuLayout); } #endif -#if wxMAC_USE_CG_TEXT +#if wxOSX_USE_IPHONE // TODO core graphics text implementation here #endif } @@ -2280,7 +2362,9 @@ public : virtual wxGraphicsContext * CreateContext( const wxWindowDC& dc); virtual wxGraphicsContext * CreateContext( const wxMemoryDC& dc); +#if wxUSE_PRINTING_ARCHITECTURE virtual wxGraphicsContext * CreateContext( const wxPrinterDC& dc); +#endif virtual wxGraphicsContext * CreateContextFromNativeContext( void * context ); @@ -2338,7 +2422,7 @@ wxGraphicsRenderer* wxGraphicsRenderer::GetDefaultRenderer() return &gs_MacCoreGraphicsRenderer; } -#ifdef __WXCOCOA__ +#if defined( __WXCOCOA__ ) || wxOSX_USE_COCOA extern CGContextRef wxMacGetContextFromCurrentNSContext() ; #endif @@ -2377,6 +2461,7 @@ wxGraphicsContext * wxMacCoreGraphicsRenderer::CreateContext( const wxMemoryDC& return NULL; } +#if wxUSE_PRINTING_ARCHITECTURE wxGraphicsContext * wxMacCoreGraphicsRenderer::CreateContext( const wxPrinterDC& dc ) { #ifdef __WXMAC__ @@ -2392,16 +2477,20 @@ wxGraphicsContext * wxMacCoreGraphicsRenderer::CreateContext( const wxPrinterDC& #endif return NULL; } +#endif wxGraphicsContext * wxMacCoreGraphicsRenderer::CreateContextFromNativeContext( void * context ) { return new wxMacCoreGraphicsContext(this,(CGContextRef)context); } - wxGraphicsContext * wxMacCoreGraphicsRenderer::CreateContextFromNativeWindow( void * window ) { +#if wxOSX_USE_CARBON return new wxMacCoreGraphicsContext(this,(WindowRef)window); +#else + return NULL; +#endif } wxGraphicsContext * wxMacCoreGraphicsRenderer::CreateContext( wxWindow* window )