Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
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/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
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 .
18 : */
19 : #ifndef INCLUDED_SW_INC_HINTIDS_HXX
20 : #define INCLUDED_SW_INC_HINTIDS_HXX
21 :
22 : #include <tools/solar.h>
23 : #include <sal/types.h>
24 : #include <svx/xdef.hxx>
25 : #include "swdllapi.h"
26 :
27 : // For SwTextHints without end index the following char is added:
28 :
29 : #define CH_TXTATR_BREAKWORD ((sal_Unicode)0x01)
30 : #define CH_TXTATR_INWORD ((sal_Unicode)0xFFF9)
31 : #define CH_TXTATR_TAB ((sal_Unicode)'\t')
32 : #define CH_TXTATR_NEWLINE ((sal_Unicode)'\n')
33 : #define CH_TXT_ATR_INPUTFIELDSTART ((sal_Unicode)0x04)
34 : #define CH_TXT_ATR_INPUTFIELDEND ((sal_Unicode)0x05)
35 :
36 : #define CH_TXT_ATR_FORMELEMENT ((sal_Unicode)0x06)
37 :
38 : #define CH_TXT_ATR_FIELDSTART ((sal_Unicode)0x07)
39 : #define CH_TXT_ATR_FIELDEND ((sal_Unicode)0x08)
40 : #define CH_TXT_ATR_SUBST_FIELDSTART ("[")
41 : #define CH_TXT_ATR_SUBST_FIELDEND ("]")
42 :
43 : /*
44 : * Enums for the hints
45 : */
46 :
47 : #define HINT_BEGIN 1
48 :
49 : #define POOLATTR_BEGIN HINT_BEGIN
50 : #define POOLATTR_END RES_UNKNOWNATR_END
51 :
52 : // Ranges for the IDs of the format-attributes.
53 : // Which-values for character-format attributes.
54 : enum RES_CHRATR
55 : {
56 : RES_CHRATR_BEGIN = HINT_BEGIN,
57 : RES_CHRATR_CASEMAP = RES_CHRATR_BEGIN, // 1
58 : RES_CHRATR_CHARSETCOLOR, // 2
59 : RES_CHRATR_COLOR, // 3
60 : RES_CHRATR_CONTOUR, // 4
61 : RES_CHRATR_CROSSEDOUT, // 5
62 : RES_CHRATR_ESCAPEMENT, // 6
63 : RES_CHRATR_FONT, // 7
64 : RES_CHRATR_FONTSIZE, // 8
65 : RES_CHRATR_KERNING, // 9
66 : RES_CHRATR_LANGUAGE, // 10
67 : RES_CHRATR_POSTURE, // 11
68 : RES_CHRATR_PROPORTIONALFONTSIZE, // 12
69 : RES_CHRATR_SHADOWED, // 13
70 : RES_CHRATR_UNDERLINE, // 14
71 : RES_CHRATR_WEIGHT, // 15
72 : RES_CHRATR_WORDLINEMODE, // 16
73 : RES_CHRATR_AUTOKERN, // 17
74 : RES_CHRATR_BLINK, // 18
75 : RES_CHRATR_NOHYPHEN, // 19
76 : RES_CHRATR_NOLINEBREAK, // 20
77 : RES_CHRATR_BACKGROUND, // 21
78 : RES_CHRATR_CJK_FONT, // 22
79 : RES_CHRATR_CJK_FONTSIZE, // 23
80 : RES_CHRATR_CJK_LANGUAGE, // 24
81 : RES_CHRATR_CJK_POSTURE, // 25
82 : RES_CHRATR_CJK_WEIGHT, // 26
83 : RES_CHRATR_CTL_FONT, // 27
84 : RES_CHRATR_CTL_FONTSIZE, // 28
85 : RES_CHRATR_CTL_LANGUAGE, // 29
86 : RES_CHRATR_CTL_POSTURE, // 30
87 : RES_CHRATR_CTL_WEIGHT, // 31
88 : RES_CHRATR_ROTATE, // 32
89 : RES_CHRATR_EMPHASIS_MARK, // 33
90 : RES_CHRATR_TWO_LINES, // 34
91 : RES_CHRATR_SCALEW, // 35
92 : RES_CHRATR_RELIEF, // 36
93 : RES_CHRATR_HIDDEN, // 37
94 : RES_CHRATR_OVERLINE, // 38
95 : RES_CHRATR_RSID, // 39
96 : RES_CHRATR_BOX, // 40
97 : RES_CHRATR_SHADOW, // 41
98 : RES_CHRATR_HIGHLIGHT, // 42
99 : RES_CHRATR_GRABBAG, // 43
100 : RES_CHRATR_BIDIRTL, // 44
101 : RES_CHRATR_IDCTHINT, // 45
102 : RES_CHRATR_END
103 : };
104 :
105 : // this Attribute used only in a TextNodes SwpAttr-Array
106 : enum RES_TXTATR
107 : {
108 : RES_TXTATR_BEGIN = RES_CHRATR_END,
109 :
110 : /** text attributes with start and end.
111 : #i105453#:
112 : Hints (SwTextAttr) with the same start and end position are sorted by
113 : WhichId, i.e., the TXTATR constants defined here.
114 : The text formatting (SwAttrIter) poses some requirements on TXTATR order:
115 : - AUTOFMT must precede CHARFMT, so that auto style can overwrite char style.
116 : - INETFMT must precede CHARFMT, so that link style can overwrite char style.
117 : (this is actually surprising: CHARFMT hints are not split at INETFMT
118 : hints on insertion, but on exporting to ODF. if CHARFMT would precede
119 : INETFMT, then exporting and importing will effectively change precedence)
120 :
121 : Nesting hints (SwTextAttrNesting) also have requirements on TXTATR order,
122 : to ensure proper nesting (because CJK_RUBY and INETFMT have no CH_TXTATR):
123 : - INETFMT should precede CJK_RUBY (for UNO API it does not matter...)
124 : - META and METAFIELD must precede CJK_RUBY and INETFMT
125 : */
126 : RES_TXTATR_WITHEND_BEGIN = RES_TXTATR_BEGIN ,
127 : RES_TXTATR_REFMARK = RES_TXTATR_WITHEND_BEGIN, // 46
128 : RES_TXTATR_TOXMARK, // 47
129 : RES_TXTATR_META, // 48
130 : RES_TXTATR_METAFIELD, // 49
131 : RES_TXTATR_AUTOFMT, // 50
132 : RES_TXTATR_INETFMT, // 51
133 : RES_TXTATR_CHARFMT, // 52
134 : RES_TXTATR_CJK_RUBY, // 53
135 : RES_TXTATR_UNKNOWN_CONTAINER, // 54
136 : RES_TXTATR_INPUTFIELD, // 55
137 : RES_TXTATR_WITHEND_END,
138 :
139 : // all TextAttributes without an end
140 : RES_TXTATR_NOEND_BEGIN = RES_TXTATR_WITHEND_END,
141 : RES_TXTATR_FIELD = RES_TXTATR_NOEND_BEGIN, // 56
142 : RES_TXTATR_FLYCNT, // 57
143 : RES_TXTATR_FTN, // 58
144 : RES_TXTATR_ANNOTATION, // 59
145 : RES_TXTATR_DUMMY3, // 60
146 : RES_TXTATR_DUMMY1, // 61
147 : RES_TXTATR_DUMMY2, // 62
148 : RES_TXTATR_NOEND_END,
149 : RES_TXTATR_END = RES_TXTATR_NOEND_END
150 : };
151 :
152 : enum RES_PARATR
153 : {
154 : RES_PARATR_BEGIN = RES_TXTATR_END,
155 : RES_PARATR_LINESPACING = RES_PARATR_BEGIN, // 63
156 : RES_PARATR_ADJUST, // 64
157 : RES_PARATR_SPLIT, // 65
158 : RES_PARATR_ORPHANS, // 66
159 : RES_PARATR_WIDOWS, // 67
160 : RES_PARATR_TABSTOP, // 68
161 : RES_PARATR_HYPHENZONE, // 69
162 : RES_PARATR_DROP, // 70
163 : RES_PARATR_REGISTER, // 71
164 : RES_PARATR_NUMRULE, // 72
165 : RES_PARATR_SCRIPTSPACE, // 73
166 : RES_PARATR_HANGINGPUNCTUATION, // 74
167 : RES_PARATR_FORBIDDEN_RULES, // 75
168 : RES_PARATR_VERTALIGN, // 76
169 : RES_PARATR_SNAPTOGRID, // 77
170 : RES_PARATR_CONNECT_BORDER, // 78
171 : RES_PARATR_OUTLINELEVEL, // 79
172 : RES_PARATR_RSID, // 80
173 : RES_PARATR_GRABBAG, // 81
174 : RES_PARATR_END
175 : };
176 :
177 : // list attributes for paragraphs.
178 : // intentionally these list attributes are not contained in paragraph styles
179 : enum RES_PARATR_LIST
180 : {
181 : RES_PARATR_LIST_BEGIN = RES_PARATR_END,
182 : RES_PARATR_LIST_ID = RES_PARATR_LIST_BEGIN, // 82
183 : RES_PARATR_LIST_LEVEL, // 83
184 : RES_PARATR_LIST_ISRESTART, // 84
185 : RES_PARATR_LIST_RESTARTVALUE, // 85
186 : RES_PARATR_LIST_ISCOUNTED, // 86
187 : RES_PARATR_LIST_END
188 : };
189 :
190 : enum RES_FRMATR
191 : {
192 : RES_FRMATR_BEGIN = RES_PARATR_LIST_END,
193 : RES_FILL_ORDER = RES_FRMATR_BEGIN, // 87
194 : RES_FRM_SIZE, // 88
195 : RES_PAPER_BIN, // 89
196 : RES_LR_SPACE, // 90
197 : RES_UL_SPACE, // 91
198 : RES_PAGEDESC, // 92
199 : RES_BREAK, // 93
200 : RES_CNTNT, // 94
201 : RES_HEADER, // 95
202 : RES_FOOTER, // 96
203 : RES_PRINT, // 97
204 : RES_OPAQUE, // 98
205 : RES_PROTECT, // 99
206 : RES_SURROUND, // 100
207 : RES_VERT_ORIENT, // 101
208 : RES_HORI_ORIENT, // 102
209 : RES_ANCHOR, // 103
210 : RES_BACKGROUND, // 104
211 : RES_BOX, // 105
212 : RES_SHADOW, // 106
213 : RES_FRMMACRO, // 107
214 : RES_COL, // 108
215 : RES_KEEP, // 109
216 : RES_URL, // 110
217 : RES_EDIT_IN_READONLY, // 111
218 : RES_LAYOUT_SPLIT, // 112
219 : RES_CHAIN, // 113
220 : RES_TEXTGRID, // 114
221 : RES_LINENUMBER , // 115
222 : RES_FTN_AT_TXTEND, // 116
223 : RES_END_AT_TXTEND, // 117
224 : RES_COLUMNBALANCE, // 118
225 : RES_FRAMEDIR, // 119
226 : RES_HEADER_FOOTER_EAT_SPACING, // 120
227 : RES_ROW_SPLIT, // 121
228 : RES_FOLLOW_TEXT_FLOW, // 122
229 : RES_COLLAPSING_BORDERS, // 123
230 : RES_WRAP_INFLUENCE_ON_OBJPOS, // 124
231 : RES_AUTO_STYLE, // 125
232 : RES_FRMATR_STYLE_NAME, // 126
233 : RES_FRMATR_CONDITIONAL_STYLE_NAME, // 127
234 : RES_FRMATR_GRABBAG, // 128
235 : RES_TEXT_VERT_ADJUST, // 129
236 : RES_FRMATR_END
237 : };
238 :
239 : enum RES_GRFATR
240 : {
241 : RES_GRFATR_BEGIN = RES_FRMATR_END,
242 : RES_GRFATR_MIRRORGRF = RES_GRFATR_BEGIN, // 130
243 : RES_GRFATR_CROPGRF, // 131
244 :
245 : RES_GRFATR_ROTATION, // 132
246 : RES_GRFATR_LUMINANCE, // 133
247 : RES_GRFATR_CONTRAST, // 134
248 : RES_GRFATR_CHANNELR, // 135
249 : RES_GRFATR_CHANNELG, // 136
250 : RES_GRFATR_CHANNELB, // 137
251 : RES_GRFATR_GAMMA, // 138
252 : RES_GRFATR_INVERT, // 139
253 : RES_GRFATR_TRANSPARENCY, // 140
254 : RES_GRFATR_DRAWMODE, // 141
255 :
256 : RES_GRFATR_DUMMY1, // 142
257 : RES_GRFATR_DUMMY2, // 143
258 : RES_GRFATR_DUMMY3, // 144
259 : RES_GRFATR_DUMMY4, // 145
260 : RES_GRFATR_DUMMY5, // 146
261 : RES_GRFATR_END
262 : };
263 :
264 : enum RES_BOXATR
265 : {
266 : RES_BOXATR_BEGIN = RES_GRFATR_END,
267 : RES_BOXATR_FORMAT = RES_BOXATR_BEGIN, // 147
268 : RES_BOXATR_FORMULA, // 148
269 : RES_BOXATR_VALUE, // 149
270 : RES_BOXATR_END
271 : };
272 :
273 : enum RES_UNKNOWNATR
274 : {
275 : RES_UNKNOWNATR_BEGIN = RES_BOXATR_END,
276 : RES_UNKNOWNATR_CONTAINER = RES_UNKNOWNATR_BEGIN,// 150
277 : RES_UNKNOWNATR_END
278 : };
279 :
280 : // Format IDs
281 : enum RES_FMT
282 : {
283 : RES_FMT_BEGIN = RES_UNKNOWNATR_END,
284 : RES_CHRFMT = RES_FMT_BEGIN, // 151
285 : RES_FRMFMT, // 152
286 : RES_FLYFRMFMT, // 153
287 : RES_TXTFMTCOLL, // 154
288 : RES_GRFFMTCOLL, // 155
289 : RES_DRAWFRMFMT, // 156
290 : RES_CONDTXTFMTCOLL, // 157
291 : RES_FMT_END
292 : };
293 :
294 : // ID's for Messages in the Formats
295 : enum RES_MSG
296 : {
297 : RES_MSG_BEGIN = RES_FMT_END,
298 : RES_OBJECTDYING = RES_MSG_BEGIN, // 158
299 : RES_FMT_CHG,
300 : RES_ATTRSET_CHG,
301 : RES_FRM_SIZECHG,
302 : RES_TXTATR_FLDCHG,
303 : RES_TXTATR_EMPTYCHG,
304 : RES_INS_CHR,
305 : RES_INS_TXT,
306 : RES_DEL_CHR,
307 : RES_DEL_TXT,
308 : RES_UPDATE_ATTR,
309 : RES_REFMARKFLD_UPDATE,
310 : RES_DOCPOS_UPDATE,
311 : RES_TABLEFML_UPDATE,
312 : RES_UPDATEDDETBL,
313 : RES_TBLHEADLINECHG,
314 : RES_AUTOFMT_DOCNODE,
315 : RES_REPAINT,
316 : RES_DOC_DTOR,
317 : RES_SECTION_HIDDEN,
318 : RES_SECTION_NOT_HIDDEN,
319 : RES_GRAPHIC_ARRIVED,
320 : RES_GRAPHIC_PIECE_ARRIVED,
321 : RES_HIDDENPARA_PRINT,
322 : RES_CONDCOLL_CONDCHG,
323 : RES_VIRTPAGENUM_INFO,
324 : RES_GETLOWERNUMLEVEL,
325 : RES_RESET_FMTWRITTEN,
326 : RES_REMOVE_UNO_OBJECT,
327 : RES_GRF_REREAD_AND_INCACHE,
328 : RES_SECTION_RESETHIDDENFLAG,
329 : RES_FINDNEARESTNODE,
330 : RES_CONTENT_VISIBLE,
331 : RES_GRAPHIC_SWAPIN,
332 : RES_NAME_CHANGED,
333 : RES_TITLE_CHANGED,
334 : RES_DESCRIPTION_CHANGED,
335 : RES_UNOCURSOR_LEAVES_SECTION,
336 : RES_LINKED_GRAPHIC_STREAM_ARRIVED,
337 : RES_MSG_END
338 : };
339 :
340 : // An ID for the RTF-reader. The stylesheets are treated like attributes,
341 : // i.e. there is a StyleSheet-attribute. To avoid collision with other
342 : // Which()-values, the value is listed here. (The help system too defines
343 : // new attributes!)
344 : enum RES_FLTRATTR
345 : {
346 : RES_FLTRATTR_BEGIN = RES_MSG_END,
347 : RES_FLTR_BOOKMARK = RES_FLTRATTR_BEGIN,
348 : RES_FLTR_ANCHOR,
349 : RES_FLTR_NUMRULE,
350 : RES_FLTR_TOX,
351 : RES_FLTR_REDLINE,
352 : RES_FLTR_ANNOTATIONMARK,
353 : RES_FLTRATTR_END
354 : };
355 :
356 : #define RES_TBX_DUMMY RES_FLTRATTR_END + 1
357 :
358 : #define HINT_END RES_TBX_DUMMY
359 :
360 : // Error recognition!!
361 : #define INVALID_HINT HINT_END
362 : #define RES_WHICHHINT_END HINT_END
363 :
364 0 : inline bool isATR(const sal_uInt16 nWhich)
365 : {
366 0 : return (RES_CHRATR_BEGIN <= nWhich) && (RES_UNKNOWNATR_END > nWhich);
367 : }
368 1476831 : inline bool isCHRATR(const sal_uInt16 nWhich)
369 : {
370 1476831 : return (RES_CHRATR_BEGIN <= nWhich) && (RES_CHRATR_END > nWhich);
371 : }
372 21830 : inline bool isTXTATR_WITHEND(const sal_uInt16 nWhich)
373 : {
374 : return (RES_TXTATR_WITHEND_BEGIN <= nWhich)
375 21830 : && (RES_TXTATR_WITHEND_END > nWhich);
376 : }
377 5 : inline bool isTXTATR_NOEND(const sal_uInt16 nWhich)
378 : {
379 : return (RES_TXTATR_NOEND_BEGIN <= nWhich)
380 5 : && (RES_TXTATR_NOEND_END > nWhich);
381 : }
382 64503 : inline bool isTXTATR(const sal_uInt16 nWhich)
383 : {
384 64503 : return (RES_TXTATR_BEGIN <= nWhich) && (RES_TXTATR_END > nWhich);
385 : }
386 85268 : inline bool isPARATR(const sal_uInt16 nWhich)
387 : {
388 85268 : return (RES_PARATR_BEGIN <= nWhich) && (RES_PARATR_END > nWhich);
389 : }
390 62261 : inline bool isPARATR_LIST(const sal_uInt16 nWhich)
391 : {
392 62261 : return (RES_PARATR_LIST_BEGIN <= nWhich) && (RES_PARATR_LIST_END > nWhich);
393 : }
394 59244 : inline bool isFRMATR(const sal_uInt16 nWhich)
395 : {
396 59244 : return (RES_FRMATR_BEGIN <= nWhich) && (RES_FRMATR_END > nWhich);
397 : }
398 40534 : inline bool isDrawingLayerAttribute(const sal_uInt16 nWhich) //UUUU
399 : {
400 40534 : return (XATTR_START <= nWhich) && (XATTR_END > nWhich);
401 : }
402 50806 : inline bool isGRFATR(const sal_uInt16 nWhich)
403 : {
404 50806 : return (RES_GRFATR_BEGIN <= nWhich) && (RES_GRFATR_END > nWhich);
405 : }
406 0 : inline bool isBOXATR(const sal_uInt16 nWhich)
407 : {
408 0 : return (RES_BOXATR_BEGIN <= nWhich) && (RES_BOXATR_END > nWhich);
409 : }
410 40413 : inline bool isUNKNOWNATR(const sal_uInt16 nWhich)
411 : {
412 40413 : return (RES_UNKNOWNATR_BEGIN <= nWhich) && (RES_UNKNOWNATR_END > nWhich);
413 : }
414 :
415 : // Take the respective default attribute from the statistical default
416 : // attributes table over the Which-value.
417 : // If none exists, return a 0 pointer!!!
418 : // This function is implemented in Init.cxx. It is declared here as external
419 : // in order to allow the formats to access it.
420 : // Inline in PRODUCT.
421 : class SfxPoolItem;
422 : struct SfxItemInfo;
423 : typedef SfxPoolItem* SwDfltAttrTab[ POOLATTR_END - POOLATTR_BEGIN ];
424 :
425 : extern SwDfltAttrTab aAttrTab;
426 : extern SfxItemInfo aSlotTab[];
427 :
428 : /** Get the default attribute from corresponding default attribute table.
429 :
430 : @param[in] nWhich Position in table
431 : @return Attribute if found, null pointer otherwise
432 : */
433 : SW_DLLPUBLIC const SfxPoolItem* GetDfltAttr( sal_uInt16 nWhich );
434 :
435 : SW_DLLPUBLIC sal_uInt16 GetWhichOfScript( sal_uInt16 nWhich, sal_uInt16 nScript );
436 :
437 : // return for the given TextAttribute without an end the correct character.
438 : // This function returns
439 : // CH_TXTATR_BREAKWORD for Textattribute which breaks a word (default)
440 : // CH_TXTATR_INWORD for Textattribute which dont breaks a word
441 : class SwTextAttr;
442 : sal_Unicode GetCharOfTextAttr( const SwTextAttr& rAttr );
443 :
444 : // all Sets defined in init.cxx
445 :
446 : // AttrSet-Range for the 3 Break-Attribute
447 : extern sal_uInt16 aBreakSetRange[];
448 : // AttrSet-Range for TextFormatColl
449 : extern sal_uInt16 aTextFormatCollSetRange[];
450 : // AttrSet-Range for GrfFormatColl
451 : extern sal_uInt16 aGrfFormatCollSetRange[];
452 : // AttrSet-Range for TextNode
453 : SW_DLLPUBLIC extern sal_uInt16 aTextNodeSetRange[];
454 : // AttrSet-Range for NoTextNode
455 : extern sal_uInt16 aNoTextNodeSetRange[];
456 : // AttrSet-Range for SwTable
457 : extern sal_uInt16 aTableSetRange[];
458 : // AttrSet-Range for SwTableLine
459 : extern sal_uInt16 aTableLineSetRange[];
460 : // AttrSet-Range for SwTableBox
461 : extern sal_uInt16 aTableBoxSetRange[];
462 : // AttrSet-Range for SwFrameFormat
463 : SW_DLLPUBLIC extern sal_uInt16 aFrameFormatSetRange[];
464 : // AttrSet-Range for SwCharFormat
465 : extern sal_uInt16 aCharFormatSetRange[];
466 : // AttrSet-Range for the autostyles
467 : extern sal_uInt16 aCharAutoFormatSetRange[];
468 : // AttrSet-Range for SwPageDescFormat
469 : extern sal_uInt16 aPgFrameFormatSetRange[];
470 :
471 : // check if ID is InRange of AttrSet-Ids
472 : bool IsInRange( const sal_uInt16* pRange, const sal_uInt16 nId );
473 :
474 : #endif
475 :
476 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|