- CGFloat components[4] = { col.Red() / 255.0, col.Green() / 255.0, col.Blue() / 255.0, col.Alpha() / 255.0 } ;
+ CGFloat components[4] = { col.Red() / 255.0, col.Green() / 255.0, col.Blue() / 255.0, col.Alpha() / 255.0 } ;
- m_imageBounds = CGRectMake( 0.0, 0.0, (CGFloat)CGImageGetWidth( m_image ), (CGFloat)CGImageGetHeight( m_image ) );
+ m_imageBounds = CGRectMake( (CGFloat) 0.0, (CGFloat) 0.0, (CGFloat)CGImageGetWidth( m_image ), (CGFloat)CGImageGetHeight( m_image ) );
m_patternRef = CGPatternCreate(
this , m_imageBounds, transform ,
m_imageBounds.size.width, m_imageBounds.size.height,
m_patternRef = CGPatternCreate(
this , m_imageBounds, transform ,
m_imageBounds.size.width, m_imageBounds.size.height,
- m_imageBounds = CGRectMake( 0.0, 0.0, 8.0 , 8.0 );
+ m_imageBounds = CGRectMake( (CGFloat) 0.0, (CGFloat) 0.0, (CGFloat) 8.0 , (CGFloat) 8.0 );
m_patternRef = CGPatternCreate(
this , m_imageBounds, transform ,
m_imageBounds.size.width, m_imageBounds.size.height,
m_patternRef = CGPatternCreate(
this , m_imageBounds, transform ,
m_imageBounds.size.width, m_imageBounds.size.height,
- { 8.0 , 0.0 } , { 0.0 , 8.0 }
+ { (CGFloat) 8.0 , (CGFloat) 0.0 } , { (CGFloat) 0.0 , (CGFloat) 8.0 }
- { 0.0 , 0.0 } , { 8.0 , 8.0 } ,
- { 8.0 , 0.0 } , { 0.0 , 8.0 }
+ { (CGFloat) 0.0 , (CGFloat) 0.0 } , { (CGFloat) 8.0 , (CGFloat) 8.0 } ,
+ { (CGFloat) 8.0 , (CGFloat) 0.0 } , { (CGFloat) 0.0 , (CGFloat) 8.0 }
- { 0.0 , 0.0 } , { 8.0 , 8.0 }
+ { (CGFloat) 0.0 , (CGFloat) 0.0 } , { (CGFloat) 8.0 , (CGFloat) 8.0 }
- { 0.0 , 4.0 } , { 8.0 , 4.0 } ,
- { 4.0 , 0.0 } , { 4.0 , 8.0 } ,
+ { (CGFloat) 0.0 , (CGFloat) 4.0 } , { (CGFloat) 8.0 , (CGFloat) 4.0 } ,
+ { (CGFloat) 4.0 , (CGFloat) 0.0 } , { (CGFloat) 4.0 , (CGFloat) 8.0 } ,
- { 0.0 , 4.0 } , { 8.0 , 4.0 } ,
+ { (CGFloat) 0.0 , (CGFloat) 4.0 } , { (CGFloat) 8.0 , (CGFloat) 4.0 } ,
- { 4.0 , 0.0 } , { 4.0 , 8.0 } ,
+ { (CGFloat) 4.0 , (CGFloat) 0.0 } , { (CGFloat) 4.0 , (CGFloat) 8.0 } ,
- const CGFloat dotted[] = { dashUnit , dashUnit + 2.0 };
- static const CGFloat short_dashed[] = { 9.0 , 6.0 };
- static const CGFloat dashed[] = { 19.0 , 9.0 };
- static const CGFloat dotted_dashed[] = { 9.0 , 6.0 , 3.0 , 3.0 };
+ const CGFloat dotted[] = { (CGFloat) dashUnit , (CGFloat) (dashUnit + 2.0) };
+ static const CGFloat short_dashed[] = { (CGFloat) 9.0 , (CGFloat) 6.0 };
+ static const CGFloat dashed[] = { (CGFloat) 19.0 , (CGFloat) 9.0 };
+ static const CGFloat dotted_dashed[] = { (CGFloat) 9.0 , (CGFloat) 6.0 , (CGFloat) 3.0 , (CGFloat) 3.0 };
m_colorSpace.reset( CGColorSpaceCreatePattern( NULL ) );
m_pattern.reset( (CGPatternRef) *( new ImagePattern( bmp , CGAffineTransformMakeScale( 1,-1 ) ) ) );
m_patternColorComponents = new CGFloat[1] ;
m_colorSpace.reset( CGColorSpaceCreatePattern( NULL ) );
m_pattern.reset( (CGPatternRef) *( new ImagePattern( bmp , CGAffineTransformMakeScale( 1,-1 ) ) ) );
m_patternColorComponents = new CGFloat[1] ;
m_colorSpace.reset( CGColorSpaceCreatePattern( wxMacGetGenericRGBColorSpace() ) );
m_pattern.reset( (CGPatternRef) *( new HatchPattern( pen.GetStyle() , CGAffineTransformMakeScale( 1,-1 ) ) ) );
m_patternColorComponents = new CGFloat[4] ;
m_colorSpace.reset( CGColorSpaceCreatePattern( wxMacGetGenericRGBColorSpace() ) );
m_pattern.reset( (CGPatternRef) *( new HatchPattern( pen.GetStyle() , CGAffineTransformMakeScale( 1,-1 ) ) ) );
m_patternColorComponents = new CGFloat[4] ;
- m_patternColorComponents[0] = pen.GetColour().Red() / 255.0;
- m_patternColorComponents[1] = pen.GetColour().Green() / 255.0;
- m_patternColorComponents[2] = pen.GetColour().Blue() / 255.0;
- m_patternColorComponents[3] = pen.GetColour().Alpha() / 255.0;
+ m_patternColorComponents[0] = (CGFloat) (pen.GetColour().Red() / 255.0);
+ m_patternColorComponents[1] = (CGFloat) (pen.GetColour().Green() / 255.0);
+ m_patternColorComponents[2] = (CGFloat) (pen.GetColour().Blue() / 255.0);
+ m_patternColorComponents[3] = (CGFloat) (pen.GetColour().Alpha() / 255.0);
- CGContextSetRGBStrokeColor( cg , 1.0, 1.0 , 1.0, 1.0 );
+ CGContextSetRGBStrokeColor( cg , (CGFloat) 1.0,(CGFloat) 1.0 , (CGFloat) 1.0, (CGFloat) 1.0 );
wxMacCoreGraphicsColour();
wxMacCoreGraphicsColour(const wxBrush &brush);
~wxMacCoreGraphicsColour();
wxMacCoreGraphicsColour();
wxMacCoreGraphicsColour(const wxBrush &brush);
~wxMacCoreGraphicsColour();
void Apply( CGContextRef cgContext );
protected:
void Init();
wxCFRef<CGColorRef> m_color;
wxCFRef<CGColorSpaceRef> m_colorSpace;
void Apply( CGContextRef cgContext );
protected:
void Init();
wxCFRef<CGColorRef> m_color;
wxCFRef<CGColorSpaceRef> m_colorSpace;
m_pattern.reset( (CGPatternRef) *( new HatchPattern( brush.GetStyle() , CGAffineTransformMakeScale( 1,-1 ) ) ) );
m_patternColorComponents = new CGFloat[4] ;
m_pattern.reset( (CGPatternRef) *( new HatchPattern( brush.GetStyle() , CGAffineTransformMakeScale( 1,-1 ) ) ) );
m_patternColorComponents = new CGFloat[4] ;
- m_patternColorComponents[0] = brush.GetColour().Red() / 255.0;
- m_patternColorComponents[1] = brush.GetColour().Green() / 255.0;
- m_patternColorComponents[2] = brush.GetColour().Blue() / 255.0;
- m_patternColorComponents[3] = brush.GetColour().Alpha() / 255.0;
+ m_patternColorComponents[0] = (CGFloat) (brush.GetColour().Red() / 255.0);
+ m_patternColorComponents[1] = (CGFloat) (brush.GetColour().Green() / 255.0);
+ m_patternColorComponents[2] = (CGFloat) (brush.GetColour().Blue() / 255.0);
+ m_patternColorComponents[3] = (CGFloat) (brush.GetColour().Alpha() / 255.0);
m_colorSpace.reset( CGColorSpaceCreatePattern( NULL ) );
m_pattern.reset( (CGPatternRef) *( new ImagePattern( bmp , CGAffineTransformMakeScale( 1,-1 ) ) ) );
}
m_colorSpace.reset( CGColorSpaceCreatePattern( NULL ) );
m_pattern.reset( (CGPatternRef) *( new ImagePattern( bmp , CGAffineTransformMakeScale( 1,-1 ) ) ) );
}
const wxColour&c1, const wxColour&c2 )
{
m_gradientFunction = CreateGradientFunction( c1, c2 );
const wxColour&c1, const wxColour&c2 )
{
m_gradientFunction = CreateGradientFunction( c1, c2 );
- m_shading = CGShadingCreateAxial( wxMacGetGenericRGBColorSpace(), CGPointMake(x1,y1), CGPointMake(x2,y2), m_gradientFunction, true, true ) ;
+ m_shading = CGShadingCreateAxial( wxMacGetGenericRGBColorSpace(), CGPointMake((CGFloat) x1, (CGFloat) y1),
+ CGPointMake((CGFloat) x2,(CGFloat) y2), m_gradientFunction, true, true ) ;
const wxColour &oColor, const wxColour &cColor )
{
m_gradientFunction = CreateGradientFunction( oColor, cColor );
const wxColour &oColor, const wxColour &cColor )
{
m_gradientFunction = CreateGradientFunction( oColor, cColor );
- m_shading = CGShadingCreateRadial( wxMacGetGenericRGBColorSpace(), CGPointMake(xo,yo), 0, CGPointMake(xc,yc), radius, m_gradientFunction, true, true ) ;
+ m_shading = CGShadingCreateRadial( wxMacGetGenericRGBColorSpace(), CGPointMake((CGFloat) xo,(CGFloat) yo), 0,
+ CGPointMake((CGFloat) xc,(CGFloat) yc), (CGFloat) radius, m_gradientFunction, true, true ) ;
static const CGFloat input_value_range [2] = { 0, 1 };
static const CGFloat output_value_ranges [8] = { 0, 1, 0, 1, 0, 1, 0, 1 };
m_gradientComponents = new CGFloat[8] ;
static const CGFloat input_value_range [2] = { 0, 1 };
static const CGFloat output_value_ranges [8] = { 0, 1, 0, 1, 0, 1, 0, 1 };
m_gradientComponents = new CGFloat[8] ;
- m_gradientComponents[0] = c1.Red() / 255.0;
- m_gradientComponents[1] = c1.Green() / 255.0;
- m_gradientComponents[2] = c1.Blue() / 255.0;
- m_gradientComponents[3] = c1.Alpha() / 255.0;
- m_gradientComponents[4] = c2.Red() / 255.0;
- m_gradientComponents[5] = c2.Green() / 255.0;
- m_gradientComponents[6] = c2.Blue() / 255.0;
- m_gradientComponents[7] = c2.Alpha() / 255.0;
+ m_gradientComponents[0] = (CGFloat) (c1.Red() / 255.0);
+ m_gradientComponents[1] = (CGFloat) (c1.Green() / 255.0);
+ m_gradientComponents[2] = (CGFloat) (c1.Blue() / 255.0);
+ m_gradientComponents[3] = (CGFloat) (c1.Alpha() / 255.0);
+ m_gradientComponents[4] = (CGFloat) (c2.Red() / 255.0);
+ m_gradientComponents[5] = (CGFloat) (c2.Green() / 255.0);
+ m_gradientComponents[6] = (CGFloat) (c2.Blue() / 255.0);
+ m_gradientComponents[7] = (CGFloat) (c2.Alpha() / 255.0);
-wxMacCoreGraphicsBitmapData::wxMacCoreGraphicsBitmapData( wxGraphicsRenderer* renderer, CGImageRef bitmap ) : wxGraphicsObjectRefData( renderer )
+wxMacCoreGraphicsBitmapData::wxMacCoreGraphicsBitmapData( wxGraphicsRenderer* renderer, CGImageRef bitmap, bool monochrome ) : wxGraphicsObjectRefData( renderer ),
+ m_bitmap(bitmap), m_monochrome(monochrome)
// gets the component valuess of the matrix
virtual void Get(wxDouble* a=NULL, wxDouble* b=NULL, wxDouble* c=NULL,
wxDouble* d=NULL, wxDouble* tx=NULL, wxDouble* ty=NULL) const;
// gets the component valuess of the matrix
virtual void Get(wxDouble* a=NULL, wxDouble* b=NULL, wxDouble* c=NULL,
wxDouble* d=NULL, wxDouble* tx=NULL, wxDouble* ty=NULL) const;
void wxMacCoreGraphicsMatrixData::Set(wxDouble a, wxDouble b, wxDouble c, wxDouble d,
wxDouble tx, wxDouble ty)
{
void wxMacCoreGraphicsMatrixData::Set(wxDouble a, wxDouble b, wxDouble c, wxDouble d,
wxDouble tx, wxDouble ty)
{
- m_matrix = CGAffineTransformMake(a,b,c,d,tx,ty);
+ m_matrix = CGAffineTransformMake((CGFloat) a,(CGFloat) b,(CGFloat) c,(CGFloat) d,(CGFloat) tx,(CGFloat) ty);
// add the translation to this matrix
void wxMacCoreGraphicsMatrixData::Translate( wxDouble dx , wxDouble dy )
{
// add the translation to this matrix
void wxMacCoreGraphicsMatrixData::Translate( wxDouble dx , wxDouble dy )
{
}
// add the scale to this matrix
void wxMacCoreGraphicsMatrixData::Scale( wxDouble xScale , wxDouble yScale )
{
}
// add the scale to this matrix
void wxMacCoreGraphicsMatrixData::Scale( wxDouble xScale , wxDouble yScale )
{
}
// add the rotation to this matrix (radians)
void wxMacCoreGraphicsMatrixData::Rotate( wxDouble angle )
{
}
// add the rotation to this matrix (radians)
void wxMacCoreGraphicsMatrixData::Rotate( wxDouble angle )
{
// applies that matrix to the point
void wxMacCoreGraphicsMatrixData::TransformPoint( wxDouble *x, wxDouble *y ) const
{
// applies that matrix to the point
void wxMacCoreGraphicsMatrixData::TransformPoint( wxDouble *x, wxDouble *y ) const
{
// applies the matrix except for translations
void wxMacCoreGraphicsMatrixData::TransformDistance( wxDouble *dx, wxDouble *dy ) const
{
// applies the matrix except for translations
void wxMacCoreGraphicsMatrixData::TransformDistance( wxDouble *dx, wxDouble *dy ) const
{
// opens (starts) a new subpath
void wxMacCoreGraphicsPathData::MoveToPoint( wxDouble x1 , wxDouble y1 )
{
// opens (starts) a new subpath
void wxMacCoreGraphicsPathData::MoveToPoint( wxDouble x1 , wxDouble y1 )
{
- CGPathMoveToPoint( m_path , NULL , x1 , y1 );
+ CGPathMoveToPoint( m_path , NULL , (CGFloat) x1 , (CGFloat) y1 );
- CGPathAddLineToPoint( m_path , NULL , x1 , y1 );
+ CGPathAddLineToPoint( m_path , NULL , (CGFloat) x1 , (CGFloat) y1 );
}
void wxMacCoreGraphicsPathData::AddCurveToPoint( wxDouble cx1, wxDouble cy1, wxDouble cx2, wxDouble cy2, wxDouble x, wxDouble y )
{
}
void wxMacCoreGraphicsPathData::AddCurveToPoint( wxDouble cx1, wxDouble cy1, wxDouble cx2, wxDouble cy2, wxDouble x, wxDouble y )
{
- CGPathAddCurveToPoint( m_path , NULL , cx1 , cy1 , cx2, cy2, x , y );
+ CGPathAddCurveToPoint( m_path , NULL , (CGFloat) cx1 , (CGFloat) cy1 , (CGFloat) cx2, (CGFloat) cy2, (CGFloat) x , (CGFloat) y );
}
void wxMacCoreGraphicsPathData::AddQuadCurveToPoint( wxDouble cx1, wxDouble cy1, wxDouble x, wxDouble y )
{
}
void wxMacCoreGraphicsPathData::AddQuadCurveToPoint( wxDouble cx1, wxDouble cy1, wxDouble x, wxDouble y )
{
- CGPathAddQuadCurveToPoint( m_path , NULL , cx1 , cy1 , x , y );
+ CGPathAddQuadCurveToPoint( m_path , NULL , (CGFloat) cx1 , (CGFloat) cy1 , (CGFloat) x , (CGFloat) y );
}
void wxMacCoreGraphicsPathData::AddRectangle( wxDouble x, wxDouble y, wxDouble w, wxDouble h )
{
}
void wxMacCoreGraphicsPathData::AddRectangle( wxDouble x, wxDouble y, wxDouble w, wxDouble h )
{
- CGRect cgRect = { { x , y } , { w , h } };
+ CGRect cgRect = { { (CGFloat) x , (CGFloat) y } , { (CGFloat) w , (CGFloat) h } };
CGPathAddRect( m_path , NULL , cgRect );
}
void wxMacCoreGraphicsPathData::AddCircle( wxDouble x, wxDouble y , wxDouble r )
{
CGPathAddRect( m_path , NULL , cgRect );
}
void wxMacCoreGraphicsPathData::AddCircle( wxDouble x, wxDouble y , wxDouble r )
{
- CGPathAddArc( m_path , NULL , x , y , r , 0.0 , 2 * M_PI , true );
+ CGPathAddArc( m_path , NULL , (CGFloat) x , (CGFloat) y , (CGFloat) r , (CGFloat) 0.0 , (CGFloat) (2 * M_PI) , true );
}
// adds an arc of a circle centering at (x,y) with radius (r) from startAngle to endAngle
void wxMacCoreGraphicsPathData::AddArc( wxDouble x, wxDouble y, wxDouble r, wxDouble startAngle, wxDouble endAngle, bool clockwise )
{
// inverse direction as we the 'normal' state is a y axis pointing down, ie mirrored to the standard core graphics setup
}
// adds an arc of a circle centering at (x,y) with radius (r) from startAngle to endAngle
void wxMacCoreGraphicsPathData::AddArc( wxDouble x, wxDouble y, wxDouble r, wxDouble startAngle, wxDouble endAngle, bool clockwise )
{
// inverse direction as we the 'normal' state is a y axis pointing down, ie mirrored to the standard core graphics setup
- CGPathAddArc( m_path, NULL , x, y, r, startAngle, endAngle, !clockwise);
+ CGPathAddArc( m_path, NULL , (CGFloat) x, (CGFloat) y, (CGFloat) r, (CGFloat) startAngle, (CGFloat) endAngle, !clockwise);
}
void wxMacCoreGraphicsPathData::AddArcToPoint( wxDouble x1, wxDouble y1 , wxDouble x2, wxDouble y2, wxDouble r )
{
}
void wxMacCoreGraphicsPathData::AddArcToPoint( wxDouble x1, wxDouble y1 , wxDouble x2, wxDouble y2, wxDouble r )
{
- CGPathAddArcToPoint( m_path, NULL , x1, y1, x2, y2, r);
+ CGPathAddArcToPoint( m_path, NULL , (CGFloat) x1, (CGFloat) y1, (CGFloat) x2, (CGFloat) y2, (CGFloat) r);
- return CGPathContainsPoint( m_path, NULL, CGPointMake(x,y), fillStyle == wxODDEVEN_RULE );
+ return CGPathContainsPoint( m_path, NULL, CGPointMake((CGFloat) x,(CGFloat) y), fillStyle == wxODDEVEN_RULE );
virtual void GetSize( wxDouble* width, wxDouble* height);
virtual void StartPage( wxDouble width, wxDouble height );
virtual void GetSize( wxDouble* width, wxDouble* height);
virtual void StartPage( wxDouble width, wxDouble height );
virtual void DrawPath( const wxGraphicsPath &path, int fillStyle = wxODDEVEN_RULE );
virtual bool ShouldOffset() const
virtual void DrawPath( const wxGraphicsPath &path, int fillStyle = wxODDEVEN_RULE );
virtual bool ShouldOffset() const
- r = CGRectMake( 0 , 0 , width , height );
+ r = CGRectMake( (CGFloat) 0.0 , (CGFloat) 0.0 , (CGFloat) width , (CGFloat) height );
- r = CGRectMake( 0 , 0 , m_width , m_height );
-
+ r = CGRectMake( (CGFloat) 0.0 , (CGFloat) 0.0 , (CGFloat) m_width , (CGFloat) m_height );
+
CGContextBeginPage(m_cgContext, &r );
// CGContextTranslateCTM( m_cgContext , 0 , height == 0 ? m_height : height );
// CGContextScaleCTM( m_cgContext , 1 , -1 );
}
CGContextBeginPage(m_cgContext, &r );
// CGContextTranslateCTM( m_cgContext , 0 , height == 0 ? m_height : height );
// CGContextScaleCTM( m_cgContext , 1 , -1 );
}
#if ! ( defined( __LP64__ ) || defined(__WXCOCOA__) )
QDBeginCGContext( GetWindowPort( m_windowRef ) , &m_cgContext );
#else
paramErr;
#endif
#if ! ( defined( __LP64__ ) || defined(__WXCOCOA__) )
QDBeginCGContext( GetWindowPort( m_windowRef ) , &m_cgContext );
#else
paramErr;
#endif
- CGContextSaveGState( m_cgContext );
- m_releaseContext = true;
- if ( !HIShapeIsEmpty(m_clipRgn) )
- {
+ CGContextSaveGState( m_cgContext );
+ m_releaseContext = true;
+ if ( !HIShapeIsEmpty(m_clipRgn) )
+ {
// the clip region is in device coordinates, so we convert this again to user coordinates
wxCFRef<HIMutableShapeRef> hishape( HIShapeCreateMutableCopy( m_clipRgn ) );
CGPoint transformedOrigin = CGPointApplyAffineTransform( CGPointZero,m_windowTransform);
HIShapeOffset( hishape, -transformedOrigin.x, -transformedOrigin.y );
// the clip region is in device coordinates, so we convert this again to user coordinates
wxCFRef<HIMutableShapeRef> hishape( HIShapeCreateMutableCopy( m_clipRgn ) );
CGPoint transformedOrigin = CGPointApplyAffineTransform( CGPointZero,m_windowTransform);
HIShapeOffset( hishape, -transformedOrigin.x, -transformedOrigin.y );
- HIShapeReplacePathInCGContext( hishape, m_cgContext );
- CGContextClip( m_cgContext );
- }
- CGContextSaveGState( m_cgContext );
- }
+ HIShapeReplacePathInCGContext( hishape, m_cgContext );
+ CGContextClip( m_cgContext );
+ }
+ CGContextSaveGState( m_cgContext );
+ }
#if defined(__WXMAC__) && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 )
if ( UMAGetSystemVersion() >= 0x1050 )
{
#if defined(__WXMAC__) && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 )
if ( UMAGetSystemVersion() >= 0x1050 )
{
// this offsetting to device coords is not really correct, but since we cannot apply affine transforms
// to regions we try at least to have correct translations
HIMutableShapeRef mutableShape = HIShapeCreateMutableCopy( region.GetWXHRGN() );
// this offsetting to device coords is not really correct, but since we cannot apply affine transforms
// to regions we try at least to have correct translations
HIMutableShapeRef mutableShape = HIShapeCreateMutableCopy( region.GetWXHRGN() );
CGPoint transformedOrigin = CGPointApplyAffineTransform( CGPointZero, m_windowTransform );
HIShapeOffset( mutableShape, transformedOrigin.x, transformedOrigin.y );
m_clipRgn.reset(mutableShape);
CGPoint transformedOrigin = CGPointApplyAffineTransform( CGPointZero, m_windowTransform );
HIShapeOffset( mutableShape, transformedOrigin.x, transformedOrigin.y );
m_clipRgn.reset(mutableShape);
// clips drawings to the rect
void wxMacCoreGraphicsContext::Clip( wxDouble x, wxDouble y, wxDouble w, wxDouble h )
{
// clips drawings to the rect
void wxMacCoreGraphicsContext::Clip( wxDouble x, wxDouble y, wxDouble w, wxDouble h )
{
- CGRect r = CGRectMake( x , y , w , h );
+ CGRect r = CGRectMake( (CGFloat) x , (CGFloat) y , (CGFloat) w , (CGFloat) h );
// we cannot apply it back correctly
r.origin= CGPointApplyAffineTransform( r.origin, m_windowTransform );
m_clipRgn.reset(HIShapeCreateWithRect(&r));
// we cannot apply it back correctly
r.origin= CGPointApplyAffineTransform( r.origin, m_windowTransform );
m_clipRgn.reset(HIShapeCreateWithRect(&r));
}
void wxMacCoreGraphicsContext::DrawBitmap( const wxBitmap &bmp, wxDouble x, wxDouble y, wxDouble w, wxDouble h )
}
void wxMacCoreGraphicsContext::DrawBitmap( const wxBitmap &bmp, wxDouble x, wxDouble y, wxDouble w, wxDouble h )
- CGImageRef image = static_cast<wxMacCoreGraphicsBitmapData*>(bmp.GetRefData())->GetBitmap();
- CGRect r = CGRectMake( x , y , w , h );
- // if ( bmp.GetDepth() == 1 )
+ wxMacCoreGraphicsBitmapData* refdata =static_cast<wxMacCoreGraphicsBitmapData*>(bmp.GetRefData());
+ CGImageRef image = refdata->GetBitmap();
+ CGRect r = CGRectMake( (CGFloat) x , (CGFloat) y , (CGFloat) w , (CGFloat) h );
+ if ( refdata->IsMonochrome() == 1 )
- CGRect r = CGRectMake( 00 , 00 , w , h );
+ CGRect r = CGRectMake( (CGFloat) 0.0 , (CGFloat) 0.0 , (CGFloat) w , (CGFloat) h );
CGContextScaleCTM( m_cgContext, 1, -1 );
#ifdef __WXMAC__
PlotIconRefInContext( m_cgContext , &r , kAlignNone , kTransformNone ,
CGContextScaleCTM( m_cgContext, 1, -1 );
#ifdef __WXMAC__
PlotIconRefInContext( m_cgContext , &r , kAlignNone , kTransformNone ,
CTFontRef font = fref->GetCTFont();
CGColorRef col = wxMacCreateCGColor( fref->GetColour() );
CTUnderlineStyle ustyle = fref->GetUnderlined() ? kCTUnderlineStyleSingle : kCTUnderlineStyleNone ;
CTFontRef font = fref->GetCTFont();
CGColorRef col = wxMacCreateCGColor( fref->GetColour() );
CTUnderlineStyle ustyle = fref->GetUnderlined() ? kCTUnderlineStyleSingle : kCTUnderlineStyleNone ;
CFStringRef keys[] = { kCTFontAttributeName , kCTForegroundColorAttributeName, kCTUnderlineStyleAttributeName };
CFTypeRef values[] = { font, col, underlined };
CFStringRef keys[] = { kCTFontAttributeName , kCTForegroundColorAttributeName, kCTUnderlineStyleAttributeName };
CFTypeRef values[] = { font, col, underlined };
- wxCFRef<CFDictionaryRef> attributes( CFDictionaryCreate(kCFAllocatorDefault, (const void**) &keys, (const void**) &values,
+ wxCFRef<CFDictionaryRef> attributes( CFDictionaryCreate(kCFAllocatorDefault, (const void**) &keys, (const void**) &values,
WXSIZEOF( keys ), &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks) );
wxCFRef<CFAttributedStringRef> attrtext( CFAttributedStringCreate(kCFAllocatorDefault, text, attributes) );
wxCFRef<CTLineRef> line( CTLineCreateWithAttributedString(attrtext) );
WXSIZEOF( keys ), &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks) );
wxCFRef<CFAttributedStringRef> attrtext( CFAttributedStringCreate(kCFAllocatorDefault, text, attributes) );
wxCFRef<CTLineRef> line( CTLineCreateWithAttributedString(attrtext) );
CGContextSaveGState(m_cgContext);
CGContextTranslateCTM(m_cgContext, x, y);
CGContextScaleCTM(m_cgContext, 1, -1);
CGContextSaveGState(m_cgContext);
CGContextTranslateCTM(m_cgContext, x, y);
CGContextScaleCTM(m_cgContext, 1, -1);
ATSUStyle style = (((wxMacCoreGraphicsFontData*)m_font.GetRefData())->GetATSUStyle());
status = ::ATSUCreateTextLayoutWithTextPtr( unibuf.GetBuffer() , 0 , chars , chars , 1 ,
&chars , &style , &atsuLayout );
ATSUStyle style = (((wxMacCoreGraphicsFontData*)m_font.GetRefData())->GetATSUStyle());
status = ::ATSUCreateTextLayoutWithTextPtr( unibuf.GetBuffer() , 0 , chars , chars , 1 ,
&chars , &style , &atsuLayout );
status = ::ATSUSetTransientFontMatching( atsuLayout , true );
wxASSERT_MSG( status == noErr , wxT("couldn't setup transient font matching") );
status = ::ATSUSetTransientFontMatching( atsuLayout , true );
wxASSERT_MSG( status == noErr , wxT("couldn't setup transient font matching") );
status = ::ATSUSetLayoutControls(atsuLayout , sizeof(atsuTags) / sizeof(ATSUAttributeTag),
atsuTags, atsuSizes, atsuValues );
}
status = ::ATSUSetLayoutControls(atsuLayout , sizeof(atsuTags) / sizeof(ATSUAttributeTag),
atsuTags, atsuSizes, atsuValues );
}
status = ::ATSUSetLayoutControls(atsuLayout , sizeof(atsuTags) / sizeof(ATSUAttributeTag),
atsuTags, atsuSizes, atsuValues );
}
status = ::ATSUSetLayoutControls(atsuLayout , sizeof(atsuTags) / sizeof(ATSUAttributeTag),
atsuTags, atsuSizes, atsuValues );
}
ATSUTextMeasurement textBefore, textAfter;
ATSUTextMeasurement ascent, descent;
ATSUTextMeasurement textBefore, textAfter;
ATSUTextMeasurement ascent, descent;
status = ::ATSUGetUnjustifiedBounds( atsuLayout, kATSUFromTextBeginning, kATSUToTextEnd,
&textBefore , &textAfter, &ascent , &descent );
status = ::ATSUGetUnjustifiedBounds( atsuLayout, kATSUFromTextBeginning, kATSUToTextEnd,
&textBefore , &textAfter, &ascent , &descent );
status = ::ATSUMeasureTextImage( atsuLayout, kATSUFromTextBeginning, kATSUToTextEnd,
IntToFixed(x) , IntToFixed(y) , &rect );
wxASSERT_MSG( status == noErr , wxT("couldn't measure the rotated text") );
status = ::ATSUMeasureTextImage( atsuLayout, kATSUFromTextBeginning, kATSUToTextEnd,
IntToFixed(x) , IntToFixed(y) , &rect );
wxASSERT_MSG( status == noErr , wxT("couldn't measure the rotated text") );
CGContextScaleCTM(m_cgContext, 1, -1);
status = ::ATSUDrawText( atsuLayout, kATSUFromTextBeginning, kATSUToTextEnd,
IntToFixed(0) , IntToFixed(0) );
CGContextScaleCTM(m_cgContext, 1, -1);
status = ::ATSUDrawText( atsuLayout, kATSUFromTextBeginning, kATSUToTextEnd,
IntToFixed(0) , IntToFixed(0) );
wxCFStringRef text(str, wxLocale::GetSystemEncoding() );
CFStringRef keys[] = { kCTFontAttributeName };
CFTypeRef values[] = { font };
wxCFStringRef text(str, wxLocale::GetSystemEncoding() );
CFStringRef keys[] = { kCTFontAttributeName };
CFTypeRef values[] = { font };
- wxCFRef<CFDictionaryRef> attributes( CFDictionaryCreate(kCFAllocatorDefault, (const void**) &keys, (const void**) &values,
+ wxCFRef<CFDictionaryRef> attributes( CFDictionaryCreate(kCFAllocatorDefault, (const void**) &keys, (const void**) &values,
WXSIZEOF( keys ), &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks) );
wxCFRef<CFAttributedStringRef> attrtext( CFAttributedStringCreate(kCFAllocatorDefault, text, attributes) );
wxCFRef<CTLineRef> line( CTLineCreateWithAttributedString(attrtext) );
WXSIZEOF( keys ), &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks) );
wxCFRef<CFAttributedStringRef> attrtext( CFAttributedStringCreate(kCFAllocatorDefault, text, attributes) );
wxCFRef<CTLineRef> line( CTLineCreateWithAttributedString(attrtext) );
w = CTLineGetTypographicBounds(line, &a, &d, &l) ;
w = CTLineGetTypographicBounds(line, &a, &d, &l) ;
ATSUTextLayout atsuLayout;
wxMacUniCharBuffer unibuf( str );
UniCharCount chars = unibuf.GetChars();
ATSUTextLayout atsuLayout;
wxMacUniCharBuffer unibuf( str );
UniCharCount chars = unibuf.GetChars();
ATSUStyle style = (((wxMacCoreGraphicsFontData*)m_font.GetRefData())->GetATSUStyle());
status = ::ATSUCreateTextLayoutWithTextPtr( unibuf.GetBuffer() , 0 , chars , chars , 1 ,
&chars , &style , &atsuLayout );
ATSUStyle style = (((wxMacCoreGraphicsFontData*)m_font.GetRefData())->GetATSUStyle());
status = ::ATSUCreateTextLayoutWithTextPtr( unibuf.GetBuffer() , 0 , chars , chars , 1 ,
&chars , &style , &atsuLayout );
status = ::ATSUSetTransientFontMatching( atsuLayout , true );
wxASSERT_MSG( status == noErr , wxT("couldn't setup transient font matching") );
ATSUTextMeasurement textBefore, textAfter;
ATSUTextMeasurement textAscent, textDescent;
status = ::ATSUSetTransientFontMatching( atsuLayout , true );
wxASSERT_MSG( status == noErr , wxT("couldn't setup transient font matching") );
ATSUTextMeasurement textBefore, textAfter;
ATSUTextMeasurement textAscent, textDescent;
status = ::ATSUGetUnjustifiedBounds( atsuLayout, kATSUFromTextBeginning, kATSUToTextEnd,
&textBefore , &textAfter, &textAscent , &textDescent );
status = ::ATSUGetUnjustifiedBounds( atsuLayout, kATSUFromTextBeginning, kATSUToTextEnd,
&textBefore , &textAfter, &textAscent , &textDescent );
{
wxMacCoreGraphicsFontData* fref = (wxMacCoreGraphicsFontData*)m_font.GetRefData();
CTFontRef font = fref->GetCTFont();
{
wxMacCoreGraphicsFontData* fref = (wxMacCoreGraphicsFontData*)m_font.GetRefData();
CTFontRef font = fref->GetCTFont();
wxCFStringRef t(text, wxLocale::GetSystemEncoding() );
CFStringRef keys[] = { kCTFontAttributeName };
CFTypeRef values[] = { font };
wxCFStringRef t(text, wxLocale::GetSystemEncoding() );
CFStringRef keys[] = { kCTFontAttributeName };
CFTypeRef values[] = { font };
- wxCFRef<CFDictionaryRef> attributes( CFDictionaryCreate(kCFAllocatorDefault, (const void**) &keys, (const void**) &values,
+ wxCFRef<CFDictionaryRef> attributes( CFDictionaryCreate(kCFAllocatorDefault, (const void**) &keys, (const void**) &values,
WXSIZEOF( keys ), &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks) );
wxCFRef<CFAttributedStringRef> attrtext( CFAttributedStringCreate(kCFAllocatorDefault, t, attributes) );
wxCFRef<CTLineRef> line( CTLineCreateWithAttributedString(attrtext) );
WXSIZEOF( keys ), &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks) );
wxCFRef<CFAttributedStringRef> attrtext( CFAttributedStringCreate(kCFAllocatorDefault, t, attributes) );
wxCFRef<CTLineRef> line( CTLineCreateWithAttributedString(attrtext) );
int chars = text.length();
for ( int pos = 0; pos < (int)chars; pos ++ )
{
widths[pos] = CTLineGetOffsetForStringIndex( line, pos+1 , NULL )+0.5;
}
int chars = text.length();
for ( int pos = 0; pos < (int)chars; pos ++ )
{
widths[pos] = CTLineGetOffsetForStringIndex( line, pos+1 , NULL )+0.5;
}
ATSUTextLayout atsuLayout;
wxMacUniCharBuffer unibuf( text );
UniCharCount chars = unibuf.GetChars();
ATSUTextLayout atsuLayout;
wxMacUniCharBuffer unibuf( text );
UniCharCount chars = unibuf.GetChars();
ATSUStyle style = (((wxMacCoreGraphicsFontData*)m_font.GetRefData())->GetATSUStyle());
status = ::ATSUCreateTextLayoutWithTextPtr( unibuf.GetBuffer() , 0 , chars , chars , 1 ,
&chars , &style , &atsuLayout );
ATSUStyle style = (((wxMacCoreGraphicsFontData*)m_font.GetRefData())->GetATSUStyle());
status = ::ATSUCreateTextLayoutWithTextPtr( unibuf.GetBuffer() , 0 , chars , chars , 1 ,
&chars , &style , &atsuLayout );
status = ::ATSUSetTransientFontMatching( atsuLayout , true );
wxASSERT_MSG( status == noErr , wxT("couldn't setup transient font matching") );
status = ::ATSUSetTransientFontMatching( atsuLayout , true );
wxASSERT_MSG( status == noErr , wxT("couldn't setup transient font matching") );
for ( int pos = 0; pos < (int)chars; pos ++ )
{
unsigned long actualNumberOfBounds = 0;
ATSTrapezoid glyphBounds;
for ( int pos = 0; pos < (int)chars; pos ++ )
{
unsigned long actualNumberOfBounds = 0;
ATSTrapezoid glyphBounds;
// We get a single bound, since the text should only require one. If it requires more, there is an issue
OSStatus result;
result = ATSUGetGlyphBounds( atsuLayout, 0, 0, kATSUFromTextBeginning, pos + 1,
kATSUseDeviceOrigins, 1, &glyphBounds, &actualNumberOfBounds );
if (result != noErr || actualNumberOfBounds != 1 )
return;
// We get a single bound, since the text should only require one. If it requires more, there is an issue
OSStatus result;
result = ATSUGetGlyphBounds( atsuLayout, 0, 0, kATSUFromTextBeginning, pos + 1,
kATSUseDeviceOrigins, 1, &glyphBounds, &actualNumberOfBounds );
if (result != noErr || actualNumberOfBounds != 1 )
return;
widths[pos] = FixedToInt( glyphBounds.upperRight.x - glyphBounds.upperLeft.x );
//unsigned char uch = s[i];
}
widths[pos] = FixedToInt( glyphBounds.upperRight.x - glyphBounds.upperLeft.x );
//unsigned char uch = s[i];
}
+#else
+ ATSLayoutRecord *layoutRecords = NULL;
+ ItemCount glyphCount = 0;
+
+ // Get the glyph extents
+ OSStatus err = ::ATSUDirectGetLayoutDataArrayPtrFromTextLayout(atsuLayout,
+ 0,
+ kATSUDirectDataLayoutRecordATSLayoutRecordCurrent,
+ (void **)
+ &layoutRecords,
+ &glyphCount);
+ wxASSERT(glyphCount == (text.length()+1));
+ if ( err == noErr && glyphCount == (text.length()+1))
+ {
+ for ( int pos = 1; pos < (int)glyphCount ; pos ++ )
+ {
+ widths[pos-1] = FixedToInt( layoutRecords[pos].realPos );
+ }
+ }
+
+ ::ATSUDirectReleaseLayoutDataArrayPtr(NULL,
+ kATSUDirectDataLayoutRecordATSLayoutRecordCurrent,
+ (void **) &layoutRecords);
+#endif
virtual wxGraphicsContext * CreateContext( const wxWindowDC& dc);
virtual wxGraphicsContext * CreateContext( const wxMemoryDC& dc);
virtual wxGraphicsContext * CreateContext( const wxWindowDC& dc);
virtual wxGraphicsContext * CreateContext( const wxMemoryDC& dc);
virtual wxGraphicsContext * CreateContextFromNativeContext( void * context );
virtual wxGraphicsContext * CreateContextFromNativeWindow( void * window );
virtual wxGraphicsContext * CreateContext( wxWindow* window );
virtual wxGraphicsContext * CreateContextFromNativeContext( void * context );
virtual wxGraphicsContext * CreateContextFromNativeWindow( void * window );
virtual wxGraphicsContext * CreateContext( wxWindow* window );
// create a native bitmap representation
virtual wxGraphicsBitmap CreateBitmap( const wxBitmap &bitmap ) ;
// create a native bitmap representation
virtual wxGraphicsBitmap CreateBitmap( const wxBitmap &bitmap ) ;
// create a native bitmap representation
virtual wxGraphicsBitmap CreateSubBitmap( const wxGraphicsBitmap &bitmap, wxDouble x, wxDouble y, wxDouble w, wxDouble h ) ;
private :
// create a native bitmap representation
virtual wxGraphicsBitmap CreateSubBitmap( const wxGraphicsBitmap &bitmap, wxDouble x, wxDouble y, wxDouble w, wxDouble h ) ;
private :
+wxGraphicsContext * wxMacCoreGraphicsRenderer::CreateContext( const wxPrinterDC& dc )
+{
+#ifdef __WXMAC__
+ const wxDCImpl* impl = dc.GetImpl();
+ wxPrinterDCImpl *print_impl = wxDynamicCast( impl, wxPrinterDCImpl );
+ if (print_impl)
+ {
+ int w, h;
+ print_impl->GetSize( &w, &h );
+ return new wxMacCoreGraphicsContext( this,
+ (CGContextRef)(print_impl->GetGraphicsContext()->GetNativeContext()), (wxDouble) w, (wxDouble) h );
+ }
+#endif
+ return NULL;
+}
+
wxGraphicsContext * wxMacCoreGraphicsRenderer::CreateContextFromNativeContext( void * context )
{
return new wxMacCoreGraphicsContext(this,(CGContextRef)context);
wxGraphicsContext * wxMacCoreGraphicsRenderer::CreateContextFromNativeContext( void * context )
{
return new wxMacCoreGraphicsContext(this,(CGContextRef)context);
-wxGraphicsBitmap wxMacCoreGraphicsRenderer::CreateSubBitmap( const wxGraphicsBitmap &bmp, wxDouble x, wxDouble y, wxDouble w, wxDouble h )
+wxGraphicsBitmap wxMacCoreGraphicsRenderer::CreateSubBitmap( const wxGraphicsBitmap &bmp, wxDouble x, wxDouble y, wxDouble w, wxDouble h )
- CGImageRef subimg = CGImageCreateWithImageInRect(img,CGRectMake( x , y , w , h ));
- p.SetRefData(new wxMacCoreGraphicsBitmapData( this , subimg ) );
+ CGImageRef subimg = CGImageCreateWithImageInRect(img,CGRectMake( (CGFloat) x , (CGFloat) y , (CGFloat) w , (CGFloat) h ));
+ p.SetRefData(new wxMacCoreGraphicsBitmapData( this , subimg, refdata->IsMonochrome() ) );
-void wxMacReleaseMemoryBufferProviderCallback(void *info, const void *data, size_t WXUNUSED(size))
+void
+wxMacReleaseMemoryBufferProviderCallback(void *info,
+ const void * WXUNUSED_UNLESS_DEBUG(data),
+ size_t WXUNUSED(size))
return CGDataProviderCreateWithData( b , (const void *) b->GetData() , b->GetDataLen() ,
wxMacReleaseMemoryBufferProviderCallback );
return CGDataProviderCreateWithData( b , (const void *) b->GetData() , b->GetDataLen() ,
wxMacReleaseMemoryBufferProviderCallback );