482
static const char *gs_stripedback_xpm[] = {
483
/* columns rows colors chars-per-pixel */
494
wxBitmap gs_stripedback_bmp( wxImage( (const char* const* ) gs_stripedback_xpm ), -1 ) ;
496
wxMacCoreGraphicsColour::~wxMacCoreGraphicsColour()
498
delete[] m_patternColorComponents;
501
void wxMacCoreGraphicsColour::Init()
504
m_patternColorComponents = NULL;
507
void wxMacCoreGraphicsColour::Apply( CGContextRef cgContext )
511
CGAffineTransform matrix = CGContextGetCTM( cgContext );
512
CGContextSetPatternPhase( cgContext, CGSizeMake(matrix.tx, matrix.ty) );
513
CGContextSetFillColorSpace( cgContext , m_colorSpace );
514
CGContextSetFillPattern( cgContext, m_pattern , m_patternColorComponents );
518
CGContextSetFillColorWithColor( cgContext, m_color );
522
wxMacCoreGraphicsColour::wxMacCoreGraphicsColour()
527
wxMacCoreGraphicsColour::wxMacCoreGraphicsColour( const wxBrush &brush )
530
if ( brush.GetStyle() == wxSOLID )
532
if ( brush.MacGetBrushKind() == kwxMacBrushTheme )
534
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
535
if ( UMAGetSystemVersion() >= 0x1040 )
538
HIThemeBrushCreateCGColor( brush.MacGetTheme(), &color );
539
m_color.Set( color ) ;
544
if( brush.MacGetTheme() == kThemeBrushDialogBackgroundActive )
546
// striped background is a pattern, we have to emulate it
549
m_patternColorComponents = new CGFloat[1] ;
550
m_patternColorComponents[0] = 1.0;
551
m_colorSpace.Set( CGColorSpaceCreatePattern( NULL ) );
552
m_pattern.Set( *( new ImagePattern( &gs_stripedback_bmp , CGAffineTransformMakeScale( 1,-1 ) ) ) );
556
// as close as we can get, unfortunately < 10.4 things get difficult
558
GetThemeBrushAsColor( brush.MacGetTheme(), 32, true, &color );
559
CGFloat components[4] = { (CGFloat) color.red / 65536,
560
(CGFloat) color.green / 65536, (CGFloat) color.blue / 65536, 1 } ;
561
m_color.Set( CGColorCreate( wxMacGetGenericRGBColorSpace() , components ) ) ;
567
CGFloat components[4] = { brush.GetColour().Red() / 255.0 , brush.GetColour().Green() / 255.0 ,
568
brush.GetColour().Blue() / 255.0 , brush.GetColour().Alpha() / 255.0 } ;
569
m_color.Set( CGColorCreate( wxMacGetGenericRGBColorSpace() , components ) ) ;
572
else if ( brush.IsHatch() )
575
m_colorSpace.Set( CGColorSpaceCreatePattern( wxMacGetGenericRGBColorSpace() ) );
576
m_pattern.Set( *( new HatchPattern( brush.GetStyle() , CGAffineTransformMakeScale( 1,-1 ) ) ) );
578
m_patternColorComponents = new CGFloat[4] ;
579
m_patternColorComponents[0] = brush.GetColour().Red() / 255.0;
580
m_patternColorComponents[1] = brush.GetColour().Green() / 255.0;
581
m_patternColorComponents[2] = brush.GetColour().Blue() / 255.0;
582
m_patternColorComponents[3] = brush.GetColour().Alpha() / 255.0;
586
// now brush is a bitmap
587
wxBitmap* bmp = brush.GetStipple();
588
if ( bmp && bmp->Ok() )
591
m_patternColorComponents = new CGFloat[1] ;
592
m_patternColorComponents[0] = 1.0;
593
m_colorSpace.Set( CGColorSpaceCreatePattern( NULL ) );
594
m_pattern.Set( *( new ImagePattern( bmp , CGAffineTransformMakeScale( 1,-1 ) ) ) );
481
599
class wxMacCoreGraphicsBrushData : public wxGraphicsObjectRefData
532
645
m_isShading = true ;
535
wxMacCoreGraphicsBrushData::wxMacCoreGraphicsBrushData(wxGraphicsRenderer* renderer, const wxBrush &brush) : wxGraphicsObjectRefData( renderer )
648
wxMacCoreGraphicsBrushData::wxMacCoreGraphicsBrushData(wxGraphicsRenderer* renderer, const wxBrush &brush) : wxGraphicsObjectRefData( renderer ),
539
if ( brush.GetStyle() == wxSOLID )
541
if ( brush.MacGetBrushKind() == kwxMacBrushTheme )
543
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
544
if ( HIThemeBrushCreateCGColor != 0 )
547
HIThemeBrushCreateCGColor( brush.MacGetTheme(), &color );
548
m_color.Set( color ) ;
553
// as close as we can get, unfortunately < 10.4 things get difficult
555
GetThemeBrushAsColor( brush.MacGetTheme(), 32, true, &color );
556
float components[4] = { (CGFloat) color.red / 65536,
557
(CGFloat) color.green / 65536, (CGFloat) color.blue / 65536, 1 } ;
558
m_color.Set( CGColorCreate( wxMacGetGenericRGBColorSpace() , components ) ) ;
563
float components[4] = { brush.GetColour().Red() / 255.0 , brush.GetColour().Green() / 255.0 ,
564
brush.GetColour().Blue() / 255.0 , brush.GetColour().Alpha() / 255.0 } ;
565
m_color.Set( CGColorCreate( wxMacGetGenericRGBColorSpace() , components ) ) ;
568
else if ( brush.IsHatch() )
571
m_colorSpace.Set( CGColorSpaceCreatePattern( wxMacGetGenericRGBColorSpace() ) );
572
m_pattern.Set( *( new HatchPattern( brush.GetStyle() , CGAffineTransformMakeScale( 1,-1 ) ) ) );
574
m_patternColorComponents = new CGFloat[4] ;
575
m_patternColorComponents[0] = brush.GetColour().Red() / 255.0;
576
m_patternColorComponents[1] = brush.GetColour().Green() / 255.0;
577
m_patternColorComponents[2] = brush.GetColour().Blue() / 255.0;
578
m_patternColorComponents[3] = brush.GetColour().Alpha() / 255.0;
582
// now brush is a bitmap
583
wxBitmap* bmp = brush.GetStipple();
584
if ( bmp && bmp->Ok() )
587
m_patternColorComponents = new CGFloat[1] ;
588
m_patternColorComponents[0] = 1.0;
589
m_colorSpace.Set( CGColorSpaceCreatePattern( NULL ) );
590
m_pattern.Set( *( new ImagePattern( bmp , CGAffineTransformMakeScale( 1,-1 ) ) ) );
595
655
wxMacCoreGraphicsBrushData::~wxMacCoreGraphicsBrushData()
1448
1520
EnsureIsValid();
1450
bool offset = ShouldOffset();
1452
CGContextTranslateCTM( m_cgContext, 0.5, 0.5 );
1522
wxQuartzOffsetHelper helper( m_cgContext , ShouldOffset() );
1454
1524
((wxMacCoreGraphicsPenData*)m_pen.GetRefData())->Apply(this);
1455
1525
CGContextAddPath( m_cgContext , (CGPathRef) path.GetNativePath() );
1456
1526
CGContextStrokePath( m_cgContext );
1459
CGContextTranslateCTM( m_cgContext, -0.5, -0.5 );
1462
1529
void wxMacCoreGraphicsContext::DrawPath( const wxGraphicsPath &path , int fillStyle )
1502
1569
if ( !m_pen.IsNull() )
1503
1570
((wxMacCoreGraphicsPenData*)m_pen.GetRefData())->Apply(this);
1505
bool offset = ShouldOffset();
1508
CGContextTranslateCTM( m_cgContext, 0.5, 0.5 );
1572
wxQuartzOffsetHelper helper( m_cgContext , ShouldOffset() );
1510
1574
CGContextAddPath( m_cgContext , (CGPathRef) path.GetNativePath() );
1511
1575
CGContextDrawPath( m_cgContext , mode );
1514
CGContextTranslateCTM( m_cgContext, -0.5, -0.5 );
1517
1578
void wxMacCoreGraphicsContext::FillPath( const wxGraphicsPath &path , int fillStyle )