xref: /trunk/main/sw/inc/hintids.hxx (revision c0286415)
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 #ifndef _HINTIDS_HXX
24 #define _HINTIDS_HXX
25 
26 #include <tools/solar.h>		// fuer __FAR_DATA
27 #include <sal/types.h>			// for sal_Unicode
28 #include "swdllapi.h"
29 
30 // fuer SwTxtHints ohne Endindex wird folgendes Zeichen eingefuegt:
31 //JP 24.05.00: for the new UniCode Version:
32 #define CH_TXTATR_BREAKWORD		((sal_Unicode)0x01)
33 #define CH_TXTATR_INWORD		((sal_Unicode)0x02)
34 #define CH_TXTATR_TAB           ((sal_Unicode)'\t')
35 #define CH_TXTATR_NEWLINE       ((sal_Unicode)'\n')
36 #define CH_TXT_ATR_FIELDSTART ((sal_Unicode)0x04)
37 #define CH_TXT_ATR_FIELDEND ((sal_Unicode)0x05)
38 #define CH_TXT_ATR_SUBST_FIELDSTART ("[")
39 #define CH_TXT_ATR_SUBST_FIELDEND ("]")
40 #define CH_TXT_ATR_FORMELEMENT ((sal_Unicode)0x06)
41 
42 /*
43  * Hier kommen erst mal die enums fuer die Hints
44  */
45 
46 #define HINT_BEGIN	1
47 
48 #define POOLATTR_BEGIN		HINT_BEGIN
49 #define POOLATTR_END		RES_UNKNOWNATR_END
50 
51 // Bereiche fuer die Id's der einzelnen Format-Attribute
52 // die Which-Werte fuer die Charakter-Format Attribute
53 enum RES_CHRATR
54 {
55 RES_CHRATR_BEGIN = HINT_BEGIN,
56 	RES_CHRATR_CASEMAP = RES_CHRATR_BEGIN,	//	1
57 	RES_CHRATR_CHARSETCOLOR,				//	2
58 	RES_CHRATR_COLOR,						//	3
59 	RES_CHRATR_CONTOUR,						//	4
60 	RES_CHRATR_CROSSEDOUT,					//	5
61 	RES_CHRATR_ESCAPEMENT,					//	6
62 	RES_CHRATR_FONT,						//	7
63 	RES_CHRATR_FONTSIZE,					//	8
64 	RES_CHRATR_KERNING, 					//	9
65 	RES_CHRATR_LANGUAGE,					// 10
66 	RES_CHRATR_POSTURE, 					// 11
67 	RES_CHRATR_PROPORTIONALFONTSIZE,		// 12
68 	RES_CHRATR_SHADOWED,					// 13
69 	RES_CHRATR_UNDERLINE,					// 14
70 	RES_CHRATR_WEIGHT,						// 15
71 	RES_CHRATR_WORDLINEMODE,				// 16
72 	RES_CHRATR_AUTOKERN,					// 17
73 	RES_CHRATR_BLINK,						// 18
74 	RES_CHRATR_NOHYPHEN,					// 19
75 	RES_CHRATR_NOLINEBREAK, 				// 20
76 	RES_CHRATR_BACKGROUND,					// 21
77 	RES_CHRATR_CJK_FONT,					// 22
78 	RES_CHRATR_CJK_FONTSIZE,				// 23
79 	RES_CHRATR_CJK_LANGUAGE,				// 24
80 	RES_CHRATR_CJK_POSTURE, 				// 25
81 	RES_CHRATR_CJK_WEIGHT,					// 26
82 	RES_CHRATR_CTL_FONT,					// 27
83 	RES_CHRATR_CTL_FONTSIZE,				// 28
84 	RES_CHRATR_CTL_LANGUAGE,				// 29
85 	RES_CHRATR_CTL_POSTURE, 				// 30
86 	RES_CHRATR_CTL_WEIGHT,					// 31
87 	RES_CHRATR_ROTATE,						// 32
88 	RES_CHRATR_EMPHASIS_MARK,				// 33
89 	RES_CHRATR_TWO_LINES, 					// 34
90 	RES_CHRATR_SCALEW,						// 35
91 	RES_CHRATR_RELIEF,						// 36
92     RES_CHRATR_HIDDEN,                      // 37
93 	RES_CHRATR_OVERLINE,					// 38
94 	RES_CHRATR_DUMMY1,						// 39
95 	RES_CHRATR_DUMMY2,						// 40
96 	RES_CHRATR_BIDIRTL,						// 41
97 	RES_CHRATR_IDCTHINT,					// 42
98 RES_CHRATR_END
99 };
100 
101 // diese Attribute stehen nur im SwpAttr-Array vom TextNode
102 enum RES_TXTATR
103 {
104 RES_TXTATR_BEGIN = RES_CHRATR_END,
105 
106 /** text attributes with start and end.
107    #i105453#:
108    Hints (SwTxtAttr) with the same start and end position are sorted by
109    WhichId, i.e., the TXTATR constants defined here.
110    The text formatting (SwAttrIter) poses some requirements on TXTATR order:
111    - AUTOFMT must precede CHARFMT, so that auto style can overwrite char style.
112    - INETFMT must precede CHARFMT, so that link style can overwrite char style.
113      (this is actually surprising: CHARFMT hints are not split at INETFMT
114       hints on insertion, but on exporting to ODF. if CHARFMT would precede
115       INETFMT, then exporting and importing will effectively change precedence)
116 
117    Nesting hints (SwTxtAttrNesting) also have requirements on TXTATR order,
118    to ensure proper nesting (because CJK_RUBY and INETFMT have no CH_TXTATR):
119    - INETFMT should precede CJK_RUBY (for UNO API it does not matter...)
120    - META and METAFIELD must precede CJK_RUBY and INETFMT
121  */
122 RES_TXTATR_WITHEND_BEGIN = RES_TXTATR_BEGIN ,
123     RES_TXTATR_REFMARK = RES_TXTATR_WITHEND_BEGIN,  // 43
124     RES_TXTATR_TOXMARK,                             // 44
125     RES_TXTATR_META,                                // 45
126     RES_TXTATR_METAFIELD,                           // 46
127     RES_TXTATR_AUTOFMT,                             // 47
128     RES_TXTATR_INETFMT,                             // 48
129     RES_TXTATR_CHARFMT,                             // 49
130     RES_TXTATR_CJK_RUBY,                            // 50
131     RES_TXTATR_UNKNOWN_CONTAINER,                   // 51
132     RES_TXTATR_DUMMY5,                              // 52
133 RES_TXTATR_WITHEND_END,
134 
135 // alle TextAttribute ohne ein Ende
136 RES_TXTATR_NOEND_BEGIN = RES_TXTATR_WITHEND_END,
137     RES_TXTATR_FIELD = RES_TXTATR_NOEND_BEGIN,      // 53
138     RES_TXTATR_FLYCNT,                              // 54
139     RES_TXTATR_FTN,                                 // 55
140     RES_TXTATR_DUMMY4,                              // 56
141     RES_TXTATR_DUMMY3,                              // 57
142     RES_TXTATR_DUMMY1,                              // 58
143     RES_TXTATR_DUMMY2,                              // 59
144 RES_TXTATR_NOEND_END,
145 RES_TXTATR_END = RES_TXTATR_NOEND_END
146 };
147 
148 enum RES_PARATR
149 {
150 RES_PARATR_BEGIN = RES_TXTATR_END,
151     RES_PARATR_LINESPACING = RES_PARATR_BEGIN,      // 60
152 	RES_PARATR_ADJUST,								// 61
153 	RES_PARATR_SPLIT,								// 62
154 	RES_PARATR_ORPHANS, 							// 63
155 	RES_PARATR_WIDOWS,								// 64
156 	RES_PARATR_TABSTOP, 							// 65
157 	RES_PARATR_HYPHENZONE,							// 66
158 	RES_PARATR_DROP,								// 67
159 	RES_PARATR_REGISTER,							// 68
160 	RES_PARATR_NUMRULE, 							// 69
161 	RES_PARATR_SCRIPTSPACE,							// 70
162 	RES_PARATR_HANGINGPUNCTUATION,					// 71
163 	RES_PARATR_FORBIDDEN_RULES,						// 72
164 	RES_PARATR_VERTALIGN,							// 73
165     RES_PARATR_SNAPTOGRID,                          // 74
166     RES_PARATR_CONNECT_BORDER,                      // 75
167     RES_PARATR_OUTLINELEVEL,                        // 76
168 RES_PARATR_END
169 };
170 
171 // --> OD 2008-02-25 #refactorlists#
172 // list attributes for paragraphs.
173 // intentionally these list attributes are not contained in paragraph styles
174 enum RES_PARATR_LIST
175 {
176 RES_PARATR_LIST_BEGIN = RES_PARATR_END,
177     RES_PARATR_LIST_ID = RES_PARATR_LIST_BEGIN,     // 77
178     RES_PARATR_LIST_LEVEL,                          // 78
179     RES_PARATR_LIST_ISRESTART,                      // 79
180     RES_PARATR_LIST_RESTARTVALUE,                   // 80
181     RES_PARATR_LIST_ISCOUNTED,                      // 81
182 RES_PARATR_LIST_END
183 };
184 // <--
185 
186 enum RES_FRMATR
187 {
188 RES_FRMATR_BEGIN = RES_PARATR_LIST_END,
189     RES_FILL_ORDER = RES_FRMATR_BEGIN,              // 82
190     RES_FRM_SIZE,                                   // 83
191     RES_PAPER_BIN,                                  // 84
192     RES_LR_SPACE,                                   // 85
193     RES_UL_SPACE,                                   // 86
194     RES_PAGEDESC,                                   // 87
195     RES_BREAK,                                      // 88
196     RES_CNTNT,                                      // 89
197     RES_HEADER,                                     // 90
198     RES_FOOTER,                                     // 91
199     RES_PRINT,                                      // 92
200     RES_OPAQUE,                                     // 93
201     RES_PROTECT,                                    // 94
202     RES_SURROUND,                                   // 95
203     RES_VERT_ORIENT,                                // 96
204     RES_HORI_ORIENT,                                // 97
205     RES_ANCHOR,                                     // 98
206     RES_BACKGROUND,                                 // 99
207     RES_BOX,                                        // 100
208     RES_SHADOW,                                     // 101
209     RES_FRMMACRO,                                   // 102
210     RES_COL,                                        // 103
211     RES_KEEP,                                       // 104
212     RES_URL,                                        // 105
213     RES_EDIT_IN_READONLY,                           // 106
214     RES_LAYOUT_SPLIT,                               // 107
215     RES_CHAIN,                                      // 108
216     RES_TEXTGRID,                                   // 109
217     RES_LINENUMBER  ,                               // 110
218     RES_FTN_AT_TXTEND,                              // 111
219     RES_END_AT_TXTEND,                              // 112
220     RES_COLUMNBALANCE,                              // 113
221     RES_FRAMEDIR,                                   // 114
222     RES_HEADER_FOOTER_EAT_SPACING,                  // 115
223     RES_ROW_SPLIT,                                  // 116
224     RES_FOLLOW_TEXT_FLOW,                           // 117
225     RES_COLLAPSING_BORDERS,                         // 118
226     RES_WRAP_INFLUENCE_ON_OBJPOS,                   // 119
227     RES_AUTO_STYLE,                                 // 120
228     RES_FRMATR_STYLE_NAME,                          // 121
229     RES_FRMATR_CONDITIONAL_STYLE_NAME,              // 122
230 RES_FRMATR_END
231 };
232 
233 enum RES_GRFATR
234 {
235 RES_GRFATR_BEGIN = RES_FRMATR_END,
236     RES_GRFATR_MIRRORGRF = RES_GRFATR_BEGIN,        // 123
237     RES_GRFATR_CROPGRF,                             // 124
238 
239     RES_GRFATR_ROTATION,                            // 125
240     RES_GRFATR_LUMINANCE,                           // 126
241     RES_GRFATR_CONTRAST,                            // 127
242     RES_GRFATR_CHANNELR,                            // 128
243     RES_GRFATR_CHANNELG,                            // 129
244     RES_GRFATR_CHANNELB,                            // 130
245     RES_GRFATR_GAMMA,                               // 131
246     RES_GRFATR_INVERT,                              // 132
247     RES_GRFATR_TRANSPARENCY,                        // 133
248     RES_GRFATR_DRAWMODE,                            // 134
249 
250     RES_GRFATR_DUMMY1,                              // 135
251     RES_GRFATR_DUMMY2,                              // 136
252     RES_GRFATR_DUMMY3,                              // 137
253     RES_GRFATR_DUMMY4,                              // 138
254     RES_GRFATR_DUMMY5,                              // 139
255 RES_GRFATR_END
256 };
257 
258 enum RES_BOXATR
259 {
260 RES_BOXATR_BEGIN = RES_GRFATR_END,
261     RES_BOXATR_FORMAT = RES_BOXATR_BEGIN,           // 140
262     RES_BOXATR_FORMULA,                             // 141
263     RES_BOXATR_VALUE,                               // 142
264 RES_BOXATR_END
265 };
266 
267 enum RES_UNKNOWNATR
268 {
269 RES_UNKNOWNATR_BEGIN = RES_BOXATR_END,
270     RES_UNKNOWNATR_CONTAINER = RES_UNKNOWNATR_BEGIN,// 143
271 RES_UNKNOWNATR_END
272 };
273 
274 
275 
276 // ID-s fuer die Formate
277 enum RES_FMT
278 {
279 RES_FMT_BEGIN = RES_UNKNOWNATR_END,
280 	RES_CHRFMT = RES_FMT_BEGIN,
281 	RES_FRMFMT,
282 	RES_FLYFRMFMT,
283 	RES_TXTFMTCOLL,
284 	RES_GRFFMTCOLL,
285 	RES_DRAWFRMFMT,
286 	RES_CONDTXTFMTCOLL,
287 RES_FMT_END
288 };
289 
290 // die ID's fuer Messages in den Formaten
291 enum RES_MSG
292 {
293 RES_MSG_BEGIN = RES_FMT_END,
294 	RES_OBJECTDYING = RES_MSG_BEGIN,
295 	RES_FMT_CHG,
296 	RES_ATTRSET_CHG,
297 	RES_FRM_SIZECHG,
298 	RES_TXTATR_FLDCHG,
299 	RES_TXTATR_EMPTYCHG,
300 	RES_INS_CHR,
301 	RES_INS_TXT,
302 	RES_DEL_CHR,
303 	RES_DEL_TXT,
304 	RES_UPDATE_ATTR,
305 	RES_PAGEDESC_FTNINFO,
306 	RES_REFMARKFLD_UPDATE,
307 	RES_DOCPOS_UPDATE,
308 	RES_TABLEFML_UPDATE,
309 	RES_UPDATEDDETBL,
310 	RES_TBLHEADLINECHG,
311 	RES_AUTOFMT_DOCNODE,
312 	RES_REPAINT,
313 	RES_DOC_DTOR,
314 	RES_SECTION_HIDDEN,
315 	RES_SECTION_NOT_HIDDEN,
316 	RES_GRAPHIC_ARRIVED,
317 	RES_GRAPHIC_PIECE_ARRIVED,
318 	RES_HIDDENPARA_PRINT,
319 	RES_CONDCOLL_CONDCHG,
320 	RES_VIRTPAGENUM_INFO,
321     // --> OD 2008-02-25 #refactorlists#
322 //    RES_GETNUMNODES,
323     // <--
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_FOOTNOTE_DELETED,
332 	RES_REFMARK_DELETED,
333 	RES_TOXMARK_DELETED,
334 	RES_GRAPHIC_SWAPIN,
335 	RES_FIELD_DELETED,
336 	RES_NAME_CHANGED,
337     RES_TITLE_CHANGED,
338     RES_DESCRIPTION_CHANGED,
339     RES_UNOCURSOR_LEAVES_SECTION,
340     RES_LINKED_GRAPHIC_STREAM_ARRIVED,
341 RES_MSG_END
342 };
343 
344 
345 // eine ID fuer den RTF-Reader. Die Stylesheets werden wie
346 // Attribute behandelt, d.H. es gibt ein StyleSheet Attribut. Um
347 // nicht mit anderen Which()-Werten zu kollidieren, ist der Wert
348 // hier mit aufgefuehrt. (Auch das Hilfesystem definiert neue
349 // Attribute !!)
350 enum RES_FLTRATTR
351 {
352 RES_FLTRATTR_BEGIN = RES_MSG_END,
353 	RES_FLTR_STYLESHEET = RES_FLTRATTR_BEGIN,
354 	RES_FLTR_BOOKMARK,
355 	RES_FLTR_ANCHOR,
356 	RES_FLTR_BORDER,
357 	RES_FLTR_NUMRULE,
358 	RES_FLTR_NUMRULE_NUM,
359 	RES_FLTR_SDR_ANCHOR,
360 	RES_FLTR_TOX,
361 	RES_FLTR_SECTION,
362 	RES_FLTR_REDLINE,
363 	RES_FLTR_SCRIPTTYPE,
364 RES_FLTRATTR_END
365 };
366 
367 #define RES_TBX_DUMMY RES_FLTRATTR_END + 1
368 
369 #define HINT_END RES_TBX_DUMMY
370 
371 // Fehler-Erkennung !!
372 #define INVALID_HINT HINT_END
373 #define RES_WHICHHINT_END HINT_END
374 
375 
376 inline bool isATR(const sal_uInt16 nWhich)
377 {
378     return (RES_CHRATR_BEGIN <= nWhich) && (RES_UNKNOWNATR_END > nWhich);
379 }
380 inline bool isCHRATR(const sal_uInt16 nWhich)
381 {
382     return (RES_CHRATR_BEGIN <= nWhich) && (RES_CHRATR_END > nWhich);
383 }
384 inline bool isTXTATR_WITHEND(const sal_uInt16 nWhich)
385 {
386     return (RES_TXTATR_WITHEND_BEGIN <= nWhich)
387         && (RES_TXTATR_WITHEND_END > nWhich);
388 }
389 inline bool isTXTATR_NOEND(const sal_uInt16 nWhich)
390 {
391     return (RES_TXTATR_NOEND_BEGIN <= nWhich)
392         && (RES_TXTATR_NOEND_END > nWhich);
393 }
394 inline bool isTXTATR(const sal_uInt16 nWhich)
395 {
396     return (RES_TXTATR_BEGIN <= nWhich) && (RES_TXTATR_END > nWhich);
397 }
398 inline bool isPARATR(const sal_uInt16 nWhich)
399 {
400     return (RES_PARATR_BEGIN <= nWhich) && (RES_PARATR_END > nWhich);
401 }
402 inline bool isPARATR_LIST(const sal_uInt16 nWhich)
403 {
404     return (RES_PARATR_LIST_BEGIN <= nWhich) && (RES_PARATR_LIST_END > nWhich); }
405 inline bool isFRMATR(const sal_uInt16 nWhich)
406 {
407     return (RES_FRMATR_BEGIN <= nWhich) && (RES_FRMATR_END > nWhich);
408 }
409 inline bool isGRFATR(const sal_uInt16 nWhich)
410 {
411     return (RES_GRFATR_BEGIN <= nWhich) && (RES_GRFATR_END > nWhich);
412 }
413 inline bool isBOXATR(const sal_uInt16 nWhich)
414 {
415     return (RES_BOXATR_BEGIN <= nWhich) && (RES_BOXATR_END > nWhich);
416 }
417 inline bool isUNKNOWNATR(const sal_uInt16 nWhich)
418 {
419     return (RES_UNKNOWNATR_BEGIN <= nWhich) && (RES_UNKNOWNATR_END > nWhich);
420 }
421 
422 
423 /*
424  * hole aus der statischen Default-Attribut Tabelle ueber den Which-Wert
425  * das entsprechende default Attribut.
426  * Ist keines vorhanden, returnt ein 0-Pointer !!!
427  *
428  * Diese Funktion ist im Init.CXX implementiert. Damit die Formate darauf
429  * zugreifen koennen, ist sie hier als extern deklariert.
430  * Im PRODUCT ist das Teil inline.
431  */
432 class SfxPoolItem;
433 struct SfxItemInfo;
434 typedef SfxPoolItem* SwDfltAttrTab[ POOLATTR_END - POOLATTR_BEGIN  ];
435 
436 extern SwDfltAttrTab __FAR_DATA aAttrTab;
437 extern SfxItemInfo	 __FAR_DATA aSlotTab[];
438 
439 SW_DLLPUBLIC const SfxPoolItem* GetDfltAttr( sal_uInt16 nWhich );
440 
441 SW_DLLPUBLIC sal_uInt16 GetWhichOfScript( sal_uInt16 nWhich, sal_uInt16 nScript );
442 
443 // return for the given TextAttribut without an end the correct character.
444 // This function returns
445 //		CH_TXTATR_BREAKWORD for Textattribut which breaks a word (default)
446 //		CH_TXTATR_INWORD	for Textattribut which dont breaks a word
447 class SwTxtAttr;
448 sal_Unicode GetCharOfTxtAttr( const SwTxtAttr& rAttr );
449 
450 // alle Sets stehen im init.cxx
451 
452 // AttrSet-Range fuer die 3 Break-Attribute
453 extern sal_uInt16 __FAR_DATA aBreakSetRange[];
454 // AttrSet-Range fuer die TxtFmtColl
455 extern sal_uInt16 __FAR_DATA aTxtFmtCollSetRange[];
456 // AttrSet-Range fuer die GrfFmtColl
457 extern sal_uInt16 __FAR_DATA aGrfFmtCollSetRange[];
458 // AttrSet-Range fuer die TextNode
459 SW_DLLPUBLIC extern sal_uInt16 __FAR_DATA aTxtNodeSetRange[];
460 // AttrSet-Range fuer die NoTxtNode
461 extern sal_uInt16 __FAR_DATA aNoTxtNodeSetRange[];
462 // AttrSet-Range fuer die SwTable
463 extern sal_uInt16 __FAR_DATA aTableSetRange[];
464 // AttrSet-Range fuer die SwTableLine
465 extern sal_uInt16 __FAR_DATA aTableLineSetRange[];
466 // AttrSet-Range fuer die SwTableBox
467 extern sal_uInt16 __FAR_DATA aTableBoxSetRange[];
468 // AttrSet-Range fuer die SwFrmFmt
469 SW_DLLPUBLIC extern sal_uInt16 __FAR_DATA aFrmFmtSetRange[];
470 // AttrSet-Range fuer die SwCharFmt
471 extern sal_uInt16 __FAR_DATA aCharFmtSetRange[];
472 // AttrSet-Range fuer die character autostyles
473 extern sal_uInt16 __FAR_DATA aCharAutoFmtSetRange[];
474 // AttrSet-Range fuer die SwPageDescFmt
475 extern sal_uInt16 __FAR_DATA aPgFrmFmtSetRange[];
476 
477 // check if ID is InRange of AttrSet-Ids
478 sal_Bool IsInRange( const sal_uInt16* pRange, const sal_uInt16 nId );
479 
480 #endif
481