Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * The Contents of this file are made available subject to the terms of
5 : : * either of the following licenses
6 : : *
7 : : * - GNU Lesser General Public License Version 2.1
8 : : * - Sun Industry Standards Source License Version 1.1
9 : : *
10 : : * Sun Microsystems Inc., October, 2000
11 : : *
12 : : * GNU Lesser General Public License Version 2.1
13 : : * =============================================
14 : : * Copyright 2000 by Sun Microsystems, Inc.
15 : : * 901 San Antonio Road, Palo Alto, CA 94303, USA
16 : : *
17 : : * This library is free software; you can redistribute it and/or
18 : : * modify it under the terms of the GNU Lesser General Public
19 : : * License version 2.1, as published by the Free Software Foundation.
20 : : *
21 : : * This library is distributed in the hope that it will be useful,
22 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24 : : * Lesser General Public License for more details.
25 : : *
26 : : * You should have received a copy of the GNU Lesser General Public
27 : : * License along with this library; if not, write to the Free Software
28 : : * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
29 : : * MA 02111-1307 USA
30 : : *
31 : : *
32 : : * Sun Industry Standards Source License Version 1.1
33 : : * =================================================
34 : : * The contents of this file are subject to the Sun Industry Standards
35 : : * Source License Version 1.1 (the "License"); You may not use this file
36 : : * except in compliance with the License. You may obtain a copy of the
37 : : * License at http://www.openoffice.org/license.html.
38 : : *
39 : : * Software provided under this License is provided on an "AS IS" basis,
40 : : * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
41 : : * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
42 : : * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
43 : : * See the License for the specific provisions governing your rights and
44 : : * obligations concerning the Software.
45 : : *
46 : : * The Initial Developer of the Original Code is: IBM Corporation
47 : : *
48 : : * Copyright: 2008 by IBM Corporation
49 : : *
50 : : * All Rights Reserved.
51 : : *
52 : : * Contributor(s): _______________________________________
53 : : *
54 : : *
55 : : ************************************************************************/
56 : : /*************************************************************************
57 : : * @file
58 : : * Font manager related classes header file
59 : : * LwpFontTableEntry, LwpFontTable, LwpFontNameEntry,
60 : : * LwpFontAttrEntry, LwpFontNameManager,LwpFontAttrManager,
61 : : * LwpFontManager
62 : : ************************************************************************/
63 : : /*************************************************************************
64 : : * Change History
65 : : Jan 2005 Created
66 : : ************************************************************************/
67 : :
68 : : #ifndef _LWPFONT_HXX
69 : : #define _LWPFONT_HXX
70 : :
71 : : #include "lwpheader.hxx"
72 : : #include "lwpobjstrm.hxx"
73 : : #include "lwpatomholder.hxx"
74 : : #include "lwpcolor.hxx"
75 : : #include "lwpbasetype.hxx"
76 : : #include "lwpobj.hxx"
77 : : #include "xfilter/xffont.hxx"
78 : : #include "xfilter/xftextstyle.hxx"
79 : :
80 : : class LwpFontTableEntry
81 : : {
82 : : public:
83 [ + - ]: 78 : LwpFontTableEntry(){}
84 [ + - ]: 78 : ~LwpFontTableEntry(){}
85 : : public:
86 : : void Read(LwpObjectStream *pStrm);
87 : : OUString GetFaceName();
88 : : private:
89 : : LwpAtomHolder m_WindowsFaceName; //font face name under windows
90 : : LwpAtomHolder m_FaceName; //font face name
91 : : void RegisterFontDecl();
92 : : //Not useful now, so skip
93 : : //LwpPanoseNumber m_PanoseNumber;
94 : : };
95 : :
96 : : class LwpFontTable
97 : : {
98 : : public:
99 : : LwpFontTable();
100 : : ~LwpFontTable();
101 : : public:
102 : : void Read(LwpObjectStream *pStrm);
103 : : OUString GetFaceName(sal_uInt16 index); //index: start from 1
104 : : // void RegisterFontDecls();
105 : : private:
106 : : sal_uInt16 m_nCount;
107 : : LwpFontTableEntry* m_pFontEntries;
108 : : };
109 : :
110 : :
111 : : class LwpFontNameEntry
112 : : {
113 : : public:
114 : 243 : LwpFontNameEntry(){}
115 : 243 : ~LwpFontNameEntry(){}
116 : : public:
117 : : void Read(LwpObjectStream *pStrm);
118 : 684 : inline sal_uInt16 GetFaceID(){return m_nFaceName;}
119 : 180 : inline sal_uInt16 GetAltFaceID(){return m_nAltFaceName;}
120 : : void Override(XFFont* pFont);
121 : : inline sal_Bool IsFaceNameOverridden();
122 : : inline sal_Bool IsAltFaceNameOverridden();
123 : : private:
124 : : //Data of CFontDescriptionOverrideBase
125 : : sal_uInt8 m_nOverrideBits;
126 : : sal_uInt8 m_nApplyBits;
127 : : sal_uInt32 m_nPointSize;
128 : : sal_uInt16 m_nOverstrike;
129 : : sal_uInt16 m_nTightness;
130 : : LwpColor m_Color;
131 : : LwpColor m_BackColor;
132 : : //Data of LwpFontNameEntry
133 : : sal_uInt16 m_nFaceName; //CFontTableID
134 : : sal_uInt16 m_nAltFaceName; //CFontTableID
135 : : enum
136 : : {
137 : : POINTSIZE = 0x01,
138 : : COLOR = 0x02,
139 : : OVERSTRIKE = 0x04,
140 : : TIGHTNESS = 0x08,
141 : : FACENAME = 0x10,
142 : : BKCOLOR = 0x20,
143 : : ALTFACENAME = 0x40,
144 : : ALL_BITS = (POINTSIZE | COLOR | OVERSTRIKE
145 : : | ALTFACENAME
146 : : | TIGHTNESS | FACENAME | BKCOLOR)
147 : : };
148 : :
149 : : inline sal_Bool IsPointSizeOverridden();
150 : : inline sal_Bool IsColorOverridden();
151 : : inline sal_Bool IsBackgroundColorOverridden();
152 : : //TODO
153 : : // inline sal_Bool IsTightnessOverridden();
154 : : // inline sal_Bool IsAnythingOverridden();
155 : : };
156 : :
157 : : class LwpFontNameManager
158 : : {
159 : : public:
160 : : LwpFontNameManager();
161 : : ~LwpFontNameManager();
162 : : OUString GetNameByIndex(sal_uInt16 index);
163 : : private:
164 : : sal_uInt16 m_nCount;
165 : : LwpFontNameEntry* m_pFontNames;
166 : : LwpFontTable m_FontTbl;
167 : :
168 : : public:
169 : : void Read(LwpObjectStream *pStrm);
170 : : void Override(sal_uInt16 index, XFFont* pFont);
171 : : };
172 : :
173 : : class LwpFontAttrEntry
174 : : {
175 : : public:
176 : 75 : LwpFontAttrEntry(){}
177 : 75 : ~LwpFontAttrEntry(){}
178 : : public:
179 : : void Read(LwpObjectStream *pStrm);
180 : : void Override(XFFont*pFont);
181 : : private:
182 : : sal_uInt16 m_nAttrBits;
183 : : sal_uInt16 m_nAttrOverrideBits;
184 : : sal_uInt16 m_nAttrApplyBits;
185 : : sal_uInt8 m_nAttrOverrideBits2;
186 : : sal_uInt8 m_nAttrApplyBits2;
187 : : sal_uInt8 m_nCase;
188 : : sal_uInt8 m_nUnder;
189 : : enum
190 : : {
191 : : BOLD = 0x0001,
192 : : ITALIC = 0x0002,
193 : : STRIKETHRU = 0x0004,
194 : :
195 : : SUPERSCRIPT = 0x0100,
196 : : SUBSCRIPT = 0x0200,
197 : :
198 : : SMALLCAPS = 0x0400,
199 : :
200 : : ALL_ATTRS = BOLD | ITALIC | STRIKETHRU
201 : : | SUPERSCRIPT | SUBSCRIPT
202 : : | SMALLCAPS,
203 : :
204 : : CASE_DONTCARE = 0,
205 : : CASE_NORMAL = 1,
206 : : CASE_UPPER = 2,
207 : : CASE_LOWER = 3,
208 : : CASE_INITCAPS = 4,
209 : : CASE_STYLE = 7,
210 : :
211 : : UNDER_DONTCARE = 0,
212 : : UNDER_OFF = 1,
213 : : UNDER_SINGLE = 2,
214 : : UNDER_DOUBLE = 3,
215 : : UNDER_WORD_SINGLE = 4,
216 : : UNDER_WORD_DOUBLE = 5,
217 : : UNDER_STYLE = 7,
218 : :
219 : : CASE = 0x01,
220 : : UNDER = 0x02,
221 : : ALL_ATTRS2 = CASE | UNDER
222 : : };
223 : : sal_Bool Is(sal_uInt16 Attr);
224 : : sal_Bool IsBoldOverridden();
225 : : sal_Bool IsItalicOverridden();
226 : : sal_Bool IsStrikeThruOverridden();
227 : : sal_Bool IsSmallCapsOverridden();
228 : : sal_Bool IsSuperOverridden();
229 : : sal_Bool IsSubOverridden();
230 : : sal_Bool IsUnderlineOverridden();
231 : : sal_Bool IsCaseOverridden();
232 : :
233 : : };
234 : :
235 : : class LwpFontAttrManager
236 : : {
237 : : public:
238 : 27 : LwpFontAttrManager():m_pFontAttrs(NULL){}
239 : : ~LwpFontAttrManager();
240 : : public:
241 : : void Read(LwpObjectStream *pStrm);
242 : : void Override(sal_uInt16 index, XFFont*pFont);
243 : : private:
244 : : sal_uInt16 m_nCount;
245 : : LwpFontAttrEntry* m_pFontAttrs;
246 : : };
247 : :
248 : : class LwpFontManager
249 : : {
250 : : public:
251 : 27 : LwpFontManager(){}
252 [ + - ]: 24 : ~LwpFontManager(){}
253 : : private:
254 : : LwpFontNameManager m_FNMgr;
255 : : LwpFontAttrManager m_AttrMgr;
256 : : sal_uInt32 m_nDlfTxtStyleFontID;
257 : :
258 : : public:
259 : : void Read(LwpObjectStream *pStrm);
260 : : XFFont* CreateOverrideFont(sal_uInt32 fontID, sal_uInt32 overID);
261 : : XFFont* CreateFont(sal_uInt32 fontID);
262 : : OUString GetNameByID(sal_uInt32 fontID);
263 : :
264 : : private:
265 : : void Override(sal_uInt32 fontID, XFFont* pFont);
266 : : inline sal_uInt16 GetFontNameIndex(sal_uInt32 fontID);
267 : : inline sal_uInt16 GetFontAttrIndex(sal_uInt32 fontID);
268 : : };
269 : :
270 : 774 : sal_uInt16 LwpFontManager::GetFontNameIndex(sal_uInt32 fontID)
271 : : {
272 : 774 : return static_cast<sal_uInt16>((fontID>>16)&0xFFFF);
273 : : }
274 : :
275 : 774 : sal_uInt16 LwpFontManager::GetFontAttrIndex(sal_uInt32 fontID)
276 : : {
277 : 774 : return static_cast<sal_uInt16>(fontID);
278 : : }
279 : :
280 : : #endif
281 : :
282 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|