diff options
author | Chris Sherlock <chris.sherlock79@gmail.com> | 2016-01-28 16:31:30 +1100 |
---|---|---|
committer | Chris Sherlock <chris.sherlock79@gmail.com> | 2016-01-29 01:59:55 +0000 |
commit | d1a49df6833ff16f5cbaf98534eaae62693e520b (patch) | |
tree | 2bbf60556966b4939f3700cab9d1a6278e6b67f0 /vcl/source | |
parent | 6402164182865d7644d2e93158a23e12a6da3926 (diff) |
vcl: add text alignment functions to ImplFont and FontAttributes
ImplFont and FontAttributes now have GetAlignment and SetAlignment,
and I have renamed Font::GetAlign to Font::GetAlignment, and
Font::SetAlign to Font::SetAlignment.
See commit description in 8bfccd3a71d911b6d ("vcl: Create accessor
and mutator for font scaling in FontMetric") for reasoning behind
patch.
Unit test added to vcl/qa/cppunit/font.cxx to test text alignment.
Change-Id: I6272c84fc9416c90616d957d1897eba9469fe7ba
Reviewed-on: https://gerrit.libreoffice.org/21876
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Chris Sherlock <chris.sherlock79@gmail.com>
Diffstat (limited to 'vcl/source')
-rw-r--r-- | vcl/source/edit/texteng.cxx | 4 | ||||
-rw-r--r-- | vcl/source/filter/sgvtext.cxx | 2 | ||||
-rw-r--r-- | vcl/source/filter/wmf/emfwr.cxx | 2 | ||||
-rw-r--r-- | vcl/source/filter/wmf/winmtf.cxx | 8 | ||||
-rw-r--r-- | vcl/source/filter/wmf/wmfwr.cxx | 6 | ||||
-rw-r--r-- | vcl/source/font/font.cxx | 6 | ||||
-rw-r--r-- | vcl/source/font/fontattributes.cxx | 3 | ||||
-rw-r--r-- | vcl/source/gdi/pdfwriter_impl.cxx | 6 | ||||
-rw-r--r-- | vcl/source/gdi/pdfwriter_impl.hxx | 2 | ||||
-rw-r--r-- | vcl/source/gdi/svmconverter.cxx | 8 | ||||
-rw-r--r-- | vcl/source/outdev/font.cxx | 4 | ||||
-rw-r--r-- | vcl/source/outdev/outdev.cxx | 2 | ||||
-rw-r--r-- | vcl/source/outdev/outdevstate.cxx | 2 | ||||
-rw-r--r-- | vcl/source/outdev/text.cxx | 4 |
14 files changed, 31 insertions, 28 deletions
diff --git a/vcl/source/edit/texteng.cxx b/vcl/source/edit/texteng.cxx index 6763664329c1..6f593a7931b4 100644 --- a/vcl/source/edit/texteng.cxx +++ b/vcl/source/edit/texteng.cxx @@ -191,8 +191,8 @@ void TextEngine::SetFont( const vcl::Font& rFont ) aFillColor.SetTransparency( 0 ); maFont.SetFillColor( aFillColor ); - maFont.SetAlign( ALIGN_TOP ); - mpRefDev->SetFont( maFont); + maFont.SetAlignment( ALIGN_TOP ); + mpRefDev->SetFont( maFont ); Size aTextSize; aTextSize.Width() = mpRefDev->GetTextWidth(" "); aTextSize.Height() = mpRefDev->GetTextHeight(); diff --git a/vcl/source/filter/sgvtext.cxx b/vcl/source/filter/sgvtext.cxx index 90070a4bd361..7d5c0d4ab8aa 100644 --- a/vcl/source/filter/sgvtext.cxx +++ b/vcl/source/filter/sgvtext.cxx @@ -532,7 +532,7 @@ sal_uInt16 SetTextContext(OutputDevice& rOut, ObjTextType& Atr, bool Kapt, sal_u aColor=Sgv2SvFarbe(Atr.L.LFarbe,Atr.L.LBFarbe,Atr.L.LIntens); aFont.SetColor(aColor); aColor=Sgv2SvFarbe(Atr.F.FFarbe,Atr.F.FBFarbe,Atr.F.FIntens); aFont.SetFillColor(aColor); aFont.SetTransparent(true); - aFont.SetAlign(ALIGN_BASELINE); + aFont.SetAlignment(ALIGN_BASELINE); nRotation/=10; nRotation=3600-nRotation; if (nRotation==3600) nRotation=0; aFont.SetOrientation(nRotation); diff --git a/vcl/source/filter/wmf/emfwr.cxx b/vcl/source/filter/wmf/emfwr.cxx index 4785f3660cfa..68ed00c6adc9 100644 --- a/vcl/source/filter/wmf/emfwr.cxx +++ b/vcl/source/filter/wmf/emfwr.cxx @@ -587,7 +587,7 @@ void EMFWriter::ImplCheckTextAttr() // TextAlign sal_uInt32 nTextAlign; - switch( rFont.GetAlign() ) + switch( rFont.GetAlignment() ) { case ALIGN_TOP: nTextAlign = TA_TOP; break; case ALIGN_BOTTOM: nTextAlign = TA_BOTTOM; break; diff --git a/vcl/source/filter/wmf/winmtf.cxx b/vcl/source/filter/wmf/winmtf.cxx index 03135e0173e5..39ed115c6b60 100644 --- a/vcl/source/filter/wmf/winmtf.cxx +++ b/vcl/source/filter/wmf/winmtf.cxx @@ -1427,11 +1427,11 @@ void WinMtfOutput::DrawText( Point& rPosition, OUString& rText, long* pDXArry, b aTmp.SetTransparent( false ); if ( ( mnTextAlign & TA_BASELINE) == TA_BASELINE ) - aTmp.SetAlign( ALIGN_BASELINE ); + aTmp.SetAlignment( ALIGN_BASELINE ); else if( ( mnTextAlign & TA_BOTTOM) == TA_BOTTOM ) - aTmp.SetAlign( ALIGN_BOTTOM ); + aTmp.SetAlignment( ALIGN_BOTTOM ); else - aTmp.SetAlign( ALIGN_TOP ); + aTmp.SetAlignment( ALIGN_TOP ); if ( nGfxMode == GM_ADVANCED ) { @@ -1489,7 +1489,7 @@ void WinMtfOutput::DrawText( Point& rPosition, OUString& rText, long* pDXArry, b { maLatestFont = aTmp; mpGDIMetaFile->AddAction( new MetaFontAction( aTmp ) ); - mpGDIMetaFile->AddAction( new MetaTextAlignAction( aTmp.GetAlign() ) ); + mpGDIMetaFile->AddAction( new MetaTextAlignAction( aTmp.GetAlignment() ) ); mpGDIMetaFile->AddAction( new MetaTextColorAction( aTmp.GetColor() ) ); mpGDIMetaFile->AddAction( new MetaTextFillColorAction( aTmp.GetFillColor(), !aTmp.IsTransparent() ) ); } diff --git a/vcl/source/filter/wmf/wmfwr.cxx b/vcl/source/filter/wmf/wmfwr.cxx index aa873e311d78..f12b51096dc9 100644 --- a/vcl/source/filter/wmf/wmfwr.cxx +++ b/vcl/source/filter/wmf/wmfwr.cxx @@ -1454,9 +1454,9 @@ void WMFWriter::WriteRecords( const GDIMetaFile & rMTF ) { aSrcFont.SetCharSet( RTL_TEXTENCODING_MS_1252 ); } - eSrcTextAlign = aSrcFont.GetAlign(); + eSrcTextAlign = aSrcFont.GetAlignment(); aSrcTextColor = aSrcFont.GetColor(); - aSrcFont.SetAlign( ALIGN_BASELINE ); + aSrcFont.SetAlignment( ALIGN_BASELINE ); aSrcFont.SetColor( COL_WHITE ); } break; @@ -1789,7 +1789,7 @@ bool WMFWriter::WriteWMF( const GDIMetaFile& rMTF, SvStream& rTargetStream, vcl::Font aFont; aFont.SetCharSet( GetExtendedTextEncoding( RTL_TEXTENCODING_MS_1252 ) ); aFont.SetColor( Color( COL_WHITE ) ); - aFont.SetAlign( ALIGN_BASELINE ); + aFont.SetAlignment( ALIGN_BASELINE ); aDstFont = aSrcFont = aFont; CreateSelectDeleteFont(aDstFont); diff --git a/vcl/source/font/font.cxx b/vcl/source/font/font.cxx index dafc81225dd9..9270d0ba3ee2 100644 --- a/vcl/source/font/font.cxx +++ b/vcl/source/font/font.cxx @@ -128,12 +128,12 @@ void Font::SetTransparent( bool bTransparent ) } } -void Font::SetAlign( FontAlign eAlign ) +void Font::SetAlignment( FontAlign eAlign ) { if( mpImplFont->meAlign != eAlign ) { MakeUnique(); - mpImplFont->meAlign = eAlign; + mpImplFont->SetAlignment(eAlign); } } @@ -776,7 +776,7 @@ const Color& Font::GetColor() const { return mpImplFont->maColor; } const Color& Font::GetFillColor() const { return mpImplFont->maFillColor; } bool Font::IsTransparent() const { return mpImplFont->mbTransparent; } -FontAlign Font::GetAlign() const { return mpImplFont->meAlign; } +FontAlign Font::GetAlignment() const { return mpImplFont->GetAlignment(); } const OUString& Font::GetFamilyName() const { return mpImplFont->GetFamilyName(); } const OUString& Font::GetStyleName() const { return mpImplFont->maStyleName; } diff --git a/vcl/source/font/fontattributes.cxx b/vcl/source/font/fontattributes.cxx index 4f5c9e4bfcce..0702932007c2 100644 --- a/vcl/source/font/fontattributes.cxx +++ b/vcl/source/font/fontattributes.cxx @@ -28,6 +28,7 @@ FontAttributes::FontAttributes() mePitch( PITCH_DONTKNOW ), meWidthType ( WIDTH_DONTKNOW ), meItalic ( ITALIC_NONE ), + meAlign ( ALIGN_TOP ), meCharSet( RTL_TEXTENCODING_DONTKNOW ), mbSymbolFlag( false ), mnQuality( 0 ), @@ -45,6 +46,7 @@ FontAttributes::FontAttributes( const FontAttributes& rFontAttributes ) : mePitch( rFontAttributes.mePitch ), meWidthType( rFontAttributes.meWidthType ), meItalic( rFontAttributes.meItalic ), + meAlign( rFontAttributes.meAlign ), meCharSet( rFontAttributes.meCharSet ), mbSymbolFlag( rFontAttributes.mbSymbolFlag ), maMapNames( rFontAttributes.maMapNames ), @@ -55,7 +57,6 @@ FontAttributes::FontAttributes( const FontAttributes& rFontAttributes ) : mbEmbeddable( rFontAttributes.mbEmbeddable ) {} - bool FontAttributes::CompareDeviceIndependentFontAttributes(const FontAttributes& rOther) const { if (maFamilyName != rOther.maFamilyName) diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx index d78501278124..11e43a993fb6 100644 --- a/vcl/source/gdi/pdfwriter_impl.cxx +++ b/vcl/source/gdi/pdfwriter_impl.cxx @@ -8846,7 +8846,7 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const OUString& rText, bool double fXScale = 1.0; double fSkew = 0.0; sal_Int32 nPixelFontHeight = m_pReferenceDevice->mpFontInstance->maFontSelData.mnHeight; - TextAlign eAlign = m_aCurrentPDFState.m_aFont.GetAlign(); + TextAlign eAlign = m_aCurrentPDFState.m_aFont.GetAlignment(); // transform font height back to current units // note: the layout calculates in outdevs device pixel !! @@ -9873,7 +9873,7 @@ void PDFWriterImpl::drawTextLine( const Point& rPos, long nWidth, FontStrikeout } Point aPos( rPos ); - TextAlign eAlign = m_aCurrentPDFState.m_aFont.GetAlign(); + TextAlign eAlign = m_aCurrentPDFState.m_aFont.GetAlignment(); if( eAlign == ALIGN_TOP ) aPos.Y() += HCONV( pFontInstance->mxFontMetric->GetAscent() ); else if( eAlign == ALIGN_BOTTOM ) @@ -12066,7 +12066,7 @@ void PDFWriterImpl::pop() if( ! (aState.m_nFlags & PushFlags::OVERLINECOLOR ) ) setOverlineColor( aState.m_aOverlineColor ); if( ! (aState.m_nFlags & PushFlags::TEXTALIGN ) ) - setTextAlign( aState.m_aFont.GetAlign() ); + setTextAlign( aState.m_aFont.GetAlignment() ); if( ! (aState.m_nFlags & PushFlags::TEXTFILLCOLOR) ) setTextFillColor( aState.m_aFont.GetFillColor() ); if( ! (aState.m_nFlags & PushFlags::REFPOINT) ) diff --git a/vcl/source/gdi/pdfwriter_impl.hxx b/vcl/source/gdi/pdfwriter_impl.hxx index 9a1d86153593..2864fa06e987 100644 --- a/vcl/source/gdi/pdfwriter_impl.hxx +++ b/vcl/source/gdi/pdfwriter_impl.hxx @@ -1149,7 +1149,7 @@ public: void setTextAlign( TextAlign eAlign ) { - m_aGraphicsStack.front().m_aFont.SetAlign( eAlign ); + m_aGraphicsStack.front().m_aFont.SetAlignment( eAlign ); m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateFont; } diff --git a/vcl/source/gdi/svmconverter.cxx b/vcl/source/gdi/svmconverter.cxx index 83f19b021fbf..c7aba9117076 100644 --- a/vcl/source/gdi/svmconverter.cxx +++ b/vcl/source/gdi/svmconverter.cxx @@ -249,7 +249,7 @@ void ImplWriteFont( SvStream& rOStm, const vcl::Font& rFont, rOStm.WriteInt16( rActualCharSet ); rOStm.WriteInt16( rFont.GetFamilyType() ); rOStm.WriteInt16( rFont.GetPitch() ); - rOStm.WriteInt16( rFont.GetAlign() ); + rOStm.WriteInt16( rFont.GetAlignment() ); rOStm.WriteInt16( nWeight ); rOStm.WriteInt16( rFont.GetUnderline() ); rOStm.WriteInt16( rFont.GetStrikeout() ); @@ -828,7 +828,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf ) aFont.SetCharSet( (rtl_TextEncoding) nCharSet ); aFont.SetFamily( (FontFamily) nFamily ); aFont.SetPitch( (FontPitch) nPitch ); - aFont.SetAlign( (FontAlign) nAlign ); + aFont.SetAlignment( (FontAlign) nAlign ); aFont.SetWeight( ( nWeight == 1 ) ? WEIGHT_LIGHT : ( nWeight == 2 ) ? WEIGHT_NORMAL : ( nWeight == 3 ) ? WEIGHT_BOLD : WEIGHT_DONTKNOW ); aFont.SetUnderline( (FontUnderline) nUnderline ); @@ -844,7 +844,7 @@ void SVMConverter::ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf ) eActualCharSet = osl_getThreadTextEncoding(); rMtf.AddAction( new MetaFontAction( aFont ) ); - rMtf.AddAction( new MetaTextAlignAction( aFont.GetAlign() ) ); + rMtf.AddAction( new MetaTextAlignAction( aFont.GetAlignment() ) ); rMtf.AddAction( new MetaTextColorAction( aFont.GetColor() ) ); rMtf.AddAction( new MetaTextFillColorAction( aFont.GetFillColor(), !aFont.IsTransparent() ) ); @@ -2063,7 +2063,7 @@ sal_uLong SVMConverter::ImplWriteActions( SvStream& rOStm, GDIMetaFile& rMtf, { vcl::Font aSaveFont( rSaveVDev.GetFont() ); - aSaveFont.SetAlign( static_cast<const MetaTextAlignAction*>(pAction)->GetTextAlign() ); + aSaveFont.SetAlignment( static_cast<const MetaTextAlignAction*>(pAction)->GetTextAlign() ); rSaveVDev.SetFont( aSaveFont ); ImplWriteFont( rOStm, rSaveVDev.GetFont(), rActualCharSet ); nCount++; diff --git a/vcl/source/outdev/font.cxx b/vcl/source/outdev/font.cxx index c9c8d3792849..4850234cd068 100644 --- a/vcl/source/outdev/font.cxx +++ b/vcl/source/outdev/font.cxx @@ -58,6 +58,7 @@ FontMetric OutputDevice::GetDevFont( int nDevFontIndex ) const aFontMetric.SetPitch( rData.GetPitch() ); aFontMetric.SetWeight( rData.GetWeight() ); aFontMetric.SetItalic( rData.GetItalic() ); + aFontMetric.SetAlignment( rData.GetAlignment() ); aFontMetric.SetWidthType( rData.GetWidthType() ); aFontMetric.SetScalableFlag( rData.IsScalable() ); aFontMetric.SetBuiltInFontFlag( rData.IsBuiltInFont() ); @@ -182,6 +183,7 @@ FontMetric OutputDevice::GetFontMetric() const aMetric.SetPitch( xFontMetric->GetPitch() ); aMetric.SetWeight( xFontMetric->GetWeight() ); aMetric.SetItalic( xFontMetric->GetItalic() ); + aMetric.SetAlignment( xFontMetric->GetAlignment() ); aMetric.SetWidthType( xFontMetric->GetWidthType() ); if ( pFontInstance->mnOwnOrientation ) aMetric.SetOrientation( pFontInstance->mnOwnOrientation ); @@ -1124,7 +1126,7 @@ bool OutputDevice::ImplNewFont() const } // calculate text offset depending on TextAlignment - TextAlign eAlign = maFont.GetAlign(); + TextAlign eAlign = maFont.GetAlignment(); if ( eAlign == ALIGN_BASELINE ) { mnTextOffX = 0; diff --git a/vcl/source/outdev/outdev.cxx b/vcl/source/outdev/outdev.cxx index eb118dec4c6b..fd875f526c8b 100644 --- a/vcl/source/outdev/outdev.cxx +++ b/vcl/source/outdev/outdev.cxx @@ -94,7 +94,7 @@ OutputDevice::OutputDevice() : mbOutputClipped = false; maTextColor = Color( COL_BLACK ); maOverlineColor = Color( COL_TRANSPARENT ); - meTextAlign = maFont.GetAlign(); + meTextAlign = maFont.GetAlignment(); meRasterOp = ROP_OVERPAINT; mnAntialiasing = AntialiasingFlags::NONE; meTextLanguage = 0; // TODO: get default from configuration? diff --git a/vcl/source/outdev/outdevstate.cxx b/vcl/source/outdev/outdevstate.cxx index 4a0f4855b7a7..99ec55b6803e 100644 --- a/vcl/source/outdev/outdevstate.cxx +++ b/vcl/source/outdev/outdevstate.cxx @@ -532,7 +532,7 @@ void OutputDevice::SetFont( const vcl::Font& rNewFont ) mpMetaFile->AddAction( new MetaFontAction( aFont ) ); // the color and alignment actions don't belong here // TODO: get rid of them without breaking anything... - mpMetaFile->AddAction( new MetaTextAlignAction( aFont.GetAlign() ) ); + mpMetaFile->AddAction( new MetaTextAlignAction( aFont.GetAlignment() ) ); mpMetaFile->AddAction( new MetaTextFillColorAction( aFont.GetFillColor(), !aFont.IsTransparent() ) ); } diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx index 147d82ffcefa..4211bad7d28b 100644 --- a/vcl/source/outdev/text.cxx +++ b/vcl/source/outdev/text.cxx @@ -806,9 +806,9 @@ void OutputDevice::SetTextAlign( TextAlign eAlign ) if ( mpMetaFile ) mpMetaFile->AddAction( new MetaTextAlignAction( eAlign ) ); - if ( maFont.GetAlign() != eAlign ) + if ( maFont.GetAlignment() != eAlign ) { - maFont.SetAlign( eAlign ); + maFont.SetAlignment( eAlign ); mbNewFont = true; } |