From 2f1fb77e5ce3afb382db728ddd4c1938967d45fd Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Thu, 30 Sep 2010 16:10:11 +0100 Subject: #i64671# transfer VCL's FontPitch through DrawingLayer to Canvas --- drawinglayer/source/attribute/fontattribute.cxx | 20 ++++++++++++++++---- drawinglayer/source/primitive2d/textlayoutdevice.cxx | 2 ++ drawinglayer/source/processor2d/canvasprocessor.cxx | 5 +++++ 3 files changed, 23 insertions(+), 4 deletions(-) (limited to 'drawinglayer/source') diff --git a/drawinglayer/source/attribute/fontattribute.cxx b/drawinglayer/source/attribute/fontattribute.cxx index 7d10d3a37384..d4246376d9ca 100644 --- a/drawinglayer/source/attribute/fontattribute.cxx +++ b/drawinglayer/source/attribute/fontattribute.cxx @@ -55,6 +55,7 @@ namespace drawinglayer unsigned mbOutline : 1; // Outline Flag unsigned mbRTL : 1; // RTL Flag unsigned mbBiDiStrong : 1; // BiDi Flag + unsigned mbMonospaced : 1; ImpFontAttribute( const String& rFamilyName, @@ -63,6 +64,7 @@ namespace drawinglayer bool bSymbol, bool bVertical, bool bItalic, + bool bMonospaced, bool bOutline, bool bRTL, bool bBiDiStrong) @@ -75,7 +77,8 @@ namespace drawinglayer mbItalic(bItalic), mbOutline(bOutline), mbRTL(bRTL), - mbBiDiStrong(bBiDiStrong) + mbBiDiStrong(bBiDiStrong), + mbMonospaced(bMonospaced) { } @@ -89,6 +92,7 @@ namespace drawinglayer bool getOutline() const { return mbOutline; } bool getRTL() const { return mbRTL; } bool getBiDiStrong() const { return mbBiDiStrong; } + bool getMonospaced() const { return mbMonospaced; } bool operator==(const ImpFontAttribute& rCompare) const { @@ -100,7 +104,8 @@ namespace drawinglayer && getItalic() == rCompare.getItalic() && getOutline() == rCompare.getOutline() && getRTL() == rCompare.getRTL() - && getBiDiStrong() == rCompare.getBiDiStrong()); + && getBiDiStrong() == rCompare.getBiDiStrong() + && getMonospaced() == rCompare.getMonospaced()); } static ImpFontAttribute* get_global_default() @@ -112,7 +117,7 @@ namespace drawinglayer pDefault = new ImpFontAttribute( String(), String(), 0, - false, false, false, false, false, false); + false, false, false, false, false, false, false); // never delete; start with RefCount 1, not 0 pDefault->mnRefCount++; @@ -129,11 +134,12 @@ namespace drawinglayer bool bSymbol, bool bVertical, bool bItalic, + bool bMonospaced, bool bOutline, bool bRTL, bool bBiDiStrong) : mpFontAttribute(new ImpFontAttribute( - rFamilyName, rStyleName, nWeight, bSymbol, bVertical, bItalic, bOutline, bRTL, bBiDiStrong)) + rFamilyName, rStyleName, nWeight, bSymbol, bVertical, bItalic, bMonospaced, bOutline, bRTL, bBiDiStrong)) { } @@ -246,6 +252,12 @@ namespace drawinglayer return mpFontAttribute->getBiDiStrong(); } + bool FontAttribute::getMonospaced() const + { + return mpFontAttribute->getMonospaced(); + } + + } // end of namespace attribute } // end of namespace drawinglayer diff --git a/drawinglayer/source/primitive2d/textlayoutdevice.cxx b/drawinglayer/source/primitive2d/textlayoutdevice.cxx index 9418e8afe8bd..f23cf97c6a1f 100644 --- a/drawinglayer/source/primitive2d/textlayoutdevice.cxx +++ b/drawinglayer/source/primitive2d/textlayoutdevice.cxx @@ -406,6 +406,7 @@ namespace drawinglayer aRetval.SetWeight(static_cast(rFontAttribute.getWeight())); aRetval.SetItalic(rFontAttribute.getItalic() ? ITALIC_NORMAL : ITALIC_NONE); aRetval.SetOutline(rFontAttribute.getOutline()); + aRetval.SetPitch(rFontAttribute.getMonospaced() ? PITCH_FIXED : PITCH_VARIABLE); aRetval.SetLanguage(MsLangId::convertLocaleToLanguage(rLocale)); #ifdef WIN32 @@ -445,6 +446,7 @@ namespace drawinglayer RTL_TEXTENCODING_SYMBOL == rFont.GetCharSet(), rFont.IsVertical(), ITALIC_NONE != rFont.GetItalic(), + PITCH_FIXED == rFont.GetPitch(), rFont.IsOutline(), bRTL, bBiDiStrong); diff --git a/drawinglayer/source/processor2d/canvasprocessor.cxx b/drawinglayer/source/processor2d/canvasprocessor.cxx index e20f1a417dcc..23661fe3747b 100644 --- a/drawinglayer/source/processor2d/canvasprocessor.cxx +++ b/drawinglayer/source/processor2d/canvasprocessor.cxx @@ -57,6 +57,7 @@ #include #include #include +#include #include #include #include @@ -1517,6 +1518,10 @@ namespace drawinglayer aFontRequest.FontDescription.IsVertical = rFontAttr.getVertical() ? util::TriState_YES : util::TriState_NO; // TODO(F2): improve vclenum->panose conversion aFontRequest.FontDescription.FontDescription.Weight = static_cast< sal_uInt8 >(rFontAttr.getWeight()); + aFontRequest.FontDescription.FontDescription.Proportion = + rFontAttr.getMonospaced() + ? rendering::PanoseProportion::MONO_SPACED + : rendering::PanoseProportion::ANYTHING; aFontRequest.FontDescription.FontDescription.Letterform = rFontAttr.getItalic() ? 9 : 0; // init CellSize to 1.0, else a default font height will be used -- cgit v1.2.3