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