xref: /aoo41x/main/sw/source/core/bastyp/init.cxx (revision cdf0e10c)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_sw.hxx"
30 #include <hintids.hxx>
31 #include <tools/globname.hxx>
32 #include <vcl/mapmod.hxx>
33 #include <editeng/xmlcnitm.hxx>
34 #include <svl/macitem.hxx>
35 #include <editeng/pbinitem.hxx>
36 #include <editeng/keepitem.hxx>
37 #include <editeng/nlbkitem.hxx>
38 #include <editeng/hyznitem.hxx>
39 #include <editeng/protitem.hxx>
40 #include <editeng/ulspitem.hxx>
41 #include <editeng/prszitem.hxx>
42 #include <editeng/opaqitem.hxx>
43 #include <editeng/shaditem.hxx>
44 #include <editeng/prntitem.hxx>
45 #include <editeng/brkitem.hxx>
46 #include <editeng/tstpitem.hxx>
47 #include <editeng/langitem.hxx>
48 #include <editeng/wrlmitem.hxx>
49 #include <editeng/kernitem.hxx>
50 #include <editeng/escpitem.hxx>
51 #include <editeng/cscoitem.hxx>
52 #include <editeng/lrspitem.hxx>
53 #include <editeng/orphitem.hxx>
54 #include <editeng/widwitem.hxx>
55 #include <editeng/nhypitem.hxx>
56 #include <editeng/spltitem.hxx>
57 #include <editeng/lspcitem.hxx>
58 #include <editeng/blnkitem.hxx>
59 #include <editeng/akrnitem.hxx>
60 #include <editeng/emphitem.hxx>
61 #include <editeng/twolinesitem.hxx>
62 #include <editeng/scriptspaceitem.hxx>
63 #include <editeng/hngpnctitem.hxx>
64 #include <editeng/cmapitem.hxx>
65 #include <editeng/charscaleitem.hxx>
66 #include <editeng/charrotateitem.hxx>
67 #include <editeng/charreliefitem.hxx>
68 #include <editeng/frmdiritem.hxx>
69 #ifndef _SVX_DIALOGS_HRC
70 #include <svx/dialogs.hrc>
71 #endif
72 #include <editeng/swafopt.hxx>
73 #include <editeng/svxacorr.hxx>
74 #include <unotools/charclass.hxx>
75 #include <editeng/unolingu.hxx>
76 #include <editeng/forbiddenruleitem.hxx>
77 #include <editeng/paravertalignitem.hxx>
78 #include <editeng/pgrditem.hxx>
79 #include <editeng/charhiddenitem.hxx>
80 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
81 #include <comphelper/processfactory.hxx>
82 #include <unotools/collatorwrapper.hxx>
83 #include <unotools/syslocale.hxx>
84 #include <com/sun/star/i18n/CollatorOptions.hpp>
85 #include <unotools/transliterationwrapper.hxx>
86 #include <editeng/acorrcfg.hxx>
87 #include <vcl/svapp.hxx>
88 #include <fmtanchr.hxx>
89 #include <fmtornt.hxx>
90 #include <fmtsrnd.hxx>
91 #include <fmtfsize.hxx>
92 #include <fmtfld.hxx>
93 #include <fmtrfmrk.hxx>
94 #include <fmtlsplt.hxx>
95 #include <fmtrowsplt.hxx>
96 #include <fmteiro.hxx>
97 #include <fmtclds.hxx>
98 #include <fmturl.hxx>
99 #include <fmtcntnt.hxx>
100 #include <fmthdft.hxx>
101 #include <fmtpdsc.hxx>
102 #include <fmtftn.hxx>
103 #include <fmtfordr.hxx>
104 #include <fmtflcnt.hxx>
105 #include <fchrfmt.hxx>
106 #include <fmtautofmt.hxx>
107 #include <fmtinfmt.hxx>
108 #include <fmtcnct.hxx>
109 #include <fmtline.hxx>
110 #include <fmtftntx.hxx>
111 #include <fmtruby.hxx>
112 #include <fmtautofmt.hxx>
113 #include <tgrditem.hxx>
114 #include <hfspacingitem.hxx>
115 #include <editsh.hxx>
116 #include <pam.hxx>
117 #include <init.hxx>
118 #include <paratr.hxx>
119 #include <grfatr.hxx>
120 #include <tox.hxx>
121 #include <cellatr.hxx>
122 #include <tblafmt.hxx>
123 #include <viscrs.hxx>
124 #include <fntcache.hxx>
125 #include <doc.hxx>
126 #include <acmplwrd.hxx>
127 #include <fmtclbl.hxx>
128 #include <cmdid.h>
129 #include <breakit.hxx>
130 #include <checkit.hxx>
131 #include <swcalwrp.hxx>
132 #include <SwStyleNameMapper.hxx>
133 
134 // OD 09.10.2003 #i18732#
135 #include <fmtfollowtextflow.hxx>
136 // OD 2004-05-05 #i28701#
137 #include <fmtwrapinfluenceonobjpos.hxx>
138 
139 #include <fmtmeta.hxx>
140 
141 
142 using namespace ::com::sun::star;
143 
144 extern void _FrmFinit();
145 extern void ClearFEShellTabCols();
146 
147 /*************************************************************************
148 |*	einige Bereiche fuer die Set in Collections / Nodes
149 |*************************************************************************/
150 	// AttrSet-Range fuer die 2 Break-Attribute
151 sal_uInt16 __FAR_DATA aBreakSetRange[] = {
152 	RES_PAGEDESC, RES_BREAK,
153 	0 };
154 
155 	// AttrSet-Range fuer die TxtFmtColl
156     // OD 2008-02-27 #refactorlists# :
157     // list attributes ( RES_PARATR_LIST_BEGIN - RES_PARATR_LIST_END ) are not
158     // included in the paragraph style's itemset.
159 sal_uInt16 __FAR_DATA aTxtFmtCollSetRange[] = {
160 	RES_FRMATR_BEGIN, RES_FRMATR_END-1,
161 	RES_CHRATR_BEGIN, RES_CHRATR_END-1,
162 	RES_PARATR_BEGIN, RES_PARATR_END-1,
163 	RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END-1,
164 	0
165 };
166 
167 	// AttrSet-Range fuer die GrfFmtColl
168 sal_uInt16 __FAR_DATA aGrfFmtCollSetRange[] = {
169 	RES_FRMATR_BEGIN, RES_FRMATR_END-1,
170 	RES_GRFATR_BEGIN, RES_GRFATR_END-1,
171 	RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END-1,
172 	0
173 };
174 
175 	// AttrSet-Range fuer die TextNode
176 sal_uInt16 __FAR_DATA aTxtNodeSetRange[] = {
177 	RES_FRMATR_BEGIN, RES_FRMATR_END-1,
178 	RES_CHRATR_BEGIN, RES_CHRATR_END-1,
179 	RES_PARATR_BEGIN, RES_PARATR_END-1,
180     // --> OD 2008-02-25 #refactorlists#
181     RES_PARATR_LIST_BEGIN, RES_PARATR_LIST_END-1,
182     // <--
183 	RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END-1,
184 	0
185 };
186 
187 	// AttrSet-Range fuer die NoTxtNode
188 sal_uInt16 __FAR_DATA aNoTxtNodeSetRange[] = {
189 	RES_FRMATR_BEGIN, RES_FRMATR_END-1,
190 	RES_GRFATR_BEGIN, RES_GRFATR_END-1,
191 	RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END-1,
192 	0
193 };
194 
195 sal_uInt16 __FAR_DATA aTableSetRange[] = {
196 	RES_FILL_ORDER, 	RES_FRM_SIZE,
197 	RES_LR_SPACE, 		RES_BREAK,
198 	RES_BACKGROUND, 	RES_SHADOW,
199 	RES_HORI_ORIENT,	RES_HORI_ORIENT,
200 	RES_KEEP,			RES_KEEP,
201 	RES_LAYOUT_SPLIT,	RES_LAYOUT_SPLIT,
202     RES_FRAMEDIR,       RES_FRAMEDIR,
203     // --> collapsing borders FME 2005-05-27 #i29550#
204     RES_COLLAPSING_BORDERS, RES_COLLAPSING_BORDERS,
205     // <-- collapsing
206 	RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END-1,
207 	0
208 };
209 
210 sal_uInt16 __FAR_DATA aTableLineSetRange[] = {
211 	RES_FILL_ORDER, 	RES_FRM_SIZE,
212 	RES_LR_SPACE, 		RES_UL_SPACE,
213 	RES_BACKGROUND, 	RES_SHADOW,
214     RES_ROW_SPLIT,      RES_ROW_SPLIT,
215     RES_PROTECT,        RES_PROTECT,
216 	RES_VERT_ORIENT,	RES_VERT_ORIENT,
217     RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END-1,
218 	0
219 };
220 
221 sal_uInt16 __FAR_DATA aTableBoxSetRange[] = {
222 	RES_FILL_ORDER, 	RES_FRM_SIZE,
223 	RES_LR_SPACE, 		RES_UL_SPACE,
224 	RES_BACKGROUND, 	RES_SHADOW,
225 	RES_PROTECT, 		RES_PROTECT,
226 	RES_VERT_ORIENT,	RES_VERT_ORIENT,
227     RES_FRAMEDIR,       RES_FRAMEDIR,
228     RES_BOXATR_BEGIN,   RES_BOXATR_END-1,
229 	RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END-1,
230 	0
231 };
232 
233 // AttrSet-Range fuer die SwFrmFmt
234 sal_uInt16 __FAR_DATA aFrmFmtSetRange[] = {
235 	RES_FRMATR_BEGIN, RES_FRMATR_END-1,
236 	RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END-1,
237 	0
238 };
239 
240 // AttrSet-Range fuer die SwCharFmt
241 sal_uInt16 __FAR_DATA aCharFmtSetRange[] = {
242 	RES_CHRATR_BEGIN, RES_CHRATR_END-1,
243 	RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END-1,
244 	0
245 };
246 
247 // AttrSet-Range fuer die character autostyles
248 sal_uInt16 __FAR_DATA aCharAutoFmtSetRange[] = {
249     RES_CHRATR_BEGIN, RES_CHRATR_END-1,
250     RES_TXTATR_UNKNOWN_CONTAINER, RES_TXTATR_UNKNOWN_CONTAINER,
251     RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END-1,
252     0
253 };
254 
255 // AttrSet-Range fuer die SwPageDescFmt
256 sal_uInt16 __FAR_DATA aPgFrmFmtSetRange[] = {
257 	RES_FRMATR_BEGIN, RES_FRMATR_END-1,
258 	RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END-1,
259 	0
260 };
261 
262 /******************************************************************************
263  * lege eine Tabelle fuer einen Zugriff auf die
264  * Default-Format-Attribute an
265  ******************************************************************************/
266 SwDfltAttrTab __FAR_DATA aAttrTab;
267 
268 SfxItemInfo __FAR_DATA aSlotTab[] =
269 {
270 	{ SID_ATTR_CHAR_CASEMAP, SFX_ITEM_POOLABLE },   	// RES_CHRATR_CASEMAP
271 	{ SID_ATTR_CHAR_CHARSETCOLOR, SFX_ITEM_POOLABLE },	// RES_CHRATR_CHARSETCOLOR
272 	{ SID_ATTR_CHAR_COLOR, SFX_ITEM_POOLABLE },     	// RES_CHRATR_COLOR
273 	{ SID_ATTR_CHAR_CONTOUR, SFX_ITEM_POOLABLE },    	// RES_CHRATR_CONTOUR
274 	{ SID_ATTR_CHAR_STRIKEOUT, SFX_ITEM_POOLABLE },  	// RES_CHRATR_CROSSEDOUT
275 	{ SID_ATTR_CHAR_ESCAPEMENT, SFX_ITEM_POOLABLE }, 	// RES_CHRATR_ESCAPEMENT
276 	{ SID_ATTR_CHAR_FONT, SFX_ITEM_POOLABLE },     		// RES_CHRATR_FONT
277 	{ SID_ATTR_CHAR_FONTHEIGHT, SFX_ITEM_POOLABLE }, 	// RES_CHRATR_FONTSIZE
278 	{ SID_ATTR_CHAR_KERNING, SFX_ITEM_POOLABLE },    	// RES_CHRATR_KERNING
279 	{ SID_ATTR_CHAR_LANGUAGE, SFX_ITEM_POOLABLE },   	// RES_CHRATR_LANGUAGE
280 	{ SID_ATTR_CHAR_POSTURE, SFX_ITEM_POOLABLE },    	// RES_CHRATR_POSTURE
281 	{ SID_ATTR_CHAR_PROPSIZE, SFX_ITEM_POOLABLE },   	// RES_CHRATR_PROPORTIONALFONTSIZE
282 	{ SID_ATTR_CHAR_SHADOWED, SFX_ITEM_POOLABLE },   	// RES_CHRATR_SHADOWED
283 	{ SID_ATTR_CHAR_UNDERLINE, SFX_ITEM_POOLABLE },  	// RES_CHRATR_UNDERLINE
284 	{ SID_ATTR_CHAR_WEIGHT, SFX_ITEM_POOLABLE },     	// RES_CHRATR_WEIGHT
285 	{ SID_ATTR_CHAR_WORDLINEMODE, SFX_ITEM_POOLABLE },	// RES_CHRATR_WORDLINEMODE
286 	{ SID_ATTR_CHAR_AUTOKERN, SFX_ITEM_POOLABLE },	   	// RES_CHRATR_AUTOKERN
287 	{ SID_ATTR_FLASH, SFX_ITEM_POOLABLE },				// RES_CHRATR_BLINK
288 	{ 0, SFX_ITEM_POOLABLE },							// RES_CHRATR_NOLINEBREAK
289 	{ 0, SFX_ITEM_POOLABLE },							// RES_CHRATR_NOHYPHEN
290 	{ SID_ATTR_BRUSH_CHAR, SFX_ITEM_POOLABLE },			// RES_CHRATR_BACKGROUND
291 	{ SID_ATTR_CHAR_CJK_FONT, SFX_ITEM_POOLABLE },		// RES_CHRATR_CJK_FONT
292 	{ SID_ATTR_CHAR_CJK_FONTHEIGHT, SFX_ITEM_POOLABLE },// RES_CHRATR_CJK_FONTSIZE
293 	{ SID_ATTR_CHAR_CJK_LANGUAGE, SFX_ITEM_POOLABLE },	// RES_CHRATR_CJK_LANGUAGE
294 	{ SID_ATTR_CHAR_CJK_POSTURE, SFX_ITEM_POOLABLE },	// RES_CHRATR_CJK_POSTURE
295 	{ SID_ATTR_CHAR_CJK_WEIGHT, SFX_ITEM_POOLABLE },	// RES_CHRATR_CJK_WEIGHT
296 	{ SID_ATTR_CHAR_CTL_FONT, SFX_ITEM_POOLABLE },		// RES_CHRATR_CTL_FONT
297 	{ SID_ATTR_CHAR_CTL_FONTHEIGHT, SFX_ITEM_POOLABLE },// RES_CHRATR_CTL_FONTSIZE
298 	{ SID_ATTR_CHAR_CTL_LANGUAGE, SFX_ITEM_POOLABLE },	// RES_CHRATR_CTL_LANGUAGE
299 	{ SID_ATTR_CHAR_CTL_POSTURE, SFX_ITEM_POOLABLE },	// RES_CHRATR_CTL_POSTURE
300 	{ SID_ATTR_CHAR_CTL_WEIGHT, SFX_ITEM_POOLABLE },	// RES_CHRATR_CTL_WEIGHT
301 	{ SID_ATTR_CHAR_ROTATED, SFX_ITEM_POOLABLE },		// RES_CHRATR_ROTATE
302 	{ SID_ATTR_CHAR_EMPHASISMARK, SFX_ITEM_POOLABLE },	// RES_CHRATR_EMPHASIS_MARK
303 	{ SID_ATTR_CHAR_TWO_LINES, SFX_ITEM_POOLABLE },		// RES_CHRATR_TWO_LINES
304 	{ SID_ATTR_CHAR_SCALEWIDTH, SFX_ITEM_POOLABLE },	// RES_CHRATR_SCALEW
305 	{ SID_ATTR_CHAR_RELIEF, SFX_ITEM_POOLABLE },		// RES_CHRATR_RELIEF
306     { SID_ATTR_CHAR_HIDDEN, SFX_ITEM_POOLABLE },        // RES_CHRATR_HIDDEN
307 	{ SID_ATTR_CHAR_OVERLINE, SFX_ITEM_POOLABLE },  	// RES_CHRATR_OVERLINE
308 	{ 0, SFX_ITEM_POOLABLE },							// RES_CHRATR_DUMMY1
309 	{ 0, SFX_ITEM_POOLABLE },							// RES_CHRATR_DUMMY2
310 
311     { 0, 0 },                                           // RES_TXTATR_REFMARK
312     { 0, 0 },                                           // RES_TXTATR_TOXMARK
313     { 0, 0 },                                           // RES_TXTATR_META
314     { 0, 0 },                                           // RES_TXTATR_METAFIELD
315     { 0, SFX_ITEM_POOLABLE },                           // RES_TXTATR_AUTOFMT
316     { FN_TXTATR_INET, 0 },                              // RES_TXTATR_INETFMT
317     { 0, 0 },                                           // RES_TXTATR_CHARFMT
318     { SID_ATTR_CHAR_CJK_RUBY, 0 },                      // RES_TXTATR_CJK_RUBY
319     { 0, SFX_ITEM_POOLABLE },                           // RES_TXTATR_UNKNOWN_CONTAINER
320     { 0, SFX_ITEM_POOLABLE },                           // RES_TXTATR_DUMMY5
321 
322 	{ 0, 0 },											// RES_TXTATR_FIELD
323 	{ 0, 0 },											// RES_TXTATR_FLYCNT
324 	{ 0, 0 },											// RES_TXTATR_FTN
325     { 0, SFX_ITEM_POOLABLE },                           // RES_TXTATR_DUMMY4
326     { 0, SFX_ITEM_POOLABLE },                           // RES_TXTATR_DUMMY3
327 	{ 0, SFX_ITEM_POOLABLE },							// RES_TXTATR_DUMMY1
328 	{ 0, SFX_ITEM_POOLABLE },							// RES_TXTATR_DUMMY2
329 
330 	{ SID_ATTR_PARA_LINESPACE, SFX_ITEM_POOLABLE }, 	// RES_PARATR_LINESPACING
331 	{ SID_ATTR_PARA_ADJUST, SFX_ITEM_POOLABLE }, 		// RES_PARATR_ADJUST
332 	{ SID_ATTR_PARA_SPLIT, SFX_ITEM_POOLABLE }, 		// RES_PARATR_SPLIT
333 	{ SID_ATTR_PARA_ORPHANS, SFX_ITEM_POOLABLE },  		// RES_PARATR_ORPHANS
334 	{ SID_ATTR_PARA_WIDOWS, SFX_ITEM_POOLABLE }, 		// RES_PARATR_WIDOWS
335 	{ SID_ATTR_TABSTOP, SFX_ITEM_POOLABLE }, 			// RES_PARATR_TABSTOP
336 	{ SID_ATTR_PARA_HYPHENZONE, SFX_ITEM_POOLABLE }, 	// RES_PARATR_HYPHENZONE
337 	{ FN_FORMAT_DROPCAPS, 0 },							// RES_PARATR_DROP
338 	{ SID_ATTR_PARA_REGISTER, SFX_ITEM_POOLABLE },		// RES_PARATR_REGISTER
339     // --> OD 2008-03-04 #refactorlists#
340     // RES_PARATR_NUMRULE is now poolable
341     { SID_ATTR_PARA_NUMRULE, SFX_ITEM_POOLABLE },       // RES_PARATR_NUMRULE
342     // <--
343 	{ SID_ATTR_PARA_SCRIPTSPACE, SFX_ITEM_POOLABLE },	// RES_PARATR_SCRIPTSPACE
344 	{ SID_ATTR_PARA_HANGPUNCTUATION, SFX_ITEM_POOLABLE },// RES_PARATR_HANGINGPUNCTUATION
345 
346 	{ SID_ATTR_PARA_FORBIDDEN_RULES, SFX_ITEM_POOLABLE },// RES_PARATR_FORBIDDEN_RULES
347     { SID_PARA_VERTALIGN, SFX_ITEM_POOLABLE },          // RES_PARATR_VERTALIGN
348     { SID_ATTR_PARA_SNAPTOGRID, SFX_ITEM_POOLABLE },    // RES_PARATR_SNAPTOGRID
349     { SID_ATTR_BORDER_CONNECT, SFX_ITEM_POOLABLE },     // RES_PARATR_CONNECT_BORDER
350 
351 	{ SID_ATTR_PARA_OUTLINE_LEVEL, SFX_ITEM_POOLABLE }, // RES_PARATR_OUTLINELEVEL //#outline level,zhaojianwei
352 
353 	// --> OD 2008-02-19 #refactorlists#
354     { 0, SFX_ITEM_POOLABLE },                           // RES_PARATR_LIST_ID
355     { 0, SFX_ITEM_POOLABLE },                           // RES_PARATR_LIST_LEVEL
356     { 0, SFX_ITEM_POOLABLE },                           // RES_PARATR_LIST_ISRESTART
357     { 0, SFX_ITEM_POOLABLE },                           // RES_PARATR_LIST_RESTARTVALUE
358     { 0, SFX_ITEM_POOLABLE },                           // RES_PARATR_LIST_ISCOUNTED
359     // <--
360 
361     { 0, SFX_ITEM_POOLABLE },							// RES_FILL_ORDER
362 	{ 0, SFX_ITEM_POOLABLE }, 							// RES_FRM_SIZE
363 	{ SID_ATTR_PAGE_PAPERBIN, SFX_ITEM_POOLABLE }, 		// RES_PAPER_BIN
364 	{ SID_ATTR_LRSPACE, SFX_ITEM_POOLABLE }, 			// RES_LR_SPACE
365 	{ SID_ATTR_ULSPACE, SFX_ITEM_POOLABLE }, 			// RES_UL_SPACE
366 	{ 0, 0 },											// RES_PAGEDESC
367 	{ SID_ATTR_PARA_PAGEBREAK, SFX_ITEM_POOLABLE }, 	// RES_BREAK
368 	{ 0, 0 },											// RES_CNTNT
369 	{ 0, SFX_ITEM_POOLABLE },							// RES_HEADER
370 	{ 0, SFX_ITEM_POOLABLE },							// RES_FOOTER
371 	{ 0, SFX_ITEM_POOLABLE },							// RES_PRINT
372 	{ FN_OPAQUE, SFX_ITEM_POOLABLE },					// RES_OPAQUE
373 	{ FN_SET_PROTECT, SFX_ITEM_POOLABLE },				// RES_PROTECT
374 	{ FN_SURROUND, SFX_ITEM_POOLABLE },					// RES_SURROUND
375 	{ FN_VERT_ORIENT, SFX_ITEM_POOLABLE },				// RES_VERT_ORIENT
376 	{ FN_HORI_ORIENT, SFX_ITEM_POOLABLE },				// RES_HORI_ORIENT
377 	{ 0, 0 },											// RES_ANCHOR
378 	{ SID_ATTR_BRUSH, SFX_ITEM_POOLABLE },		 		// RES_BACKGROUND
379 	{ SID_ATTR_BORDER_OUTER, SFX_ITEM_POOLABLE }, 		// RES_BOX
380 	{ SID_ATTR_BORDER_SHADOW, SFX_ITEM_POOLABLE }, 		// RES_SHADOW
381 	{ SID_ATTR_MACROITEM, SFX_ITEM_POOLABLE },			// RES_FRMMACRO
382 	{ FN_ATTR_COLUMNS, SFX_ITEM_POOLABLE },				// RES_COL
383 	{ SID_ATTR_PARA_KEEP, SFX_ITEM_POOLABLE },			// RES_KEEP
384 	{ 0, SFX_ITEM_POOLABLE },							// RES_URL
385 	{ 0, SFX_ITEM_POOLABLE },							// RES_EDIT_IN_READONLY
386 
387 	{ 0, SFX_ITEM_POOLABLE },							// RES_LAYOUT_SPLIT
388 	{ 0, 0 },											// RES_CHAIN
389     { 0, SFX_ITEM_POOLABLE },                           // RES_TEXTGRID
390     { FN_FORMAT_LINENUMBER, SFX_ITEM_POOLABLE },        // RES_LINENUMBER
391 	{ 0, SFX_ITEM_POOLABLE },							// RES_FTN_AT_TXTEND
392 	{ 0, SFX_ITEM_POOLABLE },							// RES_END_AT_TXTEND
393 	{ 0, SFX_ITEM_POOLABLE },							// RES_COLUMNBALANCE
394 
395 	{ SID_ATTR_FRAMEDIRECTION, SFX_ITEM_POOLABLE },		// RES_FRAMEDIR
396 
397     { SID_ATTR_HDFT_DYNAMIC_SPACING, SFX_ITEM_POOLABLE }, // RES_HEADER_FOOTER_EAT_SPACING
398     { FN_TABLE_ROW_SPLIT, SFX_ITEM_POOLABLE },            // RES_ROW_SPLIT
399     // DVO, OD 18.09.2003 #i18732# - use slot-id define in svx
400     { SID_SW_FOLLOW_TEXT_FLOW, SFX_ITEM_POOLABLE },         // RES_FOLLOW_TEXT_FLOW
401     // --> collapsing borders FME 2005-05-27 #i29550#
402     { SID_SW_COLLAPSING_BORDERS, SFX_ITEM_POOLABLE },       // RES_COLLAPSING_BORDERS
403     // <-- collapsing
404     // OD 2004-05-04 #i28701#
405     { SID_SW_WRAP_INFLUENCE_ON_OBJPOS, SFX_ITEM_POOLABLE }, // RES_WRAP_INFLUENCE_ON_OBJPOS
406     { 0, 0 },                                           // RES_AUTO_STYLE
407     { 0, SFX_ITEM_POOLABLE },                           // RES_FRMATR_STYLE_NAME
408     { 0, SFX_ITEM_POOLABLE },                           // RES_FRMATR_CONDITIONAL_STYLE_NAME
409 
410 	{ 0, SFX_ITEM_POOLABLE },							// RES_GRFATR_MIRRORGRF
411 	{ SID_ATTR_GRAF_CROP, SFX_ITEM_POOLABLE }, 			// RES_GRFATR_CROPGRF
412 	{ 0, SFX_ITEM_POOLABLE },							// RES_GRFATR_ROTATION,
413 	{ 0, SFX_ITEM_POOLABLE },							// RES_GRFATR_LUMINANCE,
414 	{ 0, SFX_ITEM_POOLABLE },							// RES_GRFATR_CONTRAST,
415 	{ 0, SFX_ITEM_POOLABLE },							// RES_GRFATR_CHANNELR,
416 	{ 0, SFX_ITEM_POOLABLE },							// RES_GRFATR_CHANNELG,
417 	{ 0, SFX_ITEM_POOLABLE },							// RES_GRFATR_CHANNELB,
418 	{ 0, SFX_ITEM_POOLABLE },							// RES_GRFATR_GAMMA,
419 	{ 0, SFX_ITEM_POOLABLE },							// RES_GRFATR_INVERT,
420 	{ 0, SFX_ITEM_POOLABLE },							// RES_GRFATR_TRANSPARENCY,
421 	{ 0, SFX_ITEM_POOLABLE },							// RES_GRFATR_DUMMY1,
422 	{ 0, SFX_ITEM_POOLABLE },							// RES_GRFATR_DUMMY2,
423 	{ 0, SFX_ITEM_POOLABLE },							// RES_GRFATR_DUMMY3,
424 	{ 0, SFX_ITEM_POOLABLE },							// RES_GRFATR_DUMMY4,
425 	{ 0, SFX_ITEM_POOLABLE },							// RES_GRFATR_DUMMY5,
426 	{ 0, SFX_ITEM_POOLABLE },							// RES_GRFATR_DUMMY6,
427 
428 	{ 0, SFX_ITEM_POOLABLE },							// RES_BOXATR_FORMAT
429 	{ 0, 0 },											// RES_BOXATR_FORMULA,
430 	{ 0, SFX_ITEM_POOLABLE },							// RES_BOXATR_VALUE
431 
432 	{ 0, SFX_ITEM_POOLABLE }							// RES_UNKNOWNATR_CONTAINER
433 };
434 
435 
436 sal_uInt16* SwAttrPool::pVersionMap1 = 0;
437 sal_uInt16* SwAttrPool::pVersionMap2 = 0;
438 sal_uInt16* SwAttrPool::pVersionMap3 = 0;
439 sal_uInt16* SwAttrPool::pVersionMap4 = 0;
440 // OD 2004-01-21 #i18732#
441 sal_uInt16* SwAttrPool::pVersionMap5 = 0;
442 sal_uInt16* SwAttrPool::pVersionMap6 = 0;
443 SwIndexReg* SwIndexReg::pEmptyIndexArray = 0;
444 
445 const sal_Char* __FAR_DATA pMarkToTable		= "table";
446 const sal_Char* __FAR_DATA pMarkToFrame		= "frame";
447 const sal_Char* __FAR_DATA pMarkToRegion	= "region";
448 const sal_Char* __FAR_DATA pMarkToText		= "text";
449 const sal_Char* __FAR_DATA pMarkToOutline	= "outline";
450 const sal_Char* __FAR_DATA pMarkToGraphic	= "graphic";
451 const sal_Char* __FAR_DATA pMarkToOLE		= "ole";
452 
453 SvPtrarr *pGlobalOLEExcludeList = 0;
454 
455 SwAutoCompleteWord* SwDoc::pACmpltWords = 0;
456 
457 SwCheckIt* pCheckIt = 0;
458 CharClass* pAppCharClass = 0;
459 
460 CollatorWrapper* pCollator = 0, *pCaseCollator = 0;
461 ::utl::TransliterationWrapper* pTransWrp = 0;
462 
463 /******************************************************************************
464  *	void _InitCore()
465  ******************************************************************************/
466 salhelper::SingletonRef<SwCalendarWrapper>* s_getCalendarWrapper()
467 {
468     static salhelper::SingletonRef<SwCalendarWrapper> aCalendarWrapper;
469     return &aCalendarWrapper;
470 }
471 void _InitCore()
472 {
473 	SfxPoolItem* pItem;
474 
475 	// erstmal alle Attribut-Pointer auf 0 setzen
476 	memset( aAttrTab, 0, (POOLATTR_END - POOLATTR_BEGIN) *
477 							sizeof( SfxPoolItem* ) );
478 
479     aAttrTab[ RES_CHRATR_CASEMAP- POOLATTR_BEGIN ] =        new SvxCaseMapItem( SVX_CASEMAP_NOT_MAPPED, RES_CHRATR_CASEMAP);
480     aAttrTab[ RES_CHRATR_CHARSETCOLOR- POOLATTR_BEGIN ] =   new SvxCharSetColorItem(RES_CHRATR_CHARSETCOLOR);
481     aAttrTab[ RES_CHRATR_COLOR- POOLATTR_BEGIN ] =          new SvxColorItem(RES_CHRATR_COLOR);
482     aAttrTab[ RES_CHRATR_CONTOUR- POOLATTR_BEGIN ] =        new SvxContourItem( sal_False, RES_CHRATR_CONTOUR );
483     aAttrTab[ RES_CHRATR_CROSSEDOUT- POOLATTR_BEGIN ] =     new SvxCrossedOutItem( STRIKEOUT_NONE, RES_CHRATR_CROSSEDOUT );
484     aAttrTab[ RES_CHRATR_ESCAPEMENT- POOLATTR_BEGIN ] =     new SvxEscapementItem( RES_CHRATR_ESCAPEMENT );
485     aAttrTab[ RES_CHRATR_FONT- POOLATTR_BEGIN ] =           new SvxFontItem( RES_CHRATR_FONT );
486 
487     aAttrTab[ RES_CHRATR_FONTSIZE- POOLATTR_BEGIN ] =       new SvxFontHeightItem( 240, 100, RES_CHRATR_FONTSIZE );
488     aAttrTab[ RES_CHRATR_KERNING- POOLATTR_BEGIN ] =        new SvxKerningItem( 0, RES_CHRATR_KERNING );
489     aAttrTab[ RES_CHRATR_LANGUAGE- POOLATTR_BEGIN ] =       new SvxLanguageItem(LANGUAGE_DONTKNOW, RES_CHRATR_LANGUAGE );
490     aAttrTab[ RES_CHRATR_POSTURE- POOLATTR_BEGIN ] =        new SvxPostureItem( ITALIC_NONE, RES_CHRATR_POSTURE );
491     aAttrTab[ RES_CHRATR_PROPORTIONALFONTSIZE- POOLATTR_BEGIN ] = new SvxPropSizeItem( 100, RES_CHRATR_PROPORTIONALFONTSIZE );
492     aAttrTab[ RES_CHRATR_SHADOWED- POOLATTR_BEGIN ] =       new SvxShadowedItem( sal_False, RES_CHRATR_SHADOWED );
493     aAttrTab[ RES_CHRATR_UNDERLINE- POOLATTR_BEGIN ] =      new SvxUnderlineItem( UNDERLINE_NONE, RES_CHRATR_UNDERLINE );
494     aAttrTab[ RES_CHRATR_WEIGHT- POOLATTR_BEGIN ] =         new SvxWeightItem( WEIGHT_NORMAL, RES_CHRATR_WEIGHT );
495     aAttrTab[ RES_CHRATR_WORDLINEMODE- POOLATTR_BEGIN ] =   new SvxWordLineModeItem( sal_False, RES_CHRATR_WORDLINEMODE );
496     aAttrTab[ RES_CHRATR_AUTOKERN- POOLATTR_BEGIN ] =       new SvxAutoKernItem( sal_False, RES_CHRATR_AUTOKERN );
497     aAttrTab[ RES_CHRATR_BLINK - POOLATTR_BEGIN ] =         new SvxBlinkItem( sal_False, RES_CHRATR_BLINK );
498     aAttrTab[ RES_CHRATR_NOHYPHEN - POOLATTR_BEGIN ] =      new SvxNoHyphenItem( sal_True, RES_CHRATR_NOHYPHEN );
499     aAttrTab[ RES_CHRATR_NOLINEBREAK- POOLATTR_BEGIN ] =    new SvxNoLinebreakItem( sal_True, RES_CHRATR_NOLINEBREAK );
500     aAttrTab[ RES_CHRATR_BACKGROUND - POOLATTR_BEGIN ] =    new SvxBrushItem( RES_CHRATR_BACKGROUND );
501 
502 	// CJK-Attributes
503     aAttrTab[ RES_CHRATR_CJK_FONT - POOLATTR_BEGIN ] =      new SvxFontItem( RES_CHRATR_CJK_FONT );
504     aAttrTab[ RES_CHRATR_CJK_FONTSIZE - POOLATTR_BEGIN ] =  new SvxFontHeightItem( 240, 100, RES_CHRATR_CJK_FONTSIZE );
505     aAttrTab[ RES_CHRATR_CJK_LANGUAGE - POOLATTR_BEGIN ] =  new SvxLanguageItem(LANGUAGE_DONTKNOW, RES_CHRATR_CJK_LANGUAGE);
506     aAttrTab[ RES_CHRATR_CJK_POSTURE - POOLATTR_BEGIN ] =   new SvxPostureItem(ITALIC_NONE, RES_CHRATR_CJK_POSTURE );
507     aAttrTab[ RES_CHRATR_CJK_WEIGHT - POOLATTR_BEGIN ] =    new SvxWeightItem( WEIGHT_NORMAL, RES_CHRATR_CJK_WEIGHT );
508 
509 	// CTL-Attributes
510     aAttrTab[ RES_CHRATR_CTL_FONT - POOLATTR_BEGIN ] =      new SvxFontItem( RES_CHRATR_CTL_FONT );
511     aAttrTab[ RES_CHRATR_CTL_FONTSIZE - POOLATTR_BEGIN ] =  new SvxFontHeightItem(  240, 100,  RES_CHRATR_CTL_FONTSIZE );
512     aAttrTab[ RES_CHRATR_CTL_LANGUAGE - POOLATTR_BEGIN ] =  new SvxLanguageItem(LANGUAGE_DONTKNOW, RES_CHRATR_CTL_LANGUAGE);
513     aAttrTab[ RES_CHRATR_CTL_POSTURE - POOLATTR_BEGIN ] =   new SvxPostureItem(ITALIC_NONE, RES_CHRATR_CTL_POSTURE );
514     aAttrTab[ RES_CHRATR_CTL_WEIGHT - POOLATTR_BEGIN ] =    new SvxWeightItem( WEIGHT_NORMAL, RES_CHRATR_CTL_WEIGHT );
515 
516     aAttrTab[ RES_CHRATR_ROTATE - POOLATTR_BEGIN ] =        new SvxCharRotateItem( 0, sal_False, RES_CHRATR_ROTATE );
517     aAttrTab[ RES_CHRATR_EMPHASIS_MARK - POOLATTR_BEGIN ] = new SvxEmphasisMarkItem( EMPHASISMARK_NONE, RES_CHRATR_EMPHASIS_MARK );
518     aAttrTab[ RES_CHRATR_TWO_LINES - POOLATTR_BEGIN ] = new SvxTwoLinesItem( sal_False, 0, 0, RES_CHRATR_TWO_LINES );
519     aAttrTab[ RES_CHRATR_SCALEW - POOLATTR_BEGIN ] = new SvxCharScaleWidthItem( 100, RES_CHRATR_SCALEW );
520     aAttrTab[ RES_CHRATR_RELIEF - POOLATTR_BEGIN ] = new SvxCharReliefItem( RELIEF_NONE, RES_CHRATR_RELIEF );
521     aAttrTab[ RES_CHRATR_HIDDEN - POOLATTR_BEGIN ] = new SvxCharHiddenItem( sal_False, RES_CHRATR_HIDDEN );
522 	aAttrTab[ RES_CHRATR_OVERLINE- POOLATTR_BEGIN ] = new SvxOverlineItem( UNDERLINE_NONE, RES_CHRATR_OVERLINE );
523 
524 // CharakterAttr - Dummies
525 	aAttrTab[ RES_CHRATR_DUMMY1 - POOLATTR_BEGIN ] = new SfxBoolItem( RES_CHRATR_DUMMY1 );
526 	aAttrTab[ RES_CHRATR_DUMMY2 - POOLATTR_BEGIN ] = new SfxBoolItem( RES_CHRATR_DUMMY2 );
527 // CharakterAttr - Dummies
528 
529     aAttrTab[ RES_TXTATR_AUTOFMT- POOLATTR_BEGIN ] = new SwFmtAutoFmt;
530     aAttrTab[ RES_TXTATR_INETFMT - POOLATTR_BEGIN ] = new SwFmtINetFmt( aEmptyStr, aEmptyStr );
531     aAttrTab[ RES_TXTATR_REFMARK - POOLATTR_BEGIN ] = new SwFmtRefMark( aEmptyStr );
532     aAttrTab[ RES_TXTATR_TOXMARK - POOLATTR_BEGIN ] = new SwTOXMark;
533 	aAttrTab[ RES_TXTATR_CHARFMT- POOLATTR_BEGIN ] = new SwFmtCharFmt( 0 );
534     aAttrTab[ RES_TXTATR_CJK_RUBY - POOLATTR_BEGIN ] = new SwFmtRuby( aEmptyStr );
535     aAttrTab[ RES_TXTATR_UNKNOWN_CONTAINER - POOLATTR_BEGIN ] = new SvXMLAttrContainerItem( RES_TXTATR_UNKNOWN_CONTAINER );
536     aAttrTab[ RES_TXTATR_META - POOLATTR_BEGIN ] = SwFmtMeta::CreatePoolDefault(RES_TXTATR_META);
537     aAttrTab[ RES_TXTATR_METAFIELD - POOLATTR_BEGIN ] = SwFmtMeta::CreatePoolDefault(RES_TXTATR_METAFIELD);
538 
539     aAttrTab[ RES_TXTATR_FIELD- POOLATTR_BEGIN ] = new SwFmtFld;
540 	aAttrTab[ RES_TXTATR_FLYCNT - POOLATTR_BEGIN ] = new SwFmtFlyCnt( 0 );
541     aAttrTab[ RES_TXTATR_FTN - POOLATTR_BEGIN ] = new SwFmtFtn;
542 
543 // TextAttr - Dummies
544     aAttrTab[ RES_TXTATR_DUMMY4 - POOLATTR_BEGIN ] = new SfxBoolItem( RES_TXTATR_DUMMY4 );
545     aAttrTab[ RES_TXTATR_DUMMY3 - POOLATTR_BEGIN ] = new SfxBoolItem( RES_TXTATR_DUMMY3 );
546 	aAttrTab[ RES_TXTATR_DUMMY1 - POOLATTR_BEGIN ] = new SfxBoolItem( RES_TXTATR_DUMMY1 );
547 	aAttrTab[ RES_TXTATR_DUMMY2 - POOLATTR_BEGIN ] = new SfxBoolItem( RES_TXTATR_DUMMY2 );
548     aAttrTab[ RES_TXTATR_DUMMY5 - POOLATTR_BEGIN ] = new SfxBoolItem( RES_TXTATR_DUMMY5 );
549 // TextAttr - Dummies
550 
551     aAttrTab[ RES_PARATR_LINESPACING- POOLATTR_BEGIN ] = new SvxLineSpacingItem( LINE_SPACE_DEFAULT_HEIGHT, RES_PARATR_LINESPACING );
552     aAttrTab[ RES_PARATR_ADJUST- POOLATTR_BEGIN ] = new SvxAdjustItem( SVX_ADJUST_LEFT, RES_PARATR_ADJUST );
553     aAttrTab[ RES_PARATR_SPLIT- POOLATTR_BEGIN ] = new SvxFmtSplitItem( sal_True, RES_PARATR_SPLIT );
554     aAttrTab[ RES_PARATR_WIDOWS- POOLATTR_BEGIN ] = new SvxWidowsItem( 0, RES_PARATR_WIDOWS );
555     aAttrTab[ RES_PARATR_ORPHANS- POOLATTR_BEGIN ] = new SvxOrphansItem( 0, RES_PARATR_ORPHANS );
556     aAttrTab[ RES_PARATR_TABSTOP- POOLATTR_BEGIN ] = new SvxTabStopItem( 1, SVX_TAB_DEFDIST, SVX_TAB_ADJUST_DEFAULT, RES_PARATR_TABSTOP );
557 
558     pItem = new SvxHyphenZoneItem( sal_False, RES_PARATR_HYPHENZONE );
559 	((SvxHyphenZoneItem*)pItem)->GetMaxHyphens() = 0; // Default z.Z. auf 0
560     aAttrTab[ RES_PARATR_HYPHENZONE- POOLATTR_BEGIN ] = pItem;
561 
562 	aAttrTab[ RES_PARATR_DROP- POOLATTR_BEGIN ] = new SwFmtDrop;
563 	aAttrTab[ RES_PARATR_REGISTER - POOLATTR_BEGIN ] = new SwRegisterItem( sal_False );
564 	aAttrTab[ RES_PARATR_NUMRULE - POOLATTR_BEGIN ] = new SwNumRuleItem( aEmptyStr );
565 
566     aAttrTab[ RES_PARATR_SCRIPTSPACE - POOLATTR_BEGIN ] =           new SvxScriptSpaceItem( sal_True, RES_PARATR_SCRIPTSPACE );
567     aAttrTab[ RES_PARATR_HANGINGPUNCTUATION - POOLATTR_BEGIN ] =    new SvxHangingPunctuationItem( sal_True, RES_PARATR_HANGINGPUNCTUATION );
568     aAttrTab[ RES_PARATR_FORBIDDEN_RULES - POOLATTR_BEGIN ] =       new SvxForbiddenRuleItem( sal_True, RES_PARATR_FORBIDDEN_RULES );
569     aAttrTab[ RES_PARATR_VERTALIGN - POOLATTR_BEGIN ] =             new SvxParaVertAlignItem( 0, RES_PARATR_VERTALIGN );
570     aAttrTab[ RES_PARATR_SNAPTOGRID - POOLATTR_BEGIN ] =            new SvxParaGridItem( sal_True, RES_PARATR_SNAPTOGRID );
571     aAttrTab[ RES_PARATR_CONNECT_BORDER - POOLATTR_BEGIN ] = new SwParaConnectBorderItem;
572 
573 	aAttrTab[ RES_PARATR_OUTLINELEVEL - POOLATTR_BEGIN ] = new SfxUInt16Item( RES_PARATR_OUTLINELEVEL, 0 );//#outline level,zhaojianwei
574 
575 	// --> OD 2008-02-19 #refactorlists#
576     aAttrTab[ RES_PARATR_LIST_ID - POOLATTR_BEGIN ] = new SfxStringItem( RES_PARATR_LIST_ID, aEmptyStr );
577     aAttrTab[ RES_PARATR_LIST_LEVEL - POOLATTR_BEGIN ] = new SfxInt16Item( RES_PARATR_LIST_LEVEL, 0 );
578     aAttrTab[ RES_PARATR_LIST_ISRESTART - POOLATTR_BEGIN ] = new SfxBoolItem( RES_PARATR_LIST_ISRESTART, sal_False );
579     aAttrTab[ RES_PARATR_LIST_RESTARTVALUE - POOLATTR_BEGIN ] = new SfxInt16Item( RES_PARATR_LIST_RESTARTVALUE, 1 );
580     aAttrTab[ RES_PARATR_LIST_ISCOUNTED - POOLATTR_BEGIN ] = new SfxBoolItem( RES_PARATR_LIST_ISCOUNTED, sal_True );
581     // <--
582 
583 	aAttrTab[ RES_FILL_ORDER- POOLATTR_BEGIN ] = new SwFmtFillOrder;
584 	aAttrTab[ RES_FRM_SIZE- POOLATTR_BEGIN ] = new SwFmtFrmSize;
585     aAttrTab[ RES_PAPER_BIN- POOLATTR_BEGIN ] = new SvxPaperBinItem( RES_PAPER_BIN );
586     aAttrTab[ RES_LR_SPACE- POOLATTR_BEGIN ] = new SvxLRSpaceItem( RES_LR_SPACE );
587     aAttrTab[ RES_UL_SPACE- POOLATTR_BEGIN ] = new SvxULSpaceItem( RES_UL_SPACE );
588 	aAttrTab[ RES_PAGEDESC- POOLATTR_BEGIN ] = new SwFmtPageDesc;
589     aAttrTab[ RES_BREAK- POOLATTR_BEGIN ] = new SvxFmtBreakItem( SVX_BREAK_NONE, RES_BREAK);
590 	aAttrTab[ RES_CNTNT- POOLATTR_BEGIN ] = new SwFmtCntnt;
591 	aAttrTab[ RES_HEADER- POOLATTR_BEGIN ] = new SwFmtHeader;
592 	aAttrTab[ RES_FOOTER- POOLATTR_BEGIN ] = new SwFmtFooter;
593     aAttrTab[ RES_PRINT- POOLATTR_BEGIN ] = new SvxPrintItem( RES_PRINT );
594     aAttrTab[ RES_OPAQUE- POOLATTR_BEGIN ] = new SvxOpaqueItem( RES_OPAQUE );
595     aAttrTab[ RES_PROTECT- POOLATTR_BEGIN ] = new SvxProtectItem( RES_PROTECT );
596 	aAttrTab[ RES_SURROUND- POOLATTR_BEGIN ] = new SwFmtSurround;
597 	aAttrTab[ RES_VERT_ORIENT- POOLATTR_BEGIN ] = new SwFmtVertOrient;
598 	aAttrTab[ RES_HORI_ORIENT- POOLATTR_BEGIN ] = new SwFmtHoriOrient;
599 	aAttrTab[ RES_ANCHOR- POOLATTR_BEGIN ] = new SwFmtAnchor;
600     aAttrTab[ RES_BACKGROUND- POOLATTR_BEGIN ] = new SvxBrushItem( RES_BACKGROUND );
601     aAttrTab[ RES_BOX- POOLATTR_BEGIN ] = new SvxBoxItem( RES_BOX );
602     aAttrTab[ RES_SHADOW- POOLATTR_BEGIN ] = new SvxShadowItem( RES_SHADOW );
603     aAttrTab[ RES_FRMMACRO- POOLATTR_BEGIN ] = new SvxMacroItem( RES_FRMMACRO );
604 	aAttrTab[ RES_COL- POOLATTR_BEGIN ] = new SwFmtCol;
605     aAttrTab[ RES_KEEP - POOLATTR_BEGIN ] = new SvxFmtKeepItem( sal_False, RES_KEEP );
606 	aAttrTab[ RES_URL - POOLATTR_BEGIN ] = new SwFmtURL();
607 	aAttrTab[ RES_EDIT_IN_READONLY - POOLATTR_BEGIN ] = new SwFmtEditInReadonly;
608 	aAttrTab[ RES_LAYOUT_SPLIT - POOLATTR_BEGIN ] = new SwFmtLayoutSplit;
609 	aAttrTab[ RES_CHAIN - POOLATTR_BEGIN ] = new SwFmtChain;
610     aAttrTab[ RES_TEXTGRID - POOLATTR_BEGIN ] = new SwTextGridItem;
611     aAttrTab[ RES_HEADER_FOOTER_EAT_SPACING - POOLATTR_BEGIN ] = new SwHeaderAndFooterEatSpacingItem;
612 	aAttrTab[ RES_LINENUMBER - POOLATTR_BEGIN ] = new SwFmtLineNumber;
613 	aAttrTab[ RES_FTN_AT_TXTEND - POOLATTR_BEGIN ] = new SwFmtFtnAtTxtEnd;
614 	aAttrTab[ RES_END_AT_TXTEND - POOLATTR_BEGIN ] = new SwFmtEndAtTxtEnd;
615 	aAttrTab[ RES_COLUMNBALANCE - POOLATTR_BEGIN ] = new SwFmtNoBalancedColumns;
616     aAttrTab[ RES_FRAMEDIR - POOLATTR_BEGIN ] = new SvxFrameDirectionItem( FRMDIR_ENVIRONMENT, RES_FRAMEDIR );
617     aAttrTab[ RES_ROW_SPLIT - POOLATTR_BEGIN ] = new SwFmtRowSplit;
618 
619     // OD 18.09.2003 #i18732#
620     aAttrTab[ RES_FOLLOW_TEXT_FLOW - POOLATTR_BEGIN ] = new SwFmtFollowTextFlow( sal_True );
621     // --> collapsing borders FME 2005-05-27 #i29550#
622     aAttrTab[ RES_COLLAPSING_BORDERS - POOLATTR_BEGIN ] = new SfxBoolItem( RES_COLLAPSING_BORDERS, sal_False );
623     // <-- collapsing
624     // OD 2004-05-04 #i28701#
625     // --> OD 2004-10-18 #i35017# - constant name has changed
626     aAttrTab[ RES_WRAP_INFLUENCE_ON_OBJPOS - POOLATTR_BEGIN ] =
627             new SwFmtWrapInfluenceOnObjPos( text::WrapInfluenceOnPosition::ONCE_CONCURRENT );
628     // <--
629 // FrmAttr-Dummies
630     aAttrTab[ RES_AUTO_STYLE - POOLATTR_BEGIN ] = new SwFmtAutoFmt( RES_AUTO_STYLE );
631     aAttrTab[ RES_FRMATR_STYLE_NAME - POOLATTR_BEGIN ] = new SfxStringItem( RES_FRMATR_STYLE_NAME, aEmptyStr );
632     aAttrTab[ RES_FRMATR_CONDITIONAL_STYLE_NAME - POOLATTR_BEGIN ] = new SfxStringItem( RES_FRMATR_CONDITIONAL_STYLE_NAME, aEmptyStr );
633 // FrmAttr-Dummies
634 
635     aAttrTab[ RES_GRFATR_MIRRORGRF- POOLATTR_BEGIN ] = new SwMirrorGrf;
636 	aAttrTab[ RES_GRFATR_CROPGRF- POOLATTR_BEGIN ] = new SwCropGrf;
637     aAttrTab[ RES_GRFATR_ROTATION - POOLATTR_BEGIN ] = new SwRotationGrf;
638 	aAttrTab[ RES_GRFATR_LUMINANCE - POOLATTR_BEGIN ] = new SwLuminanceGrf;
639 	aAttrTab[ RES_GRFATR_CONTRAST - POOLATTR_BEGIN ] = new SwContrastGrf;
640 	aAttrTab[ RES_GRFATR_CHANNELR - POOLATTR_BEGIN ] = new SwChannelRGrf;
641 	aAttrTab[ RES_GRFATR_CHANNELG - POOLATTR_BEGIN ] = new SwChannelGGrf;
642 	aAttrTab[ RES_GRFATR_CHANNELB - POOLATTR_BEGIN ] = new SwChannelBGrf;
643 	aAttrTab[ RES_GRFATR_GAMMA - POOLATTR_BEGIN ] = new SwGammaGrf;
644 	aAttrTab[ RES_GRFATR_INVERT - POOLATTR_BEGIN ] = new SwInvertGrf;
645 	aAttrTab[ RES_GRFATR_TRANSPARENCY - POOLATTR_BEGIN ] = new SwTransparencyGrf;
646 	aAttrTab[ RES_GRFATR_DRAWMODE - POOLATTR_BEGIN ] = new SwDrawModeGrf;
647 
648 // GraphicAttr - Dummies
649 	aAttrTab[ RES_GRFATR_DUMMY1 - POOLATTR_BEGIN ] = new SfxBoolItem( RES_GRFATR_DUMMY1 );
650 	aAttrTab[ RES_GRFATR_DUMMY2 - POOLATTR_BEGIN ] = new SfxBoolItem( RES_GRFATR_DUMMY2 );
651 	aAttrTab[ RES_GRFATR_DUMMY3 - POOLATTR_BEGIN ] = new SfxBoolItem( RES_GRFATR_DUMMY3 );
652 	aAttrTab[ RES_GRFATR_DUMMY4 - POOLATTR_BEGIN ] = new SfxBoolItem( RES_GRFATR_DUMMY4 );
653 	aAttrTab[ RES_GRFATR_DUMMY5 - POOLATTR_BEGIN ] = new SfxBoolItem( RES_GRFATR_DUMMY5 );
654 // GraphicAttr - Dummies
655 
656 	aAttrTab[ RES_BOXATR_FORMAT- POOLATTR_BEGIN ] = new SwTblBoxNumFormat;
657 	aAttrTab[ RES_BOXATR_FORMULA- POOLATTR_BEGIN ] = new SwTblBoxFormula( aEmptyStr );
658 	aAttrTab[ RES_BOXATR_VALUE- POOLATTR_BEGIN ] = new SwTblBoxValue;
659 
660 	aAttrTab[ RES_UNKNOWNATR_CONTAINER- POOLATTR_BEGIN ] =
661 				new SvXMLAttrContainerItem( RES_UNKNOWNATR_CONTAINER );
662 
663 	// get the correct fonts:
664 	::GetDefaultFonts( *(SvxFontItem*)aAttrTab[ RES_CHRATR_FONT- POOLATTR_BEGIN ],
665 					   *(SvxFontItem*)aAttrTab[ RES_CHRATR_CJK_FONT - POOLATTR_BEGIN ],
666 					   *(SvxFontItem*)aAttrTab[ RES_CHRATR_CTL_FONT - POOLATTR_BEGIN ] );
667 
668 	// 1. Version - neue Attribute:
669 	//		- RES_CHRATR_BLINK
670 	//		- RES_CHRATR_NOHYPHEN
671 	//		- RES_CHRATR_NOLINEBREAK
672 	// 		- RES_PARATR_REGISTER
673 	// 		+ 2 Dummies fuer die einzelnen "Bereiche"
674 	SwAttrPool::pVersionMap1 = new sal_uInt16[ 60 ];
675 	sal_uInt16 i;
676 	for( i = 1; i <= 17; i++ )
677 		SwAttrPool::pVersionMap1[ i-1 ] = i;
678 	for ( i = 18; i <= 27; ++i )
679 		SwAttrPool::pVersionMap1[ i-1 ] = i + 5;
680 	for ( i = 28; i <= 35; ++i )
681 		SwAttrPool::pVersionMap1[ i-1 ] = i + 7;
682 	for ( i = 36; i <= 58; ++i )
683 		SwAttrPool::pVersionMap1[ i-1 ] = i + 10;
684 	for ( i = 59; i <= 60; ++i )
685 		SwAttrPool::pVersionMap1[ i-1 ] = i + 12;
686 
687 	// 2. Version - neue Attribute:
688 	// 		10 Dummies fuer den Frame "Bereich"
689 	SwAttrPool::pVersionMap2 = new sal_uInt16[ 75 ];
690 	for( i = 1; i <= 70; i++ )
691 		SwAttrPool::pVersionMap2[ i-1 ] = i;
692 	for ( i = 71; i <= 75; ++i )
693 		SwAttrPool::pVersionMap2[ i-1 ] = i + 10;
694 
695 	// 3. Version - neue Attribute:
696 	// 		neue Attribute und Dummies fuer die CJK-Version
697 	// 		und neue Grafik-Attribute
698 	SwAttrPool::pVersionMap3 = new sal_uInt16[ 86 ];
699 	for( i = 1; i <= 21; i++ )
700 		SwAttrPool::pVersionMap3[ i-1 ] = i;
701 	for ( i = 22; i <= 27; ++i )
702 		SwAttrPool::pVersionMap3[ i-1 ] = i + 15;
703 	for ( i = 28; i <= 82; ++i )
704 		SwAttrPool::pVersionMap3[ i-1 ] = i + 20;
705 	for ( i = 83; i <= 86; ++i )
706 		SwAttrPool::pVersionMap3[ i-1 ] = i + 35;
707 
708 	// 4. Version - neue Paragraph Attribute fuer die CJK-Version
709 	SwAttrPool::pVersionMap4 = new sal_uInt16[ 121 ];
710 	for( i = 1; i <= 65; i++ )
711 		SwAttrPool::pVersionMap4[ i-1 ] = i;
712 	for ( i = 66; i <= 121; ++i )
713 		SwAttrPool::pVersionMap4[ i-1 ] = i + 9;
714 
715     // OD 2004-01-21 #i18732# - setup new version map due to extension of
716     // the frame attributes (RES_FRMATR_*) for binary filters.
717     SwAttrPool::pVersionMap5 = new sal_uInt16[ 130 ];
718     for( i = 1; i <= 109; i++ )
719         SwAttrPool::pVersionMap5[ i-1 ] = i;
720     for ( i = 110; i <= 130; ++i )
721         SwAttrPool::pVersionMap5[ i-1 ] = i + 6;
722 
723     // 6. Version - new character attribute for overlining plus 2 dummies
724     SwAttrPool::pVersionMap6 = new sal_uInt16[ 136 ];
725     for( i = 1; i <= 37; i++ )
726         SwAttrPool::pVersionMap6[ i-1 ] = i;
727     for ( i = 38; i <= 136; ++i )
728         SwAttrPool::pVersionMap6[ i-1 ] = i + 3;
729 
730     uno::Reference<
731             lang::XMultiServiceFactory > xMSF =
732 									::comphelper::getProcessServiceFactory();
733 
734 	SwBreakIt::_Create( xMSF );
735     pCheckIt = NULL;
736 	/*pAppCharClass = new CharClass(
737 		xMSF, SwBreakIt::Get()->GetLocale( (LanguageType)GetAppLanguage() ));*/
738 	//pCalendarWrapper = new SwCalendarWrapper( xMSF );
739 
740 	_FrmInit();
741 	_TextInit();
742 
743 	SwSelPaintRects::pMapMode = new MapMode;
744 	SwFntObj::pPixMap = new MapMode;
745 
746 	SwIndexReg::pEmptyIndexArray = new SwIndexReg;
747 
748 	pGlobalOLEExcludeList = new SvPtrarr;
749 
750 	const SvxSwAutoFmtFlags& rAFlags = SvxAutoCorrCfg::Get()->GetAutoCorrect()->GetSwFlags();
751 	SwDoc::pACmpltWords = new SwAutoCompleteWord( rAFlags.nAutoCmpltListLen,
752 											rAFlags.nAutoCmpltWordLen );
753 }
754 
755 /******************************************************************************
756  *	void _FinitCore()
757  ******************************************************************************/
758 
759 
760 
761 void _FinitCore()
762 {
763 	_FrmFinit();
764 	_TextFinit();
765 
766 	SwBreakIt::_Delete();
767     delete pCheckIt;
768 	delete pAppCharClass;
769 	delete pCollator;
770 	delete pCaseCollator;
771 
772 	// das default TableAutoFormat zerstoeren
773 	delete SwTableAutoFmt::pDfltBoxAutoFmt;
774 
775 	delete SwSelPaintRects::pMapMode;
776 	delete SwFntObj::pPixMap;
777 
778 	delete SwEditShell::pAutoFmtFlags;
779 
780 #ifdef DBG_UTIL
781 	//Defaultattribut freigeben lassen um asserts zu vermeiden.
782 	if ( aAttrTab[0]->GetRefCount() )
783 		SfxItemPool::ReleaseDefaults( aAttrTab, POOLATTR_END-POOLATTR_BEGIN, sal_False);
784 #endif
785 	delete SwDoc::pACmpltWords;
786 
787 	delete SwStyleNameMapper::pTextUINameArray;
788 	delete SwStyleNameMapper::pListsUINameArray;
789 	delete SwStyleNameMapper::pExtraUINameArray;
790 	delete SwStyleNameMapper::pRegisterUINameArray;
791 	delete SwStyleNameMapper::pDocUINameArray;
792 	delete SwStyleNameMapper::pHTMLUINameArray;
793 	delete SwStyleNameMapper::pFrmFmtUINameArray;
794 	delete SwStyleNameMapper::pChrFmtUINameArray;
795 	delete SwStyleNameMapper::pHTMLChrFmtUINameArray;
796 	delete SwStyleNameMapper::pPageDescUINameArray;
797 	delete SwStyleNameMapper::pNumRuleUINameArray;
798 
799 	// Delete programmatic name arrays also
800 	delete SwStyleNameMapper::pTextProgNameArray;
801 	delete SwStyleNameMapper::pListsProgNameArray;
802 	delete SwStyleNameMapper::pExtraProgNameArray;
803 	delete SwStyleNameMapper::pRegisterProgNameArray;
804 	delete SwStyleNameMapper::pDocProgNameArray;
805 	delete SwStyleNameMapper::pHTMLProgNameArray;
806 	delete SwStyleNameMapper::pFrmFmtProgNameArray;
807 	delete SwStyleNameMapper::pChrFmtProgNameArray;
808 	delete SwStyleNameMapper::pHTMLChrFmtProgNameArray;
809 	delete SwStyleNameMapper::pPageDescProgNameArray;
810 	delete SwStyleNameMapper::pNumRuleProgNameArray;
811 
812 	// And finally, any hash tables that we used
813 	delete SwStyleNameMapper::pParaUIMap;
814 	delete SwStyleNameMapper::pCharUIMap;
815 	delete SwStyleNameMapper::pPageUIMap;
816 	delete SwStyleNameMapper::pFrameUIMap;
817 	delete SwStyleNameMapper::pNumRuleUIMap;
818 
819 	delete SwStyleNameMapper::pParaProgMap;
820 	delete SwStyleNameMapper::pCharProgMap;
821 	delete SwStyleNameMapper::pPageProgMap;
822 	delete SwStyleNameMapper::pFrameProgMap;
823 	delete SwStyleNameMapper::pNumRuleProgMap;
824 
825 
826 	// loesche alle default-Attribute
827 	SfxPoolItem* pHt;
828 	for( sal_uInt16 n = 0; n < POOLATTR_END - POOLATTR_BEGIN; n++ )
829 		if( 0 != ( pHt = aAttrTab[n] ))
830 			delete pHt;
831 
832 	::ClearFEShellTabCols();
833 
834 	delete SwIndexReg::pEmptyIndexArray;
835     delete[] SwAttrPool::pVersionMap1;
836     delete[] SwAttrPool::pVersionMap2;
837     delete[] SwAttrPool::pVersionMap3;
838     delete[] SwAttrPool::pVersionMap4;
839     // OD 2004-01-21 #i18732#
840     delete[] SwAttrPool::pVersionMap5;
841     delete[] SwAttrPool::pVersionMap6;
842 
843 	for ( sal_uInt16 i = 0; i < pGlobalOLEExcludeList->Count(); ++i )
844 		delete (SvGlobalName*)(*pGlobalOLEExcludeList)[i];
845 	delete pGlobalOLEExcludeList;
846 }
847 
848 // returns the APP - CharClass instance - used for all ToUpper/ToLower/...
849 CharClass& GetAppCharClass()
850 {
851     if ( !pAppCharClass )
852     {
853         uno::Reference< lang::XMultiServiceFactory > xMSF = ::comphelper::getProcessServiceFactory();
854         pAppCharClass = new CharClass(
855 		    xMSF, SwBreakIt::Get()->GetLocale( (LanguageType)GetAppLanguage() ));
856     }
857 	return *pAppCharClass;
858 }
859 
860 void SwCalendarWrapper::LoadDefaultCalendar( sal_uInt16 eLang )
861 {
862 	sUniqueId.Erase();
863 	if( eLang != nLang )
864 		loadDefaultCalendar( SvxCreateLocale( nLang = eLang ));
865 }
866 
867 LanguageType GetAppLanguage()
868 {
869 	return Application::GetSettings().GetLanguage();
870 }
871 
872 CollatorWrapper& GetAppCollator()
873 {
874 	if( !pCollator )
875 	{
876         const lang::Locale& rLcl = pBreakIt->GetLocale(
877 											(LanguageType)GetAppLanguage() );
878         uno::Reference<
879             lang::XMultiServiceFactory > xMSF =
880 									::comphelper::getProcessServiceFactory();
881 
882 		pCollator = new CollatorWrapper( xMSF );
883 		pCollator->loadDefaultCollator( rLcl, SW_COLLATOR_IGNORES );
884 	}
885 	return *pCollator;
886 }
887 CollatorWrapper& GetAppCaseCollator()
888 {
889 	if( !pCaseCollator )
890 	{
891         const lang::Locale& rLcl = pBreakIt->GetLocale(
892 											(LanguageType)GetAppLanguage() );
893         uno::Reference<
894             lang::XMultiServiceFactory > xMSF =
895 									::comphelper::getProcessServiceFactory();
896 
897 		pCaseCollator = new CollatorWrapper( xMSF );
898 		pCaseCollator->loadDefaultCollator( rLcl, 0 );
899 	}
900 	return *pCaseCollator;
901 }
902 
903 const ::utl::TransliterationWrapper& GetAppCmpStrIgnore()
904 {
905 	if( !pTransWrp )
906 	{
907         uno::Reference<
908             lang::XMultiServiceFactory > xMSF =
909 									::comphelper::getProcessServiceFactory();
910 
911 		pTransWrp = new ::utl::TransliterationWrapper( xMSF,
912                 i18n::TransliterationModules_IGNORE_CASE |
913                 i18n::TransliterationModules_IGNORE_KANA |
914                 i18n::TransliterationModules_IGNORE_WIDTH );
915 		pTransWrp->loadModuleIfNeeded( static_cast<sal_uInt16>(GetAppLanguage()) );
916 	}
917 	return *pTransWrp;
918 }
919