LCOV - code coverage report
Current view: top level - libreoffice/sc/source/core/data - docpool.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 262 445 58.9 %
Date: 2012-12-27 Functions: 8 14 57.1 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : 
      21             : #include "scitems.hxx"
      22             : #include <comphelper/string.hxx>
      23             : #include <tools/shl.hxx>
      24             : #include <vcl/outdev.hxx>
      25             : #include <svl/aeitem.hxx>
      26             : #include <svl/itemiter.hxx>
      27             : #include <svx/algitem.hxx>
      28             : #include <editeng/boxitem.hxx>
      29             : #include <editeng/bolnitem.hxx>
      30             : #include <editeng/brshitem.hxx>
      31             : #include <editeng/charreliefitem.hxx>
      32             : #include <editeng/cntritem.hxx>
      33             : #include <editeng/colritem.hxx>
      34             : #include <editeng/crsditem.hxx>
      35             : #include <svx/dialmgr.hxx>
      36             : #include <editeng/emphitem.hxx>
      37             : #include <editeng/fhgtitem.hxx>
      38             : #include <editeng/fontitem.hxx>
      39             : #include <editeng/forbiddenruleitem.hxx>
      40             : #include <editeng/frmdiritem.hxx>
      41             : #include <editeng/hngpnctitem.hxx>
      42             : #include <editeng/itemtype.hxx>
      43             : #include <editeng/langitem.hxx>
      44             : #include <editeng/lrspitem.hxx>
      45             : #include <svx/pageitem.hxx>
      46             : #include <editeng/pbinitem.hxx>
      47             : #include <editeng/postitem.hxx>
      48             : #include <svx/rotmodit.hxx>
      49             : #include <editeng/scriptspaceitem.hxx>
      50             : #include <editeng/shaditem.hxx>
      51             : #include <editeng/shdditem.hxx>
      52             : #include <editeng/sizeitem.hxx>
      53             : #include <svx/svxitems.hrc>
      54             : #include <editeng/udlnitem.hxx>
      55             : #include <editeng/ulspitem.hxx>
      56             : #include <editeng/wghtitem.hxx>
      57             : #include <editeng/wrlmitem.hxx>
      58             : #include <editeng/xmlcnitm.hxx>
      59             : #include <editeng/justifyitem.hxx>
      60             : 
      61             : #include "docpool.hxx"
      62             : #include "global.hxx"
      63             : #include "attrib.hxx"
      64             : #include "patattr.hxx"
      65             : #include "globstr.hrc"
      66             : #include "sc.hrc"           // Slot-IDs
      67             : 
      68             : #define SC_MAX_POOLREF      (SFX_ITEMS_OLD_MAXREF - 39)
      69             : #define SC_SAFE_POOLREF     (SC_MAX_POOLREF + 20)
      70             : 
      71             : // STATIC DATA -----------------------------------------------------------
      72             : 
      73             : sal_uInt16* ScDocumentPool::pVersionMap1 = 0;
      74             : sal_uInt16* ScDocumentPool::pVersionMap2 = 0;
      75             : sal_uInt16* ScDocumentPool::pVersionMap3 = 0;
      76             : sal_uInt16* ScDocumentPool::pVersionMap4 = 0;
      77             : sal_uInt16* ScDocumentPool::pVersionMap5 = 0;
      78             : sal_uInt16* ScDocumentPool::pVersionMap6 = 0;
      79             : sal_uInt16* ScDocumentPool::pVersionMap7 = 0;
      80             : sal_uInt16* ScDocumentPool::pVersionMap8 = 0;
      81             : sal_uInt16* ScDocumentPool::pVersionMap9 = 0;
      82             : sal_uInt16* ScDocumentPool::pVersionMap10 = 0;
      83             : sal_uInt16* ScDocumentPool::pVersionMap11 = 0;
      84             : 
      85             : // ATTR_FONT_TWOLINES (not used) was changed to ATTR_USERDEF (not saved in binary format) in 641c
      86             : 
      87             : static SfxItemInfo const  aItemInfos[] =
      88             : {
      89             :     { SID_ATTR_CHAR_FONT,           SFX_ITEM_POOLABLE },    // ATTR_FONT
      90             :     { SID_ATTR_CHAR_FONTHEIGHT,     SFX_ITEM_POOLABLE },    // ATTR_FONT_HEIGHT
      91             :     { SID_ATTR_CHAR_WEIGHT,         SFX_ITEM_POOLABLE },    // ATTR_FONT_WEIGHT
      92             :     { SID_ATTR_CHAR_POSTURE,        SFX_ITEM_POOLABLE },    // ATTR_FONT_POSTURE
      93             :     { SID_ATTR_CHAR_UNDERLINE,      SFX_ITEM_POOLABLE },    // ATTR_FONT_UNDERLINE
      94             :     { SID_ATTR_CHAR_OVERLINE,       SFX_ITEM_POOLABLE },    // ATTR_FONT_OVERLINE
      95             :     { SID_ATTR_CHAR_STRIKEOUT,      SFX_ITEM_POOLABLE },    // ATTR_FONT_CROSSEDOUT
      96             :     { SID_ATTR_CHAR_CONTOUR,        SFX_ITEM_POOLABLE },    // ATTR_FONT_CONTOUR
      97             :     { SID_ATTR_CHAR_SHADOWED,       SFX_ITEM_POOLABLE },    // ATTR_FONT_SHADOWED
      98             :     { SID_ATTR_CHAR_COLOR,          SFX_ITEM_POOLABLE },    // ATTR_FONT_COLOR
      99             :     { SID_ATTR_CHAR_LANGUAGE,       SFX_ITEM_POOLABLE },    // ATTR_FONT_LANGUAGE
     100             :     { SID_ATTR_CHAR_CJK_FONT,       SFX_ITEM_POOLABLE },    // ATTR_CJK_FONT            from 614
     101             :     { SID_ATTR_CHAR_CJK_FONTHEIGHT, SFX_ITEM_POOLABLE },    // ATTR_CJK_FONT_HEIGHT     from 614
     102             :     { SID_ATTR_CHAR_CJK_WEIGHT,     SFX_ITEM_POOLABLE },    // ATTR_CJK_FONT_WEIGHT     from 614
     103             :     { SID_ATTR_CHAR_CJK_POSTURE,    SFX_ITEM_POOLABLE },    // ATTR_CJK_FONT_POSTURE    from 614
     104             :     { SID_ATTR_CHAR_CJK_LANGUAGE,   SFX_ITEM_POOLABLE },    // ATTR_CJK_FONT_LANGUAGE   from 614
     105             :     { SID_ATTR_CHAR_CTL_FONT,       SFX_ITEM_POOLABLE },    // ATTR_CTL_FONT            from 614
     106             :     { SID_ATTR_CHAR_CTL_FONTHEIGHT, SFX_ITEM_POOLABLE },    // ATTR_CTL_FONT_HEIGHT     from 614
     107             :     { SID_ATTR_CHAR_CTL_WEIGHT,     SFX_ITEM_POOLABLE },    // ATTR_CTL_FONT_WEIGHT     from 614
     108             :     { SID_ATTR_CHAR_CTL_POSTURE,    SFX_ITEM_POOLABLE },    // ATTR_CTL_FONT_POSTURE    from 614
     109             :     { SID_ATTR_CHAR_CTL_LANGUAGE,   SFX_ITEM_POOLABLE },    // ATTR_CTL_FONT_LANGUAGE   from 614
     110             :     { SID_ATTR_CHAR_EMPHASISMARK,   SFX_ITEM_POOLABLE },    // ATTR_FONT_EMPHASISMARK   from 614
     111             :     { 0,                            SFX_ITEM_POOLABLE },    // ATTR_USERDEF             from 614 / 641c
     112             :     { SID_ATTR_CHAR_WORDLINEMODE,   SFX_ITEM_POOLABLE },    // ATTR_FONT_WORDLINE       from 632b
     113             :     { SID_ATTR_CHAR_RELIEF,         SFX_ITEM_POOLABLE },    // ATTR_FONT_RELIEF         from 632b
     114             :     { SID_ATTR_ALIGN_HYPHENATION,   SFX_ITEM_POOLABLE },    // ATTR_HYPHENATE           from 632b
     115             :     { 0,                            SFX_ITEM_POOLABLE },    // ATTR_SCRIPTSPACE         from 614d
     116             :     { 0,                            SFX_ITEM_POOLABLE },    // ATTR_HANGPUNCTUATION     from 614d
     117             :     { SID_ATTR_PARA_FORBIDDEN_RULES,SFX_ITEM_POOLABLE },    // ATTR_FORBIDDEN_RULES     from 614d
     118             :     { SID_ATTR_ALIGN_HOR_JUSTIFY,   SFX_ITEM_POOLABLE },    // ATTR_HOR_JUSTIFY
     119             :     { SID_ATTR_ALIGN_HOR_JUSTIFY_METHOD, SFX_ITEM_POOLABLE }, // ATTR_HOR_JUSTIFY_METHOD
     120             :     { SID_ATTR_ALIGN_INDENT,        SFX_ITEM_POOLABLE },    // ATTR_INDENT          ab 350
     121             :     { SID_ATTR_ALIGN_VER_JUSTIFY,   SFX_ITEM_POOLABLE },    // ATTR_VER_JUSTIFY
     122             :     { SID_ATTR_ALIGN_VER_JUSTIFY_METHOD, SFX_ITEM_POOLABLE }, // ATTR_VER_JUSTIFY_METHOD
     123             :     { SID_ATTR_ALIGN_STACKED,       SFX_ITEM_POOLABLE },    // ATTR_STACKED         from 680/dr14 (replaces ATTR_ORIENTATION)
     124             :     { SID_ATTR_ALIGN_DEGREES,       SFX_ITEM_POOLABLE },    // ATTR_ROTATE_VALUE    ab 367
     125             :     { SID_ATTR_ALIGN_LOCKPOS,       SFX_ITEM_POOLABLE },    // ATTR_ROTATE_MODE     ab 367
     126             :     { SID_ATTR_ALIGN_ASIANVERTICAL, SFX_ITEM_POOLABLE },    // ATTR_VERTICAL_ASIAN  from 642
     127             :     { SID_ATTR_FRAMEDIRECTION,      SFX_ITEM_POOLABLE },    // ATTR_WRITINGDIR      from 643
     128             :     { SID_ATTR_ALIGN_LINEBREAK,     SFX_ITEM_POOLABLE },    // ATTR_LINEBREAK
     129             :     { SID_ATTR_ALIGN_SHRINKTOFIT,   SFX_ITEM_POOLABLE },    // ATTR_SHRINKTOFIT     from 680/dr14
     130             :     { SID_ATTR_BORDER_DIAG_TLBR,    SFX_ITEM_POOLABLE },    // ATTR_BORDER_TLBR     from 680/dr14
     131             :     { SID_ATTR_BORDER_DIAG_BLTR,    SFX_ITEM_POOLABLE },    // ATTR_BORDER_BLTR     from 680/dr14
     132             :     { SID_ATTR_ALIGN_MARGIN,        SFX_ITEM_POOLABLE },    // ATTR_MARGIN
     133             :     { 0,                            SFX_ITEM_POOLABLE },    // ATTR_MERGE
     134             :     { 0,                            SFX_ITEM_POOLABLE },    // ATTR_MERGE_FLAG
     135             :     { SID_ATTR_NUMBERFORMAT_VALUE,  SFX_ITEM_POOLABLE },    // ATTR_VALUE_FORMAT
     136             :     { ATTR_LANGUAGE_FORMAT,         SFX_ITEM_POOLABLE },    // ATTR_LANGUAGE_FORMAT ab 329, wird im Dialog mit SID_ATTR_NUMBERFORMAT_VALUE kombiniert
     137             :     { SID_ATTR_BRUSH,               SFX_ITEM_POOLABLE },    // ATTR_BACKGROUND
     138             :     { SID_SCATTR_PROTECTION,        SFX_ITEM_POOLABLE },    // ATTR_PROTECTION
     139             :     { SID_ATTR_BORDER_OUTER,        SFX_ITEM_POOLABLE },    // ATTR_BORDER
     140             :     { SID_ATTR_BORDER_INNER,        SFX_ITEM_POOLABLE },    // ATTR_BORDER_INNER
     141             :     { SID_ATTR_BORDER_SHADOW,       SFX_ITEM_POOLABLE },    // ATTR_SHADOW
     142             :     { 0,                            SFX_ITEM_POOLABLE },    // ATTR_VALIDDATA
     143             :     { 0,                            SFX_ITEM_POOLABLE },    // ATTR_CONDITIONAL
     144             :     { 0,                            SFX_ITEM_POOLABLE },    // ATTR_PATTERN
     145             :     { SID_ATTR_LRSPACE,             SFX_ITEM_POOLABLE },    // ATTR_LRSPACE
     146             :     { SID_ATTR_ULSPACE,             SFX_ITEM_POOLABLE },    // ATTR_ULSPACE
     147             :     { SID_ATTR_PAGE,                SFX_ITEM_POOLABLE },    // ATTR_PAGE
     148             :     { 0,                            SFX_ITEM_POOLABLE },    // ATTR_PAGE_PAPERTRAY, seit 303 nur noch dummy
     149             :     { SID_ATTR_PAGE_PAPERBIN,       SFX_ITEM_POOLABLE },    // ATTR_PAGE_PAPERBIN
     150             :     { SID_ATTR_PAGE_SIZE,           SFX_ITEM_POOLABLE },    // ATTR_PAGE_SIZE
     151             :     { SID_ATTR_PAGE_MAXSIZE,        SFX_ITEM_POOLABLE },    // ATTR_PAGE_MAXSIZE
     152             :     { SID_ATTR_PAGE_EXT1,           SFX_ITEM_POOLABLE },    // ATTR_PAGE_HORCENTER
     153             :     { SID_ATTR_PAGE_EXT2,           SFX_ITEM_POOLABLE },    // ATTR_PAGE_VERCENTER
     154             :     { SID_ATTR_PAGE_ON,             SFX_ITEM_POOLABLE },    // ATTR_PAGE_ON
     155             :     { SID_ATTR_PAGE_DYNAMIC,        SFX_ITEM_POOLABLE },    // ATTR_PAGE_DYNAMIC
     156             :     { SID_ATTR_PAGE_SHARED,         SFX_ITEM_POOLABLE },    // ATTR_PAGE_SHARED
     157             :     { SID_SCATTR_PAGE_NOTES,        SFX_ITEM_POOLABLE },    // ATTR_PAGE_NOTES
     158             :     { SID_SCATTR_PAGE_GRID,         SFX_ITEM_POOLABLE },    // ATTR_PAGE_GRID
     159             :     { SID_SCATTR_PAGE_HEADERS,      SFX_ITEM_POOLABLE },    // ATTR_PAGE_HEADERS
     160             :     { SID_SCATTR_PAGE_CHARTS,       SFX_ITEM_POOLABLE },    // ATTR_PAGE_CHARTS
     161             :     { SID_SCATTR_PAGE_OBJECTS,      SFX_ITEM_POOLABLE },    // ATTR_PAGE_OBJECTS
     162             :     { SID_SCATTR_PAGE_DRAWINGS,     SFX_ITEM_POOLABLE },    // ATTR_PAGE_DRAWINGS
     163             :     { SID_SCATTR_PAGE_TOPDOWN,      SFX_ITEM_POOLABLE },    // ATTR_PAGE_TOPDOWN
     164             :     { SID_SCATTR_PAGE_SCALE,        SFX_ITEM_POOLABLE },    // ATTR_PAGE_SCALE
     165             :     { SID_SCATTR_PAGE_SCALETOPAGES, SFX_ITEM_POOLABLE },    // ATTR_PAGE_SCALETOPAGES
     166             :     { SID_SCATTR_PAGE_FIRSTPAGENO,  SFX_ITEM_POOLABLE },    // ATTR_PAGE_FIRSTPAGENO
     167             :     { SID_SCATTR_PAGE_PRINTAREA,    SFX_ITEM_POOLABLE },    // ATTR_PAGE_PRINTAREA
     168             :     { SID_SCATTR_PAGE_REPEATROW,    SFX_ITEM_POOLABLE },    // ATTR_PAGE_REPEATROW
     169             :     { SID_SCATTR_PAGE_REPEATCOL,    SFX_ITEM_POOLABLE },    // ATTR_PAGE_REPEATCOL
     170             :     { SID_SCATTR_PAGE_PRINTTABLES,  SFX_ITEM_POOLABLE },    // ATTR_PAGE_PRINTTABLES
     171             :     { SID_SCATTR_PAGE_HEADERLEFT,   SFX_ITEM_POOLABLE },    // ATTR_PAGE_HEADERLEFT
     172             :     { SID_SCATTR_PAGE_FOOTERLEFT,   SFX_ITEM_POOLABLE },    // ATTR_PAGE_FOOTERLEFT
     173             :     { SID_SCATTR_PAGE_HEADERRIGHT,  SFX_ITEM_POOLABLE },    // ATTR_PAGE_HEADERRIGHT
     174             :     { SID_SCATTR_PAGE_FOOTERRIGHT,  SFX_ITEM_POOLABLE },    // ATTR_PAGE_FOOTERRIGHT
     175             :     { SID_ATTR_PAGE_HEADERSET,      SFX_ITEM_POOLABLE },    // ATTR_PAGE_HEADERSET
     176             :     { SID_ATTR_PAGE_FOOTERSET,      SFX_ITEM_POOLABLE },    // ATTR_PAGE_FOOTERSET
     177             :     { SID_SCATTR_PAGE_FORMULAS,     SFX_ITEM_POOLABLE },    // ATTR_PAGE_FORMULAS
     178             :     { SID_SCATTR_PAGE_NULLVALS,     SFX_ITEM_POOLABLE },    // ATTR_PAGE_NULLVALS
     179             :     { SID_SCATTR_PAGE_SCALETO,      SFX_ITEM_POOLABLE }     // ATTR_PAGE_SCALETO
     180             : };
     181             : 
     182             : // -----------------------------------------------------------------------
     183             : 
     184         195 : ScDocumentPool::ScDocumentPool( SfxItemPool* pSecPool, sal_Bool bLoadRefCounts )
     185             : 
     186             :     :   SfxItemPool ( rtl::OUString("ScDocumentPool"),
     187             :                         ATTR_STARTINDEX, ATTR_ENDINDEX,
     188             :                         aItemInfos, NULL, bLoadRefCounts ),
     189         195 :         pSecondary  ( pSecPool )
     190             : {
     191             :     //  latin font from GetDefaultFonts is not used, DEFAULTFONT_LATIN_SPREADSHEET instead
     192             :     Font aStdFont = OutputDevice::GetDefaultFont( DEFAULTFONT_LATIN_SPREADSHEET, LANGUAGE_ENGLISH_US,
     193         195 :                                                     DEFAULTFONT_FLAGS_ONLYONE );
     194             :     SvxFontItem* pStdFont = new SvxFontItem( aStdFont.GetFamily(),
     195             :                                             aStdFont.GetName(), aStdFont.GetStyleName(),
     196         195 :                                             aStdFont.GetPitch(), aStdFont.GetCharSet(),
     197         390 :                                             ATTR_FONT );
     198             : 
     199         195 :     SvxFontItem* pCjkFont = new SvxFontItem( ATTR_CJK_FONT );
     200         195 :     SvxFontItem* pCtlFont = new SvxFontItem( ATTR_CTL_FONT );
     201         195 :     SvxFontItem aDummy( ATTR_FONT );
     202         195 :     GetDefaultFonts( aDummy, *pCjkFont, *pCtlFont );
     203             : 
     204         195 :     SvxBoxInfoItem* pGlobalBorderInnerAttr = new SvxBoxInfoItem( ATTR_BORDER_INNER );
     205         195 :     SfxItemSet*     pSet = new SfxItemSet( *this, ATTR_PATTERN_START, ATTR_PATTERN_END );
     206             :     SfxItemSet      aSetItemItemSet( *this,
     207             :                                      ATTR_BACKGROUND, ATTR_BACKGROUND,
     208             :                                      ATTR_BORDER,     ATTR_SHADOW,
     209             :                                      ATTR_LRSPACE,    ATTR_ULSPACE,
     210             :                                      ATTR_PAGE_SIZE,  ATTR_PAGE_SIZE,
     211             :                                      ATTR_PAGE_ON,    ATTR_PAGE_SHARED,
     212         195 :                                      0 );
     213             : 
     214         195 :     pGlobalBorderInnerAttr->SetLine(NULL, BOXINFO_LINE_HORI);
     215         195 :     pGlobalBorderInnerAttr->SetLine(NULL, BOXINFO_LINE_VERT);
     216         195 :     pGlobalBorderInnerAttr->SetTable(sal_True);
     217         195 :     pGlobalBorderInnerAttr->SetDist(sal_True);
     218         195 :     pGlobalBorderInnerAttr->SetMinDist(false);
     219             : 
     220         195 :     ppPoolDefaults = new SfxPoolItem*[ATTR_ENDINDEX-ATTR_STARTINDEX+1];
     221             : 
     222         195 :     ppPoolDefaults[ ATTR_FONT            - ATTR_STARTINDEX ] = pStdFont;
     223         195 :     ppPoolDefaults[ ATTR_FONT_HEIGHT     - ATTR_STARTINDEX ] = new SvxFontHeightItem( 200, 100, ATTR_FONT_HEIGHT );       // 10 pt;
     224         195 :     ppPoolDefaults[ ATTR_FONT_WEIGHT     - ATTR_STARTINDEX ] = new SvxWeightItem( WEIGHT_NORMAL, ATTR_FONT_WEIGHT );
     225         195 :     ppPoolDefaults[ ATTR_FONT_POSTURE    - ATTR_STARTINDEX ] = new SvxPostureItem( ITALIC_NONE, ATTR_FONT_POSTURE );
     226         195 :     ppPoolDefaults[ ATTR_FONT_UNDERLINE  - ATTR_STARTINDEX ] = new SvxUnderlineItem( UNDERLINE_NONE, ATTR_FONT_UNDERLINE );
     227         195 :     ppPoolDefaults[ ATTR_FONT_OVERLINE   - ATTR_STARTINDEX ] = new SvxOverlineItem( UNDERLINE_NONE, ATTR_FONT_OVERLINE );
     228         195 :     ppPoolDefaults[ ATTR_FONT_CROSSEDOUT - ATTR_STARTINDEX ] = new SvxCrossedOutItem( STRIKEOUT_NONE, ATTR_FONT_CROSSEDOUT );
     229         195 :     ppPoolDefaults[ ATTR_FONT_CONTOUR    - ATTR_STARTINDEX ] = new SvxContourItem( false, ATTR_FONT_CONTOUR );
     230         195 :     ppPoolDefaults[ ATTR_FONT_SHADOWED   - ATTR_STARTINDEX ] = new SvxShadowedItem( false, ATTR_FONT_SHADOWED );
     231         195 :     ppPoolDefaults[ ATTR_FONT_COLOR      - ATTR_STARTINDEX ] = new SvxColorItem( Color(COL_AUTO), ATTR_FONT_COLOR );
     232         195 :     ppPoolDefaults[ ATTR_FONT_LANGUAGE   - ATTR_STARTINDEX ] = new SvxLanguageItem( LanguageType(LANGUAGE_DONTKNOW), ATTR_FONT_LANGUAGE );
     233         195 :     ppPoolDefaults[ ATTR_CJK_FONT        - ATTR_STARTINDEX ] = pCjkFont;
     234         195 :     ppPoolDefaults[ ATTR_CJK_FONT_HEIGHT - ATTR_STARTINDEX ] = new SvxFontHeightItem( 200, 100, ATTR_CJK_FONT_HEIGHT );
     235         195 :     ppPoolDefaults[ ATTR_CJK_FONT_WEIGHT - ATTR_STARTINDEX ] = new SvxWeightItem( WEIGHT_NORMAL, ATTR_CJK_FONT_WEIGHT );
     236         195 :     ppPoolDefaults[ ATTR_CJK_FONT_POSTURE- ATTR_STARTINDEX ] = new SvxPostureItem( ITALIC_NONE, ATTR_CJK_FONT_POSTURE );
     237         195 :     ppPoolDefaults[ ATTR_CJK_FONT_LANGUAGE-ATTR_STARTINDEX ] = new SvxLanguageItem( LanguageType(LANGUAGE_DONTKNOW),
     238         390 :                                                                     ATTR_CJK_FONT_LANGUAGE );
     239         195 :     ppPoolDefaults[ ATTR_CTL_FONT        - ATTR_STARTINDEX ] = pCtlFont;
     240         195 :     ppPoolDefaults[ ATTR_CTL_FONT_HEIGHT - ATTR_STARTINDEX ] = new SvxFontHeightItem( 200, 100, ATTR_CTL_FONT_HEIGHT );
     241         195 :     ppPoolDefaults[ ATTR_CTL_FONT_WEIGHT - ATTR_STARTINDEX ] = new SvxWeightItem( WEIGHT_NORMAL, ATTR_CTL_FONT_WEIGHT );
     242         195 :     ppPoolDefaults[ ATTR_CTL_FONT_POSTURE- ATTR_STARTINDEX ] = new SvxPostureItem( ITALIC_NONE, ATTR_CTL_FONT_POSTURE );
     243         195 :     ppPoolDefaults[ ATTR_CTL_FONT_LANGUAGE-ATTR_STARTINDEX ] = new SvxLanguageItem( LanguageType(LANGUAGE_DONTKNOW),
     244         390 :                                                                     ATTR_CTL_FONT_LANGUAGE );
     245         195 :     ppPoolDefaults[ ATTR_FONT_EMPHASISMARK-ATTR_STARTINDEX ] = new SvxEmphasisMarkItem( EMPHASISMARK_NONE, ATTR_FONT_EMPHASISMARK );
     246         195 :     ppPoolDefaults[ ATTR_USERDEF         - ATTR_STARTINDEX ] = new SvXMLAttrContainerItem( ATTR_USERDEF );
     247         195 :     ppPoolDefaults[ ATTR_FONT_WORDLINE   - ATTR_STARTINDEX ] = new SvxWordLineModeItem(false, ATTR_FONT_WORDLINE );
     248         195 :     ppPoolDefaults[ ATTR_FONT_RELIEF     - ATTR_STARTINDEX ] = new SvxCharReliefItem( RELIEF_NONE, ATTR_FONT_RELIEF );
     249         195 :     ppPoolDefaults[ ATTR_HYPHENATE       - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_HYPHENATE );
     250         195 :     ppPoolDefaults[ ATTR_SCRIPTSPACE     - ATTR_STARTINDEX ] = new SvxScriptSpaceItem( false, ATTR_SCRIPTSPACE);
     251         195 :     ppPoolDefaults[ ATTR_HANGPUNCTUATION - ATTR_STARTINDEX ] = new SvxHangingPunctuationItem( false, ATTR_HANGPUNCTUATION);
     252         195 :     ppPoolDefaults[ ATTR_FORBIDDEN_RULES - ATTR_STARTINDEX ] = new SvxForbiddenRuleItem( false, ATTR_FORBIDDEN_RULES);
     253         195 :     ppPoolDefaults[ ATTR_HOR_JUSTIFY     - ATTR_STARTINDEX ] = new SvxHorJustifyItem( SVX_HOR_JUSTIFY_STANDARD, ATTR_HOR_JUSTIFY);
     254         195 :     ppPoolDefaults[ ATTR_HOR_JUSTIFY_METHOD - ATTR_STARTINDEX ] = new SvxJustifyMethodItem( SVX_JUSTIFY_METHOD_AUTO, ATTR_HOR_JUSTIFY_METHOD);
     255         195 :     ppPoolDefaults[ ATTR_INDENT          - ATTR_STARTINDEX ] = new SfxUInt16Item( ATTR_INDENT, 0 );
     256         195 :     ppPoolDefaults[ ATTR_VER_JUSTIFY     - ATTR_STARTINDEX ] = new SvxVerJustifyItem( SVX_VER_JUSTIFY_STANDARD, ATTR_VER_JUSTIFY);
     257         195 :     ppPoolDefaults[ ATTR_VER_JUSTIFY_METHOD - ATTR_STARTINDEX ] = new SvxJustifyMethodItem( SVX_JUSTIFY_METHOD_AUTO, ATTR_VER_JUSTIFY_METHOD);
     258         195 :     ppPoolDefaults[ ATTR_STACKED         - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_STACKED, false );
     259         195 :     ppPoolDefaults[ ATTR_ROTATE_VALUE    - ATTR_STARTINDEX ] = new SfxInt32Item( ATTR_ROTATE_VALUE, 0 );
     260         195 :     ppPoolDefaults[ ATTR_ROTATE_MODE     - ATTR_STARTINDEX ] = new SvxRotateModeItem( SVX_ROTATE_MODE_BOTTOM, ATTR_ROTATE_MODE );
     261         195 :     ppPoolDefaults[ ATTR_VERTICAL_ASIAN  - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_VERTICAL_ASIAN );
     262             :     //  The default for the ATTR_WRITINGDIR cell attribute must by FRMDIR_ENVIRONMENT,
     263             :     //  so that value is returned when asking for a default cell's attributes.
     264             :     //  The value from the page style is set as DefaultHorizontalTextDirection for the EditEngine.
     265         195 :     ppPoolDefaults[ ATTR_WRITINGDIR      - ATTR_STARTINDEX ] = new SvxFrameDirectionItem( FRMDIR_ENVIRONMENT, ATTR_WRITINGDIR );
     266         195 :     ppPoolDefaults[ ATTR_LINEBREAK       - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_LINEBREAK );
     267         195 :     ppPoolDefaults[ ATTR_SHRINKTOFIT     - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_SHRINKTOFIT );
     268         195 :     ppPoolDefaults[ ATTR_BORDER_TLBR     - ATTR_STARTINDEX ] = new SvxLineItem( ATTR_BORDER_TLBR );
     269         195 :     ppPoolDefaults[ ATTR_BORDER_BLTR     - ATTR_STARTINDEX ] = new SvxLineItem( ATTR_BORDER_BLTR );
     270         195 :     ppPoolDefaults[ ATTR_MARGIN          - ATTR_STARTINDEX ] = new SvxMarginItem( ATTR_MARGIN );
     271         195 :     ppPoolDefaults[ ATTR_MERGE           - ATTR_STARTINDEX ] = new ScMergeAttr;
     272         195 :     ppPoolDefaults[ ATTR_MERGE_FLAG      - ATTR_STARTINDEX ] = new ScMergeFlagAttr;
     273         195 :     ppPoolDefaults[ ATTR_VALUE_FORMAT    - ATTR_STARTINDEX ] = new SfxUInt32Item( ATTR_VALUE_FORMAT, 0 );
     274         195 :     ppPoolDefaults[ ATTR_LANGUAGE_FORMAT - ATTR_STARTINDEX ] = new SvxLanguageItem( ScGlobal::eLnge, ATTR_LANGUAGE_FORMAT );
     275         195 :     ppPoolDefaults[ ATTR_BACKGROUND      - ATTR_STARTINDEX ] = new SvxBrushItem( Color(COL_TRANSPARENT), ATTR_BACKGROUND );
     276         195 :     ppPoolDefaults[ ATTR_PROTECTION      - ATTR_STARTINDEX ] = new ScProtectionAttr;
     277         195 :     ppPoolDefaults[ ATTR_BORDER          - ATTR_STARTINDEX ] = new SvxBoxItem( ATTR_BORDER );
     278         195 :     ppPoolDefaults[ ATTR_BORDER_INNER    - ATTR_STARTINDEX ] = pGlobalBorderInnerAttr;
     279         195 :     ppPoolDefaults[ ATTR_SHADOW          - ATTR_STARTINDEX ] = new SvxShadowItem( ATTR_SHADOW );
     280         195 :     ppPoolDefaults[ ATTR_VALIDDATA       - ATTR_STARTINDEX ] = new SfxUInt32Item( ATTR_VALIDDATA, 0 );
     281         195 :     ppPoolDefaults[ ATTR_CONDITIONAL     - ATTR_STARTINDEX ] = new ScCondFormatItem;
     282             : 
     283             :     //  GetRscString funktioniert erst nach ScGlobal::Init, zu erkennen am EmptyBrushItem
     284             :     //! zusaetzliche Methode ScGlobal::IsInit() oder so...
     285             :     //! oder erkennen, ob dies der Secondary-Pool fuer einen MessagePool ist
     286         195 :     if ( ScGlobal::GetEmptyBrushItem() )
     287         190 :         ppPoolDefaults[ ATTR_PATTERN     - ATTR_STARTINDEX ] = new ScPatternAttr( pSet, ScGlobal::GetRscString(STR_STYLENAME_STANDARD) );
     288             :     else
     289           5 :         ppPoolDefaults[ ATTR_PATTERN     - ATTR_STARTINDEX ] = new ScPatternAttr( pSet,
     290          10 :             rtl::OUString(STRING_STANDARD) ); //! without name?
     291             : 
     292         195 :     ppPoolDefaults[ ATTR_LRSPACE         - ATTR_STARTINDEX ] = new SvxLRSpaceItem( ATTR_LRSPACE );
     293         195 :     ppPoolDefaults[ ATTR_ULSPACE         - ATTR_STARTINDEX ] = new SvxULSpaceItem( ATTR_ULSPACE );
     294         195 :     ppPoolDefaults[ ATTR_PAGE            - ATTR_STARTINDEX ] = new SvxPageItem( ATTR_PAGE );
     295         195 :     ppPoolDefaults[ ATTR_PAGE_PAPERTRAY  - ATTR_STARTINDEX ] = new SfxAllEnumItem( ATTR_PAGE_PAPERTRAY );
     296         195 :     ppPoolDefaults[ ATTR_PAGE_PAPERBIN   - ATTR_STARTINDEX ] = new SvxPaperBinItem( ATTR_PAGE_PAPERBIN );
     297         195 :     ppPoolDefaults[ ATTR_PAGE_SIZE       - ATTR_STARTINDEX ] = new SvxSizeItem( ATTR_PAGE_SIZE );
     298         195 :     ppPoolDefaults[ ATTR_PAGE_MAXSIZE    - ATTR_STARTINDEX ] = new SvxSizeItem( ATTR_PAGE_MAXSIZE );
     299         195 :     ppPoolDefaults[ ATTR_PAGE_HORCENTER  - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_PAGE_HORCENTER );
     300         195 :     ppPoolDefaults[ ATTR_PAGE_VERCENTER  - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_PAGE_VERCENTER );
     301         195 :     ppPoolDefaults[ ATTR_PAGE_ON         - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_PAGE_ON, sal_True );
     302         195 :     ppPoolDefaults[ ATTR_PAGE_DYNAMIC    - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_PAGE_DYNAMIC, sal_True );
     303         195 :     ppPoolDefaults[ ATTR_PAGE_SHARED     - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_PAGE_SHARED, sal_True );
     304         195 :     ppPoolDefaults[ ATTR_PAGE_NOTES      - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_PAGE_NOTES, false );
     305         195 :     ppPoolDefaults[ ATTR_PAGE_GRID       - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_PAGE_GRID, false );
     306         195 :     ppPoolDefaults[ ATTR_PAGE_HEADERS    - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_PAGE_HEADERS, false );
     307         195 :     ppPoolDefaults[ ATTR_PAGE_CHARTS     - ATTR_STARTINDEX ] = new ScViewObjectModeItem( ATTR_PAGE_CHARTS );
     308         195 :     ppPoolDefaults[ ATTR_PAGE_OBJECTS    - ATTR_STARTINDEX ] = new ScViewObjectModeItem( ATTR_PAGE_OBJECTS );
     309         195 :     ppPoolDefaults[ ATTR_PAGE_DRAWINGS   - ATTR_STARTINDEX ] = new ScViewObjectModeItem( ATTR_PAGE_DRAWINGS );
     310         195 :     ppPoolDefaults[ ATTR_PAGE_TOPDOWN    - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_PAGE_TOPDOWN, sal_True );
     311         195 :     ppPoolDefaults[ ATTR_PAGE_SCALE      - ATTR_STARTINDEX ] = new SfxUInt16Item( ATTR_PAGE_SCALE, 100 );
     312         195 :     ppPoolDefaults[ ATTR_PAGE_SCALETOPAGES-ATTR_STARTINDEX ] = new SfxUInt16Item( ATTR_PAGE_SCALETOPAGES, 1 );
     313         195 :     ppPoolDefaults[ ATTR_PAGE_FIRSTPAGENO- ATTR_STARTINDEX ] = new SfxUInt16Item( ATTR_PAGE_FIRSTPAGENO, 1 );
     314         195 :     ppPoolDefaults[ ATTR_PAGE_PRINTAREA  - ATTR_STARTINDEX ] = new ScRangeItem( ATTR_PAGE_PRINTAREA );
     315         195 :     ppPoolDefaults[ ATTR_PAGE_REPEATROW  - ATTR_STARTINDEX ] = new ScRangeItem( ATTR_PAGE_REPEATROW );
     316         195 :     ppPoolDefaults[ ATTR_PAGE_REPEATCOL  - ATTR_STARTINDEX ] = new ScRangeItem( ATTR_PAGE_REPEATCOL );
     317         195 :     ppPoolDefaults[ ATTR_PAGE_PRINTTABLES- ATTR_STARTINDEX ] = new ScTableListItem( ATTR_PAGE_PRINTTABLES );
     318         195 :     ppPoolDefaults[ ATTR_PAGE_HEADERLEFT - ATTR_STARTINDEX ] = new ScPageHFItem( ATTR_PAGE_HEADERLEFT );
     319         195 :     ppPoolDefaults[ ATTR_PAGE_FOOTERLEFT - ATTR_STARTINDEX ] = new ScPageHFItem( ATTR_PAGE_FOOTERLEFT );
     320         195 :     ppPoolDefaults[ ATTR_PAGE_HEADERRIGHT- ATTR_STARTINDEX ] = new ScPageHFItem( ATTR_PAGE_HEADERRIGHT );
     321         195 :     ppPoolDefaults[ ATTR_PAGE_FOOTERRIGHT- ATTR_STARTINDEX ] = new ScPageHFItem( ATTR_PAGE_FOOTERRIGHT );
     322         195 :     ppPoolDefaults[ ATTR_PAGE_HEADERSET  - ATTR_STARTINDEX ] = new SvxSetItem( ATTR_PAGE_HEADERSET, aSetItemItemSet );
     323         195 :     ppPoolDefaults[ ATTR_PAGE_FOOTERSET  - ATTR_STARTINDEX ] = new SvxSetItem( ATTR_PAGE_FOOTERSET, aSetItemItemSet );
     324         195 :     ppPoolDefaults[ ATTR_PAGE_FORMULAS   - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_PAGE_FORMULAS, false );
     325         195 :     ppPoolDefaults[ ATTR_PAGE_NULLVALS   - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_PAGE_NULLVALS, sal_True );
     326         195 :     ppPoolDefaults[ ATTR_PAGE_SCALETO    - ATTR_STARTINDEX ] = new ScPageScaleToItem( 1, 1 );
     327         195 :     ppPoolDefaults[ ATTR_HIDDEN          - ATTR_STARTINDEX ] = new SfxBoolItem( ATTR_HIDDEN, sal_False );
     328             : 
     329         195 :     SetDefaults( ppPoolDefaults );
     330             : 
     331         195 :     if ( pSecondary )
     332           0 :         SetSecondaryPool( pSecondary );
     333             : 
     334             :     // ATTR_LANGUAGE_FORMAT ab sv329 eingefuegt, VersionMap in _ScGlobal__Init
     335         195 :     SetVersionMap( 1, 100, 157, pVersionMap1 );
     336             : 
     337             :     // ATTR_VALIDDATA, ATTR_CONDITIONAL ab 341
     338         195 :     SetVersionMap( 2, 100, 158, pVersionMap2 );
     339             : 
     340             :     // ATTR_INDENT ab 350
     341         195 :     SetVersionMap( 3, 100, 160, pVersionMap3 );
     342             : 
     343             :     // ATTR_ROTATE_VALUE, ATTR_ROTATE_MODE ab 367
     344         195 :     SetVersionMap( 4, 100, 161, pVersionMap4 );
     345             : 
     346             :     // CJK, CTL, EMPHASISMARK, TWOLINES from 614
     347         195 :     SetVersionMap( 5, 100, 163, pVersionMap5 );
     348             : 
     349             :     // ATTR_SCRIPTSPACE, ATTR_HANGPUNCTUATION, ATTR_FORBIDDEN_RULES from 614d
     350         195 :     SetVersionMap( 6, 100, 175, pVersionMap6 );
     351             : 
     352             :     // ATTR_FONT_WORDLINE, ATTR_FONT_RELIEF, ATTR_HYPHENATE from 632b
     353         195 :     SetVersionMap( 7, 100, 178, pVersionMap7 );
     354             : 
     355             :     // ATTR_VERTICAL_ASIAN from 642q
     356         195 :     SetVersionMap( 8, 100, 181, pVersionMap8 );
     357             : 
     358             :     // ATTR_WRITINGDIR from 643y
     359         195 :     SetVersionMap( 9, 100, 182, pVersionMap9 );
     360             : 
     361             :     // ATTR_PAGE_SCALETO added in 680/sab008
     362             :     // new version map not required
     363             : 
     364             :     // ATTR_SHRINKTOFIT, ATTR_BORDER_TL_BR, ATTR_BORDER_BL_TR added in 680/dr14
     365         195 :     SetVersionMap( 10, 100, 184, pVersionMap10 );
     366             : 
     367             :     // ATTR_FONT_OVERLINE added in DEV300/overline2
     368         195 :     SetVersionMap( 11, 100, 187, pVersionMap11 );
     369         195 : }
     370             : 
     371         327 : ScDocumentPool::~ScDocumentPool()
     372             : {
     373         109 :     Delete();
     374             : 
     375       10137 :     for ( sal_uInt16 i=0; i < ATTR_ENDINDEX-ATTR_STARTINDEX+1; i++ )
     376             :     {
     377       10028 :         SetRefCount( *ppPoolDefaults[i], 0 );
     378       10028 :         delete ppPoolDefaults[i];
     379             :     }
     380             : 
     381         109 :     delete[] ppPoolDefaults;
     382         109 :     SfxItemPool::Free(pSecondary);
     383         218 : }
     384             : 
     385           5 : void ScDocumentPool::InitVersionMaps()
     386             : {
     387             :     OSL_PRECOND( !pVersionMap1 && !pVersionMap2 &&
     388             :                 !pVersionMap3 && !pVersionMap4 &&
     389             :                 !pVersionMap5 && !pVersionMap6 &&
     390             :                 !pVersionMap7 && !pVersionMap8 &&
     391             :                 !pVersionMap9 && !pVersionMap10 &&
     392             :                 !pVersionMap11, "InitVersionMaps call multiple times" );
     393             : 
     394             :     // alte WhichId's mappen
     395             :     // nicht mit ATTR_* zaehlen, falls die sich nochmal aendern
     396             : 
     397             :     //  erste Map: ATTR_LANGUAGE_FORMAT ab sv329 eingefuegt
     398             : 
     399           5 :     const sal_uInt16 nMap1Start = 100;  // alter ATTR_STARTINDEX
     400           5 :     const sal_uInt16 nMap1End   = 157;  // alter ATTR_ENDINDEX
     401           5 :     const sal_uInt16 nMap1Count = nMap1End - nMap1Start + 1;
     402           5 :     const sal_uInt16 nMap1New   = 18;   // ATTR_LANGUAGE_FORMAT - ATTR_STARTINDEX
     403           5 :     pVersionMap1 = new sal_uInt16 [ nMap1Count ];
     404             :     sal_uInt16 i, j;
     405          95 :     for ( i=0, j=nMap1Start; i < nMap1New; i++, j++ )
     406          90 :         pVersionMap1[i] = j;
     407             :     // ein Eintrag eingefuegt...
     408         205 :     for ( i=nMap1New, j=nMap1Start+nMap1New+1; i < nMap1Count; i++, j++ )
     409         200 :         pVersionMap1[i] = j;
     410             : 
     411             :     //  zweite Map: ATTR_VALIDDATA und ATTR_CONDITIONAL ab 341 eingefuegt
     412             : 
     413           5 :     const sal_uInt16 nMap2Start = 100;  // ATTR_STARTINDEX
     414           5 :     const sal_uInt16 nMap2End   = 158;  // ATTR_ENDINDEX
     415           5 :     const sal_uInt16 nMap2Count = nMap2End - nMap2Start + 1;
     416           5 :     const sal_uInt16 nMap2New   = 24;   // ATTR_VALIDDATA - ATTR_STARTINDEX
     417           5 :     pVersionMap2 = new sal_uInt16 [ nMap2Count ];
     418         125 :     for ( i=0, j=nMap2Start; i < nMap2New; i++, j++ )
     419         120 :         pVersionMap2[i] = j;
     420             :     // zwei Eintraege eingefuegt...
     421         180 :     for ( i=nMap2New, j=nMap2Start+nMap2New+2; i < nMap2Count; i++, j++ )
     422         175 :         pVersionMap2[i] = j;
     423             : 
     424             :     //  dritte Map: ATTR_INDENT ab 350 eingefuegt
     425             : 
     426           5 :     const sal_uInt16 nMap3Start = 100;  // ATTR_STARTINDEX
     427           5 :     const sal_uInt16 nMap3End   = 160;  // ATTR_ENDINDEX
     428           5 :     const sal_uInt16 nMap3Count = nMap3End - nMap3Start + 1;
     429           5 :     const sal_uInt16 nMap3New   = 11;   // ATTR_INDENT - ATTR_STARTINDEX
     430           5 :     pVersionMap3 = new sal_uInt16 [ nMap3Count ];
     431          60 :     for ( i=0, j=nMap3Start; i < nMap3New; i++, j++ )
     432          55 :         pVersionMap3[i] = j;
     433             :     // ein Eintrag eingefuegt...
     434         255 :     for ( i=nMap3New, j=nMap3Start+nMap3New+1; i < nMap3Count; i++, j++ )
     435         250 :         pVersionMap3[i] = j;
     436             : 
     437             :     //  vierte Map: ATTR_ROTATE_VALUE und ATTR_ROTATE_MODE ab 367 eingefuegt
     438             : 
     439           5 :     const sal_uInt16 nMap4Start = 100;  // ATTR_STARTINDEX
     440           5 :     const sal_uInt16 nMap4End   = 161;  // ATTR_ENDINDEX
     441           5 :     const sal_uInt16 nMap4Count = nMap4End - nMap4Start + 1;
     442           5 :     const sal_uInt16 nMap4New   = 14;   // ATTR_ROTATE_VALUE - ATTR_STARTINDEX
     443           5 :     pVersionMap4 = new sal_uInt16 [ nMap4Count ];
     444          75 :     for ( i=0, j=nMap4Start; i < nMap4New; i++, j++ )
     445          70 :         pVersionMap4[i] = j;
     446             :     // zwei Eintraege eingefuegt...
     447         245 :     for ( i=nMap4New, j=nMap4Start+nMap4New+2; i < nMap4Count; i++, j++ )
     448         240 :         pVersionMap4[i] = j;
     449             : 
     450             :     //  fifth map: CJK..., CTL..., EMPHASISMARK, TWOLINES (12 items) added in 614
     451             : 
     452           5 :     const sal_uInt16 nMap5Start = 100;  // ATTR_STARTINDEX
     453           5 :     const sal_uInt16 nMap5End   = 163;  // ATTR_ENDINDEX
     454           5 :     const sal_uInt16 nMap5Count = nMap5End - nMap5Start + 1;
     455           5 :     const sal_uInt16 nMap5New   = 10;   // ATTR_CJK_FONT - ATTR_STARTINDEX
     456           5 :     pVersionMap5 = new sal_uInt16 [ nMap5Count ];
     457          55 :     for ( i=0, j=nMap5Start; i < nMap5New; i++, j++ )
     458          50 :         pVersionMap5[i] = j;
     459             :     // 12 entries inserted
     460         275 :     for ( i=nMap5New, j=nMap5Start+nMap5New+12; i < nMap5Count; i++, j++ )
     461         270 :         pVersionMap5[i] = j;
     462             : 
     463             :     // sixth map: ATTR_SCRIPTSPACE, ATTR_HANGPUNCTUATION, ATTR_FORBIDDEN_RULES added in 614d
     464             : 
     465           5 :     const sal_uInt16 nMap6Start = 100;  // ATTR_STARTINDEX
     466           5 :     const sal_uInt16 nMap6End   = 175;  // ATTR_ENDINDEX
     467           5 :     const sal_uInt16 nMap6Count = nMap6End - nMap6Start + 1;
     468           5 :     const sal_uInt16 nMap6New   = 22;   // ATTR_SCRIPTSPACE - ATTR_STARTINDEX
     469           5 :     pVersionMap6 = new sal_uInt16 [ nMap6Count ];
     470         115 :     for ( i=0, j=nMap6Start; i < nMap6New; i++, j++ )
     471         110 :         pVersionMap6[i] = j;
     472             :     // 3 entries inserted
     473         275 :     for ( i=nMap6New, j=nMap6Start+nMap6New+3; i < nMap6Count; i++, j++ )
     474         270 :         pVersionMap6[i] = j;
     475             : 
     476             :     //  seventh map: ATTR_FONT_WORDLINE, ATTR_FONT_RELIEF, ATTR_HYPHENATE added in 632b
     477             : 
     478           5 :     const sal_uInt16 nMap7Start = 100;  // ATTR_STARTINDEX
     479           5 :     const sal_uInt16 nMap7End   = 178;  // ATTR_ENDINDEX
     480           5 :     const sal_uInt16 nMap7Count = nMap7End - nMap7Start + 1;
     481           5 :     const sal_uInt16 nMap7New   = 22;   // ATTR_FONT_WORDLINE - ATTR_STARTINDEX
     482           5 :     pVersionMap7 = new sal_uInt16 [ nMap7Count ];
     483         115 :     for ( i=0, j=nMap7Start; i < nMap7New; i++, j++ )
     484         110 :         pVersionMap7[i] = j;
     485             :     // 3 entries inserted
     486         290 :     for ( i=nMap7New, j=nMap7Start+nMap7New+3; i < nMap7Count; i++, j++ )
     487         285 :         pVersionMap7[i] = j;
     488             : 
     489             :     //  eighth map: ATTR_VERTICAL_ASIAN added in 642q
     490             : 
     491           5 :     const sal_uInt16 nMap8Start = 100;  // ATTR_STARTINDEX
     492           5 :     const sal_uInt16 nMap8End   = 181;  // ATTR_ENDINDEX
     493           5 :     const sal_uInt16 nMap8Count = nMap8End - nMap8Start + 1;
     494           5 :     const sal_uInt16 nMap8New   = 34;   // ATTR_VERTICAL_ASIAN - ATTR_STARTINDEX
     495           5 :     pVersionMap8 = new sal_uInt16 [ nMap8Count ];
     496         175 :     for ( i=0, j=nMap8Start; i < nMap8New; i++, j++ )
     497         170 :         pVersionMap8[i] = j;
     498             :     // 1 entry inserted
     499         245 :     for ( i=nMap8New, j=nMap8Start+nMap8New+1; i < nMap8Count; i++, j++ )
     500         240 :         pVersionMap8[i] = j;
     501             : 
     502             :     //  9th map: ATTR_WRITINGDIR added in 643y
     503             : 
     504           5 :     const sal_uInt16 nMap9Start = 100;  // ATTR_STARTINDEX
     505           5 :     const sal_uInt16 nMap9End   = 182;  // ATTR_ENDINDEX
     506           5 :     const sal_uInt16 nMap9Count = nMap9End - nMap9Start + 1;
     507           5 :     const sal_uInt16 nMap9New   = 35;   // ATTR_WRITINGDIR - ATTR_STARTINDEX
     508           5 :     pVersionMap9 = new sal_uInt16 [ nMap9Count ];
     509         180 :     for ( i=0, j=nMap9Start; i < nMap9New; i++, j++ )
     510         175 :         pVersionMap9[i] = j;
     511             :     // 1 entry inserted
     512         245 :     for ( i=nMap9New, j=nMap9Start+nMap9New+1; i < nMap9Count; i++, j++ )
     513         240 :         pVersionMap9[i] = j;
     514             : 
     515             :     // ATTR_PAGE_SCALETO added in 680/sab008
     516             : 
     517             :     // 10th map: ATTR_SHRINKTOFIT, ATTR_BORDER_TL_BR, ATTR_BORDER_BL_TR added in 680/dr14
     518             : 
     519           5 :     const sal_uInt16 nMap10Start = 100;  // ATTR_STARTINDEX
     520           5 :     const sal_uInt16 nMap10End   = 184;  // ATTR_ENDINDEX
     521           5 :     const sal_uInt16 nMap10Count = nMap10End - nMap10Start + 1;
     522           5 :     const sal_uInt16 nMap10New   = 37;   // ATTR_SHRINKTOFIT - ATTR_STARTINDEX
     523           5 :     pVersionMap10 = new sal_uInt16 [ nMap10Count ];
     524         190 :     for ( i=0, j=nMap10Start; i < nMap10New; i++, j++ )
     525         185 :         pVersionMap10[i] = j;
     526             :     // 3 entries inserted
     527         245 :     for ( i=nMap10New, j=nMap10Start+nMap10New+3; i < nMap10Count; i++, j++ )
     528         240 :         pVersionMap10[i] = j;
     529             : 
     530             :     // 11th map: ATTR_FONT_OVERLINE added in DEV300/overline2
     531             : 
     532           5 :     const sal_uInt16 nMap11Start = 100;  // ATTR_STARTINDEX
     533           5 :     const sal_uInt16 nMap11End   = 187;  // ATTR_ENDINDEX
     534           5 :     const sal_uInt16 nMap11Count = nMap11End - nMap11Start + 1;
     535           5 :     const sal_uInt16 nMap11New   = 5;    // ATTR_FONT_OVERLINE - ATTR_STARTINDEX
     536           5 :     pVersionMap11 = new sal_uInt16 [ nMap11Count ];
     537          30 :     for ( i=0, j=nMap11Start; i < nMap11New; i++, j++ )
     538          25 :         pVersionMap11[i] = j;
     539             :     // 1 entry inserted
     540         420 :     for ( i=nMap11New, j=nMap11Start+nMap11New+1; i < nMap11Count; i++, j++ )
     541         415 :         pVersionMap11[i] = j;
     542           5 : }
     543             : 
     544           0 : void ScDocumentPool::DeleteVersionMaps()
     545             : {
     546             :     OSL_PRECOND( pVersionMap1 && pVersionMap2 &&
     547             :                 pVersionMap3 && pVersionMap4 &&
     548             :                 pVersionMap5 && pVersionMap6 &&
     549             :                 pVersionMap7 && pVersionMap8 &&
     550             :                 pVersionMap9 && pVersionMap10 &&
     551             :                 pVersionMap11, "DeleteVersionMaps without maps" );
     552             : 
     553           0 :     delete[] pVersionMap11;
     554           0 :     pVersionMap11 = 0;
     555           0 :     delete[] pVersionMap10;
     556           0 :     pVersionMap10 = 0;
     557           0 :     delete[] pVersionMap9;
     558           0 :     pVersionMap9 = 0;
     559           0 :     delete[] pVersionMap8;
     560           0 :     pVersionMap8 = 0;
     561           0 :     delete[] pVersionMap7;
     562           0 :     pVersionMap7 = 0;
     563           0 :     delete[] pVersionMap6;
     564           0 :     pVersionMap6 = 0;
     565           0 :     delete[] pVersionMap5;
     566           0 :     pVersionMap5 = 0;
     567           0 :     delete[] pVersionMap4;
     568           0 :     pVersionMap4 = 0;
     569           0 :     delete[] pVersionMap3;
     570           0 :     pVersionMap3 = 0;
     571           0 :     delete[] pVersionMap2;
     572           0 :     pVersionMap2 = 0;
     573           0 :     delete[] pVersionMap1;
     574           0 :     pVersionMap1 = 0;
     575           0 : }
     576             : 
     577             : // ----------------------------------------------------------------------------------------
     578             : //
     579             : //  Fuer die Pattern-Attribute (SetItems) kann der sal_uInt16 RefCount leicht ueberlaufen
     580             : //  (z.B. 600 ganze Zeilen abwechselnd formatieren).
     581             : //  Darum wird der RefCount bei SC_MAX_POOLREF festgehalten und nicht mehr hoch- oder
     582             : //  heruntergezaehlt. Dieser RefCount wird dann erst beim naechsten Laden neu gezaehlt.
     583             : //  Die Differenz zwischen SC_MAX_POOLREF und SC_SAFE_POOLREF ist ein wenig groesser
     584             : //  als noetig, um zu erkennen, wenn der RefCount aus Versehen doch "normal" veraendert
     585             : //  wird (Assertions).
     586             : //
     587             : 
     588      215498 : const SfxPoolItem& ScDocumentPool::Put( const SfxPoolItem& rItem, sal_uInt16 nWhich )
     589             : {
     590      215498 :     if ( rItem.Which() != ATTR_PATTERN )                // nur Pattern ist special
     591       67823 :         return SfxItemPool::Put( rItem, nWhich );
     592             : 
     593             :     //  das Default-Pattern dieses Pools nicht kopieren
     594      147675 :     if (&rItem == ppPoolDefaults[ ATTR_PATTERN - ATTR_STARTINDEX ])
     595       22987 :         return rItem;
     596             : 
     597             :     //  ansonsten muss Put immer passieren, weil es ein anderer Pool sein kann
     598      124688 :     const SfxPoolItem& rNew = SfxItemPool::Put( rItem, nWhich );
     599      124688 :     CheckRef( rNew );
     600      124688 :     return rNew;
     601             : }
     602             : 
     603      405691 : void ScDocumentPool::Remove( const SfxPoolItem& rItem )
     604             : {
     605      405691 :     if ( rItem.Which() == ATTR_PATTERN )                // nur Pattern ist special
     606             :     {
     607      396981 :         sal_uLong nRef = rItem.GetRefCount();
     608      396981 :         if ( nRef >= (sal_uLong) SC_MAX_POOLREF && nRef <= (sal_uLong) SFX_ITEMS_OLD_MAXREF )
     609             :         {
     610           0 :             if ( nRef != (sal_uLong) SC_SAFE_POOLREF )
     611             :             {
     612             :                 OSL_FAIL("Wer fummelt da an meinen Ref-Counts herum");
     613           0 :                 SetRefCount( (SfxPoolItem&)rItem, (sal_uLong) SC_SAFE_POOLREF );
     614             :             }
     615      405691 :             return;                 // nicht herunterzaehlen
     616             :         }
     617             :     }
     618      405691 :     SfxItemPool::Remove( rItem );
     619             : }
     620             : 
     621      161248 : void ScDocumentPool::CheckRef( const SfxPoolItem& rItem )
     622             : {
     623      161248 :     sal_uLong nRef = rItem.GetRefCount();
     624      161248 :     if ( nRef >= (sal_uLong) SC_MAX_POOLREF && nRef <= (sal_uLong) SFX_ITEMS_OLD_MAXREF )
     625             :     {
     626             :         // beim Apply vom Cache wird evtl. um 2 hochgezaehlt (auf MAX+1 oder SAFE+2),
     627             :         // heruntergezaehlt wird nur einzeln (in LoadCompleted)
     628             :         OSL_ENSURE( nRef<=(sal_uLong)SC_MAX_POOLREF+1 || (nRef>=(sal_uLong)SC_SAFE_POOLREF-1 && nRef<=(sal_uLong)SC_SAFE_POOLREF+2),
     629             :                 "ScDocumentPool::CheckRef" );
     630           0 :         SetRefCount( (SfxPoolItem&)rItem, (sal_uLong) SC_SAFE_POOLREF );
     631             :     }
     632      161248 : }
     633             : 
     634             : // ----------------------------------------------------------------------------------------
     635             : 
     636           0 : void ScDocumentPool::StyleDeleted( ScStyleSheet* pStyle )
     637             : {
     638           0 :     sal_uInt32 nCount = GetItemCount2(ATTR_PATTERN);
     639           0 :     for (sal_uInt32 i=0; i<nCount; i++)
     640             :     {
     641           0 :         ScPatternAttr* pPattern = (ScPatternAttr*)GetItem2(ATTR_PATTERN, i);
     642           0 :         if ( pPattern && pPattern->GetStyleSheet() == pStyle )
     643           0 :             pPattern->StyleToName();
     644             :     }
     645           0 : }
     646             : 
     647          36 : void ScDocumentPool::CellStyleCreated( const String& rName )
     648             : {
     649             :     // If a style was created, don't keep any pattern with its name string in the pool,
     650             :     // because it would compare equal to a pattern with a pointer to the new style.
     651             :     // Calling StyleSheetChanged isn't enough because the pool may still contain items
     652             :     // for undo or clipboard content.
     653             : 
     654          36 :     sal_uInt32 nCount = GetItemCount2(ATTR_PATTERN);
     655         407 :     for (sal_uInt32 i=0; i<nCount; i++)
     656             :     {
     657             :         ScPatternAttr *const pPattern =
     658             :             const_cast<ScPatternAttr*>(
     659         371 :                 static_cast<ScPatternAttr const*>(GetItem2(ATTR_PATTERN, i)));
     660         371 :         if ( pPattern && pPattern->GetStyleSheet() == NULL )
     661             :         {
     662           0 :             const String* pStyleName = pPattern->GetStyleName();
     663           0 :             if ( pStyleName && *pStyleName == rName )
     664           0 :                 pPattern->UpdateStyleSheet();           // find and store style pointer
     665             :         }
     666             :     }
     667          36 : }
     668             : 
     669           0 : SfxItemPool* ScDocumentPool::Clone() const
     670             : {
     671           0 :     return new SfxItemPool (*this, sal_True);
     672             : }
     673             : 
     674           0 : static SfxItemPresentation lcl_HFPresentation
     675             : (
     676             :     const SfxPoolItem&  rItem,
     677             :     SfxItemPresentation ePresentation,
     678             :     SfxMapUnit          eCoreMetric,
     679             :     SfxMapUnit          ePresentationMetric,
     680             :     String&             rText,
     681             :     const IntlWrapper* pIntl
     682             : )
     683             : {
     684           0 :     const SfxItemSet& rSet = ((const SfxSetItem&)rItem).GetItemSet();
     685             :     const SfxPoolItem* pItem;
     686             : 
     687           0 :     if ( SFX_ITEM_SET == rSet.GetItemState(ATTR_PAGE_ON,false,&pItem) )
     688             :     {
     689           0 :         if( false == ((const SfxBoolItem*)pItem)->GetValue() )
     690           0 :             return SFX_ITEM_PRESENTATION_NONE;
     691             :     }
     692             : 
     693           0 :     SfxItemIter aIter( rSet );
     694           0 :     pItem = aIter.FirstItem();
     695           0 :     String  aText;
     696           0 :     rtl::OUString aDel(" + ");
     697             : 
     698           0 :     while( pItem )
     699             :     {
     700           0 :         sal_uInt16 nWhich = pItem->Which();
     701             : 
     702           0 :         aText.Erase();
     703             : 
     704           0 :         switch( nWhich )
     705             :         {
     706             :             case ATTR_PAGE_ON:
     707             :             case ATTR_PAGE_DYNAMIC:
     708             :             case ATTR_PAGE_SHARED:
     709           0 :             break;
     710             : 
     711             :             case ATTR_LRSPACE:
     712             :             {
     713           0 :                 SvxLRSpaceItem& rLRItem = (SvxLRSpaceItem&)*pItem;
     714           0 :                 sal_uInt16 nPropLeftMargin  = rLRItem.GetPropLeft();
     715           0 :                 sal_uInt16 nPropRightMargin = rLRItem.GetPropRight();
     716             :                 sal_uInt16 nLeftMargin, nRightMargin;
     717             :                 long nTmp;
     718           0 :                 nTmp = rLRItem.GetLeft();
     719           0 :                 nLeftMargin = nTmp < 0 ? 0 : sal_uInt16(nTmp);
     720           0 :                 nTmp = rLRItem.GetRight();
     721           0 :                 nRightMargin = nTmp < 0 ? 0 : sal_uInt16(nTmp);
     722             : 
     723           0 :                 aText = EE_RESSTR(RID_SVXITEMS_LRSPACE_LEFT);
     724           0 :                 if ( 100 != nPropLeftMargin )
     725             :                 {
     726           0 :                     aText += String::CreateFromInt32( nPropLeftMargin );
     727           0 :                     aText += '%';
     728             :                 }
     729             :                 else
     730             :                 {
     731             :                     aText += GetMetricText( (long)nLeftMargin,
     732           0 :                                            eCoreMetric, ePresentationMetric, pIntl );
     733           0 :                     aText += EE_RESSTR(GetMetricId(ePresentationMetric));
     734             :                 }
     735           0 :                 aText += cpDelim;
     736             : 
     737             :                 // nPropFirstLineOfst haben wir nicht
     738             : 
     739           0 :                 aText += EE_RESSTR(RID_SVXITEMS_LRSPACE_RIGHT);
     740           0 :                 if ( 100 != nPropRightMargin )
     741             :                 {
     742           0 :                     aText += String::CreateFromInt32( nPropRightMargin );
     743           0 :                     aText += '%';
     744             :                 }
     745             :                 else
     746             :                 {
     747             :                     aText += GetMetricText( (long)nRightMargin,
     748           0 :                                             eCoreMetric, ePresentationMetric, pIntl );
     749           0 :                     aText += EE_RESSTR(GetMetricId(ePresentationMetric));
     750             :                 }
     751             :             }
     752           0 :             break;
     753             : 
     754             :             default:
     755           0 :                 if ( !pIntl )
     756           0 :                     pIntl = ScGlobal::GetScIntlWrapper();
     757           0 :                 pItem->GetPresentation( ePresentation, eCoreMetric, ePresentationMetric, aText, pIntl );
     758             : 
     759             :         }
     760             : 
     761           0 :         if ( aText.Len() )
     762             :         {
     763           0 :             rText += aText;
     764           0 :             rText += aDel;
     765             :         }
     766             : 
     767           0 :         pItem = aIter.NextItem();
     768             :     }
     769             : 
     770           0 :     rText = comphelper::string::stripEnd(rText, ' ');
     771           0 :     rText = comphelper::string::stripEnd(rText, '+');
     772           0 :     rText = comphelper::string::stripEnd(rText, ' ');
     773           0 :     return ePresentation;
     774             : }
     775             : 
     776           0 : SfxItemPresentation ScDocumentPool::GetPresentation(
     777             :     const SfxPoolItem&  rItem,
     778             :     SfxItemPresentation ePresentation,
     779             :     SfxMapUnit          ePresentationMetric,
     780             :     String&             rText,
     781             :     const IntlWrapper* pIntl ) const
     782             : {
     783           0 :     sal_uInt16  nW = rItem.Which();
     784           0 :     String aStrYes  ( ScGlobal::GetRscString(STR_YES) );
     785           0 :     String aStrNo   ( ScGlobal::GetRscString(STR_NO) );
     786           0 :     rtl::OUString aStrSep(": ");
     787             : 
     788           0 :     switch( nW )
     789             :     {
     790             :         case ATTR_PAGE_TOPDOWN:
     791           0 :         switch ( ePresentation )
     792             :         {
     793             :             case SFX_ITEM_PRESENTATION_COMPLETE:
     794           0 :             rText  = ScGlobal::GetRscString(STR_SCATTR_PAGE_PRINTDIR);
     795           0 :             rText += aStrSep;
     796             : //          break; // DURCHFALLEN!!!
     797             :             case SFX_ITEM_PRESENTATION_NAMELESS:
     798           0 :             rText += ((const SfxBoolItem&)rItem).GetValue() ?
     799             :                 ScGlobal::GetRscString(STR_SCATTR_PAGE_TOPDOWN) :
     800           0 :                 ScGlobal::GetRscString(STR_SCATTR_PAGE_LEFTRIGHT) ;
     801           0 :             break;
     802             :             default:
     803             :             {
     804             :                 // added to avoid warnings
     805             :             }
     806             :         }
     807           0 :         break;
     808             : 
     809             :         case ATTR_PAGE_HEADERS:
     810           0 :         switch ( ePresentation )
     811             :         {
     812             :             case SFX_ITEM_PRESENTATION_COMPLETE:
     813           0 :             rText  = ScGlobal::GetRscString(STR_SCATTR_PAGE_HEADERS);
     814           0 :             rText += aStrSep;
     815             : //          break; // DURCHFALLEN!!!
     816             :             case SFX_ITEM_PRESENTATION_NAMELESS:
     817           0 :             rText += ((const SfxBoolItem&)rItem).GetValue() ? aStrYes : aStrNo ;
     818           0 :             break;
     819             :             default:
     820             :             {
     821             :                 // added to avoid warnings
     822             :             }
     823             :         }
     824           0 :         break;
     825             : 
     826             :         case ATTR_PAGE_NULLVALS:
     827           0 :         switch ( ePresentation )
     828             :         {
     829             :             case SFX_ITEM_PRESENTATION_COMPLETE:
     830           0 :             rText  = ScGlobal::GetRscString(STR_SCATTR_PAGE_NULLVALS);
     831           0 :             rText += aStrSep;
     832             : //          break; // DURCHFALLEN!!!
     833             :             case SFX_ITEM_PRESENTATION_NAMELESS:
     834           0 :             rText += ((const SfxBoolItem&)rItem).GetValue() ? aStrYes : aStrNo ;
     835           0 :             break;
     836             :             default:
     837             :             {
     838             :                 // added to avoid warnings
     839             :             }
     840             :         }
     841           0 :         break;
     842             : 
     843             :         case ATTR_PAGE_FORMULAS:
     844           0 :         switch ( ePresentation )
     845             :         {
     846             :             case SFX_ITEM_PRESENTATION_COMPLETE:
     847           0 :             rText  = ScGlobal::GetRscString(STR_SCATTR_PAGE_FORMULAS);
     848           0 :             rText += aStrSep;
     849             : //          break; // DURCHFALLEN!!!
     850             :             case SFX_ITEM_PRESENTATION_NAMELESS:
     851           0 :             rText += ((const SfxBoolItem&)rItem).GetValue() ? aStrYes : aStrNo ;
     852           0 :             break;
     853             :             default:
     854             :             {
     855             :                 // added to avoid warnings
     856             :             }
     857             :         }
     858           0 :         break;
     859             : 
     860             :         case ATTR_PAGE_NOTES:
     861           0 :         switch ( ePresentation )
     862             :         {
     863             :             case SFX_ITEM_PRESENTATION_COMPLETE:
     864           0 :             rText  = ScGlobal::GetRscString(STR_SCATTR_PAGE_NOTES);
     865           0 :             rText += aStrSep;
     866             : //          break; // DURCHFALLEN!!!
     867             :             case SFX_ITEM_PRESENTATION_NAMELESS:
     868           0 :             rText += ((const SfxBoolItem&)rItem).GetValue() ? aStrYes : aStrNo ;
     869           0 :             break;
     870             :             default:
     871             :             {
     872             :                 // added to avoid warnings
     873             :             }
     874             :         }
     875           0 :         break;
     876             : 
     877             :         case ATTR_PAGE_GRID:
     878           0 :         switch ( ePresentation )
     879             :         {
     880             :             case SFX_ITEM_PRESENTATION_COMPLETE:
     881           0 :             rText  = ScGlobal::GetRscString(STR_SCATTR_PAGE_GRID);
     882           0 :             rText += aStrSep;
     883             : //          break; // DURCHFALLEN!!!
     884             :             case SFX_ITEM_PRESENTATION_NAMELESS:
     885           0 :             rText += ((const SfxBoolItem&)rItem).GetValue() ? aStrYes : aStrNo ;
     886           0 :             break;
     887             :             default:
     888             :             {
     889             :                 // added to avoid warnings
     890             :             }
     891             :         }
     892           0 :         break;
     893             : 
     894             :         case ATTR_PAGE_SCALETOPAGES:
     895             :         {
     896           0 :             sal_uInt16  nPagNo = ((const SfxUInt16Item&)rItem).GetValue();
     897             : 
     898           0 :             if( nPagNo )
     899             :             {
     900           0 :                 switch ( ePresentation )
     901             :                 {
     902             :                     case SFX_ITEM_PRESENTATION_COMPLETE:
     903             :                     {
     904           0 :                         rText.Assign( ScGlobal::GetRscString( STR_SCATTR_PAGE_SCALETOPAGES ) ).Append( aStrSep );
     905             :                     }
     906             : //                  break; // DURCHFALLEN!!!
     907             :                     case SFX_ITEM_PRESENTATION_NAMELESS:
     908             :                     {
     909           0 :                         String aPages( ScGlobal::GetRscString( STR_SCATTR_PAGE_SCALE_PAGES ) );
     910           0 :                         aPages.SearchAndReplaceAscii( "%1", String::CreateFromInt32( nPagNo ) );
     911           0 :                         rText.Append( aPages );
     912             :                     }
     913           0 :                     break;
     914             :                     default:
     915             :                     {
     916             :                         // added to avoid warnings
     917             :                     }
     918             :                 }
     919             :             }
     920             :             else
     921             :             {
     922           0 :                 ePresentation = SFX_ITEM_PRESENTATION_NONE;
     923             :             }
     924             :         }
     925           0 :         break;
     926             : 
     927             :         case ATTR_PAGE_FIRSTPAGENO:
     928             :         {
     929           0 :             sal_uInt16  nPagNo = ((const SfxUInt16Item&)rItem).GetValue();
     930             : 
     931           0 :             if( nPagNo )
     932             :             {
     933           0 :                 switch ( ePresentation )
     934             :                 {
     935             :                     case SFX_ITEM_PRESENTATION_COMPLETE:
     936           0 :                     rText  = ScGlobal::GetRscString(STR_SCATTR_PAGE_FIRSTPAGENO);
     937           0 :                     rText += aStrSep;
     938             : //                  break; // DURCHFALLEN!!!
     939             :                     case SFX_ITEM_PRESENTATION_NAMELESS:
     940           0 :                     rText += String::CreateFromInt32( nPagNo );
     941           0 :                     break;
     942             :                     default:
     943             :                     {
     944             :                         // added to avoid warnings
     945             :                     }
     946             :                 }
     947             :             }
     948             :             else
     949             :             {
     950           0 :                 ePresentation = SFX_ITEM_PRESENTATION_NONE;
     951             :             }
     952             :         }
     953           0 :         break;
     954             : 
     955             :         case ATTR_PAGE_SCALE:
     956             :         {
     957           0 :             sal_uInt16  nPercent = ((const SfxUInt16Item&)rItem).GetValue();
     958             : 
     959           0 :             if( nPercent )
     960             :             {
     961           0 :                 switch ( ePresentation )
     962             :                 {
     963             :                     case SFX_ITEM_PRESENTATION_COMPLETE:
     964           0 :                     rText  = ScGlobal::GetRscString(STR_SCATTR_PAGE_SCALE);
     965           0 :                     rText += aStrSep;
     966             : //                  break; // DURCHFALLEN!!!
     967             :                     case SFX_ITEM_PRESENTATION_NAMELESS:
     968           0 :                     rText += String::CreateFromInt32( nPercent );
     969           0 :                     rText += '%';
     970           0 :                     break;
     971             :                     default:
     972             :                     {
     973             :                         // added to avoid warnings
     974             :                     }
     975             :                 }
     976             :             }
     977             :             else
     978             :             {
     979           0 :                 ePresentation = SFX_ITEM_PRESENTATION_NONE;
     980             :             }
     981             :         }
     982           0 :         break;
     983             : 
     984             :         case ATTR_PAGE_HEADERSET:
     985             :         {
     986           0 :             String  aBuffer;
     987             : 
     988           0 :             if( lcl_HFPresentation( rItem, ePresentation, GetMetric( nW ), ePresentationMetric, aBuffer, pIntl ) != SFX_ITEM_PRESENTATION_NONE )
     989             :             {
     990           0 :                 rText  = ScGlobal::GetRscString(STR_HEADER);
     991           0 :                 rText.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " ( " ));
     992           0 :                 rText += aBuffer;
     993           0 :                 rText.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " ) " ));
     994           0 :             }
     995             :         }
     996           0 :         break;
     997             : 
     998             :         case ATTR_PAGE_FOOTERSET:
     999             :         {
    1000           0 :             String  aBuffer;
    1001             : 
    1002           0 :             if( lcl_HFPresentation( rItem, ePresentation, GetMetric( nW ), ePresentationMetric, aBuffer, pIntl ) != SFX_ITEM_PRESENTATION_NONE )
    1003             :             {
    1004           0 :                 rText  = ScGlobal::GetRscString(STR_FOOTER);
    1005           0 :                 rText.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " ( " ));
    1006           0 :                 rText += aBuffer;
    1007           0 :                 rText.AppendAscii(RTL_CONSTASCII_STRINGPARAM( " ) " ));
    1008           0 :             }
    1009             :         }
    1010           0 :         break;
    1011             : 
    1012             :         default:
    1013           0 :             if ( !pIntl )
    1014           0 :                 pIntl = ScGlobal::GetScIntlWrapper();
    1015           0 :             ePresentation = rItem.GetPresentation( ePresentation, GetMetric( nW ), ePresentationMetric, rText, pIntl );
    1016           0 :         break;
    1017             :     }
    1018             : 
    1019           0 :     return ePresentation;
    1020             : }
    1021             : 
    1022           0 : SfxMapUnit ScDocumentPool::GetMetric( sal_uInt16 nWhich ) const
    1023             : {
    1024             :     //  eigene Attribute: Twips, alles andere 1/100 mm
    1025             : 
    1026           0 :     if ( nWhich >= ATTR_STARTINDEX && nWhich <= ATTR_ENDINDEX )
    1027           0 :         return SFX_MAPUNIT_TWIP;
    1028             :     else
    1029           0 :         return SFX_MAPUNIT_100TH_MM;
    1030             : }
    1031             : 
    1032             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10