diff options
author | Herbert Dürr <hdu@apache.org> | 2014-05-19 12:05:27 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2014-05-29 16:13:51 +0100 |
commit | 507efabe8b40e34c2bebfdaa00d4264c5345d3dd (patch) | |
tree | 2b120f40f1920df54e6e50d4b28ed606ed3abb67 /vcl/quartz | |
parent | 682849828330f959d3a6cd63a45e1e979a1bd24c (diff) |
Resolves: #i124922# allow late setting of the font color...
for CoreText-layouted text
(cherry picked from commit 42f9768f771457c53a9f1e6a3581b2df9856401f)
Conflicts:
vcl/aqua/source/gdi/ctfonts.cxx
vcl/aqua/source/gdi/ctfonts.hxx
vcl/aqua/source/gdi/ctlayout.cxx
vcl/source/gdi/outdev3.cxx
Change-Id: Ie2685ab80ca87ea72e25f18d02f883fb36c24a36
Diffstat (limited to 'vcl/quartz')
-rw-r--r-- | vcl/quartz/ctfonts.cxx | 14 | ||||
-rw-r--r-- | vcl/quartz/ctlayout.cxx | 9 |
2 files changed, 12 insertions, 11 deletions
diff --git a/vcl/quartz/ctfonts.cxx b/vcl/quartz/ctfonts.cxx index bede546c836b..d2e3d3259db2 100644 --- a/vcl/quartz/ctfonts.cxx +++ b/vcl/quartz/ctfonts.cxx @@ -100,6 +100,10 @@ CoreTextStyle::CoreTextStyle( const FontSelectPattern& rFSD ) CFDictionarySetValue( mpStyleDict, kCTFontAttributeName, pNewCTFont ); CFRelease( pNewCTFont); + // allow delayed setting the font color, i.e. after the text layout + CFDictionarySetValue( mpStyleDict, kCTForegroundColorFromContextAttributeName, kCFBooleanTrue ); + + #if 0 // LastResort is implicit in CoreText's font cascading const void* aGFBDescriptors[] = { CTFontDescriptorCreateWithNameAndSize( CFSTR("LastResort"), 0) }; // TODO: use the full GFB list const int nGfbCount = sizeof(aGFBDescriptors) / sizeof(*aGFBDescriptors); @@ -218,16 +222,6 @@ bool CoreTextStyle::GetGlyphOutline( sal_GlyphId aGlyphId, basegfx::B2DPolyPolyg return true; } -void CoreTextStyle::SetTextColor( const RGBAColor& rColor ) -{ - CGFloat aColor[] = { rColor.GetRed(), rColor.GetGreen(), rColor.GetBlue(), rColor.GetAlpha() }; - CGColorSpaceRef cs = CGColorSpaceCreateDeviceRGB(); - CGColorRef pCGColor = CGColorCreate( cs, aColor ); - CGColorSpaceRelease( cs ); - CFDictionarySetValue( mpStyleDict, kCTForegroundColorAttributeName, pCGColor ); - CFRelease( pCGColor); -} - PhysicalFontFace* CoreTextFontData::Clone( void ) const { return new CoreTextFontData( *this); diff --git a/vcl/quartz/ctlayout.cxx b/vcl/quartz/ctlayout.cxx index f74b235c3325..347cc5e7fbee 100644 --- a/vcl/quartz/ctlayout.cxx +++ b/vcl/quartz/ctlayout.cxx @@ -108,6 +108,7 @@ bool CTLayout::LayoutText( ImplLayoutArgs& rArgs ) m_vRunData.release(); bLayouted = false; + // release an eventual older layout if( mpAttrString ) CFRelease( mpAttrString ); mpAttrString = NULL; @@ -115,6 +116,7 @@ bool CTLayout::LayoutText( ImplLayoutArgs& rArgs ) CFRelease( mpCTLine ); mpCTLine = NULL; + // initialize the new layout SalLayout::AdjustLayout( rArgs ); mnCharCount = mnEndCharPos - mnMinCharPos; @@ -338,7 +340,7 @@ void CTLayout::drawCTLine(AquaSalGraphics& rAquaGraphics, CTLineRef ctline, cons CGContextScaleCTM( rAquaGraphics.mrContext, 1.0, -1.0 ); CGContextSetShouldAntialias( rAquaGraphics.mrContext, !rAquaGraphics.mbNonAntialiasedText ); - // Draw the text + // set the text transformation (e.g. position) CGPoint aTextPos = GetTextDrawPosition(); if( pStyle->mfFontRotation != 0.0 ) @@ -353,7 +355,12 @@ void CTLayout::drawCTLine(AquaSalGraphics& rAquaGraphics, CTLineRef ctline, cons SAL_INFO( "vcl.ct", "CGContextSetTextPosition(" << rAquaGraphics.mrContext << "," << aTextPos << ")" ); CGContextSetTextPosition( rAquaGraphics.mrContext, aTextPos.x, aTextPos.y ); + + // set the text color as fill color (see kCTForegroundColorFromContextAttributeName) + CGContextSetFillColor( rAquaGraphics.mrContext, rAquaGraphics.maTextColor.AsArray() ); + SAL_INFO( "vcl.ct", "CTLineDraw(" << ctline << "," << rAquaGraphics.mrContext << ")" ); + // draw the text CTLineDraw( ctline, rAquaGraphics.mrContext ); #ifndef IOS // request an update of the changed window area |