[Libreoffice-commits] core.git: 3 commits - include/vcl vcl/CppunitTest_vcl_font.mk vcl/inc vcl/Module_vcl.mk vcl/source
Chris Sherlock
chris.sherlock79 at gmail.com
Thu Jan 14 23:40:05 PST 2016
include/vcl/font.hxx | 3
vcl/CppunitTest_vcl_font.mk | 53 ++++
vcl/Module_vcl.mk | 1
vcl/inc/fontattributes.hxx | 36 +++
vcl/inc/impfont.hxx | 1
vcl/inc/impfontmetric.hxx | 8
vcl/source/font/font.cxx | 399 +++++++++++++++++++------------------
vcl/source/font/fontattributes.cxx | 19 +
vcl/source/outdev/font.cxx | 2
9 files changed, 326 insertions(+), 196 deletions(-)
New commits:
commit 9a790ca414ccc7f330e20af7ad76fe16cc0259b1
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date: Fri Jan 15 17:33:17 2016 +1100
vcl: add symbol and charset accessors and mutators to Font
Rules for the vcl::Font class for setting character set and
the symbol flag:
If the characterset changes to anything other than
RTL_TEXTENCODING_SYMBOL then the symbol flag should be off.
If the characterset changes to RTL_TEXTENCODING_SYMBOL then
the symbol flag should be on.
If the symbol flag is set to false and the characterset is
already RTL_TEXTENCODING_SYMBOL then set the characterset to
RTL_TEXTENCODING_DONTKNOW and set the symbol flag to false.
However, if we are setting the symbol flag from false to
false (i.e. we know the characterset) then we can keep the
characterset as it is.
Unit test written in this commit to test this is working.
Change-Id: Iced44659ab88ff66b711c560cb68bd4681ecb537
diff --git a/include/vcl/font.hxx b/include/vcl/font.hxx
index 14b0265..04052ad 100644
--- a/include/vcl/font.hxx
+++ b/include/vcl/font.hxx
@@ -81,6 +81,9 @@ public:
FontFamily GetFamily() const;
void SetCharSet( rtl_TextEncoding );
rtl_TextEncoding GetCharSet() const;
+ void SetSymbolFlag( bool );
+ bool IsSymbolFont() const;
+
// Prefer LanguageTag over LanguageType
void SetLanguageTag( const LanguageTag & );
const LanguageTag& GetLanguageTag() const;
diff --git a/vcl/CppunitTest_vcl_font.mk b/vcl/CppunitTest_vcl_font.mk
new file mode 100644
index 0000000..910f540
--- /dev/null
+++ b/vcl/CppunitTest_vcl_font.mk
@@ -0,0 +1,53 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_CppunitTest_CppunitTest,vcl_font))
+
+$(eval $(call gb_CppunitTest_set_include,vcl_font,\
+ $$(INCLUDE) \
+ -I$(SRCDIR)/vcl/inc \
+))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,vcl_font, \
+ vcl/qa/cppunit/font \
+))
+
+$(eval $(call gb_CppunitTest_use_externals,vcl_font,boost_headers))
+
+$(eval $(call gb_CppunitTest_use_libraries,vcl_font, \
+ comphelper \
+ cppu \
+ cppuhelper \
+ sal \
+ svt \
+ test \
+ tl \
+ tk \
+ unotest \
+ vcl \
+ $(gb_UWINAPI) \
+))
+
+$(eval $(call gb_CppunitTest_use_api,vcl_font,\
+ udkapi \
+ offapi \
+))
+
+$(eval $(call gb_CppunitTest_use_ure,vcl_font))
+$(eval $(call gb_CppunitTest_use_vcl,vcl_font))
+
+$(eval $(call gb_CppunitTest_use_components,vcl_font,\
+ configmgr/source/configmgr \
+ i18npool/util/i18npool \
+ ucb/source/core/ucb1 \
+))
+
+$(eval $(call gb_CppunitTest_use_configuration,vcl_font))
+
+# vim: set noet sw=4 ts=4:
diff --git a/vcl/Module_vcl.mk b/vcl/Module_vcl.mk
index 0be5a4b..299ffb1 100644
--- a/vcl/Module_vcl.mk
+++ b/vcl/Module_vcl.mk
@@ -97,6 +97,7 @@ $(eval $(call gb_Module_add_check_targets,vcl,\
CppunitTest_vcl_lifecycle \
CppunitTest_vcl_bitmap_test \
CppunitTest_vcl_fontcharmap \
+ CppunitTest_vcl_font \
CppunitTest_vcl_fontmetric \
CppunitTest_vcl_complextext \
CppunitTest_vcl_filters_test \
diff --git a/vcl/inc/fontattributes.hxx b/vcl/inc/fontattributes.hxx
index 53b122d..5ab9b4f 100644
--- a/vcl/inc/fontattributes.hxx
+++ b/vcl/inc/fontattributes.hxx
@@ -117,9 +117,22 @@ inline void FontAttributes::SetSymbolFlag( const bool bSymbolFlag )
{
mbSymbolFlag = bSymbolFlag;
if ( bSymbolFlag )
+ {
meCharSet = RTL_TEXTENCODING_SYMBOL;
+ }
+ else
+ {
+ // if the symbol flag is unset, but it was a symbol font before then
+ // until the character set encoding is set via SetCharSet then we
+ // can't know what the characterset is!
+ if ( meCharSet == RTL_TEXTENCODING_SYMBOL )
+ {
+ meCharSet = RTL_TEXTENCODING_DONTKNOW;
+ }
+ }
}
+
inline void FontAttributes::SetCharSet( const rtl_TextEncoding aEncoding )
{
meCharSet = aEncoding;
diff --git a/vcl/inc/impfont.hxx b/vcl/inc/impfont.hxx
index 8e13494..cc4d194 100644
--- a/vcl/inc/impfont.hxx
+++ b/vcl/inc/impfont.hxx
@@ -52,6 +52,7 @@ private:
Color maColor; // compatibility, now on output device
Color maFillColor; // compatibility, now on output device
rtl_TextEncoding meCharSet;
+ bool mbSymbol;
LanguageTag maLanguageTag;
LanguageTag maCJKLanguageTag;
FontFamily meFamily;
diff --git a/vcl/source/font/font.cxx b/vcl/source/font/font.cxx
index c01e5a7..28c80bb 100644
--- a/vcl/source/font/font.cxx
+++ b/vcl/source/font/font.cxx
@@ -37,191 +37,6 @@
using namespace vcl;
-ImplFont::ImplFont() :
- mnRefCount( 1 ),
- maColor( COL_TRANSPARENT ),
- maFillColor( COL_TRANSPARENT ),
- meCharSet( RTL_TEXTENCODING_DONTKNOW ),
- maLanguageTag( LANGUAGE_DONTKNOW ),
- maCJKLanguageTag( LANGUAGE_DONTKNOW ),
- meFamily( FAMILY_DONTKNOW ),
- mePitch( PITCH_DONTKNOW ),
- meAlign( ALIGN_TOP ),
- meWeight( WEIGHT_DONTKNOW ),
- meWidthType( WIDTH_DONTKNOW ),
- meItalic( ITALIC_NONE ),
- meUnderline( UNDERLINE_NONE ),
- meOverline( UNDERLINE_NONE ),
- meStrikeout( STRIKEOUT_NONE ),
- meRelief( RELIEF_NONE ),
- meEmphasisMark( EMPHASISMARK_NONE ),
- mnOrientation( 0 ),
- mnKerning( FontKerning::NONE ),
- mbWordLine( false ),
- mbOutline( false ),
- mbConfigLookup( false ),
- mbShadow( false ),
- mbVertical( false ),
- mbTransparent( true )
-{}
-
-ImplFont::ImplFont( const ImplFont& rImplFont ) :
- mnRefCount( 1 ),
- maFamilyName( rImplFont.maFamilyName ),
- maStyleName( rImplFont.maStyleName ),
- maSize( rImplFont.maSize ),
- maColor( rImplFont.maColor ),
- maFillColor( rImplFont.maFillColor ),
- meCharSet( rImplFont.meCharSet ),
- maLanguageTag( rImplFont.maLanguageTag ),
- maCJKLanguageTag( rImplFont.maCJKLanguageTag ),
- meFamily( rImplFont.meFamily ),
- mePitch( rImplFont.mePitch ),
- meAlign( rImplFont.meAlign ),
- meWeight( rImplFont.meWeight ),
- meWidthType( rImplFont.meWidthType ),
- meItalic( rImplFont.meItalic ),
- meUnderline( rImplFont.meUnderline ),
- meOverline( rImplFont.meOverline ),
- meStrikeout( rImplFont.meStrikeout ),
- meRelief( rImplFont.meRelief ),
- meEmphasisMark( rImplFont.meEmphasisMark ),
- mnOrientation( rImplFont.mnOrientation ),
- mnKerning( rImplFont.mnKerning ),
- mbWordLine( rImplFont.mbWordLine ),
- mbOutline( rImplFont.mbOutline ),
- mbConfigLookup( rImplFont.mbConfigLookup ),
- mbShadow( rImplFont.mbShadow ),
- mbVertical( rImplFont.mbVertical ),
- mbTransparent( rImplFont.mbTransparent )
-{}
-
-bool ImplFont::operator==( const ImplFont& rOther ) const
-{
- // equality tests split up for easier debugging
- if( (meWeight != rOther.meWeight)
- || (meItalic != rOther.meItalic)
- || (meFamily != rOther.meFamily)
- || (mePitch != rOther.mePitch) )
- return false;
-
- if( (meCharSet != rOther.meCharSet)
- || (maLanguageTag != rOther.maLanguageTag)
- || (maCJKLanguageTag != rOther.maCJKLanguageTag)
- || (meAlign != rOther.meAlign) )
- return false;
-
- if( (maSize != rOther.maSize)
- || (mnOrientation != rOther.mnOrientation)
- || (mbVertical != rOther.mbVertical) )
- return false;
-
- if( (maFamilyName != rOther.maFamilyName)
- || (maStyleName != rOther.maStyleName) )
- return false;
-
- if( (maColor != rOther.maColor)
- || (maFillColor != rOther.maFillColor) )
- return false;
-
- if( (meUnderline != rOther.meUnderline)
- || (meOverline != rOther.meOverline)
- || (meStrikeout != rOther.meStrikeout)
- || (meRelief != rOther.meRelief)
- || (meEmphasisMark != rOther.meEmphasisMark)
- || (mbWordLine != rOther.mbWordLine)
- || (mbOutline != rOther.mbOutline)
- || (mbShadow != rOther.mbShadow)
- || (mnKerning != rOther.mnKerning)
- || (mbTransparent != rOther.mbTransparent) )
- return false;
-
- return true;
-}
-
-void ImplFont::AskConfig()
-{
- if( mbConfigLookup )
- return;
-
- mbConfigLookup = true;
-
- // prepare the FontSubst configuration lookup
- const utl::FontSubstConfiguration& rFontSubst = utl::FontSubstConfiguration::get();
-
- OUString aShortName;
- OUString aFamilyName;
- ImplFontAttrs nType = ImplFontAttrs::None;
- FontWeight eWeight = WEIGHT_DONTKNOW;
- FontWidth eWidthType = WIDTH_DONTKNOW;
- OUString aMapName = GetEnglishSearchFontName( maFamilyName );
-
- utl::FontSubstConfiguration::getMapName( aMapName,
- aShortName, aFamilyName, eWeight, eWidthType, nType );
-
- // lookup the font name in the configuration
- const utl::FontNameAttr* pFontAttr = rFontSubst.getSubstInfo( aMapName );
-
- // if the direct lookup failed try again with an alias name
- if ( !pFontAttr && (aShortName != aMapName) )
- pFontAttr = rFontSubst.getSubstInfo( aShortName );
-
- if( pFontAttr )
- {
- // the font was found in the configuration
- if( meFamily == FAMILY_DONTKNOW )
- {
- if ( pFontAttr->Type & ImplFontAttrs::Serif )
- meFamily = FAMILY_ROMAN;
- else if ( pFontAttr->Type & ImplFontAttrs::SansSerif )
- meFamily = FAMILY_SWISS;
- else if ( pFontAttr->Type & ImplFontAttrs::Typewriter )
- meFamily = FAMILY_MODERN;
- else if ( pFontAttr->Type & ImplFontAttrs::Italic )
- meFamily = FAMILY_SCRIPT;
- else if ( pFontAttr->Type & ImplFontAttrs::Decorative )
- meFamily = FAMILY_DECORATIVE;
- }
-
- if( mePitch == PITCH_DONTKNOW )
- {
- if ( pFontAttr->Type & ImplFontAttrs::Fixed )
- mePitch = PITCH_FIXED;
- }
- }
-
- // if some attributes are still unknown then use the FontSubst magic
- if( meFamily == FAMILY_DONTKNOW )
- {
- if( nType & ImplFontAttrs::Serif )
- meFamily = FAMILY_ROMAN;
- else if( nType & ImplFontAttrs::SansSerif )
- meFamily = FAMILY_SWISS;
- else if( nType & ImplFontAttrs::Typewriter )
- meFamily = FAMILY_MODERN;
- else if( nType & ImplFontAttrs::Italic )
- meFamily = FAMILY_SCRIPT;
- else if( nType & ImplFontAttrs::Decorative )
- meFamily = FAMILY_DECORATIVE;
- }
-
- if( meWeight == WEIGHT_DONTKNOW )
- meWeight = eWeight;
- if( meWidthType == WIDTH_DONTKNOW )
- meWidthType = eWidthType;
-}
-
-void Font::MakeUnique()
-{
- // create a copy if others still reference it
- if ( mpImplFont->mnRefCount != 1 )
- {
- if ( mpImplFont->mnRefCount )
- mpImplFont->mnRefCount--;
- mpImplFont = new ImplFont( *mpImplFont );
- }
-}
-
Font::Font()
{
static ImplFont aStaticImplFont;
@@ -276,6 +91,17 @@ Font::~Font()
}
}
+void Font::MakeUnique()
+{
+ // create a copy if others still reference it
+ if ( mpImplFont->mnRefCount != 1 )
+ {
+ if ( mpImplFont->mnRefCount )
+ mpImplFont->mnRefCount--;
+ mpImplFont = new ImplFont( *mpImplFont );
+ }
+}
+
void Font::SetColor( const Color& rColor )
{
if( mpImplFont->maColor != rColor )
@@ -347,6 +173,31 @@ void Font::SetCharSet( rtl_TextEncoding eCharSet )
{
MakeUnique();
mpImplFont->meCharSet = eCharSet;
+
+ if ( eCharSet == RTL_TEXTENCODING_SYMBOL )
+ mpImplFont->mbSymbol = true;
+ else
+ mpImplFont->mbSymbol = false;
+ }
+}
+
+bool Font::IsSymbolFont() const
+{
+ return mpImplFont->mbSymbol;
+}
+
+void Font::SetSymbolFlag( bool bSymbol )
+{
+ mpImplFont->mbSymbol = bSymbol;
+
+ if ( bSymbol )
+ {
+ mpImplFont->meCharSet = RTL_TEXTENCODING_SYMBOL;
+ }
+ else
+ {
+ if ( mpImplFont->meCharSet == RTL_TEXTENCODING_SYMBOL )
+ mpImplFont->meCharSet = RTL_TEXTENCODING_DONTKNOW;
}
}
@@ -985,4 +836,182 @@ bool Font::IsWordLineMode() const { return mpImplFont->mbWordLine; }
bool Font::IsSameInstance( const vcl::Font& rFont ) const { return (mpImplFont == rFont.mpImplFont); }
+
+
+ImplFont::ImplFont() :
+ mnRefCount( 1 ),
+ maColor( COL_TRANSPARENT ),
+ maFillColor( COL_TRANSPARENT ),
+ meCharSet( RTL_TEXTENCODING_DONTKNOW ),
+ mbSymbol( false ),
+ maLanguageTag( LANGUAGE_DONTKNOW ),
+ maCJKLanguageTag( LANGUAGE_DONTKNOW ),
+ meFamily( FAMILY_DONTKNOW ),
+ mePitch( PITCH_DONTKNOW ),
+ meAlign( ALIGN_TOP ),
+ meWeight( WEIGHT_DONTKNOW ),
+ meWidthType( WIDTH_DONTKNOW ),
+ meItalic( ITALIC_NONE ),
+ meUnderline( UNDERLINE_NONE ),
+ meOverline( UNDERLINE_NONE ),
+ meStrikeout( STRIKEOUT_NONE ),
+ meRelief( RELIEF_NONE ),
+ meEmphasisMark( EMPHASISMARK_NONE ),
+ mnOrientation( 0 ),
+ mnKerning( FontKerning::NONE ),
+ mbWordLine( false ),
+ mbOutline( false ),
+ mbConfigLookup( false ),
+ mbShadow( false ),
+ mbVertical( false ),
+ mbTransparent( true )
+{}
+
+ImplFont::ImplFont( const ImplFont& rImplFont ) :
+ mnRefCount( 1 ),
+ maFamilyName( rImplFont.maFamilyName ),
+ maStyleName( rImplFont.maStyleName ),
+ maSize( rImplFont.maSize ),
+ maColor( rImplFont.maColor ),
+ maFillColor( rImplFont.maFillColor ),
+ meCharSet( rImplFont.meCharSet ),
+ mbSymbol( false ),
+ maLanguageTag( rImplFont.maLanguageTag ),
+ maCJKLanguageTag( rImplFont.maCJKLanguageTag ),
+ meFamily( rImplFont.meFamily ),
+ mePitch( rImplFont.mePitch ),
+ meAlign( rImplFont.meAlign ),
+ meWeight( rImplFont.meWeight ),
+ meWidthType( rImplFont.meWidthType ),
+ meItalic( rImplFont.meItalic ),
+ meUnderline( rImplFont.meUnderline ),
+ meOverline( rImplFont.meOverline ),
+ meStrikeout( rImplFont.meStrikeout ),
+ meRelief( rImplFont.meRelief ),
+ meEmphasisMark( rImplFont.meEmphasisMark ),
+ mnOrientation( rImplFont.mnOrientation ),
+ mnKerning( rImplFont.mnKerning ),
+ mbWordLine( rImplFont.mbWordLine ),
+ mbOutline( rImplFont.mbOutline ),
+ mbConfigLookup( rImplFont.mbConfigLookup ),
+ mbShadow( rImplFont.mbShadow ),
+ mbVertical( rImplFont.mbVertical ),
+ mbTransparent( rImplFont.mbTransparent )
+{}
+
+bool ImplFont::operator==( const ImplFont& rOther ) const
+{
+ // equality tests split up for easier debugging
+ if( (meWeight != rOther.meWeight)
+ || (meItalic != rOther.meItalic)
+ || (meFamily != rOther.meFamily)
+ || (mePitch != rOther.mePitch) )
+ return false;
+
+ if( (meCharSet != rOther.meCharSet)
+ || (maLanguageTag != rOther.maLanguageTag)
+ || (maCJKLanguageTag != rOther.maCJKLanguageTag)
+ || (meAlign != rOther.meAlign) )
+ return false;
+
+ if( (maSize != rOther.maSize)
+ || (mnOrientation != rOther.mnOrientation)
+ || (mbVertical != rOther.mbVertical) )
+ return false;
+
+ if( (maFamilyName != rOther.maFamilyName)
+ || (maStyleName != rOther.maStyleName) )
+ return false;
+
+ if( (maColor != rOther.maColor)
+ || (maFillColor != rOther.maFillColor) )
+ return false;
+
+ if( (meUnderline != rOther.meUnderline)
+ || (meOverline != rOther.meOverline)
+ || (meStrikeout != rOther.meStrikeout)
+ || (meRelief != rOther.meRelief)
+ || (meEmphasisMark != rOther.meEmphasisMark)
+ || (mbWordLine != rOther.mbWordLine)
+ || (mbOutline != rOther.mbOutline)
+ || (mbShadow != rOther.mbShadow)
+ || (mnKerning != rOther.mnKerning)
+ || (mbTransparent != rOther.mbTransparent) )
+ return false;
+
+ return true;
+}
+
+void ImplFont::AskConfig()
+{
+ if( mbConfigLookup )
+ return;
+
+ mbConfigLookup = true;
+
+ // prepare the FontSubst configuration lookup
+ const utl::FontSubstConfiguration& rFontSubst = utl::FontSubstConfiguration::get();
+
+ OUString aShortName;
+ OUString aFamilyName;
+ ImplFontAttrs nType = ImplFontAttrs::None;
+ FontWeight eWeight = WEIGHT_DONTKNOW;
+ FontWidth eWidthType = WIDTH_DONTKNOW;
+ OUString aMapName = GetEnglishSearchFontName( maFamilyName );
+
+ utl::FontSubstConfiguration::getMapName( aMapName,
+ aShortName, aFamilyName, eWeight, eWidthType, nType );
+
+ // lookup the font name in the configuration
+ const utl::FontNameAttr* pFontAttr = rFontSubst.getSubstInfo( aMapName );
+
+ // if the direct lookup failed try again with an alias name
+ if ( !pFontAttr && (aShortName != aMapName) )
+ pFontAttr = rFontSubst.getSubstInfo( aShortName );
+
+ if( pFontAttr )
+ {
+ // the font was found in the configuration
+ if( meFamily == FAMILY_DONTKNOW )
+ {
+ if ( pFontAttr->Type & ImplFontAttrs::Serif )
+ meFamily = FAMILY_ROMAN;
+ else if ( pFontAttr->Type & ImplFontAttrs::SansSerif )
+ meFamily = FAMILY_SWISS;
+ else if ( pFontAttr->Type & ImplFontAttrs::Typewriter )
+ meFamily = FAMILY_MODERN;
+ else if ( pFontAttr->Type & ImplFontAttrs::Italic )
+ meFamily = FAMILY_SCRIPT;
+ else if ( pFontAttr->Type & ImplFontAttrs::Decorative )
+ meFamily = FAMILY_DECORATIVE;
+ }
+
+ if( mePitch == PITCH_DONTKNOW )
+ {
+ if ( pFontAttr->Type & ImplFontAttrs::Fixed )
+ mePitch = PITCH_FIXED;
+ }
+ }
+
+ // if some attributes are still unknown then use the FontSubst magic
+ if( meFamily == FAMILY_DONTKNOW )
+ {
+ if( nType & ImplFontAttrs::Serif )
+ meFamily = FAMILY_ROMAN;
+ else if( nType & ImplFontAttrs::SansSerif )
+ meFamily = FAMILY_SWISS;
+ else if( nType & ImplFontAttrs::Typewriter )
+ meFamily = FAMILY_MODERN;
+ else if( nType & ImplFontAttrs::Italic )
+ meFamily = FAMILY_SCRIPT;
+ else if( nType & ImplFontAttrs::Decorative )
+ meFamily = FAMILY_DECORATIVE;
+ }
+
+ if( meWeight == WEIGHT_DONTKNOW )
+ meWeight = eWeight;
+ if( meWidthType == WIDTH_DONTKNOW )
+ meWidthType = eWidthType;
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 1ea4f371f8be5551fb936fa04d1799eda40a1e39
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date: Fri Jan 15 16:23:35 2016 +1100
vcl: add the meCharSet attribute into FontAttributes
Change-Id: Ic6d42ac5cc46d5091116dccc0c1317b9e2950415
diff --git a/vcl/inc/fontattributes.hxx b/vcl/inc/fontattributes.hxx
index f1f7684..53b122d 100644
--- a/vcl/inc/fontattributes.hxx
+++ b/vcl/inc/fontattributes.hxx
@@ -21,6 +21,7 @@
#define INCLUDED_VCL_INC_FONTATTRIBUTES_HXX
#include <unotools/fontdefs.hxx>
+#include <rtl/textenc.h>
#include <vcl/vclenum.hxx>
class FontAttributes
@@ -37,6 +38,7 @@ public:
FontItalic GetSlantType() const { return meItalic; }
FontPitch GetPitch() const { return mePitch; }
FontWidth GetWidthType() const { return meWidthType; }
+ rtl_TextEncoding GetCharSet() const { return meCharSet; }
bool IsSymbolFont() const { return mbSymbolFlag; }
@@ -49,7 +51,7 @@ public:
void SetWeight(const FontWeight eWeight ) { meWeight = eWeight; }
void SetWidthType(const FontWidth eWidthType) { meWidthType = eWidthType; }
- void SetSymbolFlag(const bool bSymbolFlag ) { mbSymbolFlag = bSymbolFlag; }
+ void SetSymbolFlag(const bool );
bool CompareDeviceIndependentFontAttributes(const FontAttributes& rOther) const;
@@ -87,6 +89,7 @@ public:
void SetEmbeddableFlag ( bool bEmbeddable ) { mbEmbeddable = bEmbeddable; }
void SetSubsettableFlag( bool bSubsettable ) { mbSubsettable = bSubsettable; }
void SetOrientationFlag( bool bCanRotate ) { mbOrientation = bCanRotate; }
+ void SetCharSet( const rtl_TextEncoding );
private:
// device independent variables
@@ -97,6 +100,7 @@ private:
FontPitch mePitch; // Pitch Type
FontWidth meWidthType; // Width Type
FontItalic meItalic; // Slant Type
+ rtl_TextEncoding meCharSet; // RTL_TEXTENCODING_SYMBOL or RTL_TEXTENCODING_UNICODE
bool mbSymbolFlag; // Is font a symbol?
// device dependent variables
@@ -109,6 +113,19 @@ private:
};
+inline void FontAttributes::SetSymbolFlag( const bool bSymbolFlag )
+{
+ mbSymbolFlag = bSymbolFlag;
+ if ( bSymbolFlag )
+ meCharSet = RTL_TEXTENCODING_SYMBOL;
+}
+
+inline void FontAttributes::SetCharSet( const rtl_TextEncoding aEncoding )
+{
+ meCharSet = aEncoding;
+ mbSymbolFlag = ( meCharSet == RTL_TEXTENCODING_SYMBOL ? true : false );
+}
+
#endif // INCLUDED_VCL_INC_FONTATTRIBUTES_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/font/fontattributes.cxx b/vcl/source/font/fontattributes.cxx
index 74c120c..083fdd2 100644
--- a/vcl/source/font/fontattributes.cxx
+++ b/vcl/source/font/fontattributes.cxx
@@ -20,6 +20,7 @@
#include "i18nlangtag/mslangid.hxx"
#include <unotools/configmgr.hxx>
+#include <rtl/textenc.h>
#include <vcl/virdev.hxx>
#include <vcl/print.hxx>
#include <vcl/outdev.hxx>
@@ -63,6 +64,7 @@ FontAttributes::FontAttributes()
mePitch( PITCH_DONTKNOW ),
meWidthType ( WIDTH_DONTKNOW ),
meItalic ( ITALIC_NONE ),
+ meCharSet( RTL_TEXTENCODING_DONTKNOW ),
mbSymbolFlag( false ),
mnQuality( 0 ),
mbOrientation( false ),
diff --git a/vcl/source/outdev/font.cxx b/vcl/source/outdev/font.cxx
index ce87da9..7af457e 100644
--- a/vcl/source/outdev/font.cxx
+++ b/vcl/source/outdev/font.cxx
@@ -76,7 +76,7 @@ FontMetric OutputDevice::GetDevFont( int nDevFontIndex ) const
const PhysicalFontFace& rData = *mpDeviceFontList->Get( nDevFontIndex );
aFontMetric.SetName( rData.GetFamilyName() );
aFontMetric.SetStyleName( rData.GetStyleName() );
- aFontMetric.SetCharSet( rData.IsSymbolFont() ? RTL_TEXTENCODING_SYMBOL : RTL_TEXTENCODING_UNICODE );
+ aFontMetric.SetCharSet( rData.GetCharSet() );
aFontMetric.SetFamily( rData.GetFamilyType() );
aFontMetric.SetPitch( rData.GetPitch() );
aFontMetric.SetWeight( rData.GetWeight() );
commit 51b1b469abdc33a3c92f2a95cd4d326d9166ef05
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date: Fri Jan 15 15:53:44 2016 +1100
vcl: create a default FontAttributes constructor
Change-Id: If2f297c9c4ee1dd4aff5d24ddd55fa4bb33073e0
diff --git a/vcl/inc/fontattributes.hxx b/vcl/inc/fontattributes.hxx
index 2c1a42d..f1f7684 100644
--- a/vcl/inc/fontattributes.hxx
+++ b/vcl/inc/fontattributes.hxx
@@ -26,6 +26,8 @@
class FontAttributes
{
public:
+ explicit FontAttributes();
+
// device independent font functions
const OUString& GetFamilyName() const { return maFamilyName; }
FontFamily GetFamilyType() const { return meFamily; }
@@ -91,10 +93,10 @@ private:
OUString maFamilyName; // Font Family Name
OUString maStyleName; // Font Style Name
FontWeight meWeight; // Weight Type
- FontItalic meItalic; // Slant Type
FontFamily meFamily; // Family Type
FontPitch mePitch; // Pitch Type
FontWidth meWidthType; // Width Type
+ FontItalic meItalic; // Slant Type
bool mbSymbolFlag; // Is font a symbol?
// device dependent variables
diff --git a/vcl/inc/impfontmetric.hxx b/vcl/inc/impfontmetric.hxx
index e39a8bb..8c021bf 100644
--- a/vcl/inc/impfontmetric.hxx
+++ b/vcl/inc/impfontmetric.hxx
@@ -27,10 +27,6 @@ typedef boost::intrusive_ptr< ImplFontCharMap > ImplFontCharMapPtr;
class ImplFontMetric
{
- friend class FontMetric;
- friend void intrusive_ptr_add_ref(ImplFontMetric* pImplFontMetric);
- friend void intrusive_ptr_release(ImplFontMetric* pImplFontMetric);
-
public:
explicit ImplFontMetric();
@@ -61,6 +57,10 @@ public:
bool operator==( const ImplFontMetric& ) const;
private:
+ friend class FontMetric;
+ friend void intrusive_ptr_add_ref(ImplFontMetric* pImplFontMetric);
+ friend void intrusive_ptr_release(ImplFontMetric* pImplFontMetric);
+
long mnAscent; // Ascent
long mnDescent; // Descent
long mnIntLeading; // Internal Leading
diff --git a/vcl/source/font/fontattributes.cxx b/vcl/source/font/fontattributes.cxx
index e750e65..74c120c 100644
--- a/vcl/source/font/fontattributes.cxx
+++ b/vcl/source/font/fontattributes.cxx
@@ -58,10 +58,19 @@
#include <memory>
#include <algorithm>
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-using namespace ::rtl;
-using namespace ::utl;
+FontAttributes::FontAttributes()
+: meWeight( WEIGHT_DONTKNOW ),
+ mePitch( PITCH_DONTKNOW ),
+ meWidthType ( WIDTH_DONTKNOW ),
+ meItalic ( ITALIC_NONE ),
+ mbSymbolFlag( false ),
+ mnQuality( 0 ),
+ mbOrientation( false ),
+ mbDevice( false ),
+ mbSubsettable( false ),
+ mbEmbeddable ( false )
+{}
+
bool FontAttributes::CompareDeviceIndependentFontAttributes(const FontAttributes& rOther) const
{
More information about the Libreoffice-commits
mailing list