xref: /AOO41X/main/vcl/inc/vcl/font.hxx (revision 8681e0b5fa1422e02ae3b6ea25f2647e4fc0daf5)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _SV_FONT_HXX
25 #define _SV_FONT_HXX
26 
27 #include <vcl/dllapi.h>
28 #include <tools/gen.hxx>
29 #include <tools/string.hxx>
30 #include <i18npool/lang.h>
31 #include <tools/color.hxx>
32 #include <vcl/vclenum.hxx>
33 #include <vcl/fntstyle.hxx>
34 
35 class SvStream;
36 #define FontAlign TextAlign
37 
38 class Impl_Font;
39 class ImplFontAttributes;
40 
41 // --------
42 // - Font -
43 // --------
44 
45 class VCL_DLLPUBLIC Font
46 {
47 private:
48     Impl_Font*          mpImplFont;
49     void                MakeUnique();
50 
51 public:
52                         Font();
53                         Font( const Font& );
54                         Font( const String& rFamilyName, const Size& );
55                         Font( const String& rFamilyName, const String& rStyleName, const Size& );
56                         Font( FontFamily eFamily, const Size& );
57                         ~Font();
58 
59     // setting the color on the font is obsolete, the only remaining
60     // valid use is for keeping backward compatibility with old MetaFiles
61     void                SetColor( const Color& );
62     const Color&        GetColor() const;
63     void                SetFillColor( const Color& );
64     const Color&        GetFillColor() const;
65     void                SetTransparent( sal_Bool bTransparent );
66     sal_Bool                IsTransparent() const;
67 
68     void                SetAlign( FontAlign );
69     FontAlign           GetAlign() const;
70 
71     void                SetName( const String& rFamilyName );
72     const String&       GetName() const;
73     void                SetStyleName( const String& rStyleName );
74     const String&       GetStyleName() const;
75     void                SetSize( const Size& );
76     const Size&         GetSize() const;
77     void                SetHeight( long nHeight );
78     long                GetHeight() const;
79     void                SetWidth( long nWidth );
80     long                GetWidth() const;
81 
82     void                SetFamily( FontFamily );
83     FontFamily          GetFamily() const;
84     void                SetCharSet( rtl_TextEncoding );
85     rtl_TextEncoding    GetCharSet() const;
86     void                SetLanguage( LanguageType );
87     LanguageType        GetLanguage() const;
88     void                SetCJKContextLanguage( LanguageType );
89     LanguageType        GetCJKContextLanguage() const;
90     void                SetPitch( FontPitch ePitch );
91     FontPitch           GetPitch() const;
92 
93     void                SetOrientation( short nLineOrientation );
94     short               GetOrientation() const;
95     void                SetVertical( sal_Bool bVertical );
96     sal_Bool                IsVertical() const;
97     void                SetKerning( FontKerning nKerning );
98     FontKerning         GetKerning() const;
99     sal_Bool                IsKerning() const;
100 
101     void                SetWeight( FontWeight );
102     FontWeight          GetWeight() const;
103     void                SetWidthType( FontWidth );
104     FontWidth           GetWidthType() const;
105     void                SetItalic( FontItalic );
106     FontItalic          GetItalic() const;
107     void                SetOutline( sal_Bool bOutline );
108     sal_Bool                IsOutline() const;
109     void                SetShadow( sal_Bool bShadow );
110     sal_Bool                IsShadow() const;
111     void                SetRelief( FontRelief );
112     FontRelief          GetRelief() const;
113     void                SetUnderline( FontUnderline );
114     FontUnderline       GetUnderline() const;
115     void                SetOverline( FontUnderline );
116     FontUnderline       GetOverline() const;
117     void                SetStrikeout( FontStrikeout );
118     FontStrikeout       GetStrikeout() const;
119     void                SetEmphasisMark( FontEmphasisMark );
120     FontEmphasisMark    GetEmphasisMark() const;
121     void                SetWordLineMode( sal_Bool bWordLine );
122     sal_Bool                IsWordLineMode() const;
123 
124     void                Merge( const Font& rFont );
125     void                GetFontAttributes( ImplFontAttributes& rAttrs ) const;
126 
127     Font&               operator=( const Font& );
128     sal_Bool                operator==( const Font& ) const;
operator !=(const Font & rFont) const129     sal_Bool                operator!=( const Font& rFont ) const
130                             { return !(Font::operator==( rFont )); }
131     sal_Bool                IsSameInstance( const Font& ) const;
132 
133     friend VCL_DLLPUBLIC SvStream&  operator>>( SvStream& rIStm, Font& );
134     friend VCL_DLLPUBLIC SvStream&  operator<<( SvStream& rOStm, const Font& );
135 
136     static Font identifyFont( const void* pBuffer, sal_uInt32 nLen );
137 };
138 
139 #endif  // _VCL_FONT_HXX
140