Version 5.4.3.2, tag libreoffice-5.4.3.2
[LibreOffice.git] / vcl / inc / fontattributes.hxx
blob9b3cc7f653630daa4df571612367a58386f76175
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_VCL_INC_FONTATTRIBUTES_HXX
21 #define INCLUDED_VCL_INC_FONTATTRIBUTES_HXX
23 #include <rtl/ustring.hxx>
24 #include <i18nlangtag/languagetag.hxx>
25 #include <vcl/vclenum.hxx>
28 /* The following class is extraordinarily similar to ImplFont. */
30 class FontAttributes
32 public:
33 explicit FontAttributes();
34 FontAttributes( const FontAttributes& );
36 // device independent font functions
37 const OUString& GetFamilyName() const { return maFamilyName; }
38 FontFamily GetFamilyType() const { return meFamily; }
39 const OUString& GetStyleName() const { return maStyleName; }
41 FontWeight GetWeight() const { return meWeight; }
42 FontItalic GetItalic() const { return meItalic; }
43 FontPitch GetPitch() const { return mePitch; }
44 FontWidth GetWidthType() const { return meWidthType; }
45 rtl_TextEncoding GetCharSet() const { return meCharSet; }
47 bool IsSymbolFont() const { return mbSymbolFlag; }
49 void SetFamilyName(const OUString& sFamilyName) { maFamilyName = sFamilyName; }
50 void SetStyleName( const OUString& sStyleName) { maStyleName = sStyleName; }
51 void SetFamilyType(const FontFamily eFontFamily) { meFamily = eFontFamily; }
53 void SetPitch(const FontPitch ePitch ) { mePitch = ePitch; }
54 void SetItalic(const FontItalic eItalic ) { meItalic = eItalic; }
55 void SetWeight(const FontWeight eWeight ) { meWeight = eWeight; }
56 void SetWidthType(const FontWidth eWidthType) { meWidthType = eWidthType; }
58 void SetSymbolFlag(const bool );
60 bool CompareDeviceIndependentFontAttributes(const FontAttributes& rOther) const;
62 // Device dependent functions
63 int GetQuality() const { return mnQuality; }
64 const OUString& GetMapNames() const { return maMapNames; }
67 void SetQuality( int nQuality ) { mnQuality = nQuality; }
68 void IncreaseQualityBy( int nQualityAmount ) { mnQuality += nQualityAmount; }
69 void AddMapName( OUString const& );
71 private:
72 // device independent variables
73 OUString maFamilyName; // Font Family Name
74 OUString maStyleName; // Font Style Name
75 FontWeight meWeight; // Weight Type
76 FontFamily meFamily; // Family Type
77 FontPitch mePitch; // Pitch Type
78 FontWidth meWidthType; // Width Type
79 FontItalic meItalic; // Slant Type
80 rtl_TextEncoding meCharSet; // RTL_TEXTENCODING_SYMBOL or RTL_TEXTENCODING_UNICODE
81 bool mbSymbolFlag; // Is font a symbol?
83 // device dependent variables
84 OUString maMapNames; // List of family name aliases separated with ';'
85 int mnQuality; // Quality (used when similar fonts compete)
89 inline void FontAttributes::SetSymbolFlag( const bool bSymbolFlag )
91 mbSymbolFlag = bSymbolFlag;
92 if ( bSymbolFlag )
94 meCharSet = RTL_TEXTENCODING_SYMBOL;
96 else
98 // if the symbol flag is unset, but it was a symbol font before then
99 // until the character set encoding is set via SetCharSet then we
100 // can't know what the characterset is!
101 if ( meCharSet == RTL_TEXTENCODING_SYMBOL )
103 meCharSet = RTL_TEXTENCODING_DONTKNOW;
108 inline void FontAttributes::AddMapName( OUString const & aMapName )
110 if( maMapNames.getLength() > 0 )
112 maMapNames += ";";
115 if (aMapName.getLength() == 0)
117 SAL_WARN("vcl.fonts", "New map name is empty");
118 return;
121 maMapNames += aMapName;
124 #endif // INCLUDED_VCL_INC_FONTATTRIBUTES_HXX
126 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */