Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : : #ifndef _POOLFMT_HXX
29 : : #define _POOLFMT_HXX
30 : :
31 : : #include <limits.h>
32 : : #include <tools/solar.h>
33 : : #include <editeng/frmdir.hxx>
34 : :
35 : : // POOLCOLL-IDs:
36 : : // +----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
37 : : // !User! Range ! 0 ! Offset !
38 : : // +----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
39 : : //
40 : : // Range: 1 - text
41 : : // 2 - lists
42 : : // 3 - special ranges
43 : : // 4 - indices
44 : : // 5 - chapter / document
45 : : // 6 - HTML-styles.
46 : :
47 : : // Other IDs:
48 : : // +----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
49 : : // !User! Range ! 1 ! Offset !
50 : : // +----+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
51 : : // Range: 0 - character styles
52 : : // 1 - frame styles
53 : : // 2 - page styles
54 : : // 3 - paragraph styles (?)
55 : : // 4 - graphics styles (?)
56 : :
57 : : // For all IDs we have:
58 : : // Origin: 0 -pool
59 : : // 1 -user
60 : : // Offset: within the group
61 : :
62 : :
63 : : // Attention: New IDs can only be added to the ends of the groups.
64 : : // These IDs are read and written by the Reader/Writer.
65 : : // They are only aware of the Offset to Start.
66 : :
67 : : // Mask for recognition of COLLPOOL-IDs:
68 : :
69 : : const sal_uInt16 POOLGRP_NOCOLLID = (1 << 10);
70 : :
71 : : // POLLCOLL-groups:
72 : :
73 : : const sal_uInt16 USER_FMT = (1 << 15);
74 : : const sal_uInt16 POOL_FMT = (0 << 15);
75 : :
76 : : const sal_uInt16 COLL_TEXT_BITS = (1 << 11);
77 : : const sal_uInt16 COLL_LISTS_BITS = (2 << 11);
78 : : const sal_uInt16 COLL_EXTRA_BITS = (3 << 11);
79 : : const sal_uInt16 COLL_REGISTER_BITS = (4 << 11);
80 : : const sal_uInt16 COLL_DOC_BITS = (5 << 11);
81 : : const sal_uInt16 COLL_HTML_BITS = (6 << 11);
82 : : const sal_uInt16 COLL_GET_RANGE_BITS = (15 << 11);
83 : :
84 : : // Other groups:
85 : :
86 : : const sal_uInt16 POOLGRP_CHARFMT = (0 << 11) + POOLGRP_NOCOLLID;
87 : : const sal_uInt16 POOLGRP_FRAMEFMT = (1 << 11) + POOLGRP_NOCOLLID;
88 : : const sal_uInt16 POOLGRP_PAGEDESC = (2 << 11) + POOLGRP_NOCOLLID;
89 : : const sal_uInt16 POOLGRP_NUMRULE = (3 << 11) + POOLGRP_NOCOLLID;
90 : :
91 : : // Recognize whether it's a user defined style or not:
92 : : const sal_uInt16 POOL_IDUSER_FMT =
93 : : USHRT_MAX & ~(COLL_GET_RANGE_BITS + POOLGRP_NOCOLLID);
94 : :
95 : 4132 : inline sal_Bool IsPoolUserFmt( sal_uInt16 nId )
96 : : {
97 : : return POOL_IDUSER_FMT ==
98 : : (nId & ~(COLL_GET_RANGE_BITS + POOLGRP_NOCOLLID))
99 [ + + ]: 4132 : ? sal_True : sal_False;
100 : : }
101 : :
102 : :
103 : :
104 : : // IDs for the ranges.
105 : : enum RES_POOLFMT
106 : : {
107 : : RES_POOLFMT_BEGIN = 1,
108 : : RES_POOL_CHRFMT = RES_POOLFMT_BEGIN,
109 : : RES_POOL_FRMFMT,
110 : : RES_POOL_TXTCOLL,
111 : : RES_POOL_PAGEFMT,
112 : :
113 : : RES_POOL_PARFMT,
114 : : RES_POOL_GRFFMT,
115 : : RES_POOLFMT_END
116 : : };
117 : :
118 : : // Ranges for the IDs of the formats.
119 : :
120 : : // IDs for character styles.
121 : : enum RES_POOL_CHRFMT_TYPE
122 : : {
123 : : RES_POOLCHR_BEGIN = POOLGRP_CHARFMT,
124 : : RES_POOLCHR_NORMAL_BEGIN = POOLGRP_CHARFMT,
125 : :
126 : : RES_POOLCHR_FOOTNOTE = RES_POOLCHR_NORMAL_BEGIN, // Footnote.
127 : : RES_POOLCHR_PAGENO, // Pages/field.
128 : : RES_POOLCHR_LABEL, // Label.
129 : : RES_POOLCHR_DROPCAPS, // Dropcaps.
130 : : RES_POOLCHR_NUM_LEVEL, // Numbering symbols
131 : : RES_POOLCHR_BUL_LEVEL, // Bullets.
132 : :
133 : : RES_POOLCHR_INET_NORMAL, // Internet normal.
134 : : RES_POOLCHR_INET_VISIT, // Internet visited.
135 : : RES_POOLCHR_JUMPEDIT, // Placeholder.
136 : : RES_POOLCHR_TOXJUMP, // Jump from index.
137 : : RES_POOLCHR_ENDNOTE, // Endnote.
138 : : RES_POOLCHR_LINENUM, // Line numbering.
139 : : RES_POOLCHR_IDX_MAIN_ENTRY, // Main entry in indices.
140 : : RES_POOLCHR_FOOTNOTE_ANCHOR, // Footnote anchor.
141 : : RES_POOLCHR_ENDNOTE_ANCHOR, // Endnote anchor.
142 : : RES_POOLCHR_RUBYTEXT, // Rubytext.
143 : : RES_POOLCHR_VERT_NUM, // Vertical numbering symbols.
144 : :
145 : : RES_POOLCHR_NORMAL_END,
146 : :
147 : : RES_POOLCHR_HTML_BEGIN = RES_POOLCHR_BEGIN + 50, // HTML-styles.
148 : : RES_POOLCHR_HTML_EMPHASIS= RES_POOLCHR_HTML_BEGIN,
149 : : RES_POOLCHR_HTML_CITIATION,
150 : : RES_POOLCHR_HTML_STRONG,
151 : : RES_POOLCHR_HTML_CODE,
152 : : RES_POOLCHR_HTML_SAMPLE,
153 : : RES_POOLCHR_HTML_KEYBOARD,
154 : : RES_POOLCHR_HTML_VARIABLE,
155 : : RES_POOLCHR_HTML_DEFINSTANCE,
156 : : RES_POOLCHR_HTML_TELETYPE,
157 : : RES_POOLCHR_HTML_END,
158 : :
159 : : RES_POOLCHR_END = RES_POOLCHR_HTML_END
160 : : };
161 : :
162 : :
163 : : // IDs for frame styles.
164 : : enum RES_POOL_FRMFMT_TYPE
165 : : {
166 : : RES_POOLFRM_BEGIN = POOLGRP_FRAMEFMT,
167 : :
168 : : RES_POOLFRM_FRAME = RES_POOLFRM_BEGIN, // Frame.
169 : : RES_POOLFRM_GRAPHIC, // Graphics.
170 : : RES_POOLFRM_OLE, // OLE.
171 : : RES_POOLFRM_FORMEL, // Formula.
172 : : RES_POOLFRM_MARGINAL, // Marginalia.
173 : : RES_POOLFRM_WATERSIGN, // Watermark.
174 : : RES_POOLFRM_LABEL, // Labels.
175 : :
176 : : RES_POOLFRM_END
177 : : };
178 : :
179 : : // IDs for page styles.
180 : : enum RES_POOL_PAGEFMT_TYPE
181 : : {
182 : : RES_POOLPAGE_BEGIN = POOLGRP_PAGEDESC,
183 : :
184 : : RES_POOLPAGE_STANDARD = RES_POOLPAGE_BEGIN, // Standard page.
185 : : RES_POOLPAGE_FIRST, // First page.
186 : : RES_POOLPAGE_LEFT, // Left page.
187 : : RES_POOLPAGE_RIGHT, // Right page.
188 : : RES_POOLPAGE_JAKET, // Envelope.
189 : : RES_POOLPAGE_REGISTER, // Index.
190 : : RES_POOLPAGE_HTML, // HTML.
191 : : RES_POOLPAGE_FOOTNOTE, // Footnote at end of document.
192 : : RES_POOLPAGE_ENDNOTE, // Endnote page.
193 : : RES_POOLPAGE_LANDSCAPE, // Landscape page style.
194 : :
195 : : RES_POOLPAGE_END
196 : : };
197 : :
198 : : // IDs for list styles.
199 : : enum RES_POOL_NUMRULE_TYPE
200 : : {
201 : : RES_POOLNUMRULE_BEGIN = POOLGRP_NUMRULE,
202 : : RES_POOLNUMRULE_NUM1 = RES_POOLNUMRULE_BEGIN, // NumRule Numbering 1.
203 : : RES_POOLNUMRULE_NUM2, // NumRule Numbering 2.
204 : : RES_POOLNUMRULE_NUM3, // NumRule Numbering 3.
205 : : RES_POOLNUMRULE_NUM4, // NumRule Numbering 4.
206 : : RES_POOLNUMRULE_NUM5, // NumRule Numbering 5.
207 : : RES_POOLNUMRULE_BUL1, // NumRule Bullets 1.
208 : : RES_POOLNUMRULE_BUL2, // NumRule Bullets 2.
209 : : RES_POOLNUMRULE_BUL3, // NumRule Bullets 3.
210 : : RES_POOLNUMRULE_BUL4, // NumRule Bullets 4.
211 : : RES_POOLNUMRULE_BUL5, // NumRule Bullets 5.
212 : : RES_POOLNUMRULE_END
213 : : };
214 : :
215 : : // IDs for paragraph styles.
216 : : enum RES_POOL_COLLFMT_TYPE
217 : : {
218 : : // Group text.
219 : : RES_POOLCOLL_TEXT_BEGIN = COLL_TEXT_BITS,
220 : :
221 : : RES_POOLCOLL_STANDARD = RES_POOLCOLL_TEXT_BEGIN, // Standard.
222 : : RES_POOLCOLL_TEXT, // Text body.
223 : : RES_POOLCOLL_TEXT_IDENT, // Text body first line indent.
224 : : RES_POOLCOLL_TEXT_NEGIDENT, // Text body hanging indent.
225 : : RES_POOLCOLL_TEXT_MOVE, // Text body indent.
226 : : RES_POOLCOLL_GREETING, // Complimentary close.
227 : : RES_POOLCOLL_SIGNATURE, // Signature.
228 : : RES_POOLCOLL_CONFRONTATION, // List indent.
229 : : RES_POOLCOLL_MARGINAL, // Marginalia.
230 : :
231 : : // Subgroup headings.
232 : : RES_POOLCOLL_HEADLINE_BASE, // Base heading.
233 : : RES_POOLCOLL_HEADLINE1, // Heading 1.
234 : : RES_POOLCOLL_HEADLINE2, // Heading 2.
235 : : RES_POOLCOLL_HEADLINE3, // Heading 3.
236 : : RES_POOLCOLL_HEADLINE4, // Heading 4.
237 : : RES_POOLCOLL_HEADLINE5, // Heading 5.
238 : : RES_POOLCOLL_HEADLINE6, // Heading 6.
239 : : RES_POOLCOLL_HEADLINE7, // Heading 7.
240 : : RES_POOLCOLL_HEADLINE8, // Heading 8.
241 : : RES_POOLCOLL_HEADLINE9, // Heading 9.
242 : : RES_POOLCOLL_HEADLINE10, // Heading 10.
243 : :
244 : : RES_POOLCOLL_TEXT_END,
245 : :
246 : :
247 : : // Group lists.
248 : : RES_POOLCOLL_LISTS_BEGIN = COLL_LISTS_BITS,
249 : :
250 : : RES_POOLCOLL_NUMBUL_BASE = RES_POOLCOLL_LISTS_BEGIN, // Base list.
251 : :
252 : : // Subgroup numberings.
253 : : RES_POOLCOLL_NUM_LEVEL1S, // Start 1st level.
254 : : RES_POOLCOLL_NUM_LEVEL1, // 1st level.
255 : : RES_POOLCOLL_NUM_LEVEL1E, // End 1st level.
256 : : RES_POOLCOLL_NUM_NONUM1, // No numbering.
257 : : RES_POOLCOLL_NUM_LEVEL2S, // Start 2nd level.
258 : : RES_POOLCOLL_NUM_LEVEL2, // 2nd level.
259 : : RES_POOLCOLL_NUM_LEVEL2E, // End 2nd level.
260 : : RES_POOLCOLL_NUM_NONUM2, // No numbering.
261 : : RES_POOLCOLL_NUM_LEVEL3S, // Start 3rd level.
262 : : RES_POOLCOLL_NUM_LEVEL3, // 3rd level.
263 : : RES_POOLCOLL_NUM_LEVEL3E, // End 3rd level.
264 : : RES_POOLCOLL_NUM_NONUM3, // No numbering.
265 : : RES_POOLCOLL_NUM_LEVEL4S, // Start 4th level.
266 : : RES_POOLCOLL_NUM_LEVEL4, // 4th level.
267 : : RES_POOLCOLL_NUM_LEVEL4E, // End 4th level.
268 : : RES_POOLCOLL_NUM_NONUM4, // No numbering.
269 : : RES_POOLCOLL_NUM_LEVEL5S, // Start 5th level.
270 : : RES_POOLCOLL_NUM_LEVEL5, // 5th level.
271 : : RES_POOLCOLL_NUM_LEVEL5E, // End 5th level.
272 : : RES_POOLCOLL_NUM_NONUM5, // No numbering.
273 : :
274 : :
275 : : //Subgroup bullets.
276 : : RES_POOLCOLL_BUL_LEVEL1S, // Start 1st level.
277 : : RES_POOLCOLL_BUL_LEVEL1, // 1st level.
278 : : RES_POOLCOLL_BUL_LEVEL1E, // End 1st level
279 : : RES_POOLCOLL_BUL_NONUM1, // No numbering.
280 : : RES_POOLCOLL_BUL_LEVEL2S, // Start 2nd level.
281 : : RES_POOLCOLL_BUL_LEVEL2, // 2nd level.
282 : : RES_POOLCOLL_BUL_LEVEL2E, // End 2nd level.
283 : : RES_POOLCOLL_BUL_NONUM2, // No numbering.
284 : : RES_POOLCOLL_BUL_LEVEL3S, // Start 3rd level.
285 : : RES_POOLCOLL_BUL_LEVEL3, // 3rd Level.
286 : : RES_POOLCOLL_BUL_LEVEL3E, // End 3rd level.
287 : : RES_POOLCOLL_BUL_NONUM3, // No numbering.
288 : : RES_POOLCOLL_BUL_LEVEL4S, // Start 4th level.
289 : : RES_POOLCOLL_BUL_LEVEL4, // 4th level.
290 : : RES_POOLCOLL_BUL_LEVEL4E, // End 4th level.
291 : : RES_POOLCOLL_BUL_NONUM4, // No numbering.
292 : : RES_POOLCOLL_BUL_LEVEL5S, // Start 5th level.
293 : : RES_POOLCOLL_BUL_LEVEL5, // 5th level.
294 : : RES_POOLCOLL_BUL_LEVEL5E, // End 5th Level.
295 : : RES_POOLCOLL_BUL_NONUM5, // No numbering.
296 : :
297 : : RES_POOLCOLL_LISTS_END,
298 : :
299 : :
300 : : // Special ranges.
301 : : RES_POOLCOLL_EXTRA_BEGIN = COLL_EXTRA_BITS,
302 : :
303 : : // Subgroup header.
304 : : RES_POOLCOLL_HEADER = RES_POOLCOLL_EXTRA_BEGIN, // Header Left&Right.
305 : : RES_POOLCOLL_HEADERL, // Header Left.
306 : : RES_POOLCOLL_HEADERR, // Header Right.
307 : :
308 : : // Subgroup footer.
309 : : RES_POOLCOLL_FOOTER, // Footer Left&Right.
310 : : RES_POOLCOLL_FOOTERL, // Footer Left.
311 : : RES_POOLCOLL_FOOTERR, // Footer Right.
312 : :
313 : : // Subgroup table.
314 : : RES_POOLCOLL_TABLE, // Table of Contents.
315 : : RES_POOLCOLL_TABLE_HDLN, // Table of Contents - heading.
316 : :
317 : :
318 : : // Subgroup labels.
319 : : RES_POOLCOLL_LABEL, // Base labels.
320 : : RES_POOLCOLL_LABEL_ABB, // Label illustration.
321 : : RES_POOLCOLL_LABEL_TABLE, // Label table.
322 : : RES_POOLCOLL_LABEL_FRAME, // Label frame.
323 : :
324 : : // Other stuff.
325 : : RES_POOLCOLL_FRAME, // Frames.
326 : : RES_POOLCOLL_FOOTNOTE, // Footnotes.
327 : : RES_POOLCOLL_JAKETADRESS, // Addressee.
328 : : RES_POOLCOLL_SENDADRESS, // Sender.
329 : : RES_POOLCOLL_ENDNOTE, // Endnotes.
330 : :
331 : : RES_POOLCOLL_LABEL_DRAWING, // Label drawing objects.
332 : : RES_POOLCOLL_EXTRA_END,
333 : :
334 : :
335 : : // Group indices.
336 : : RES_POOLCOLL_REGISTER_BEGIN = COLL_REGISTER_BITS,
337 : :
338 : : RES_POOLCOLL_REGISTER_BASE = RES_POOLCOLL_REGISTER_BEGIN, // Base index.
339 : :
340 : : // Subgroup index tables.
341 : : RES_POOLCOLL_TOX_IDXH, // Header.
342 : : RES_POOLCOLL_TOX_IDX1, // 1st level.
343 : : RES_POOLCOLL_TOX_IDX2, // 2nd level.
344 : : RES_POOLCOLL_TOX_IDX3, // 3rd level.
345 : : RES_POOLCOLL_TOX_IDXBREAK, // Separator.
346 : :
347 : : // Subgroup table of contents.
348 : : RES_POOLCOLL_TOX_CNTNTH, // Header.
349 : : RES_POOLCOLL_TOX_CNTNT1, // Content 1st level.
350 : : RES_POOLCOLL_TOX_CNTNT2, // Content 2nd level.
351 : : RES_POOLCOLL_TOX_CNTNT3, // Content 3rd level.
352 : : RES_POOLCOLL_TOX_CNTNT4, // Content 4th level.
353 : : RES_POOLCOLL_TOX_CNTNT5, // Content 5th level.
354 : :
355 : :
356 : : // Subgroup user indices.
357 : : RES_POOLCOLL_TOX_USERH, // Header.
358 : : RES_POOLCOLL_TOX_USER1, // 1st level.
359 : : RES_POOLCOLL_TOX_USER2, // 2nd level.
360 : : RES_POOLCOLL_TOX_USER3, // 3rd level.
361 : : RES_POOLCOLL_TOX_USER4, // 4th level.
362 : : RES_POOLCOLL_TOX_USER5, // 5th level.
363 : :
364 : :
365 : : RES_POOLCOLL_TOX_CNTNT6, // Content 6th level.
366 : : RES_POOLCOLL_TOX_CNTNT7, // Content 7th level.
367 : : RES_POOLCOLL_TOX_CNTNT8, // Content 8th level.
368 : : RES_POOLCOLL_TOX_CNTNT9, // Content 9th level.
369 : : RES_POOLCOLL_TOX_CNTNT10, // Content 10th level.
370 : :
371 : : // illustrations index.
372 : : RES_POOLCOLL_TOX_ILLUSH, // Illustrations header.
373 : : RES_POOLCOLL_TOX_ILLUS1, // Illustrations all levels.
374 : :
375 : : // object index.
376 : : RES_POOLCOLL_TOX_OBJECTH, // Objects header.
377 : : RES_POOLCOLL_TOX_OBJECT1, // Objects all levels.
378 : :
379 : : // tables index.
380 : : RES_POOLCOLL_TOX_TABLESH, // Tables header.
381 : : RES_POOLCOLL_TOX_TABLES1, // Tables all levels.
382 : :
383 : : // index of authorities.
384 : : RES_POOLCOLL_TOX_AUTHORITIESH, // Authorities header.
385 : : RES_POOLCOLL_TOX_AUTHORITIES1, // Authorities all levels.
386 : :
387 : : // user index 6..10.
388 : : RES_POOLCOLL_TOX_USER6, // 6th level.
389 : : RES_POOLCOLL_TOX_USER7, // 7th level.
390 : : RES_POOLCOLL_TOX_USER8, // 8th level.
391 : : RES_POOLCOLL_TOX_USER9, // 9th level.
392 : : RES_POOLCOLL_TOX_USER10, // 10th level.
393 : :
394 : : RES_POOLCOLL_REGISTER_END,
395 : :
396 : :
397 : : // Group chapter / document.
398 : : RES_POOLCOLL_DOC_BEGIN = COLL_DOC_BITS,
399 : :
400 : : RES_POOLCOLL_DOC_TITEL = RES_POOLCOLL_DOC_BEGIN, // Doc. titel.
401 : : RES_POOLCOLL_DOC_SUBTITEL, // Doc. subtitel.
402 : :
403 : : RES_POOLCOLL_DOC_END,
404 : :
405 : : // Group HTML-styles.
406 : : RES_POOLCOLL_HTML_BEGIN = COLL_HTML_BITS,
407 : :
408 : : RES_POOLCOLL_HTML_BLOCKQUOTE = RES_POOLCOLL_HTML_BEGIN,
409 : : RES_POOLCOLL_HTML_PRE,
410 : : RES_POOLCOLL_HTML_HR,
411 : : RES_POOLCOLL_HTML_DD,
412 : : RES_POOLCOLL_HTML_DT,
413 : :
414 : : RES_POOLCOLL_HTML_END
415 : :
416 : : // End of text styles collection.
417 : : };
418 : :
419 : :
420 : : // Query defined parent of a POOL-ID
421 : : // Returns 0 if standard
422 : : // USHRT_MAX if no parent
423 : : // the parent in all other cases.
424 : : sal_uInt16 GetPoolParent( sal_uInt16 nId );
425 : :
426 : : SvxFrameDirection GetDefaultFrameDirection(sal_uLong nLanguage);
427 : :
428 : 18521 : inline sal_Bool IsConditionalByPoolId(sal_uInt16 nId)
429 : : {
430 : 18521 : return RES_POOLCOLL_TEXT == nId;
431 : : }
432 : :
433 : : #endif
434 : :
435 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|