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

Generated by: LCOV version 1.10