LCOV - code coverage report
Current view: top level - sw/source/core/doc - poolfmt.cxx (source / functions) Hit Total Coverage
Test: commit e02a6cb2c3e2b23b203b422e4e0680877f232636 Lines: 0 1172 0.0 %
Date: 2014-04-14 Functions: 0 23 0.0 %
Legend: Lines: hit not hit

          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: */

Generated by: LCOV version 1.10