if ( bmp && bmp->Ok() )
{
m_colorSpace.Set( CGColorSpaceCreatePattern( NULL ) );
- m_pattern.Set( *( new ImagePattern( bmp , CGAffineTransformMakeTranslation( 0,0 ) ) ) );
+ m_pattern.Set( *( new ImagePattern( bmp , CGAffineTransformMakeScale( 1,-1 ) ) ) );
m_patternColorComponents = new CGFloat[1] ;
m_patternColorComponents[0] = 1.0;
m_isPattern = true;
{
m_isPattern = true;
m_colorSpace.Set( CGColorSpaceCreatePattern( wxMacGetGenericRGBColorSpace() ) );
- m_pattern.Set( *( new HatchPattern( pen.GetStyle() , CGAffineTransformMakeTranslation( 0,0 ) ) ) );
+ m_pattern.Set( *( 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;
if ( m_isPattern )
{
+ CGAffineTransform matrix = CGContextGetCTM( cg );
+ CGContextSetPatternPhase( cg, CGSizeMake(matrix.tx, matrix.ty) );
CGContextSetStrokeColorSpace( cg , m_colorSpace );
CGContextSetStrokePattern( cg, m_pattern , m_patternColorComponents );
}
{
m_isPattern = true;
m_colorSpace.Set( CGColorSpaceCreatePattern( wxMacGetGenericRGBColorSpace() ) );
- m_pattern.Set( *( new HatchPattern( brush.GetStyle() , CGAffineTransformMakeTranslation( 0,0 ) ) ) );
+ m_pattern.Set( *( new HatchPattern( brush.GetStyle() , CGAffineTransformMakeScale( 1,-1 ) ) ) );
m_patternColorComponents = new CGFloat[4] ;
m_patternColorComponents[0] = brush.GetColour().Red() / 255.0;
m_patternColorComponents = new CGFloat[1] ;
m_patternColorComponents[0] = 1.0;
m_colorSpace.Set( CGColorSpaceCreatePattern( NULL ) );
- m_pattern.Set( *( new ImagePattern( bmp , CGAffineTransformMakeTranslation( 0,0 ) ) ) );
+ m_pattern.Set( *( new ImagePattern( bmp , CGAffineTransformMakeScale( 1,-1 ) ) ) );
}
}
}
if ( m_isShading )
{
+ // nothing to set as shades are processed by clipping using the path and filling
}
else
{
if ( m_isPattern )
{
+ CGAffineTransform matrix = CGContextGetCTM( cg );
+ CGContextSetPatternPhase( cg, CGSizeMake(matrix.tx, matrix.ty) );
CGContextSetFillColorSpace( cg , m_colorSpace );
CGContextSetFillPattern( cg, m_pattern , m_patternColorComponents );
}
wxASSERT_MSG( status == noErr , wxT("couldn't measure the rotated text") );
Rect rect;
-/*
- // TODO
- if ( m_backgroundMode == wxSOLID )
- {
- wxGraphicsPath* path = m_graphicContext->CreatePath();
- path->MoveToPoint( drawX , drawY );
- path->AddLineToPoint(
- (int) (drawX + sin(angle / RAD2DEG) * FixedToInt(ascent + descent)) ,
- (int) (drawY + cos(angle / RAD2DEG) * FixedToInt(ascent + descent)) );
- path->AddLineToPoint(
- (int) (drawX + sin(angle / RAD2DEG) * FixedToInt(ascent + descent ) + cos(angle / RAD2DEG) * FixedToInt(textAfter)) ,
- (int) (drawY + cos(angle / RAD2DEG) * FixedToInt(ascent + descent) - sin(angle / RAD2DEG) * FixedToInt(textAfter)) );
- path->AddLineToPoint(
- (int) (drawX + cos(angle / RAD2DEG) * FixedToInt(textAfter)) ,
- (int) (drawY - sin(angle / RAD2DEG) * FixedToInt(textAfter)) );
-
- m_graphicContext->FillPath( path , m_textBackgroundColour );
- delete path;
- }
-*/
- x += (int)(sin(angle / RAD2DEG) * FixedToInt(ascent));
- y += (int)(cos(angle / RAD2DEG) * FixedToInt(ascent));
+ x += (int)(sin(angle) * FixedToInt(ascent));
+ y += (int)(cos(angle) * FixedToInt(ascent));
status = ::ATSUMeasureTextImage( atsuLayout, kATSUFromTextBeginning, kATSUToTextEnd,
IntToFixed(x) , IntToFixed(y) , &rect );