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 :
20 : #include <hintids.hxx>
21 : #include <i18nlangtag/mslangid.hxx>
22 : #include <unotools/localedatawrapper.hxx>
23 : #include <editeng/paperinf.hxx>
24 : #include <editeng/wghtitem.hxx>
25 : #include <editeng/fontitem.hxx>
26 : #include <editeng/fhgtitem.hxx>
27 : #include <editeng/tstpitem.hxx>
28 : #include <editeng/lrspitem.hxx>
29 : #include <editeng/ulspitem.hxx>
30 : #include <editeng/lspcitem.hxx>
31 : #include <editeng/adjustitem.hxx>
32 : #include <editeng/postitem.hxx>
33 : #include <editeng/keepitem.hxx>
34 : #include <editeng/opaqitem.hxx>
35 : #include <editeng/boxitem.hxx>
36 : #include <editeng/cmapitem.hxx>
37 : #include <editeng/udlnitem.hxx>
38 : #include <editeng/colritem.hxx>
39 : #include <editeng/protitem.hxx>
40 : #include <editeng/escapementitem.hxx>
41 : #include <editeng/langitem.hxx>
42 : #include <editeng/charrotateitem.hxx>
43 : #include <editeng/frmdiritem.hxx>
44 : #include <editeng/emphasismarkitem.hxx>
45 : #include <editeng/scriptspaceitem.hxx>
46 : #include <viewopt.hxx>
47 : #include <doc.hxx>
48 : #include <IDocumentUndoRedo.hxx>
49 : #include <fmtanchr.hxx>
50 : #include <fmtornt.hxx>
51 : #include <fmtsrnd.hxx>
52 : #include <fmtfsize.hxx>
53 : #include <poolfmt.hxx>
54 : #include <paratr.hxx>
55 : #include <pagedesc.hxx>
56 : #include <frmtool.hxx>
57 : #include <charfmt.hxx>
58 : #include <docary.hxx>
59 : #include <fmtcol.hxx>
60 : #include <ndtxt.hxx>
61 : #include <fmtline.hxx>
62 : #include <poolfmt.hrc>
63 : #include <GetMetricVal.hxx>
64 : #include <numrule.hxx>
65 : #include <svx/xdef.hxx>
66 :
67 : using namespace ::editeng;
68 : using namespace ::com::sun::star;
69 :
70 : const sal_uInt16 PT_3 = 3 * 20; // 3 pt
71 : const sal_uInt16 PT_6 = 6 * 20; // 6 pt
72 : const sal_uInt16 PT_7 = 7 * 20; // 7 pt
73 : const sal_uInt16 PT_10 = 10 * 20; // 10 pt
74 : const sal_uInt16 PT_12 = 12 * 20; // 12 pt
75 : const sal_uInt16 PT_14 = 14 * 20; // 14 pt
76 : const sal_uInt16 PT_16 = 16 * 20; // 16 pt
77 : const sal_uInt16 PT_18 = 18 * 20; // 18 pt
78 : const sal_uInt16 PT_24 = 24 * 20; // 24 pt
79 : const sal_uInt16 PT_28 = 28 * 20; // 28 pt
80 :
81 : #define HTML_PARSPACE GetMetricVal( CM_05 )
82 :
83 : static const sal_uInt16 aHeadlineSizes[ 2 * MAXLEVEL ] = {
84 : // we do everything procentual now:
85 : 130, 115, 100, 95, 85,
86 : 85, 80, 80, 75, 75, // normal
87 : PT_24, PT_18, PT_14, PT_12, PT_10,
88 : PT_7, PT_7, PT_7, PT_7, PT_7 // HTML mode
89 : };
90 :
91 0 : static long lcl_GetRightMargin( SwDoc& rDoc )
92 : {
93 : // Make sure that the printer settings are taken over to the standard
94 : // page style
95 0 : const SwFrmFmt& rPgDscFmt = rDoc.GetPageDesc( 0 ).GetMaster();
96 0 : const SvxLRSpaceItem& rLR = rPgDscFmt.GetLRSpace();
97 0 : const long nLeft = rLR.GetLeft();
98 0 : const long nRight = rLR.GetRight();
99 0 : const long nWidth = rPgDscFmt.GetFrmSize().GetWidth();
100 0 : return nWidth - nLeft - nRight;
101 : }
102 :
103 0 : void SetAllScriptItem( SfxItemSet& rSet, const SfxPoolItem& rItem )
104 : {
105 0 : rSet.Put( rItem );
106 0 : sal_uInt16 nWhCJK = 0, nWhCTL = 0;
107 0 : switch( rItem.Which() )
108 : {
109 : case RES_CHRATR_FONTSIZE:
110 0 : nWhCJK = RES_CHRATR_CJK_FONTSIZE, nWhCTL = RES_CHRATR_CTL_FONTSIZE;
111 0 : break;
112 : case RES_CHRATR_FONT:
113 0 : nWhCJK = RES_CHRATR_CJK_FONT, nWhCTL = RES_CHRATR_CTL_FONT;
114 0 : break;
115 : case RES_CHRATR_LANGUAGE:
116 0 : nWhCJK = RES_CHRATR_CJK_LANGUAGE, nWhCTL = RES_CHRATR_CTL_LANGUAGE;
117 0 : break;
118 : case RES_CHRATR_POSTURE:
119 0 : nWhCJK = RES_CHRATR_CJK_POSTURE, nWhCTL = RES_CHRATR_CTL_POSTURE;
120 0 : break;
121 : case RES_CHRATR_WEIGHT:
122 0 : nWhCJK = RES_CHRATR_CJK_WEIGHT, nWhCTL = RES_CHRATR_CTL_WEIGHT;
123 0 : break;
124 : }
125 :
126 0 : if( nWhCJK )
127 0 : rSet.Put( rItem, nWhCJK );
128 0 : if( nWhCTL )
129 0 : rSet.Put( rItem, nWhCTL );
130 0 : }
131 :
132 0 : static void lcl_SetDfltFont( sal_uInt16 nFntType, SfxItemSet& rSet )
133 : {
134 : static struct {
135 : sal_uInt16 nResLngId;
136 : sal_uInt16 nResFntId;
137 : } aArr[ 3 ] = {
138 : { RES_CHRATR_LANGUAGE, RES_CHRATR_FONT },
139 : { RES_CHRATR_CJK_LANGUAGE, RES_CHRATR_CJK_FONT },
140 : { RES_CHRATR_CTL_LANGUAGE, RES_CHRATR_CTL_FONT }
141 : };
142 0 : for( sal_uInt16 n = 0; n < 3; ++n )
143 : {
144 0 : sal_uInt16 nLng = ((SvxLanguageItem&)rSet.GetPool()->GetDefaultItem(
145 0 : aArr[n].nResLngId )).GetLanguage();
146 : Font aFnt( OutputDevice::GetDefaultFont( nFntType,
147 0 : nLng, DEFAULTFONT_FLAGS_ONLYONE ) );
148 :
149 0 : rSet.Put( SvxFontItem( aFnt.GetFamily(), aFnt.GetName(),
150 : OUString(), aFnt.GetPitch(),
151 0 : aFnt.GetCharSet(), aArr[n].nResFntId ));
152 0 : }
153 0 : }
154 :
155 0 : static void lcl_SetDfltFont( sal_uInt16 nLatinFntType, sal_uInt16 nCJKFntType,
156 : sal_uInt16 nCTLFntType, SfxItemSet& rSet )
157 : {
158 : static struct {
159 : sal_uInt16 nResLngId;
160 : sal_uInt16 nResFntId;
161 : sal_uInt16 nFntType;
162 : } aArr[ 3 ] = {
163 : { RES_CHRATR_LANGUAGE, RES_CHRATR_FONT, 0 },
164 : { RES_CHRATR_CJK_LANGUAGE, RES_CHRATR_CJK_FONT, 0 },
165 : { RES_CHRATR_CTL_LANGUAGE, RES_CHRATR_CTL_FONT, 0 }
166 : };
167 0 : aArr[0].nFntType = nLatinFntType;
168 0 : aArr[1].nFntType = nCJKFntType;
169 0 : aArr[2].nFntType = nCTLFntType;
170 :
171 0 : for( sal_uInt16 n = 0; n < 3; ++n )
172 : {
173 0 : sal_uInt16 nLng = ((SvxLanguageItem&)rSet.GetPool()->GetDefaultItem(
174 0 : aArr[n].nResLngId )).GetLanguage();
175 : Font aFnt( OutputDevice::GetDefaultFont( aArr[n].nFntType,
176 0 : nLng, DEFAULTFONT_FLAGS_ONLYONE ) );
177 :
178 0 : rSet.Put( SvxFontItem( aFnt.GetFamily(), aFnt.GetName(),
179 : OUString(), aFnt.GetPitch(),
180 0 : aFnt.GetCharSet(), aArr[n].nResFntId ));
181 0 : }
182 0 : }
183 :
184 0 : static void lcl_SetHeadline( SwDoc* pDoc, SwTxtFmtColl* pColl,
185 : SfxItemSet& rSet,
186 : sal_uInt16 nOutLvlBits, sal_uInt8 nLevel, bool bItalic )
187 : {
188 0 : SetAllScriptItem( rSet, SvxWeightItem( WEIGHT_BOLD, RES_CHRATR_WEIGHT ) );
189 0 : SvxFontHeightItem aHItem(240, 100, RES_CHRATR_FONTSIZE);
190 0 : const bool bHTMLMode = pDoc->get(IDocumentSettingAccess::HTML_MODE);
191 0 : if( bHTMLMode )
192 0 : aHItem.SetHeight( aHeadlineSizes[ MAXLEVEL + nLevel ] );
193 : else
194 0 : aHItem.SetHeight( PT_14, aHeadlineSizes[ nLevel ] );
195 0 : SetAllScriptItem( rSet, aHItem );
196 :
197 0 : if( bItalic && !bHTMLMode )
198 0 : SetAllScriptItem( rSet, SvxPostureItem( ITALIC_NORMAL, RES_CHRATR_POSTURE ) );
199 :
200 0 : if( bHTMLMode )
201 : {
202 : ::lcl_SetDfltFont( DEFAULTFONT_LATIN_TEXT, DEFAULTFONT_CJK_TEXT,
203 0 : DEFAULTFONT_CTL_TEXT, rSet );
204 : }
205 :
206 0 : if( pColl )
207 : {
208 0 : if( !( nOutLvlBits & ( 1 << nLevel )) )
209 : {
210 0 : pColl->AssignToListLevelOfOutlineStyle(nLevel);
211 0 : if( !bHTMLMode )
212 : {
213 0 : SwNumRule * pOutlineRule = pDoc->GetOutlineNumRule();
214 0 : const SwNumFmt& rNFmt = pOutlineRule->Get( nLevel );
215 :
216 0 : if ( rNFmt.GetPositionAndSpaceMode() ==
217 0 : SvxNumberFormat::LABEL_WIDTH_AND_POSITION &&
218 0 : ( rNFmt.GetAbsLSpace() || rNFmt.GetFirstLineOffset() ) )
219 : {
220 0 : SvxLRSpaceItem aLR( (SvxLRSpaceItem&)pColl->GetFmtAttr( RES_LR_SPACE ) );
221 0 : aLR.SetTxtFirstLineOfstValue( rNFmt.GetFirstLineOffset() );
222 0 : aLR.SetTxtLeft( rNFmt.GetAbsLSpace() );
223 0 : pColl->SetFmtAttr( aLR );
224 : }
225 :
226 : // #i71764#
227 : // Check on document setting OUTLINE_LEVEL_YIELDS_OUTLINE_RULE no longer needed.
228 : // All paragraph styles, which are assigned to a level of the
229 : // outline style has to have the outline style set as its list style.
230 : {
231 0 : SwNumRuleItem aItem(pOutlineRule->GetName());
232 :
233 0 : pColl->SetFmtAttr(aItem);
234 : }
235 : }
236 : }
237 : pColl->SetNextTxtFmtColl( *pDoc->GetTxtCollFromPool(
238 0 : RES_POOLCOLL_TEXT ));
239 0 : }
240 0 : }
241 :
242 0 : static void lcl_SetRegister( SwDoc* pDoc, SfxItemSet& rSet, sal_uInt16 nFact,
243 : bool bHeader, bool bTab )
244 : {
245 0 : SvxLRSpaceItem aLR( RES_LR_SPACE );
246 0 : sal_uInt16 nLeft = nFact ? GetMetricVal( CM_05 ) * nFact : 0;
247 0 : aLR.SetTxtLeft( nLeft );
248 :
249 0 : rSet.Put( aLR );
250 0 : if( bHeader )
251 : {
252 0 : SetAllScriptItem( rSet, SvxWeightItem( WEIGHT_BOLD, RES_CHRATR_WEIGHT ) );
253 0 : SetAllScriptItem( rSet, SvxFontHeightItem( PT_16, 100, RES_CHRATR_FONTSIZE ) );
254 : }
255 0 : if( bTab )
256 : {
257 0 : long nRightMargin = lcl_GetRightMargin( *pDoc );
258 0 : SvxTabStopItem aTStops( 0, 0, SVX_TAB_ADJUST_DEFAULT, RES_PARATR_TABSTOP );
259 : aTStops.Insert( SvxTabStop( nRightMargin - nLeft,
260 : SVX_TAB_ADJUST_RIGHT,
261 0 : cDfltDecimalChar, '.' ));
262 0 : rSet.Put( aTStops );
263 0 : }
264 0 : }
265 :
266 0 : static void lcl_SetNumBul( SwDoc* pDoc, SwTxtFmtColl* pColl,
267 : SfxItemSet& rSet,
268 : sal_uInt16 nNxt, SwTwips nEZ, SwTwips nLeft,
269 : SwTwips nUpper, SwTwips nLower )
270 : {
271 :
272 0 : SvxLRSpaceItem aLR( RES_LR_SPACE ); SvxULSpaceItem aUL( RES_UL_SPACE );
273 0 : aLR.SetTxtFirstLineOfst( sal_uInt16(nEZ) ); aLR.SetTxtLeft( sal_uInt16(nLeft) );
274 0 : aUL.SetUpper( sal_uInt16(nUpper) ); aUL.SetLower( sal_uInt16(nLower) );
275 0 : rSet.Put( aLR );
276 0 : rSet.Put( aUL );
277 :
278 0 : if( pColl )
279 0 : pColl->SetNextTxtFmtColl( *pDoc->GetTxtCollFromPool( nNxt ));
280 0 : }
281 :
282 : /// Return the AutoCollection by it's Id. If it doesn't
283 : /// exist yet, create it.
284 : /// If the String pointer is defined, then only query for
285 : /// the Attribute descriptions. It doesn't create a style!
286 0 : SvxFrameDirection GetDefaultFrameDirection(sal_uLong nLanguage)
287 : {
288 0 : SvxFrameDirection eResult = (MsLangId::isRightToLeft( static_cast<LanguageType>(nLanguage)) ?
289 0 : FRMDIR_HORI_RIGHT_TOP : FRMDIR_HORI_LEFT_TOP);
290 0 : return eResult;
291 : }
292 :
293 0 : SwTxtFmtColl* SwDoc::GetTxtCollFromPool( sal_uInt16 nId, bool bRegardLanguage )
294 : {
295 : OSL_ENSURE(
296 : (RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END) ||
297 : (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END) ||
298 : (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END) ||
299 : (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END) ||
300 : (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END) ||
301 : (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END),
302 : "Wrong AutoFormat Id" );
303 :
304 : SwTxtFmtColl* pNewColl;
305 0 : sal_uInt16 nOutLvlBits = 0;
306 0 : for( sal_uInt16 n = 0; n < mpTxtFmtCollTbl->size(); ++n )
307 : {
308 0 : if( nId == ( pNewColl = (*mpTxtFmtCollTbl)[ n ] )->GetPoolFmtId() )
309 : {
310 0 : return pNewColl;
311 : }
312 :
313 0 : if( pNewColl->IsAssignedToListLevelOfOutlineStyle())
314 0 : nOutLvlBits |= ( 1 << pNewColl->GetAssignedOutlineStyleLevel() );
315 : }
316 :
317 : // Didn't find it until here -> create anew
318 0 : sal_uInt16 nResId = 0;
319 0 : if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
320 0 : nResId = RC_POOLCOLL_TEXT_BEGIN - RES_POOLCOLL_TEXT_BEGIN;
321 0 : else if (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END)
322 0 : nResId = RC_POOLCOLL_LISTS_BEGIN - RES_POOLCOLL_LISTS_BEGIN;
323 0 : else if (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END)
324 0 : nResId = RC_POOLCOLL_EXTRA_BEGIN - RES_POOLCOLL_EXTRA_BEGIN;
325 0 : else if (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END)
326 0 : nResId = RC_POOLCOLL_REGISTER_BEGIN - RES_POOLCOLL_REGISTER_BEGIN;
327 0 : else if (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END)
328 0 : nResId = RC_POOLCOLL_DOC_BEGIN - RES_POOLCOLL_DOC_BEGIN;
329 0 : else if (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END)
330 0 : nResId = RC_POOLCOLL_HTML_BEGIN - RES_POOLCOLL_HTML_BEGIN;
331 :
332 : OSL_ENSURE( nResId, "Invalid Pool ID" );
333 0 : if( !nResId )
334 0 : return GetTxtCollFromPool( RES_POOLCOLL_STANDARD );
335 :
336 0 : ResId aResId( nResId + nId, *pSwResMgr );
337 0 : OUString aNm( aResId );
338 :
339 : // A Set for all to-be-set Attributes
340 0 : SwAttrSet aSet( GetAttrPool(), aTxtFmtCollSetRange );
341 0 : sal_uInt16 nParent = GetPoolParent( nId );
342 :
343 : {
344 :
345 : //FEATURE::CONDCOLL
346 0 : if(::IsConditionalByPoolId( nId ))
347 : pNewColl = new SwConditionTxtFmtColl( GetAttrPool(), aNm, !nParent
348 : ? mpDfltTxtFmtColl
349 0 : : GetTxtCollFromPool( nParent ));
350 : else
351 : //FEATURE::CONDCOLL
352 : pNewColl = new SwTxtFmtColl( GetAttrPool(), aNm, !nParent
353 : ? mpDfltTxtFmtColl
354 0 : : GetTxtCollFromPool( nParent ));
355 0 : pNewColl->SetPoolFmtId( nId );
356 0 : mpTxtFmtCollTbl->push_back( pNewColl );
357 : }
358 :
359 0 : bool bNoDefault = get( IDocumentSettingAccess::STYLES_NODEFAULT );
360 0 : if ( !bNoDefault )
361 : {
362 0 : switch( nId )
363 : {
364 : // General content forms
365 : case RES_POOLCOLL_STANDARD:
366 : /* koreans do not like SvxScriptItem(TRUE) */
367 0 : if (bRegardLanguage)
368 : {
369 0 : sal_uLong nAppLanguage = GetAppLanguage();
370 0 : if (GetDefaultFrameDirection(nAppLanguage) ==
371 : FRMDIR_HORI_RIGHT_TOP)
372 : {
373 0 : SvxAdjustItem aAdjust(SVX_ADJUST_RIGHT, RES_PARATR_ADJUST );
374 0 : aSet.Put(aAdjust);
375 : }
376 0 : if (nAppLanguage == LANGUAGE_KOREAN)
377 : {
378 0 : SvxScriptSpaceItem aScriptSpace(false, RES_PARATR_SCRIPTSPACE);
379 0 : aSet.Put(aScriptSpace);
380 : }
381 : }
382 0 : break;
383 :
384 : case RES_POOLCOLL_TEXT: // Text body
385 : {
386 : SvxLineSpacingItem aLSpc( LINE_SPACE_DEFAULT_HEIGHT,
387 0 : RES_PARATR_LINESPACING );
388 0 : SvxULSpaceItem aUL( 0, PT_7, RES_UL_SPACE );
389 0 : aLSpc.SetPropLineSpace( (const sal_uInt8) 120 );
390 0 : if( get(IDocumentSettingAccess::HTML_MODE) ) aUL.SetLower( HTML_PARSPACE );
391 0 : aSet.Put( aUL );
392 0 : aSet.Put( aLSpc );
393 : }
394 0 : break;
395 : case RES_POOLCOLL_TEXT_IDENT: // Text body indentation
396 : {
397 0 : SvxLRSpaceItem aLR( RES_LR_SPACE );
398 0 : aLR.SetTxtFirstLineOfst( GetMetricVal( CM_05 ));
399 0 : aSet.Put( aLR );
400 : }
401 0 : break;
402 : case RES_POOLCOLL_TEXT_NEGIDENT: // Text body neg. indentation
403 : {
404 0 : SvxLRSpaceItem aLR( RES_LR_SPACE );
405 0 : aLR.SetTxtFirstLineOfst( -(short)GetMetricVal( CM_05 ));
406 0 : aLR.SetTxtLeft( GetMetricVal( CM_1 ));
407 0 : SvxTabStopItem aTStops(RES_PARATR_TABSTOP); aTStops.Insert( SvxTabStop( 0 ));
408 :
409 0 : aSet.Put( aLR );
410 0 : aSet.Put( aTStops );
411 : }
412 0 : break;
413 : case RES_POOLCOLL_TEXT_MOVE: // Text body move
414 : {
415 0 : SvxLRSpaceItem aLR( RES_LR_SPACE );
416 0 : aLR.SetTxtLeft( GetMetricVal( CM_05 ));
417 0 : aSet.Put( aLR );
418 : }
419 0 : break;
420 :
421 : case RES_POOLCOLL_CONFRONTATION: // Text body confrontation
422 : {
423 0 : SvxLRSpaceItem aLR( RES_LR_SPACE );
424 0 : aLR.SetTxtFirstLineOfst( - short( GetMetricVal( CM_1 ) * 4 +
425 0 : GetMetricVal( CM_05)) );
426 0 : aLR.SetTxtLeft( GetMetricVal( CM_1 ) * 5 );
427 0 : SvxTabStopItem aTStops( RES_PARATR_TABSTOP ); aTStops.Insert( SvxTabStop( 0 ));
428 :
429 0 : aSet.Put( aLR );
430 0 : aSet.Put( aTStops );
431 : }
432 0 : break;
433 : case RES_POOLCOLL_MARGINAL: // Text body marginal
434 : {
435 0 : SvxLRSpaceItem aLR( RES_LR_SPACE );
436 0 : aLR.SetTxtLeft( GetMetricVal( CM_1 ) * 4 );
437 0 : aSet.Put( aLR );
438 : }
439 0 : break;
440 :
441 : case RES_POOLCOLL_HEADLINE_BASE: // Base headline
442 : {
443 : static const sal_uInt16 aFntInit[] = {
444 : DEFAULTFONT_LATIN_HEADING, RES_CHRATR_FONT,
445 : RES_CHRATR_LANGUAGE, LANGUAGE_ENGLISH_US,
446 : DEFAULTFONT_CJK_HEADING, RES_CHRATR_CJK_FONT,
447 : RES_CHRATR_CJK_LANGUAGE, LANGUAGE_ENGLISH_US,
448 : DEFAULTFONT_CTL_HEADING, RES_CHRATR_CTL_FONT,
449 : RES_CHRATR_CTL_LANGUAGE, LANGUAGE_ARABIC_SAUDI_ARABIA,
450 : 0
451 : };
452 :
453 0 : for( const sal_uInt16* pArr = aFntInit; *pArr; pArr += 4 )
454 : {
455 0 : sal_uInt16 nLng = ((SvxLanguageItem&)GetDefault( *(pArr+2) )).GetLanguage();
456 0 : if( LANGUAGE_DONTKNOW == nLng )
457 0 : nLng = *(pArr+3);
458 :
459 : Font aFnt( OutputDevice::GetDefaultFont( *pArr,
460 0 : nLng, DEFAULTFONT_FLAGS_ONLYONE ) );
461 :
462 0 : aSet.Put( SvxFontItem( aFnt.GetFamily(), aFnt.GetName(),
463 : OUString(), aFnt.GetPitch(),
464 0 : aFnt.GetCharSet(), *(pArr+1) ));
465 0 : }
466 :
467 0 : SvxFontHeightItem aFntSize( PT_14, 100, RES_CHRATR_FONTSIZE );
468 0 : SvxULSpaceItem aUL( PT_12, PT_6, RES_UL_SPACE );
469 0 : if( get(IDocumentSettingAccess::HTML_MODE) )
470 0 : aUL.SetLower( HTML_PARSPACE );
471 0 : aSet.Put( SvxFmtKeepItem( true, RES_KEEP ));
472 :
473 0 : pNewColl->SetNextTxtFmtColl( *GetTxtCollFromPool( RES_POOLCOLL_TEXT ));
474 :
475 0 : aSet.Put( aUL );
476 0 : SetAllScriptItem( aSet, aFntSize );
477 : }
478 0 : break;
479 :
480 : case RES_POOLCOLL_NUMBUL_BASE: // Base Numbering
481 0 : break;
482 :
483 : case RES_POOLCOLL_GREETING: // Greeting
484 : case RES_POOLCOLL_REGISTER_BASE: // Base indexes
485 : case RES_POOLCOLL_SIGNATURE: // Signatures
486 : case RES_POOLCOLL_TABLE: // Tabele content
487 : {
488 0 : SwFmtLineNumber aLN; aLN.SetCountLines( sal_False );
489 0 : aSet.Put( aLN );
490 : }
491 0 : break;
492 :
493 : case RES_POOLCOLL_HEADLINE1: // Headinline 1
494 : {
495 0 : SvxULSpaceItem aUL( PT_12, PT_6, RES_UL_SPACE );
496 0 : aSet.Put( aUL );
497 0 : lcl_SetHeadline( this, pNewColl, aSet, nOutLvlBits, 0, false );
498 : }
499 0 : break;
500 : case RES_POOLCOLL_HEADLINE2: // Headinline 2
501 : {
502 0 : SvxULSpaceItem aUL( PT_10, PT_6, RES_UL_SPACE );
503 0 : aSet.Put( aUL );
504 0 : lcl_SetHeadline( this, pNewColl, aSet, nOutLvlBits, 1, false );
505 : }
506 0 : break;
507 : case RES_POOLCOLL_HEADLINE3: // Headinline 3
508 : {
509 0 : SvxULSpaceItem aUL( PT_7, PT_6, RES_UL_SPACE );
510 0 : Color aCol( COL_GRAY );
511 0 : aSet.Put( aUL );
512 0 : aSet.Put( SvxColorItem ( aCol, RES_CHRATR_COLOR ) );
513 0 : lcl_SetHeadline( this, pNewColl, aSet, nOutLvlBits, 2, false );
514 : }
515 0 : break;
516 : case RES_POOLCOLL_HEADLINE4: // Headinline 4
517 : {
518 0 : SvxULSpaceItem aUL( PT_6, PT_6, RES_UL_SPACE );
519 0 : Color aCol( COL_GRAY );
520 0 : aSet.Put( aUL );
521 0 : aSet.Put( SvxColorItem ( aCol, RES_CHRATR_COLOR ) );
522 0 : lcl_SetHeadline( this, pNewColl, aSet, nOutLvlBits, 3, true );
523 : }
524 0 : break;
525 : case RES_POOLCOLL_HEADLINE5: // Headinline 5
526 : {
527 0 : SvxULSpaceItem aUL( PT_6, PT_3, RES_UL_SPACE );
528 0 : aSet.Put( aUL );
529 0 : lcl_SetHeadline( this, pNewColl, aSet, nOutLvlBits, 4, false );
530 : }
531 0 : break;
532 : case RES_POOLCOLL_HEADLINE6: // Headinline 6
533 : {
534 0 : SvxULSpaceItem aUL( PT_3, PT_3, RES_UL_SPACE );
535 0 : aSet.Put( aUL );
536 0 : lcl_SetHeadline( this, pNewColl, aSet, nOutLvlBits, 5, true );
537 : }
538 0 : break;
539 : case RES_POOLCOLL_HEADLINE7: // Headinline 7
540 : {
541 0 : SvxULSpaceItem aUL( PT_3, PT_3, RES_UL_SPACE );
542 0 : aSet.Put( aUL );
543 0 : lcl_SetHeadline( this, pNewColl, aSet, nOutLvlBits, 6, false );
544 : }
545 0 : break;
546 : case RES_POOLCOLL_HEADLINE8: // Headinline 8
547 : {
548 0 : SvxULSpaceItem aUL( PT_3, PT_3, RES_UL_SPACE );
549 0 : aSet.Put( aUL );
550 0 : lcl_SetHeadline( this, pNewColl, aSet, nOutLvlBits, 7, true );
551 : }
552 0 : break;
553 : case RES_POOLCOLL_HEADLINE9: // Headinline 9
554 : {
555 0 : SvxULSpaceItem aUL( PT_3, PT_3, RES_UL_SPACE );
556 0 : aSet.Put( aUL );
557 0 : lcl_SetHeadline( this, pNewColl, aSet, nOutLvlBits, 8, false );
558 : }
559 0 : break;
560 : case RES_POOLCOLL_HEADLINE10: // Headinline 10
561 : {
562 0 : SvxULSpaceItem aUL( PT_3, PT_3, RES_UL_SPACE );
563 0 : aSet.Put( aUL );
564 0 : lcl_SetHeadline( this, pNewColl, aSet, nOutLvlBits, 9, false );
565 : }
566 0 : break;
567 :
568 : // Special sections:
569 : // Header
570 : case RES_POOLCOLL_HEADER:
571 : case RES_POOLCOLL_HEADERL:
572 : case RES_POOLCOLL_HEADERR:
573 : // Footer
574 : case RES_POOLCOLL_FOOTER:
575 : case RES_POOLCOLL_FOOTERL:
576 : case RES_POOLCOLL_FOOTERR:
577 : {
578 0 : SwFmtLineNumber aLN; aLN.SetCountLines( sal_False );
579 0 : aSet.Put( aLN );
580 :
581 0 : long nRightMargin = lcl_GetRightMargin( *this );
582 :
583 0 : SvxTabStopItem aTStops( 0, 0, SVX_TAB_ADJUST_DEFAULT, RES_PARATR_TABSTOP );
584 0 : aTStops.Insert( SvxTabStop( nRightMargin / 2, SVX_TAB_ADJUST_CENTER ) );
585 0 : aTStops.Insert( SvxTabStop( nRightMargin, SVX_TAB_ADJUST_RIGHT ) );
586 :
587 0 : aSet.Put( aTStops );
588 : }
589 0 : break;
590 :
591 : case RES_POOLCOLL_TABLE_HDLN:
592 : {
593 0 : SetAllScriptItem( aSet, SvxWeightItem( WEIGHT_BOLD, RES_CHRATR_WEIGHT ) );
594 0 : aSet.Put( SvxAdjustItem( SVX_ADJUST_CENTER, RES_PARATR_ADJUST ) );
595 0 : SwFmtLineNumber aLN; aLN.SetCountLines( sal_False );
596 0 : aSet.Put( aLN );
597 : }
598 0 : break;
599 :
600 : case RES_POOLCOLL_FOOTNOTE: // paragraph style Footnote
601 : case RES_POOLCOLL_ENDNOTE: // paragraph style Endnote
602 : {
603 0 : SvxLRSpaceItem aLR( RES_LR_SPACE );
604 0 : aLR.SetTxtFirstLineOfst( -(short)( GetMetricVal( CM_05 ) + GetMetricVal( CM_01 ) ) );
605 0 : aLR.SetTxtLeft( GetMetricVal( CM_05 ) + GetMetricVal( CM_01 ) );
606 0 : SetAllScriptItem( aSet, SvxFontHeightItem( PT_10, 100, RES_CHRATR_FONTSIZE ) );
607 0 : aSet.Put( aLR );
608 0 : SwFmtLineNumber aLN; aLN.SetCountLines( sal_False );
609 0 : aSet.Put( aLN );
610 : }
611 0 : break;
612 :
613 : case RES_POOLCOLL_LABEL: // basic caption
614 : {
615 0 : SvxULSpaceItem aUL( RES_UL_SPACE ); aUL.SetUpper( PT_6 ); aUL.SetLower( PT_6 );
616 0 : aSet.Put( aUL );
617 0 : SetAllScriptItem( aSet, SvxPostureItem( ITALIC_NORMAL, RES_CHRATR_POSTURE ) );
618 0 : SetAllScriptItem( aSet, SvxFontHeightItem( PT_10, 100, RES_CHRATR_FONTSIZE ) );
619 0 : SwFmtLineNumber aLN; aLN.SetCountLines( sal_False );
620 0 : aSet.Put( aLN );
621 : }
622 0 : break;
623 :
624 : case RES_POOLCOLL_FRAME: // Frame content
625 : case RES_POOLCOLL_LABEL_ABB: // caption image
626 : case RES_POOLCOLL_LABEL_TABLE: // caption table
627 : case RES_POOLCOLL_LABEL_FRAME: // caption frame
628 : case RES_POOLCOLL_LABEL_DRAWING: // caption drawing
629 0 : break;
630 :
631 : case RES_POOLCOLL_JAKETADRESS: // envelope address
632 : {
633 0 : SvxULSpaceItem aUL( RES_UL_SPACE ); aUL.SetLower( PT_3 );
634 0 : aSet.Put( aUL );
635 0 : SwFmtLineNumber aLN; aLN.SetCountLines( sal_False );
636 0 : aSet.Put( aLN );
637 : }
638 0 : break;
639 :
640 : case RES_POOLCOLL_SENDADRESS: // Sender address
641 : {
642 0 : if( get(IDocumentSettingAccess::HTML_MODE) )
643 0 : SetAllScriptItem( aSet, SvxPostureItem(ITALIC_NORMAL, RES_CHRATR_POSTURE) );
644 : else
645 : {
646 0 : SvxULSpaceItem aUL( RES_UL_SPACE ); aUL.SetLower( PT_3 );
647 0 : aSet.Put( aUL );
648 : }
649 0 : SwFmtLineNumber aLN; aLN.SetCountLines( sal_False );
650 0 : aSet.Put( aLN );
651 : }
652 0 : break;
653 :
654 : // User defined indexes:
655 : case RES_POOLCOLL_TOX_USERH: // Header
656 0 : lcl_SetRegister( this, aSet, 0, true, false );
657 : {
658 0 : SwFmtLineNumber aLN; aLN.SetCountLines( sal_False );
659 0 : aSet.Put( aLN );
660 : }
661 0 : break;
662 : case RES_POOLCOLL_TOX_USER1: // 1. Level
663 0 : lcl_SetRegister( this, aSet, 0, false, true );
664 0 : break;
665 : case RES_POOLCOLL_TOX_USER2: // 2. Level
666 0 : lcl_SetRegister( this, aSet, 1, false, true );
667 0 : break;
668 : case RES_POOLCOLL_TOX_USER3: // 3. Level
669 0 : lcl_SetRegister( this, aSet, 2, false, true );
670 0 : break;
671 : case RES_POOLCOLL_TOX_USER4: // 4. Level
672 0 : lcl_SetRegister( this, aSet, 3, false, true );
673 0 : break;
674 : case RES_POOLCOLL_TOX_USER5: // 5. Level
675 0 : lcl_SetRegister( this, aSet, 4, false, true );
676 0 : break;
677 : case RES_POOLCOLL_TOX_USER6: // 6. Level
678 0 : lcl_SetRegister( this, aSet, 5, false, true );
679 0 : break;
680 : case RES_POOLCOLL_TOX_USER7: // 7. Level
681 0 : lcl_SetRegister( this, aSet, 6, false, true );
682 0 : break;
683 : case RES_POOLCOLL_TOX_USER8: // 8. Level
684 0 : lcl_SetRegister( this, aSet, 7, false, true );
685 0 : break;
686 : case RES_POOLCOLL_TOX_USER9: // 9. Level
687 0 : lcl_SetRegister( this, aSet, 8, false, true );
688 0 : break;
689 : case RES_POOLCOLL_TOX_USER10: // 10. Level
690 0 : lcl_SetRegister( this, aSet, 9, false, true );
691 0 : break;
692 :
693 : // Index
694 : case RES_POOLCOLL_TOX_IDXH: // Header
695 0 : lcl_SetRegister( this, aSet, 0, true, false );
696 : {
697 0 : SwFmtLineNumber aLN; aLN.SetCountLines( sal_False );
698 0 : aSet.Put( aLN );
699 : }
700 0 : break;
701 : case RES_POOLCOLL_TOX_IDX1: // 1. Level
702 0 : lcl_SetRegister( this, aSet, 0, false, false );
703 0 : break;
704 : case RES_POOLCOLL_TOX_IDX2: // 2. Level
705 0 : lcl_SetRegister( this, aSet, 1, false, false );
706 0 : break;
707 : case RES_POOLCOLL_TOX_IDX3: // 3. Level
708 0 : lcl_SetRegister( this, aSet, 2, false, false );
709 0 : break;
710 : case RES_POOLCOLL_TOX_IDXBREAK: // Trenner
711 0 : lcl_SetRegister( this, aSet, 0, false, false );
712 0 : break;
713 :
714 : // Table of Content
715 : case RES_POOLCOLL_TOX_CNTNTH: // Header
716 0 : lcl_SetRegister( this, aSet, 0, true, false );
717 : {
718 0 : SwFmtLineNumber aLN; aLN.SetCountLines( sal_False );
719 0 : aSet.Put( aLN );
720 : }
721 0 : break;
722 : case RES_POOLCOLL_TOX_CNTNT1: // 1. Level
723 0 : lcl_SetRegister( this, aSet, 0, false, true );
724 0 : break;
725 : case RES_POOLCOLL_TOX_CNTNT2: // 2. Level
726 0 : lcl_SetRegister( this, aSet, 1, false, true );
727 0 : break;
728 : case RES_POOLCOLL_TOX_CNTNT3: // 3. Level
729 0 : lcl_SetRegister( this, aSet, 2, false, true );
730 0 : break;
731 : case RES_POOLCOLL_TOX_CNTNT4: // 4. Level
732 0 : lcl_SetRegister( this, aSet, 3, false, true );
733 0 : break;
734 : case RES_POOLCOLL_TOX_CNTNT5: // 5. Level
735 0 : lcl_SetRegister( this, aSet, 4, false, true );
736 0 : break;
737 : case RES_POOLCOLL_TOX_CNTNT6: // 6. Level
738 0 : lcl_SetRegister( this, aSet, 5, false, true );
739 0 : break;
740 : case RES_POOLCOLL_TOX_CNTNT7: // 7. Level
741 0 : lcl_SetRegister( this, aSet, 6, false, true );
742 0 : break;
743 : case RES_POOLCOLL_TOX_CNTNT8: // 8. Level
744 0 : lcl_SetRegister( this, aSet, 7, false, true );
745 0 : break;
746 : case RES_POOLCOLL_TOX_CNTNT9: // 9. Level
747 0 : lcl_SetRegister( this, aSet, 8, false, true );
748 0 : break;
749 : case RES_POOLCOLL_TOX_CNTNT10: // 10. Level
750 0 : lcl_SetRegister( this, aSet, 9, false, true );
751 0 : break;
752 :
753 : case RES_POOLCOLL_TOX_ILLUSH:
754 : case RES_POOLCOLL_TOX_OBJECTH:
755 : case RES_POOLCOLL_TOX_TABLESH:
756 : case RES_POOLCOLL_TOX_AUTHORITIESH:
757 0 : lcl_SetRegister( this, aSet, 0, true, false );
758 : {
759 0 : SwFmtLineNumber aLN; aLN.SetCountLines( sal_False );
760 0 : aSet.Put( aLN );
761 : }
762 0 : break;
763 : case RES_POOLCOLL_TOX_ILLUS1:
764 : case RES_POOLCOLL_TOX_OBJECT1:
765 : case RES_POOLCOLL_TOX_TABLES1:
766 : case RES_POOLCOLL_TOX_AUTHORITIES1:
767 0 : lcl_SetRegister( this, aSet, 0, false, true );
768 0 : break;
769 :
770 : case RES_POOLCOLL_NUM_LEVEL1S:
771 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_LEVEL1,
772 0 : lNumFirstLineOffset, SwNumRule::GetNumIndent( 0 ),
773 0 : PT_12, PT_6 );
774 0 : break;
775 : case RES_POOLCOLL_NUM_LEVEL1:
776 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_LEVEL1,
777 0 : lNumFirstLineOffset, SwNumRule::GetNumIndent( 0 ),
778 0 : 0, PT_6 );
779 0 : break;
780 : case RES_POOLCOLL_NUM_LEVEL1E:
781 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_LEVEL1,
782 0 : lNumFirstLineOffset, SwNumRule::GetNumIndent( 0 ),
783 0 : 0, PT_12 );
784 0 : break;
785 : case RES_POOLCOLL_NUM_NONUM1:
786 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_NONUM1,
787 0 : 0, SwNumRule::GetNumIndent( 0 ), 0, PT_6 );
788 0 : break;
789 : case RES_POOLCOLL_NUM_LEVEL2S:
790 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_LEVEL2,
791 0 : lNumFirstLineOffset, SwNumRule::GetNumIndent( 1 ),
792 0 : PT_12, PT_6 );
793 0 : break;
794 : case RES_POOLCOLL_NUM_LEVEL2:
795 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_LEVEL2,
796 0 : lNumFirstLineOffset, SwNumRule::GetNumIndent( 1 ),
797 0 : 0, PT_6 );
798 0 : break;
799 : case RES_POOLCOLL_NUM_LEVEL2E:
800 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_LEVEL2,
801 0 : lNumFirstLineOffset, SwNumRule::GetNumIndent( 1 ),
802 0 : 0, PT_12 );
803 0 : break;
804 : case RES_POOLCOLL_NUM_NONUM2:
805 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_NONUM2,
806 0 : 0, SwNumRule::GetNumIndent( 1 ), 0, PT_6 );
807 0 : break;
808 : case RES_POOLCOLL_NUM_LEVEL3S:
809 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_LEVEL3,
810 0 : lNumFirstLineOffset, SwNumRule::GetNumIndent( 2 ),
811 0 : PT_12, PT_6 );
812 0 : break;
813 : case RES_POOLCOLL_NUM_LEVEL3:
814 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_LEVEL3,
815 0 : lNumFirstLineOffset, SwNumRule::GetNumIndent( 2 ),
816 0 : 0, PT_6 );
817 0 : break;
818 : case RES_POOLCOLL_NUM_LEVEL3E:
819 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_LEVEL3,
820 0 : lNumFirstLineOffset, SwNumRule::GetNumIndent( 2 ),
821 0 : 0, PT_12 );
822 0 : break;
823 : case RES_POOLCOLL_NUM_NONUM3:
824 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_NONUM3,
825 0 : 0, SwNumRule::GetNumIndent( 2 ), 0, PT_6 );
826 0 : break;
827 : case RES_POOLCOLL_NUM_LEVEL4S:
828 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_LEVEL4,
829 0 : lNumFirstLineOffset, SwNumRule::GetNumIndent( 3 ),
830 0 : PT_12, PT_6 );
831 0 : break;
832 : case RES_POOLCOLL_NUM_LEVEL4:
833 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_LEVEL4,
834 0 : lNumFirstLineOffset, SwNumRule::GetNumIndent( 3 ),
835 0 : 0, PT_6 );
836 0 : break;
837 : case RES_POOLCOLL_NUM_LEVEL4E:
838 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_LEVEL4,
839 0 : lNumFirstLineOffset, SwNumRule::GetNumIndent( 3 ),
840 0 : 0, PT_12 );
841 0 : break;
842 : case RES_POOLCOLL_NUM_NONUM4:
843 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_NONUM4,
844 0 : 0, SwNumRule::GetNumIndent( 3 ), 0, PT_6 );
845 0 : break;
846 : case RES_POOLCOLL_NUM_LEVEL5S:
847 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_LEVEL5,
848 0 : lNumFirstLineOffset, SwNumRule::GetNumIndent( 4 ),
849 0 : PT_12, PT_6 );
850 0 : break;
851 : case RES_POOLCOLL_NUM_LEVEL5:
852 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_LEVEL5,
853 0 : lNumFirstLineOffset, SwNumRule::GetNumIndent( 4 ),
854 0 : 0, PT_6 );
855 0 : break;
856 : case RES_POOLCOLL_NUM_LEVEL5E:
857 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_LEVEL5,
858 0 : lNumFirstLineOffset, SwNumRule::GetNumIndent( 4 ),
859 0 : 0, PT_12 );
860 0 : break;
861 : case RES_POOLCOLL_NUM_NONUM5:
862 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_NUM_NONUM5,
863 0 : 0, SwNumRule::GetNumIndent( 4 ), 0, PT_6 );
864 0 : break;
865 :
866 : case RES_POOLCOLL_BUL_LEVEL1S:
867 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_LEVEL1,
868 0 : lBullFirstLineOffset, SwNumRule::GetBullIndent( 0 ),
869 0 : PT_12, PT_6 );
870 0 : break;
871 : case RES_POOLCOLL_BUL_LEVEL1:
872 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_LEVEL1,
873 0 : lBullFirstLineOffset, SwNumRule::GetBullIndent( 0 ),
874 0 : 0, PT_6 );
875 0 : break;
876 : case RES_POOLCOLL_BUL_LEVEL1E:
877 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_LEVEL1,
878 0 : lBullFirstLineOffset, SwNumRule::GetBullIndent( 0 ),
879 0 : 0, PT_12 );
880 0 : break;
881 : case RES_POOLCOLL_BUL_NONUM1:
882 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_NONUM1,
883 0 : 0, SwNumRule::GetBullIndent( 0 ), 0, PT_6 );
884 0 : break;
885 : case RES_POOLCOLL_BUL_LEVEL2S:
886 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_LEVEL2,
887 0 : lBullFirstLineOffset, SwNumRule::GetBullIndent( 1 ),
888 0 : PT_12, PT_6 );
889 0 : break;
890 : case RES_POOLCOLL_BUL_LEVEL2:
891 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_LEVEL2,
892 0 : lBullFirstLineOffset, SwNumRule::GetBullIndent( 1 ),
893 0 : 0, PT_6 );
894 0 : break;
895 : case RES_POOLCOLL_BUL_LEVEL2E:
896 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_LEVEL2,
897 0 : lBullFirstLineOffset, SwNumRule::GetBullIndent( 1 ),
898 0 : 0, PT_12 );
899 0 : break;
900 : case RES_POOLCOLL_BUL_NONUM2:
901 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_NONUM2,
902 0 : 0, SwNumRule::GetBullIndent( 1 ), 0, PT_6 );
903 0 : break;
904 : case RES_POOLCOLL_BUL_LEVEL3S:
905 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_LEVEL3,
906 0 : lBullFirstLineOffset, SwNumRule::GetBullIndent( 2 ),
907 0 : PT_12, PT_6 );
908 0 : break;
909 : case RES_POOLCOLL_BUL_LEVEL3:
910 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_LEVEL3,
911 0 : lBullFirstLineOffset, SwNumRule::GetBullIndent( 2 ),
912 0 : 0, PT_6 );
913 0 : break;
914 : case RES_POOLCOLL_BUL_LEVEL3E:
915 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_LEVEL3,
916 0 : lBullFirstLineOffset, SwNumRule::GetBullIndent( 2 ),
917 0 : 0, PT_12 );
918 0 : break;
919 : case RES_POOLCOLL_BUL_NONUM3:
920 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_NONUM3,
921 0 : 0, SwNumRule::GetBullIndent( 2 ), 0, PT_6 );
922 0 : break;
923 : case RES_POOLCOLL_BUL_LEVEL4S:
924 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_LEVEL4,
925 0 : lBullFirstLineOffset, SwNumRule::GetBullIndent( 3 ),
926 0 : PT_12, PT_6 );
927 0 : break;
928 : case RES_POOLCOLL_BUL_LEVEL4:
929 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_LEVEL4,
930 0 : lBullFirstLineOffset, SwNumRule::GetBullIndent( 3 ),
931 0 : 0, PT_6 );
932 0 : break;
933 : case RES_POOLCOLL_BUL_LEVEL4E:
934 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_LEVEL4,
935 0 : lBullFirstLineOffset, SwNumRule::GetBullIndent( 3 ),
936 0 : 0, PT_12 );
937 0 : break;
938 : case RES_POOLCOLL_BUL_NONUM4:
939 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_NONUM4,
940 0 : 0, SwNumRule::GetBullIndent( 3 ), 0, PT_6 );
941 0 : break;
942 : case RES_POOLCOLL_BUL_LEVEL5S:
943 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_LEVEL5,
944 0 : lBullFirstLineOffset, SwNumRule::GetBullIndent( 4 ),
945 0 : PT_12, PT_6 );
946 0 : break;
947 : case RES_POOLCOLL_BUL_LEVEL5:
948 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_LEVEL5,
949 0 : lBullFirstLineOffset, SwNumRule::GetBullIndent( 4 ),
950 0 : 0, PT_6 );
951 0 : break;
952 : case RES_POOLCOLL_BUL_LEVEL5E:
953 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_LEVEL5,
954 0 : lBullFirstLineOffset, SwNumRule::GetBullIndent( 4 ),
955 0 : 0, PT_12 );
956 0 : break;
957 : case RES_POOLCOLL_BUL_NONUM5:
958 : lcl_SetNumBul( this, pNewColl, aSet, RES_POOLCOLL_BUL_NONUM5,
959 0 : 0, SwNumRule::GetBullIndent( 4 ), 0, PT_6 );
960 0 : break;
961 :
962 : case RES_POOLCOLL_DOC_TITEL: // Document Title
963 : {
964 0 : SetAllScriptItem( aSet, SvxWeightItem( WEIGHT_BOLD, RES_CHRATR_WEIGHT ) );
965 0 : SetAllScriptItem( aSet, SvxFontHeightItem( PT_28, 100, RES_CHRATR_FONTSIZE ) );
966 :
967 0 : aSet.Put( SvxAdjustItem( SVX_ADJUST_CENTER, RES_PARATR_ADJUST ) );
968 :
969 0 : pNewColl->SetNextTxtFmtColl( *GetTxtCollFromPool( RES_POOLCOLL_TEXT ));
970 : }
971 0 : break;
972 :
973 : case RES_POOLCOLL_DOC_SUBTITEL: // Document subtitle
974 : {
975 0 : SvxULSpaceItem aUL( PT_3, PT_6, RES_UL_SPACE );
976 0 : aSet.Put( aUL );
977 0 : SetAllScriptItem( aSet, SvxFontHeightItem( PT_18, 100, RES_CHRATR_FONTSIZE ));
978 :
979 0 : aSet.Put( SvxAdjustItem( SVX_ADJUST_CENTER, RES_PARATR_ADJUST ));
980 :
981 : pNewColl->SetNextTxtFmtColl( *GetTxtCollFromPool(
982 0 : RES_POOLCOLL_TEXT ));
983 : }
984 0 : break;
985 :
986 : case RES_POOLCOLL_HTML_BLOCKQUOTE:
987 : {
988 0 : SvxLRSpaceItem aLR( RES_LR_SPACE );
989 0 : aLR.SetLeft( GetMetricVal( CM_1 ));
990 0 : aLR.SetRight( GetMetricVal( CM_1 ));
991 0 : aSet.Put( aLR );
992 0 : SvxULSpaceItem aUL( RES_UL_SPACE );
993 0 : aUL = pNewColl->GetULSpace();
994 0 : aUL.SetLower( HTML_PARSPACE );
995 0 : aSet.Put( aUL);
996 : }
997 0 : break;
998 :
999 : case RES_POOLCOLL_HTML_PRE:
1000 : {
1001 0 : ::lcl_SetDfltFont( DEFAULTFONT_FIXED, aSet );
1002 :
1003 : // WORKAROUND: Set PRE to 10pt
1004 0 : SetAllScriptItem( aSet, SvxFontHeightItem(PT_10, 100, RES_CHRATR_FONTSIZE) );
1005 :
1006 : // The lower paragraph distance is set explicitly (makes
1007 : // assigning hard attributes easier)
1008 0 : SvxULSpaceItem aULSpaceItem( RES_UL_SPACE );
1009 0 : aULSpaceItem = pNewColl->GetULSpace();
1010 0 : aULSpaceItem.SetLower( 0 );
1011 0 : aSet.Put( aULSpaceItem );
1012 : }
1013 0 : break;
1014 :
1015 : case RES_POOLCOLL_HTML_HR:
1016 : {
1017 0 : SvxBoxItem aBox( RES_BOX );
1018 0 : Color aColor( COL_GRAY );
1019 0 : SvxBorderLine aNew(&aColor, 1, table::BorderLineStyle::DOUBLE);
1020 0 : aBox.SetLine( &aNew, BOX_LINE_BOTTOM );
1021 :
1022 0 : aSet.Put( aBox );
1023 0 : aSet.Put( SwParaConnectBorderItem( sal_False ) );
1024 0 : SetAllScriptItem( aSet, SvxFontHeightItem(120, 100, RES_CHRATR_FONTSIZE) );
1025 :
1026 0 : SvxULSpaceItem aUL( RES_UL_SPACE );
1027 : {
1028 : pNewColl->SetNextTxtFmtColl( *GetTxtCollFromPool(
1029 0 : RES_POOLCOLL_TEXT ));
1030 0 : aUL = pNewColl->GetULSpace();
1031 : }
1032 0 : aUL.SetLower( HTML_PARSPACE );
1033 0 : aSet.Put( aUL);
1034 0 : SwFmtLineNumber aLN; aLN.SetCountLines( sal_False );
1035 0 : aSet.Put( aLN );
1036 : }
1037 0 : break;
1038 :
1039 : case RES_POOLCOLL_HTML_DD:
1040 : {
1041 0 : SvxLRSpaceItem aLR( RES_LR_SPACE );
1042 0 : aLR = pNewColl->GetLRSpace();
1043 : // We indent by 1 cm. The IDs are always 2 away from each other!
1044 0 : aLR.SetLeft( GetMetricVal( CM_1 ));
1045 0 : aSet.Put( aLR );
1046 : }
1047 0 : break;
1048 : case RES_POOLCOLL_HTML_DT:
1049 : {
1050 0 : SvxLRSpaceItem aLR( RES_LR_SPACE );
1051 : {
1052 : pNewColl->SetNextTxtFmtColl( *GetTxtCollFromPool(
1053 0 : RES_POOLCOLL_HTML_DD ));
1054 0 : aLR = pNewColl->GetLRSpace();
1055 : }
1056 : // We indent by 0 cm. The IDs are always 2 away from each other!
1057 0 : aLR.SetLeft( 0 );
1058 0 : aSet.Put( aLR );
1059 : }
1060 0 : break;
1061 : }
1062 : }
1063 :
1064 0 : if( aSet.Count() )
1065 : {
1066 : {
1067 0 : pNewColl->SetFmtAttr( aSet );
1068 : }
1069 : }
1070 0 : return pNewColl;
1071 : }
1072 :
1073 : /// Check if this AutoCollection is already/still in use in this Document
1074 0 : bool SwDoc::IsPoolTxtCollUsed( sal_uInt16 nId ) const
1075 : {
1076 : OSL_ENSURE(
1077 : (RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END) ||
1078 : (RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END) ||
1079 : (RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END) ||
1080 : (RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END) ||
1081 : (RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END) ||
1082 : (RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END),
1083 : "Wrong AutoFormat Id" );
1084 :
1085 0 : SwTxtFmtColl* pNewColl = 0;
1086 0 : bool bFnd = false;
1087 0 : for( sal_uInt16 n = 0; !bFnd && n < mpTxtFmtCollTbl->size(); ++n )
1088 : {
1089 0 : pNewColl = (*mpTxtFmtCollTbl)[ n ];
1090 0 : if( nId == pNewColl->GetPoolFmtId() )
1091 0 : bFnd = true;
1092 : }
1093 :
1094 0 : if( !bFnd || !pNewColl->GetDepends() )
1095 0 : return false;
1096 :
1097 0 : SwAutoFmtGetDocNode aGetHt( &GetNodes() );
1098 0 : return !pNewColl->GetInfo( aGetHt );
1099 : }
1100 :
1101 : /// Return the AutomaticFormat with the supplied Id. If it doesn't
1102 : /// exist, create it.
1103 0 : SwFmt* SwDoc::GetFmtFromPool( sal_uInt16 nId )
1104 : {
1105 0 : SwFmt *pNewFmt = 0;
1106 0 : SwFmt *pDeriveFmt = 0;
1107 :
1108 : SwFmtsBase* pArray[ 2 ];
1109 0 : sal_uInt16 nArrCnt = 1, nRCId = 0;
1110 0 : sal_uInt16* pWhichRange = 0;
1111 :
1112 0 : switch( nId & (COLL_GET_RANGE_BITS + POOLGRP_NOCOLLID) )
1113 : {
1114 : case POOLGRP_CHARFMT:
1115 : {
1116 0 : pArray[0] = mpCharFmtTbl;
1117 0 : pDeriveFmt = mpDfltCharFmt;
1118 :
1119 0 : if( nId > RES_POOLCHR_NORMAL_END )
1120 0 : nRCId = RC_POOLCHRFMT_HTML_BEGIN - RES_POOLCHR_HTML_BEGIN;
1121 : else
1122 0 : nRCId = RC_POOLCHRFMT_BEGIN - RES_POOLCHR_BEGIN;
1123 0 : pWhichRange = aCharFmtSetRange;
1124 :
1125 : // Fault: unknown Format, but a CharFormat
1126 : // -> return the first one
1127 0 : if( RES_POOLCHR_BEGIN > nId || nId >= RES_POOLCHR_END )
1128 : {
1129 : OSL_ENSURE( !this, "invalid Id" );
1130 0 : nId = RES_POOLCHR_BEGIN;
1131 : }
1132 : }
1133 0 : break;
1134 : case POOLGRP_FRAMEFMT:
1135 : {
1136 0 : pArray[0] = mpFrmFmtTbl;
1137 0 : pArray[1] = mpSpzFrmFmtTbl;
1138 0 : pDeriveFmt = mpDfltFrmFmt;
1139 0 : nArrCnt = 2;
1140 0 : nRCId = RC_POOLFRMFMT_BEGIN - RES_POOLFRM_BEGIN;
1141 0 : pWhichRange = aFrmFmtSetRange;
1142 :
1143 : // Fault: unknown Format, but a FrameFormat
1144 : // -> return the first one
1145 0 : if( RES_POOLFRM_BEGIN > nId || nId >= RES_POOLFRM_END )
1146 : {
1147 : OSL_ENSURE( !this, "invalid Id" );
1148 0 : nId = RES_POOLFRM_BEGIN;
1149 : }
1150 : }
1151 0 : break;
1152 :
1153 : default:
1154 : // Fault, unknown Format
1155 : OSL_ENSURE( nId, "invalid Id" );
1156 0 : return 0;
1157 : }
1158 : OSL_ENSURE( nRCId, "invalid Id" );
1159 :
1160 0 : while( nArrCnt-- )
1161 0 : for( sal_uInt16 n = 0; n < (*pArray[nArrCnt]).GetFmtCount(); ++n )
1162 0 : if( nId == ( pNewFmt = (*pArray[ nArrCnt ] ).GetFmt( n ) )->
1163 0 : GetPoolFmtId() )
1164 : {
1165 0 : return pNewFmt;
1166 : }
1167 :
1168 0 : ResId aResId( nRCId + nId, *pSwResMgr );
1169 0 : OUString aNm( aResId );
1170 0 : SwAttrSet aSet( GetAttrPool(), pWhichRange );
1171 :
1172 : {
1173 0 : bool bIsModified = IsModified();
1174 :
1175 : {
1176 0 : ::sw::UndoGuard const undoGuard(GetIDocumentUndoRedo());
1177 0 : switch (nId & (COLL_GET_RANGE_BITS + POOLGRP_NOCOLLID) )
1178 : {
1179 : case POOLGRP_CHARFMT:
1180 0 : pNewFmt = _MakeCharFmt(aNm, pDeriveFmt, false, true);
1181 0 : break;
1182 : case POOLGRP_FRAMEFMT:
1183 0 : pNewFmt = _MakeFrmFmt(aNm, pDeriveFmt, false, true);
1184 0 : break;
1185 : default:
1186 0 : break;
1187 0 : }
1188 : }
1189 :
1190 0 : if( !bIsModified )
1191 0 : ResetModified();
1192 0 : pNewFmt->SetPoolFmtId( nId );
1193 0 : pNewFmt->SetAuto( false ); // no AutoFormat
1194 : }
1195 :
1196 0 : switch( nId )
1197 : {
1198 : case RES_POOLCHR_FOOTNOTE: // Footnote
1199 : case RES_POOLCHR_PAGENO: // Page/Field
1200 : case RES_POOLCHR_LABEL: // Label
1201 : case RES_POOLCHR_DROPCAPS: // Dropcaps
1202 : case RES_POOLCHR_NUM_LEVEL: // Numbering level
1203 : case RES_POOLCHR_TOXJUMP: // Table of contents jump
1204 : case RES_POOLCHR_ENDNOTE: // Endnote
1205 : case RES_POOLCHR_LINENUM: // Line numbering
1206 0 : break;
1207 :
1208 : case RES_POOLCHR_ENDNOTE_ANCHOR: // Endnote anchor
1209 : case RES_POOLCHR_FOOTNOTE_ANCHOR: // Footnote anchor
1210 : {
1211 0 : aSet.Put( SvxEscapementItem( DFLT_ESC_AUTO_SUPER, 58, RES_CHRATR_ESCAPEMENT ) );
1212 : }
1213 0 : break;
1214 :
1215 : case RES_POOLCHR_BUL_LEVEL: // Bullet character
1216 : {
1217 0 : const Font& rBulletFont = numfunc::GetDefBulletFont();
1218 : SetAllScriptItem( aSet, SvxFontItem( rBulletFont.GetFamily(),
1219 0 : rBulletFont.GetName(), rBulletFont.GetStyleName(),
1220 0 : rBulletFont.GetPitch(), rBulletFont.GetCharSet(), RES_CHRATR_FONT ));
1221 : }
1222 0 : break;
1223 :
1224 : case RES_POOLCHR_INET_NORMAL:
1225 : {
1226 0 : Color aCol( COL_BLUE );
1227 0 : aSet.Put( SvxColorItem( aCol, RES_CHRATR_COLOR ) );
1228 0 : aSet.Put( SvxUnderlineItem( UNDERLINE_SINGLE, RES_CHRATR_UNDERLINE ) );
1229 : // i40133: patch submitted by rail: set language to 'none' to prevent spell checking:
1230 0 : aSet.Put( SvxLanguageItem( LANGUAGE_NONE, RES_CHRATR_LANGUAGE ) );
1231 0 : aSet.Put( SvxLanguageItem( LANGUAGE_NONE, RES_CHRATR_CJK_LANGUAGE ) );
1232 0 : aSet.Put( SvxLanguageItem( LANGUAGE_NONE, RES_CHRATR_CTL_LANGUAGE ) );
1233 : }
1234 0 : break;
1235 : case RES_POOLCHR_INET_VISIT:
1236 : {
1237 0 : Color aCol( COL_RED );
1238 0 : aSet.Put( SvxColorItem( aCol, RES_CHRATR_COLOR ) );
1239 0 : aSet.Put( SvxUnderlineItem( UNDERLINE_SINGLE, RES_CHRATR_UNDERLINE ) );
1240 0 : aSet.Put( SvxLanguageItem( LANGUAGE_NONE, RES_CHRATR_LANGUAGE ) );
1241 0 : aSet.Put( SvxLanguageItem( LANGUAGE_NONE, RES_CHRATR_CJK_LANGUAGE ) );
1242 0 : aSet.Put( SvxLanguageItem( LANGUAGE_NONE, RES_CHRATR_CTL_LANGUAGE ) );
1243 : }
1244 0 : break;
1245 : case RES_POOLCHR_JUMPEDIT:
1246 : {
1247 0 : Color aCol( COL_CYAN );
1248 0 : aSet.Put( SvxColorItem( aCol, RES_CHRATR_COLOR ) );
1249 0 : aSet.Put( SvxUnderlineItem( UNDERLINE_DOTTED, RES_CHRATR_UNDERLINE ) );
1250 0 : aSet.Put( SvxCaseMapItem( SVX_CASEMAP_KAPITAELCHEN, RES_CHRATR_CASEMAP ) );
1251 : }
1252 0 : break;
1253 :
1254 : case RES_POOLCHR_RUBYTEXT:
1255 : {
1256 : long nH = ((SvxFontHeightItem*)GetDfltAttr(
1257 0 : RES_CHRATR_CJK_FONTSIZE ))->GetHeight() / 2;
1258 0 : SetAllScriptItem( aSet, SvxFontHeightItem( nH, 100, RES_CHRATR_FONTSIZE));
1259 0 : aSet.Put(SvxUnderlineItem( UNDERLINE_NONE, RES_CHRATR_UNDERLINE ));
1260 0 : aSet.Put(SvxEmphasisMarkItem( EMPHASISMARK_NONE, RES_CHRATR_EMPHASIS_MARK) );
1261 : }
1262 0 : break;
1263 :
1264 : case RES_POOLCHR_HTML_EMPHASIS:
1265 : case RES_POOLCHR_HTML_CITIATION:
1266 : case RES_POOLCHR_HTML_VARIABLE:
1267 : {
1268 0 : SetAllScriptItem( aSet, SvxPostureItem( ITALIC_NORMAL, RES_CHRATR_POSTURE) );
1269 : }
1270 0 : break;
1271 :
1272 : case RES_POOLCHR_IDX_MAIN_ENTRY:
1273 : case RES_POOLCHR_HTML_STRONG:
1274 : {
1275 0 : SetAllScriptItem( aSet, SvxWeightItem( WEIGHT_BOLD, RES_CHRATR_WEIGHT ));
1276 : }
1277 0 : break;
1278 :
1279 : case RES_POOLCHR_HTML_CODE:
1280 : case RES_POOLCHR_HTML_SAMPLE:
1281 : case RES_POOLCHR_HTML_KEYBOARD:
1282 : case RES_POOLCHR_HTML_TELETYPE:
1283 : {
1284 0 : ::lcl_SetDfltFont( DEFAULTFONT_FIXED, aSet );
1285 : }
1286 0 : break;
1287 : case RES_POOLCHR_VERT_NUM:
1288 0 : aSet.Put( SvxCharRotateItem( 900, false, RES_CHRATR_ROTATE ) );
1289 0 : break;
1290 :
1291 : case RES_POOLFRM_FRAME:
1292 : {
1293 0 : if ( get(IDocumentSettingAccess::HTML_MODE) )
1294 : {
1295 0 : aSet.Put( SwFmtAnchor( FLY_AS_CHAR ));
1296 0 : aSet.Put( SwFmtVertOrient( 0, text::VertOrientation::LINE_CENTER, text::RelOrientation::PRINT_AREA ) );
1297 0 : aSet.Put( SwFmtSurround( SURROUND_NONE ) );
1298 : }
1299 : else
1300 : {
1301 0 : aSet.Put( SwFmtAnchor( FLY_AT_PARA ));
1302 0 : aSet.Put( SwFmtSurround( SURROUND_PARALLEL ) );
1303 0 : aSet.Put( SwFmtHoriOrient( 0, text::HoriOrientation::CENTER, text::RelOrientation::PRINT_AREA ) );
1304 0 : aSet.Put( SwFmtVertOrient( 0, text::VertOrientation::TOP, text::RelOrientation::PRINT_AREA ) );
1305 0 : Color aCol( COL_BLACK );
1306 0 : SvxBorderLine aLine( &aCol, DEF_LINE_WIDTH_0 );
1307 0 : SvxBoxItem aBox( RES_BOX );
1308 0 : aBox.SetLine( &aLine, BOX_LINE_TOP );
1309 0 : aBox.SetLine( &aLine, BOX_LINE_BOTTOM );
1310 0 : aBox.SetLine( &aLine, BOX_LINE_LEFT );
1311 0 : aBox.SetLine( &aLine, BOX_LINE_RIGHT );
1312 0 : aBox.SetDistance( 85 );
1313 0 : aSet.Put( aBox );
1314 0 : aSet.Put( SvxLRSpaceItem( 114, 114, 0, 0, RES_LR_SPACE ) );
1315 0 : aSet.Put( SvxULSpaceItem( 114, 114, RES_UL_SPACE ) );
1316 : }
1317 :
1318 : //UUUU for styles of FlyFrames do not set the FillStyle to make it a derived attribute
1319 0 : aSet.ClearItem(XATTR_FILLSTYLE);
1320 : }
1321 0 : break;
1322 : case RES_POOLFRM_GRAPHIC:
1323 : case RES_POOLFRM_OLE:
1324 : {
1325 0 : aSet.Put( SwFmtAnchor( FLY_AT_PARA ));
1326 0 : aSet.Put( SwFmtHoriOrient( 0, text::HoriOrientation::CENTER, text::RelOrientation::FRAME ));
1327 0 : aSet.Put( SwFmtVertOrient( 0, text::VertOrientation::TOP, text::RelOrientation::FRAME ));
1328 0 : aSet.Put( SwFmtSurround( SURROUND_IDEAL ));
1329 : }
1330 0 : break;
1331 : case RES_POOLFRM_FORMEL:
1332 : {
1333 0 : aSet.Put( SwFmtAnchor( FLY_AS_CHAR ) );
1334 0 : aSet.Put( SwFmtVertOrient( 0, text::VertOrientation::CHAR_CENTER, text::RelOrientation::FRAME ) );
1335 0 : aSet.Put( SvxLRSpaceItem( 114, 114, 0, 0, RES_LR_SPACE ) );
1336 : }
1337 0 : break;
1338 : case RES_POOLFRM_MARGINAL:
1339 : {
1340 0 : aSet.Put( SwFmtAnchor( FLY_AT_PARA ));
1341 0 : aSet.Put( SwFmtHoriOrient( 0, text::HoriOrientation::LEFT, text::RelOrientation::FRAME ));
1342 0 : aSet.Put( SwFmtVertOrient( 0, text::VertOrientation::TOP, text::RelOrientation::FRAME ));
1343 0 : aSet.Put( SwFmtSurround( SURROUND_PARALLEL ));
1344 : // Set the default width to 3.5 cm, use the minimum value for the height
1345 : aSet.Put( SwFmtFrmSize( ATT_MIN_SIZE,
1346 0 : GetMetricVal( CM_1 ) * 3 + GetMetricVal( CM_05 ),
1347 0 : MM50 ));
1348 : }
1349 0 : break;
1350 : case RES_POOLFRM_WATERSIGN:
1351 : {
1352 0 : aSet.Put( SwFmtAnchor( FLY_AT_PAGE ));
1353 0 : aSet.Put( SwFmtHoriOrient( 0, text::HoriOrientation::CENTER, text::RelOrientation::FRAME ));
1354 0 : aSet.Put( SwFmtVertOrient( 0, text::VertOrientation::CENTER, text::RelOrientation::FRAME ));
1355 0 : aSet.Put( SvxOpaqueItem( sal_False ));
1356 0 : aSet.Put( SwFmtSurround( SURROUND_THROUGHT ));
1357 : }
1358 0 : break;
1359 : case RES_POOLFRM_LABEL:
1360 : {
1361 0 : aSet.Put( SwFmtAnchor( FLY_AS_CHAR ) );
1362 0 : aSet.Put( SwFmtVertOrient( 0, text::VertOrientation::TOP, text::RelOrientation::FRAME ) );
1363 0 : aSet.Put( SvxLRSpaceItem( 114, 114, 0, 0, RES_LR_SPACE ) );
1364 :
1365 0 : SvxProtectItem aProtect( RES_PROTECT );
1366 0 : aProtect.SetSizeProtect( true );
1367 0 : aProtect.SetPosProtect( true );
1368 0 : aSet.Put( aProtect );
1369 :
1370 0 : pNewFmt->SetAutoUpdateFmt( sal_True );
1371 : }
1372 0 : break;
1373 : }
1374 0 : if( aSet.Count() )
1375 : {
1376 : {
1377 0 : pNewFmt->SetFmtAttr( aSet );
1378 : }
1379 : }
1380 0 : return pNewFmt;
1381 : }
1382 :
1383 0 : SwFrmFmt* SwDoc::GetFrmFmtFromPool( sal_uInt16 nId )
1384 : {
1385 0 : return (SwFrmFmt*)GetFmtFromPool( nId );
1386 : }
1387 :
1388 0 : SwCharFmt* SwDoc::GetCharFmtFromPool( sal_uInt16 nId )
1389 : {
1390 0 : return (SwCharFmt*)GetFmtFromPool( nId );
1391 : }
1392 :
1393 : /// Check if this AutoCollection is already/still in use
1394 0 : bool SwDoc::IsPoolFmtUsed( sal_uInt16 nId ) const
1395 : {
1396 0 : SwFmt *pNewFmt = 0;
1397 : const SwFmtsBase* pArray[ 2 ];
1398 0 : sal_uInt16 nArrCnt = 1;
1399 0 : bool bFnd = true;
1400 :
1401 0 : if (RES_POOLCHR_BEGIN <= nId && nId < RES_POOLCHR_END)
1402 : {
1403 0 : pArray[0] = mpCharFmtTbl;
1404 : }
1405 0 : else if (RES_POOLFRM_BEGIN <= nId && nId < RES_POOLFRM_END)
1406 : {
1407 0 : pArray[0] = mpFrmFmtTbl;
1408 0 : pArray[1] = mpSpzFrmFmtTbl;
1409 0 : nArrCnt = 2;
1410 : }
1411 : else
1412 : {
1413 : SAL_WARN("sw.core", "Invalid Pool Id: " << nId << " should be within " <<
1414 : "[" << int(RES_POOLCHR_BEGIN) << "," << int(RES_POOLCHR_END) << ") or " <<
1415 : "[" << int(RES_POOLFRM_BEGIN) << "," << int(RES_POOLFRM_END) << ")");
1416 0 : bFnd = false;
1417 : }
1418 :
1419 0 : if( bFnd )
1420 : {
1421 0 : bFnd = false;
1422 0 : while( nArrCnt-- && !bFnd )
1423 0 : for( sal_uInt16 n = 0; !bFnd && n < (*pArray[nArrCnt]).GetFmtCount(); ++n )
1424 0 : if( nId == ( pNewFmt = (*pArray[ nArrCnt ] ).GetFmt( n ) )->
1425 0 : GetPoolFmtId() )
1426 0 : bFnd = true;
1427 : }
1428 :
1429 : // Not found or no dependencies?
1430 0 : if( bFnd && pNewFmt->GetDepends() )
1431 : {
1432 : // Check if we have dependent ContentNodes in the Nodes array
1433 : // (also indirect ones for derived Formats)
1434 0 : SwAutoFmtGetDocNode aGetHt( &GetNodes() );
1435 0 : bFnd = !pNewFmt->GetInfo( aGetHt );
1436 : }
1437 : else
1438 0 : bFnd = false;
1439 :
1440 0 : return bFnd;
1441 : }
1442 :
1443 0 : static void lcl_PutStdPageSizeIntoItemSet( SwDoc* pDoc, SfxItemSet& rSet )
1444 : {
1445 0 : SwPageDesc* pStdPgDsc = pDoc->GetPageDescFromPool( RES_POOLPAGE_STANDARD );
1446 0 : SwFmtFrmSize aFrmSz( pStdPgDsc->GetMaster().GetFrmSize() );
1447 0 : if( pStdPgDsc->GetLandscape() )
1448 : {
1449 0 : SwTwips nTmp = aFrmSz.GetHeight();
1450 0 : aFrmSz.SetHeight( aFrmSz.GetWidth() );
1451 0 : aFrmSz.SetWidth( nTmp );
1452 : }
1453 0 : rSet.Put( aFrmSz );
1454 0 : }
1455 :
1456 0 : SwPageDesc* SwDoc::GetPageDescFromPool( sal_uInt16 nId, bool bRegardLanguage )
1457 : {
1458 : OSL_ENSURE( RES_POOLPAGE_BEGIN <= nId && nId < RES_POOLPAGE_END,
1459 : "Wrong AutoFormat Id" );
1460 :
1461 0 : for( sal_uInt16 n = 0; n < maPageDescs.size(); ++n )
1462 : {
1463 0 : if ( nId == maPageDescs[ n ]->GetPoolFmtId() )
1464 : {
1465 0 : return maPageDescs[ n ];
1466 : }
1467 : }
1468 :
1469 0 : if( RES_POOLPAGE_BEGIN > nId || nId >= RES_POOLPAGE_END )
1470 : {
1471 : // unknown page pool ID
1472 : OSL_ENSURE( !this, "<SwDoc::GetPageDescFromPool(..)> - unknown page pool ID" );
1473 0 : nId = RES_POOLPAGE_BEGIN;
1474 : }
1475 :
1476 0 : SwPageDesc* pNewPgDsc = 0;
1477 : {
1478 0 : const ResId aResId( sal_uInt32(RC_POOLPAGEDESC_BEGIN + nId - RES_POOLPAGE_BEGIN), *pSwResMgr );
1479 0 : const OUString aNm( aResId );
1480 0 : const bool bIsModified = IsModified();
1481 :
1482 0 : sal_uInt16 nPageDescIdx = 0;
1483 : {
1484 0 : ::sw::UndoGuard const undoGuard(GetIDocumentUndoRedo());
1485 0 : nPageDescIdx = MakePageDesc( aNm, 0, bRegardLanguage );
1486 : }
1487 :
1488 0 : pNewPgDsc = maPageDescs[ nPageDescIdx ];
1489 0 : pNewPgDsc->SetPoolFmtId( nId );
1490 0 : if ( !bIsModified )
1491 : {
1492 0 : ResetModified();
1493 0 : }
1494 : }
1495 :
1496 0 : SvxLRSpaceItem aLR( RES_LR_SPACE );
1497 : {
1498 0 : aLR.SetLeft( GetMetricVal( CM_1 ) * 2 );
1499 0 : aLR.SetRight( aLR.GetLeft() );
1500 : }
1501 0 : SvxULSpaceItem aUL( RES_UL_SPACE );
1502 : {
1503 0 : aUL.SetUpper( (sal_uInt16)aLR.GetLeft() );
1504 0 : aUL.SetLower( (sal_uInt16)aLR.GetLeft() );
1505 : }
1506 :
1507 0 : SwAttrSet aSet( GetAttrPool(), aPgFrmFmtSetRange );
1508 0 : bool bSetLeft = true;
1509 :
1510 0 : switch( nId )
1511 : {
1512 : case RES_POOLPAGE_STANDARD: // "Default"
1513 : {
1514 0 : aSet.Put( aLR );
1515 0 : aSet.Put( aUL );
1516 0 : pNewPgDsc->SetUseOn( nsUseOnPage::PD_ALL | nsUseOnPage::PD_FIRSTSHARE );
1517 : }
1518 0 : break;
1519 :
1520 : case RES_POOLPAGE_FIRST: // "First Page"
1521 : case RES_POOLPAGE_REGISTER: // "Index"
1522 : {
1523 0 : lcl_PutStdPageSizeIntoItemSet( this, aSet );
1524 0 : aSet.Put( aLR );
1525 0 : aSet.Put( aUL );
1526 0 : pNewPgDsc->SetUseOn( nsUseOnPage::PD_ALL );
1527 0 : if( RES_POOLPAGE_FIRST == nId )
1528 0 : pNewPgDsc->SetFollow( GetPageDescFromPool( RES_POOLPAGE_STANDARD ));
1529 : }
1530 0 : break;
1531 :
1532 : case RES_POOLPAGE_LEFT: // "Left Page"
1533 : {
1534 0 : lcl_PutStdPageSizeIntoItemSet( this, aSet );
1535 0 : aSet.Put( aLR );
1536 0 : aSet.Put( aUL );
1537 0 : bSetLeft = false;
1538 0 : pNewPgDsc->SetUseOn( nsUseOnPage::PD_LEFT );
1539 : // this relies on GetPageDescFromPool() not going into infinite recursion
1540 : // (by this point RES_POOLPAGE_LEFT will not reach this place again)
1541 0 : pNewPgDsc->SetFollow( GetPageDescFromPool( RES_POOLPAGE_RIGHT ));
1542 : }
1543 0 : break;
1544 : case RES_POOLPAGE_RIGHT: // "Right Page"
1545 : {
1546 0 : lcl_PutStdPageSizeIntoItemSet( this, aSet );
1547 0 : aSet.Put( aLR );
1548 0 : aSet.Put( aUL );
1549 0 : bSetLeft = false;
1550 0 : pNewPgDsc->SetUseOn( nsUseOnPage::PD_RIGHT );
1551 0 : pNewPgDsc->SetFollow( GetPageDescFromPool( RES_POOLPAGE_LEFT ));
1552 : }
1553 0 : break;
1554 :
1555 : case RES_POOLPAGE_JAKET: // "Envelope"
1556 : {
1557 0 : Size aPSize( SvxPaperInfo::GetPaperSize( PAPER_ENV_C65 ) );
1558 0 : LandscapeSwap( aPSize );
1559 0 : aSet.Put( SwFmtFrmSize( ATT_FIX_SIZE, aPSize.Width(), aPSize.Height() ));
1560 0 : aLR.SetLeft( 0 ); aLR.SetRight( 0 );
1561 0 : aUL.SetUpper( 0 ); aUL.SetLower( 0 );
1562 0 : aSet.Put( aLR );
1563 0 : aSet.Put( aUL );
1564 :
1565 0 : pNewPgDsc->SetUseOn( nsUseOnPage::PD_ALL );
1566 0 : pNewPgDsc->SetLandscape( sal_True );
1567 : }
1568 0 : break;
1569 :
1570 : case RES_POOLPAGE_HTML: // "HTML"
1571 : {
1572 0 : lcl_PutStdPageSizeIntoItemSet( this, aSet );
1573 0 : aLR.SetRight( GetMetricVal( CM_1 ));
1574 0 : aUL.SetUpper( (sal_uInt16)aLR.GetRight() );
1575 0 : aUL.SetLower( (sal_uInt16)aLR.GetRight() );
1576 0 : aSet.Put( aLR );
1577 0 : aSet.Put( aUL );
1578 :
1579 0 : pNewPgDsc->SetUseOn( nsUseOnPage::PD_ALL );
1580 : }
1581 0 : break;
1582 :
1583 : case RES_POOLPAGE_FOOTNOTE: // "Footnote"
1584 : case RES_POOLPAGE_ENDNOTE: // "Endnote"
1585 : {
1586 0 : lcl_PutStdPageSizeIntoItemSet( this, aSet );
1587 0 : aSet.Put( aLR );
1588 0 : aSet.Put( aUL );
1589 0 : pNewPgDsc->SetUseOn( nsUseOnPage::PD_ALL );
1590 0 : SwPageFtnInfo aInf( pNewPgDsc->GetFtnInfo() );
1591 0 : aInf.SetLineWidth( 0 );
1592 0 : aInf.SetTopDist( 0 );
1593 0 : aInf.SetBottomDist( 0 );
1594 0 : pNewPgDsc->SetFtnInfo( aInf );
1595 : }
1596 0 : break;
1597 :
1598 : case RES_POOLPAGE_LANDSCAPE: // "Landscape"
1599 : {
1600 0 : SwPageDesc* pStdPgDsc = this->GetPageDescFromPool( RES_POOLPAGE_STANDARD );
1601 0 : SwFmtFrmSize aFrmSz( pStdPgDsc->GetMaster().GetFrmSize() );
1602 0 : if ( !pStdPgDsc->GetLandscape() )
1603 : {
1604 0 : const SwTwips nTmp = aFrmSz.GetHeight();
1605 0 : aFrmSz.SetHeight( aFrmSz.GetWidth() );
1606 0 : aFrmSz.SetWidth( nTmp );
1607 : }
1608 0 : aSet.Put( aFrmSz );
1609 0 : aSet.Put( aLR );
1610 0 : aSet.Put( aUL );
1611 0 : pNewPgDsc->SetUseOn( nsUseOnPage::PD_ALL );
1612 0 : pNewPgDsc->SetLandscape( sal_True );
1613 : }
1614 0 : break;
1615 :
1616 : }
1617 :
1618 0 : if( aSet.Count() )
1619 : {
1620 0 : if( bSetLeft )
1621 : {
1622 0 : pNewPgDsc->GetLeft().SetFmtAttr( aSet );
1623 0 : pNewPgDsc->GetFirstLeft().SetFmtAttr( aSet );
1624 : }
1625 0 : pNewPgDsc->GetMaster().SetFmtAttr( aSet );
1626 0 : pNewPgDsc->GetFirstMaster().SetFmtAttr( aSet );
1627 : }
1628 0 : return pNewPgDsc;
1629 : }
1630 :
1631 0 : SwNumRule* SwDoc::GetNumRuleFromPool( sal_uInt16 nId )
1632 : {
1633 : OSL_ENSURE( RES_POOLNUMRULE_BEGIN <= nId && nId < RES_POOLNUMRULE_END,
1634 : "Wrong AutoFormat Id" );
1635 :
1636 : SwNumRule* pNewRule;
1637 : sal_uInt16 n;
1638 :
1639 0 : for( n = 0; n < GetNumRuleTbl().size(); ++n )
1640 0 : if( nId == ( pNewRule = GetNumRuleTbl()[ n ] )->GetPoolFmtId() )
1641 : {
1642 0 : return pNewRule;
1643 : }
1644 :
1645 : // error: unknown Pool style
1646 0 : if( RES_POOLNUMRULE_BEGIN > nId || nId >= RES_POOLNUMRULE_END )
1647 : {
1648 : OSL_ENSURE( !this, "invalid Id" );
1649 0 : nId = RES_POOLNUMRULE_BEGIN;
1650 : }
1651 :
1652 0 : ResId aResId( sal_uInt32(RC_POOLNUMRULE_BEGIN + nId - RES_POOLNUMRULE_BEGIN), *pSwResMgr );
1653 0 : OUString aNm( aResId );
1654 :
1655 0 : SwCharFmt *pNumCFmt = 0, *pBullCFmt = 0;
1656 :
1657 : const SvxNumberFormat::SvxNumPositionAndSpaceMode eNumberFormatPositionAndSpaceMode
1658 0 : = numfunc::GetDefaultPositionAndSpaceMode(); //#i89178#
1659 : {
1660 0 : bool bIsModified = IsModified();
1661 :
1662 0 : n = MakeNumRule( aNm, 0, false, eNumberFormatPositionAndSpaceMode );
1663 :
1664 0 : pNewRule = GetNumRuleTbl()[ n ];
1665 0 : pNewRule->SetPoolFmtId( nId );
1666 0 : pNewRule->SetAutoRule( sal_False );
1667 :
1668 0 : if( RES_POOLNUMRULE_NUM1 <= nId && nId <= RES_POOLNUMRULE_NUM5 )
1669 0 : pNumCFmt = GetCharFmtFromPool( RES_POOLCHR_NUM_LEVEL );
1670 :
1671 0 : if( ( RES_POOLNUMRULE_BUL1 <= nId && nId <= RES_POOLNUMRULE_BUL5 ) ||
1672 : RES_POOLNUMRULE_NUM5 == nId )
1673 0 : pBullCFmt = GetCharFmtFromPool( RES_POOLCHR_NUM_LEVEL );
1674 :
1675 0 : if( !bIsModified )
1676 0 : ResetModified();
1677 : }
1678 :
1679 0 : switch( nId )
1680 : {
1681 : case RES_POOLNUMRULE_NUM1:
1682 : {
1683 0 : SwNumFmt aFmt;
1684 0 : aFmt.SetPositionAndSpaceMode( eNumberFormatPositionAndSpaceMode );
1685 0 : aFmt.SetNumberingType(SVX_NUM_ARABIC);
1686 0 : aFmt.SetCharFmt( pNumCFmt );
1687 0 : aFmt.SetStart( 1 );
1688 0 : aFmt.SetIncludeUpperLevels( 1 );
1689 0 : aFmt.SetSuffix( "." );
1690 :
1691 : static const sal_uInt16 aAbsSpace[ MAXLEVEL ] =
1692 : {
1693 : // cm: 0,5 1,0 1,5 2,0 2,5 3,0 3,5 4,0 4,5 5,0
1694 : 283, 567, 850, 1134, 1417, 1701, 1984, 2268, 2551, 2835
1695 : };
1696 0 : const sal_uInt16* pArr = aAbsSpace;
1697 :
1698 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1699 : {
1700 0 : aFmt.SetFirstLineOffset( - (*pArr) );
1701 : }
1702 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
1703 : {
1704 0 : aFmt.SetLabelFollowedBy( SvxNumberFormat::LISTTAB );
1705 0 : aFmt.SetFirstLineIndent( - (*pArr) );
1706 : }
1707 :
1708 0 : for( n = 0; n < MAXLEVEL; ++n, ++pArr )
1709 : {
1710 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1711 : {
1712 0 : aFmt.SetAbsLSpace( *pArr );
1713 : }
1714 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
1715 : {
1716 0 : aFmt.SetListtabPos( *pArr );
1717 0 : aFmt.SetIndentAt( *pArr );
1718 : }
1719 :
1720 0 : pNewRule->Set( n, aFmt );
1721 0 : }
1722 : }
1723 0 : break;
1724 :
1725 : case RES_POOLNUMRULE_NUM2:
1726 : {
1727 : static const sal_uInt16 aAbsSpace[ MAXLEVEL ] =
1728 : {
1729 : 283, 283, 567, 709, // 0.50, 0.50, 1.00, 1.25
1730 : 850, 1021, 1304, 1474, // 1.50, 1.80, 2.30, 2.60
1731 : 1588, 1758 // 2.80, 3.10
1732 : };
1733 :
1734 0 : const sal_uInt16* pArr = aAbsSpace;
1735 0 : SwNumFmt aFmt;
1736 :
1737 0 : aFmt.SetPositionAndSpaceMode( eNumberFormatPositionAndSpaceMode );
1738 0 : aFmt.SetNumberingType(SVX_NUM_ARABIC);
1739 0 : aFmt.SetCharFmt( pNumCFmt );
1740 0 : aFmt.SetIncludeUpperLevels( 1 );
1741 :
1742 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
1743 : {
1744 0 : aFmt.SetLabelFollowedBy( SvxNumberFormat::LISTTAB );
1745 : }
1746 :
1747 0 : sal_uInt16 nSpace = 0;
1748 0 : for( n = 0; n < MAXLEVEL; ++n )
1749 : {
1750 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1751 : {
1752 0 : aFmt.SetAbsLSpace( nSpace = nSpace + pArr[ n ] );
1753 0 : aFmt.SetFirstLineOffset( - pArr[ n ] );
1754 : }
1755 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
1756 : {
1757 0 : aFmt.SetListtabPos( nSpace = nSpace + pArr[ n ] );
1758 0 : aFmt.SetIndentAt( nSpace );
1759 0 : aFmt.SetFirstLineIndent( - pArr[ n ] );
1760 : }
1761 :
1762 0 : aFmt.SetStart( n+1 );
1763 0 : pNewRule->Set( n, aFmt );
1764 0 : }
1765 : }
1766 0 : break;
1767 : case RES_POOLNUMRULE_NUM3:
1768 : {
1769 0 : SwNumFmt aFmt;
1770 :
1771 0 : aFmt.SetPositionAndSpaceMode( eNumberFormatPositionAndSpaceMode );
1772 0 : aFmt.SetNumberingType(SVX_NUM_ARABIC);
1773 0 : aFmt.SetCharFmt( pNumCFmt );
1774 0 : aFmt.SetIncludeUpperLevels( 1 );
1775 :
1776 0 : sal_uInt16 nOffs = GetMetricVal( CM_1 ) * 3;
1777 :
1778 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1779 : {
1780 0 : aFmt.SetFirstLineOffset( - nOffs );
1781 : }
1782 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
1783 : {
1784 0 : aFmt.SetLabelFollowedBy( SvxNumberFormat::LISTTAB );
1785 0 : aFmt.SetFirstLineIndent( - nOffs );
1786 : }
1787 :
1788 0 : for( n = 0; n < MAXLEVEL; ++n )
1789 : {
1790 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1791 : {
1792 0 : aFmt.SetAbsLSpace( (n+1) * nOffs );
1793 : }
1794 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
1795 : {
1796 0 : aFmt.SetListtabPos( (n+1) * nOffs );
1797 0 : aFmt.SetIndentAt( (n+1) * nOffs );
1798 : }
1799 :
1800 0 : aFmt.SetStart( n+1 );
1801 0 : pNewRule->Set( n, aFmt );
1802 0 : }
1803 : }
1804 0 : break;
1805 : case RES_POOLNUMRULE_NUM4:
1806 : {
1807 0 : SwNumFmt aFmt;
1808 :
1809 0 : aFmt.SetPositionAndSpaceMode( eNumberFormatPositionAndSpaceMode );
1810 0 : aFmt.SetNumberingType(SVX_NUM_ROMAN_UPPER);
1811 0 : aFmt.SetCharFmt( pNumCFmt );
1812 0 : aFmt.SetIncludeUpperLevels( 1 );
1813 0 : aFmt.SetSuffix( "." );
1814 :
1815 : static const sal_uInt16 aAbsSpace[ MAXLEVEL ] =
1816 : {
1817 : // cm: 0,5 1,0 1,5 2,0 2,5 3,0 3,5 4,0 4,5 5,0
1818 : 283, 567, 850, 1134, 1417, 1701, 1984, 2268, 2551, 2835
1819 : };
1820 0 : const sal_uInt16* pArr = aAbsSpace;
1821 :
1822 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1823 : {
1824 0 : aFmt.SetFirstLineOffset( - (*pArr) );
1825 : }
1826 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
1827 : {
1828 0 : aFmt.SetLabelFollowedBy( SvxNumberFormat::SPACE );
1829 0 : aFmt.SetFirstLineIndent( - (*pArr) );
1830 : }
1831 :
1832 0 : for( n = 0; n < MAXLEVEL; ++n, ++pArr )
1833 : {
1834 0 : aFmt.SetStart( n + 1 );
1835 :
1836 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1837 : {
1838 0 : aFmt.SetAbsLSpace( *pArr );
1839 : }
1840 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
1841 : {
1842 0 : aFmt.SetListtabPos( *pArr );
1843 0 : aFmt.SetIndentAt( *pArr );
1844 : }
1845 :
1846 0 : pNewRule->Set( n, aFmt );
1847 0 : }
1848 : }
1849 0 : break;
1850 : case RES_POOLNUMRULE_NUM5:
1851 : {
1852 : // [ First, LSpace ]
1853 : static const sal_uInt16 aAbsSpace0to2[] =
1854 : {
1855 : 227, 227, // 0.40, 0.40,
1856 : 369, 624, // 0.65, 1.10,
1857 : 255, 879 // 0.45, 1.55
1858 : };
1859 :
1860 0 : const sal_uInt16* pArr0to2 = aAbsSpace0to2;
1861 0 : SwNumFmt aFmt;
1862 :
1863 0 : aFmt.SetPositionAndSpaceMode( eNumberFormatPositionAndSpaceMode );
1864 0 : aFmt.SetNumberingType(SVX_NUM_ARABIC);
1865 0 : aFmt.SetStart( 1 );
1866 0 : aFmt.SetIncludeUpperLevels( 1 );
1867 0 : aFmt.SetSuffix( "." );
1868 :
1869 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
1870 : {
1871 0 : aFmt.SetLabelFollowedBy( SvxNumberFormat::LISTTAB );
1872 : }
1873 :
1874 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1875 : {
1876 0 : aFmt.SetFirstLineOffset( -pArr0to2[0] ); // == 0.40 cm
1877 0 : aFmt.SetAbsLSpace( pArr0to2[1] ); // == 0.40 cm
1878 : }
1879 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
1880 : {
1881 0 : aFmt.SetFirstLineIndent( -pArr0to2[0] );
1882 0 : aFmt.SetListtabPos( pArr0to2[1] );
1883 0 : aFmt.SetIndentAt( pArr0to2[1] );
1884 : }
1885 :
1886 0 : aFmt.SetCharFmt( pNumCFmt );
1887 0 : pNewRule->Set( 0, aFmt );
1888 :
1889 0 : aFmt.SetIncludeUpperLevels( 2 );
1890 0 : aFmt.SetStart( 2 );
1891 :
1892 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1893 : {
1894 0 : aFmt.SetFirstLineOffset( -pArr0to2[2] ); // == 0.65 cm
1895 0 : aFmt.SetAbsLSpace( pArr0to2[3] ); // == 1.10 cm
1896 : }
1897 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
1898 : {
1899 0 : aFmt.SetFirstLineIndent( -pArr0to2[2] );
1900 0 : aFmt.SetListtabPos( pArr0to2[3] );
1901 0 : aFmt.SetIndentAt( pArr0to2[3] );
1902 : }
1903 :
1904 0 : pNewRule->Set( 1, aFmt );
1905 :
1906 0 : aFmt.SetNumberingType(SVX_NUM_CHARS_LOWER_LETTER);
1907 0 : aFmt.SetSuffix(OUString(static_cast<sal_Unicode>(')')));
1908 0 : aFmt.SetIncludeUpperLevels( 1 );
1909 0 : aFmt.SetStart( 3 );
1910 :
1911 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1912 : {
1913 0 : aFmt.SetFirstLineOffset( - pArr0to2[4] ); // == 0.45cm
1914 0 : aFmt.SetAbsLSpace( pArr0to2[5] ); // == 1.55 cm
1915 : }
1916 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
1917 : {
1918 0 : aFmt.SetFirstLineIndent( -pArr0to2[4] );
1919 0 : aFmt.SetListtabPos( pArr0to2[5] );
1920 0 : aFmt.SetIndentAt( pArr0to2[5] );
1921 : }
1922 :
1923 0 : pNewRule->Set( 2, aFmt );
1924 :
1925 0 : aFmt.SetNumberingType(SVX_NUM_CHAR_SPECIAL);
1926 0 : aFmt.SetCharFmt( pBullCFmt );
1927 0 : aFmt.SetBulletFont( &numfunc::GetDefBulletFont() );
1928 0 : aFmt.SetBulletChar( cBulletChar );
1929 0 : sal_uInt16 nOffs = GetMetricVal( CM_01 ) * 4,
1930 0 : nOffs2 = GetMetricVal( CM_1 ) * 2;
1931 :
1932 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1933 : {
1934 0 : aFmt.SetFirstLineOffset( - nOffs );
1935 : }
1936 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
1937 : {
1938 0 : aFmt.SetFirstLineIndent( - nOffs );
1939 : }
1940 :
1941 0 : aFmt.SetSuffix( OUString() );
1942 0 : for( n = 3; n < MAXLEVEL; ++n )
1943 : {
1944 0 : aFmt.SetStart( n+1 );
1945 :
1946 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1947 : {
1948 0 : aFmt.SetAbsLSpace( nOffs2 + ((n-3) * nOffs) );
1949 : }
1950 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
1951 : {
1952 0 : aFmt.SetListtabPos( nOffs2 + ((n-3) * nOffs) );
1953 0 : aFmt.SetIndentAt( nOffs2 + ((n-3) * nOffs) );
1954 : }
1955 :
1956 0 : pNewRule->Set( n, aFmt );
1957 0 : }
1958 : }
1959 0 : break;
1960 :
1961 : case RES_POOLNUMRULE_BUL1:
1962 : {
1963 0 : SwNumFmt aFmt;
1964 :
1965 0 : aFmt.SetPositionAndSpaceMode( eNumberFormatPositionAndSpaceMode );
1966 0 : aFmt.SetNumberingType(SVX_NUM_CHAR_SPECIAL);
1967 0 : aFmt.SetCharFmt( pBullCFmt );
1968 0 : aFmt.SetStart( 1 );
1969 0 : aFmt.SetIncludeUpperLevels( 1 );
1970 0 : aFmt.SetBulletFont( &numfunc::GetDefBulletFont() );
1971 0 : aFmt.SetBulletChar( cBulletChar );
1972 :
1973 : static const sal_uInt16 aAbsSpace[ MAXLEVEL ] =
1974 : {
1975 : // cm: 0,4 0,8 1,2 1,6 2,0 2,4 2,8 3,2 3,6 4,0
1976 : 227, 454, 680, 907, 1134, 1361, 1587, 1814, 2041, 2268
1977 : };
1978 0 : const sal_uInt16* pArr = aAbsSpace;
1979 :
1980 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1981 : {
1982 0 : aFmt.SetFirstLineOffset( - (*pArr) );
1983 : }
1984 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
1985 : {
1986 0 : aFmt.SetLabelFollowedBy( SvxNumberFormat::LISTTAB );
1987 0 : aFmt.SetFirstLineIndent( - (*pArr) );
1988 : }
1989 :
1990 0 : for( n = 0; n < MAXLEVEL; ++n, ++pArr )
1991 : {
1992 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
1993 : {
1994 0 : aFmt.SetAbsLSpace( *pArr );
1995 : }
1996 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
1997 : {
1998 0 : aFmt.SetListtabPos( *pArr );
1999 0 : aFmt.SetIndentAt( *pArr );
2000 : }
2001 :
2002 0 : pNewRule->Set( n, aFmt );
2003 0 : }
2004 : }
2005 0 : break;
2006 : case RES_POOLNUMRULE_BUL2:
2007 : {
2008 0 : SwNumFmt aFmt;
2009 :
2010 0 : aFmt.SetPositionAndSpaceMode( eNumberFormatPositionAndSpaceMode );
2011 0 : aFmt.SetNumberingType(SVX_NUM_CHAR_SPECIAL);
2012 0 : aFmt.SetCharFmt( pBullCFmt );
2013 0 : aFmt.SetStart( 1 );
2014 0 : aFmt.SetIncludeUpperLevels( 1 );
2015 0 : aFmt.SetBulletFont( &numfunc::GetDefBulletFont() );
2016 0 : aFmt.SetBulletChar( 0x2013 );
2017 :
2018 : static const sal_uInt16 aAbsSpace[ MAXLEVEL ] =
2019 : {
2020 : // cm: 0,3 0,6 0,9 1,2 1,5 1,8 2,1 2,4 2,7 3,0
2021 : 170, 340, 510, 680, 850, 1020, 1191, 1361, 1531, 1701
2022 : };
2023 0 : const sal_uInt16* pArr = aAbsSpace;
2024 :
2025 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
2026 : {
2027 0 : aFmt.SetFirstLineOffset( - (*pArr) );
2028 : }
2029 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
2030 : {
2031 0 : aFmt.SetLabelFollowedBy( SvxNumberFormat::LISTTAB );
2032 0 : aFmt.SetFirstLineIndent( - (*pArr) );
2033 : }
2034 :
2035 0 : for( n = 0; n < MAXLEVEL; ++n, ++pArr )
2036 : {
2037 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
2038 : {
2039 0 : aFmt.SetAbsLSpace( *pArr );
2040 : }
2041 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
2042 : {
2043 0 : aFmt.SetListtabPos( *pArr );
2044 0 : aFmt.SetIndentAt( *pArr );
2045 : }
2046 :
2047 0 : pNewRule->Set( n, aFmt );
2048 0 : }
2049 : }
2050 0 : break;
2051 : case RES_POOLNUMRULE_BUL3:
2052 : {
2053 0 : SwNumFmt aFmt;
2054 :
2055 0 : aFmt.SetPositionAndSpaceMode( eNumberFormatPositionAndSpaceMode );
2056 :
2057 0 : aFmt.SetNumberingType(SVX_NUM_CHAR_SPECIAL);
2058 0 : aFmt.SetCharFmt( pBullCFmt );
2059 0 : aFmt.SetStart( 1 );
2060 0 : aFmt.SetIncludeUpperLevels( 1 );
2061 0 : aFmt.SetBulletFont( &numfunc::GetDefBulletFont() );
2062 :
2063 0 : sal_uInt16 nOffs = GetMetricVal( CM_01 ) * 4;
2064 :
2065 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
2066 : {
2067 0 : aFmt.SetFirstLineOffset( - nOffs );
2068 : }
2069 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
2070 : {
2071 0 : aFmt.SetLabelFollowedBy( SvxNumberFormat::LISTTAB );
2072 0 : aFmt.SetFirstLineIndent( - nOffs );
2073 : }
2074 :
2075 0 : for( n = 0; n < MAXLEVEL; ++n )
2076 : {
2077 0 : aFmt.SetBulletChar( ( n & 1 ? 0x25a1 : 0x2611 ) );
2078 :
2079 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
2080 : {
2081 0 : aFmt.SetAbsLSpace( ((n & 1) +1) * nOffs );
2082 : }
2083 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
2084 : {
2085 0 : aFmt.SetListtabPos( ((n & 1) +1) * nOffs );
2086 0 : aFmt.SetIndentAt( ((n & 1) +1) * nOffs );
2087 : }
2088 :
2089 0 : pNewRule->Set( n, aFmt );
2090 0 : }
2091 : }
2092 0 : break;
2093 : case RES_POOLNUMRULE_BUL4:
2094 : {
2095 0 : SwNumFmt aFmt;
2096 :
2097 0 : aFmt.SetPositionAndSpaceMode( eNumberFormatPositionAndSpaceMode );
2098 0 : aFmt.SetNumberingType(SVX_NUM_CHAR_SPECIAL);
2099 0 : aFmt.SetCharFmt( pBullCFmt );
2100 0 : aFmt.SetStart( 1 );
2101 0 : aFmt.SetIncludeUpperLevels( 1 );
2102 0 : aFmt.SetBulletFont( &numfunc::GetDefBulletFont() );
2103 :
2104 : static const sal_uInt16 aAbsSpace[ MAXLEVEL ] =
2105 : {
2106 : // cm: 0,4 0,8 1,2 1,6 2,0 2,4 2,8 3,2 3,6 4,0
2107 : 227, 454, 680, 907, 1134, 1361, 1587, 1814, 2041, 2268
2108 : };
2109 :
2110 0 : const sal_uInt16* pArr = aAbsSpace;
2111 :
2112 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
2113 : {
2114 0 : aFmt.SetFirstLineOffset( - (*pArr) );
2115 : }
2116 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
2117 : {
2118 0 : aFmt.SetLabelFollowedBy( SvxNumberFormat::SPACE );
2119 0 : aFmt.SetFirstLineIndent( - (*pArr) );
2120 : }
2121 :
2122 0 : for( n = 0; n < MAXLEVEL; ++n, ++pArr )
2123 : {
2124 0 : switch( n )
2125 : {
2126 0 : case 0: aFmt.SetBulletChar( 0x27a2 ); break;
2127 0 : case 1: aFmt.SetBulletChar( 0xE006 ); break;
2128 0 : default: aFmt.SetBulletChar( 0xE004 ); break;
2129 : }
2130 :
2131 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
2132 : {
2133 0 : aFmt.SetAbsLSpace( *pArr );
2134 : }
2135 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
2136 : {
2137 0 : aFmt.SetListtabPos( *pArr );
2138 0 : aFmt.SetIndentAt( *pArr );
2139 : }
2140 :
2141 0 : pNewRule->Set( n, aFmt );
2142 0 : }
2143 : }
2144 0 : break;
2145 : case RES_POOLNUMRULE_BUL5:
2146 : {
2147 0 : SwNumFmt aFmt;
2148 :
2149 0 : aFmt.SetPositionAndSpaceMode( eNumberFormatPositionAndSpaceMode );
2150 0 : aFmt.SetNumberingType(SVX_NUM_CHAR_SPECIAL);
2151 0 : aFmt.SetCharFmt( pBullCFmt );
2152 0 : aFmt.SetStart( 1 );
2153 0 : aFmt.SetIncludeUpperLevels( 1 );
2154 0 : aFmt.SetBulletChar( 0x2717 );
2155 0 : aFmt.SetBulletFont( &numfunc::GetDefBulletFont() );
2156 :
2157 : static const sal_uInt16 aAbsSpace[ MAXLEVEL ] =
2158 : {
2159 : // cm: 0,4 0,8 1,2 1,6 2,0 2,4 2,8 3,2 3,6 4,0
2160 : 227, 454, 680, 907, 1134, 1361, 1587, 1814, 2041, 2268
2161 : };
2162 0 : const sal_uInt16* pArr = aAbsSpace;
2163 :
2164 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
2165 : {
2166 0 : aFmt.SetFirstLineOffset( - (*pArr) );
2167 : }
2168 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
2169 : {
2170 0 : aFmt.SetLabelFollowedBy( SvxNumberFormat::LISTTAB );
2171 0 : aFmt.SetFirstLineIndent( - (*pArr) );
2172 : }
2173 :
2174 0 : for( n = 0; n < MAXLEVEL; ++n, ++pArr )
2175 : {
2176 0 : if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
2177 : {
2178 0 : aFmt.SetAbsLSpace( *pArr );
2179 : }
2180 0 : else if ( eNumberFormatPositionAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
2181 : {
2182 0 : aFmt.SetListtabPos( *pArr );
2183 0 : aFmt.SetIndentAt( *pArr );
2184 : }
2185 :
2186 0 : pNewRule->Set( n, aFmt );
2187 0 : }
2188 : }
2189 0 : break;
2190 : }
2191 :
2192 0 : return pNewRule;
2193 : }
2194 :
2195 : /// Check if this AutoCollection is already/still in use in this Document
2196 0 : bool SwDoc::IsPoolPageDescUsed( sal_uInt16 nId ) const
2197 : {
2198 : OSL_ENSURE( RES_POOLPAGE_BEGIN <= nId && nId < RES_POOLPAGE_END,
2199 : "Wrong AutoFormat Id" );
2200 0 : SwPageDesc *pNewPgDsc = 0;
2201 0 : bool bFnd = false;
2202 0 : for( sal_uInt16 n = 0; !bFnd && n < maPageDescs.size(); ++n )
2203 : {
2204 0 : pNewPgDsc = maPageDescs[ n ];
2205 0 : if( nId == pNewPgDsc->GetPoolFmtId() )
2206 0 : bFnd = true;
2207 : }
2208 :
2209 : // Not found or no dependencies?
2210 0 : if( !bFnd || !pNewPgDsc->GetDepends() ) // ??????
2211 0 : return false;
2212 :
2213 : // Check if we have dependent ContentNodes in the Nodes array
2214 : // (also indirect ones for derived Formats)
2215 0 : SwAutoFmtGetDocNode aGetHt( &GetNodes() );
2216 0 : return !pNewPgDsc->GetInfo( aGetHt );
2217 : }
2218 :
2219 : // See if the Paragraph/Character/Frame/Page style is in use
2220 0 : bool SwDoc::IsUsed( const SwModify& rModify ) const
2221 : {
2222 : // Check if we have dependent ContentNodes in the Nodes array
2223 : // (also indirect ones for derived Formats)
2224 0 : SwAutoFmtGetDocNode aGetHt( &GetNodes() );
2225 0 : return !rModify.GetInfo( aGetHt );
2226 : }
2227 :
2228 : // See if the NumRule is used
2229 0 : bool SwDoc::IsUsed( const SwNumRule& rRule ) const
2230 : {
2231 0 : bool bUsed = rRule.GetTxtNodeListSize() > 0 ||
2232 0 : rRule.GetParagraphStyleListSize() > 0;
2233 :
2234 0 : return bUsed;
2235 : }
2236 :
2237 : // Look for the style name's position. If it doesn't exist,
2238 : // insert a anew
2239 0 : sal_uInt16 SwDoc::SetDocPattern( const OUString& rPatternName )
2240 : {
2241 : OSL_ENSURE( !rPatternName.isEmpty(), "no Document style name" );
2242 :
2243 0 : size_t nNewPos = maPatternNms.size();
2244 0 : for(size_t n = 0; n < maPatternNms.size(); ++n)
2245 0 : if( boost::is_null(maPatternNms.begin() + n) )
2246 : {
2247 0 : if( nNewPos == maPatternNms.size() )
2248 0 : nNewPos = n;
2249 : }
2250 0 : else if( rPatternName == maPatternNms[n] )
2251 0 : return n;
2252 :
2253 0 : if( nNewPos < maPatternNms.size() )
2254 0 : maPatternNms.erase(maPatternNms.begin() + nNewPos); // Free space again
2255 :
2256 0 : maPatternNms.insert(maPatternNms.begin() + nNewPos, new OUString(rPatternName));
2257 0 : SetModified();
2258 0 : return nNewPos;
2259 : }
2260 :
2261 0 : sal_uInt16 GetPoolParent( sal_uInt16 nId )
2262 : {
2263 0 : sal_uInt16 nRet = USHRT_MAX;
2264 0 : if( POOLGRP_NOCOLLID & nId ) // 1 == Formats / 0 == Collections
2265 : {
2266 0 : switch( ( COLL_GET_RANGE_BITS | POOLGRP_NOCOLLID ) & nId )
2267 : {
2268 : case POOLGRP_CHARFMT:
2269 : case POOLGRP_FRAMEFMT:
2270 0 : nRet = 0; // derived from the default
2271 0 : break;
2272 : case POOLGRP_PAGEDESC:
2273 : case POOLGRP_NUMRULE:
2274 0 : break; // there are no derivations
2275 : }
2276 : }
2277 : else
2278 : {
2279 0 : switch( COLL_GET_RANGE_BITS & nId )
2280 : {
2281 : case COLL_TEXT_BITS:
2282 0 : switch( nId )
2283 : {
2284 : case RES_POOLCOLL_STANDARD:
2285 0 : nRet = 0; break;
2286 : case RES_POOLCOLL_TEXT_IDENT:
2287 : case RES_POOLCOLL_TEXT_NEGIDENT:
2288 : case RES_POOLCOLL_TEXT_MOVE:
2289 : case RES_POOLCOLL_CONFRONTATION:
2290 : case RES_POOLCOLL_MARGINAL:
2291 0 : nRet = RES_POOLCOLL_TEXT; break;
2292 :
2293 : case RES_POOLCOLL_TEXT:
2294 : case RES_POOLCOLL_GREETING:
2295 : case RES_POOLCOLL_SIGNATURE:
2296 : case RES_POOLCOLL_HEADLINE_BASE:
2297 0 : nRet = RES_POOLCOLL_STANDARD; break;
2298 :
2299 : case RES_POOLCOLL_HEADLINE1:
2300 : case RES_POOLCOLL_HEADLINE2:
2301 : case RES_POOLCOLL_HEADLINE3:
2302 : case RES_POOLCOLL_HEADLINE4:
2303 : case RES_POOLCOLL_HEADLINE5:
2304 : case RES_POOLCOLL_HEADLINE6:
2305 : case RES_POOLCOLL_HEADLINE7:
2306 : case RES_POOLCOLL_HEADLINE8:
2307 : case RES_POOLCOLL_HEADLINE9:
2308 : case RES_POOLCOLL_HEADLINE10:
2309 0 : nRet = RES_POOLCOLL_HEADLINE_BASE; break;
2310 : }
2311 0 : break;
2312 :
2313 : case COLL_LISTS_BITS:
2314 0 : switch( nId )
2315 : {
2316 : case RES_POOLCOLL_NUMBUL_BASE:
2317 0 : nRet = RES_POOLCOLL_TEXT; break;
2318 :
2319 : default:
2320 0 : nRet = RES_POOLCOLL_NUMBUL_BASE; break;
2321 : }
2322 0 : break;
2323 :
2324 : case COLL_EXTRA_BITS:
2325 0 : switch( nId )
2326 : {
2327 : case RES_POOLCOLL_TABLE_HDLN:
2328 0 : nRet = RES_POOLCOLL_TABLE; break;
2329 :
2330 : case RES_POOLCOLL_FRAME:
2331 : case RES_POOLCOLL_TABLE:
2332 : case RES_POOLCOLL_FOOTNOTE:
2333 : case RES_POOLCOLL_ENDNOTE:
2334 : case RES_POOLCOLL_JAKETADRESS:
2335 : case RES_POOLCOLL_SENDADRESS:
2336 : case RES_POOLCOLL_HEADER:
2337 : case RES_POOLCOLL_HEADERL:
2338 : case RES_POOLCOLL_HEADERR:
2339 : case RES_POOLCOLL_FOOTER:
2340 : case RES_POOLCOLL_FOOTERL:
2341 : case RES_POOLCOLL_FOOTERR:
2342 : case RES_POOLCOLL_LABEL:
2343 0 : nRet = RES_POOLCOLL_STANDARD; break;
2344 :
2345 : case RES_POOLCOLL_LABEL_ABB:
2346 : case RES_POOLCOLL_LABEL_TABLE:
2347 : case RES_POOLCOLL_LABEL_FRAME:
2348 : case RES_POOLCOLL_LABEL_DRAWING:
2349 0 : nRet = RES_POOLCOLL_LABEL; break;
2350 : }
2351 0 : break;
2352 :
2353 : case COLL_REGISTER_BITS:
2354 0 : switch( nId )
2355 : {
2356 : case RES_POOLCOLL_REGISTER_BASE:
2357 0 : nRet = RES_POOLCOLL_STANDARD; break;
2358 :
2359 : case RES_POOLCOLL_TOX_USERH:
2360 : case RES_POOLCOLL_TOX_CNTNTH:
2361 : case RES_POOLCOLL_TOX_IDXH:
2362 : case RES_POOLCOLL_TOX_ILLUSH:
2363 : case RES_POOLCOLL_TOX_OBJECTH:
2364 : case RES_POOLCOLL_TOX_TABLESH:
2365 : case RES_POOLCOLL_TOX_AUTHORITIESH:
2366 0 : nRet = RES_POOLCOLL_HEADLINE_BASE; break;
2367 :
2368 : default:
2369 0 : nRet = RES_POOLCOLL_REGISTER_BASE; break;
2370 : }
2371 0 : break;
2372 :
2373 : case COLL_DOC_BITS:
2374 0 : nRet = RES_POOLCOLL_HEADLINE_BASE;
2375 0 : break;
2376 :
2377 : case COLL_HTML_BITS:
2378 0 : nRet = RES_POOLCOLL_STANDARD;
2379 0 : break;
2380 : }
2381 : }
2382 :
2383 0 : return nRet;
2384 : }
2385 :
2386 0 : void SwDoc::RemoveAllFmtLanguageDependencies()
2387 : {
2388 : /* Restore the language independ pool defaults and styles. */
2389 0 : GetAttrPool().ResetPoolDefaultItem( RES_PARATR_ADJUST );
2390 :
2391 0 : SwTxtFmtColl * pTxtFmtColl = GetTxtCollFromPool( RES_POOLCOLL_STANDARD );
2392 :
2393 0 : pTxtFmtColl->ResetFmtAttr( RES_PARATR_ADJUST );
2394 : /* koreans do not like SvxScriptItem(TRUE) */
2395 0 : pTxtFmtColl->ResetFmtAttr( RES_PARATR_SCRIPTSPACE );
2396 :
2397 0 : SvxFrameDirectionItem aFrameDir( FRMDIR_HORI_LEFT_TOP, RES_FRAMEDIR );
2398 :
2399 0 : sal_uInt16 nCount = GetPageDescCnt();
2400 0 : for( sal_uInt16 i=0; i<nCount; ++i )
2401 : {
2402 0 : SwPageDesc& rDesc = GetPageDesc( i );
2403 0 : rDesc.GetMaster().SetFmtAttr( aFrameDir );
2404 0 : rDesc.GetLeft().SetFmtAttr( aFrameDir );
2405 : }
2406 :
2407 : //#i16874# AutoKerning as default for new documents
2408 0 : GetAttrPool().ResetPoolDefaultItem( RES_CHRATR_AUTOKERN );
2409 0 : }
2410 :
2411 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|