xref: /trunk/main/sw/source/core/doc/tblafmt.cxx (revision 19a3086207e35c2ffd5d7a35076320505cf276f1)
1efeef26fSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3efeef26fSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4efeef26fSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5efeef26fSAndrew Rist  * distributed with this work for additional information
6efeef26fSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7efeef26fSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8efeef26fSAndrew Rist  * "License"); you may not use this file except in compliance
9efeef26fSAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11efeef26fSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13efeef26fSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14efeef26fSAndrew Rist  * software distributed under the License is distributed on an
15efeef26fSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16efeef26fSAndrew Rist  * KIND, either express or implied.  See the License for the
17efeef26fSAndrew Rist  * specific language governing permissions and limitations
18efeef26fSAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20efeef26fSAndrew Rist  *************************************************************/
21efeef26fSAndrew Rist 
22efeef26fSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sw.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir 
28cdf0e10cSrcweir #include <tools/resid.hxx>
29cdf0e10cSrcweir #include <tools/stream.hxx>
30cdf0e10cSrcweir #include <tools/shl.hxx>
31cdf0e10cSrcweir #include <vcl/svapp.hxx>
32cdf0e10cSrcweir #include <sfx2/docfile.hxx>
33cdf0e10cSrcweir #include <svl/urihelper.hxx>
34cdf0e10cSrcweir #include <svl/zforlist.hxx>
35cdf0e10cSrcweir #include <svl/zformat.hxx>
36cdf0e10cSrcweir #include <unotools/pathoptions.hxx>
37cdf0e10cSrcweir #include <sfx2/app.hxx>
38cdf0e10cSrcweir #include <svx/dialmgr.hxx>
39cdf0e10cSrcweir #ifndef _SVX_DIALOGS_HRC
40cdf0e10cSrcweir #include <svx/dialogs.hrc>
41cdf0e10cSrcweir #endif
42cdf0e10cSrcweir 
43cdf0e10cSrcweir #define READ_OLDVERS        // erstmal noch alte Versionen lesen
44cdf0e10cSrcweir #include <swtypes.hxx>
45cdf0e10cSrcweir #include <doc.hxx>
46cdf0e10cSrcweir #include <poolfmt.hxx>
47cdf0e10cSrcweir #include <tblafmt.hxx>
48cdf0e10cSrcweir #include <cellatr.hxx>
49cdf0e10cSrcweir #include <SwStyleNameMapper.hxx>
50cdf0e10cSrcweir 
51cdf0e10cSrcweir // bis SO5PF
52cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_ID_X        = 9501;
53cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_ID_358      = 9601;
54cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_DATA_ID_X   = 9502;
55cdf0e10cSrcweir 
56cdf0e10cSrcweir // ab SO5
57cdf0e10cSrcweir //! in nachfolgenden Versionen muss der Betrag dieser IDs groesser sein
58cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_ID_504      = 9801;
59cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_DATA_ID_504 = 9802;
60cdf0e10cSrcweir 
61cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_ID_552      = 9901;
62cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_DATA_ID_552 = 9902;
63cdf0e10cSrcweir 
64cdf0e10cSrcweir // --- from 641 on: CJK and CTL font settings
65cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_ID_641      = 10001;
66cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_DATA_ID_641 = 10002;
67cdf0e10cSrcweir 
68cdf0e10cSrcweir // --- from 680/dr14 on: diagonal frame lines
69cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_ID_680DR14      = 10011;
70cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_DATA_ID_680DR14 = 10012;
71cdf0e10cSrcweir 
72cdf0e10cSrcweir // --- from 680/dr25 on: #21549# store strings as UTF-8
73cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_ID_680DR25      = 10021;
74cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_DATA_ID_680DR25 = 10022;
75cdf0e10cSrcweir 
76cdf0e10cSrcweir // --- from DEV300/overline2 on: #5991# overline
77cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_ID_300OVRLN      = 10031;
78cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_DATA_ID_300OVRLN = 10032;
79cdf0e10cSrcweir 
80cdf0e10cSrcweir // current version
81cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_ID          = AUTOFORMAT_ID_300OVRLN;
82cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_DATA_ID     = AUTOFORMAT_DATA_ID_300OVRLN;
83cdf0e10cSrcweir 
84cdf0e10cSrcweir 
85cdf0e10cSrcweir #ifdef READ_OLDVERS
86cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_OLD_ID      = 8201;
87cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_OLD_ID1     = 8301;
88cdf0e10cSrcweir const sal_uInt16 AUTOFORMAT_OLD_DATA_ID = 8202;
89cdf0e10cSrcweir #endif
90cdf0e10cSrcweir 
91cdf0e10cSrcweir 
92cdf0e10cSrcweir SwBoxAutoFmt* SwTableAutoFmt::pDfltBoxAutoFmt = 0;
93cdf0e10cSrcweir 
94cdf0e10cSrcweir #define sAutoTblFmtName "autotbl.fmt"
95cdf0e10cSrcweir 
96cdf0e10cSrcweir // SwTable Auto-Format-Tabelle
97cdf0e10cSrcweir SV_IMPL_PTRARR( _SwTableAutoFmtTbl, SwTableAutoFmt* )
98cdf0e10cSrcweir 
99cdf0e10cSrcweir 
100cdf0e10cSrcweir //  Struct mit Versionsnummern der Items
101cdf0e10cSrcweir 
102cdf0e10cSrcweir struct SwAfVersions
103cdf0e10cSrcweir {
104cdf0e10cSrcweir public:
105cdf0e10cSrcweir     sal_uInt16 nFontVersion;
106cdf0e10cSrcweir     sal_uInt16 nFontHeightVersion;
107cdf0e10cSrcweir     sal_uInt16 nWeightVersion;
108cdf0e10cSrcweir     sal_uInt16 nPostureVersion;
109cdf0e10cSrcweir     sal_uInt16 nUnderlineVersion;
110cdf0e10cSrcweir     sal_uInt16 nOverlineVersion;
111cdf0e10cSrcweir     sal_uInt16 nCrossedOutVersion;
112cdf0e10cSrcweir     sal_uInt16 nContourVersion;
113cdf0e10cSrcweir     sal_uInt16 nShadowedVersion;
114cdf0e10cSrcweir     sal_uInt16 nColorVersion;
115cdf0e10cSrcweir     sal_uInt16 nBoxVersion;
116cdf0e10cSrcweir     sal_uInt16 nLineVersion;
117cdf0e10cSrcweir     sal_uInt16 nBrushVersion;
118cdf0e10cSrcweir 
119cdf0e10cSrcweir     sal_uInt16 nAdjustVersion;
120cdf0e10cSrcweir 
121cdf0e10cSrcweir     sal_uInt16 nHorJustifyVersion;
122cdf0e10cSrcweir     sal_uInt16 nVerJustifyVersion;
123cdf0e10cSrcweir     sal_uInt16 nOrientationVersion;
124cdf0e10cSrcweir     sal_uInt16 nMarginVersion;
125cdf0e10cSrcweir     sal_uInt16 nBoolVersion;
126cdf0e10cSrcweir     sal_uInt16 nInt32Version;
127cdf0e10cSrcweir     sal_uInt16 nRotateModeVersion;
128cdf0e10cSrcweir 
129cdf0e10cSrcweir     sal_uInt16 nNumFmtVersion;
130cdf0e10cSrcweir 
131cdf0e10cSrcweir     SwAfVersions();
132cdf0e10cSrcweir     void Load( SvStream& rStream, sal_uInt16 nVer );
133cdf0e10cSrcweir };
134cdf0e10cSrcweir 
SwAfVersions()135cdf0e10cSrcweir SwAfVersions::SwAfVersions() :
136cdf0e10cSrcweir     nFontVersion(0),
137cdf0e10cSrcweir     nFontHeightVersion(0),
138cdf0e10cSrcweir     nWeightVersion(0),
139cdf0e10cSrcweir     nPostureVersion(0),
140cdf0e10cSrcweir     nUnderlineVersion(0),
141cdf0e10cSrcweir     nOverlineVersion(0),
142cdf0e10cSrcweir     nCrossedOutVersion(0),
143cdf0e10cSrcweir     nContourVersion(0),
144cdf0e10cSrcweir     nShadowedVersion(0),
145cdf0e10cSrcweir     nColorVersion(0),
146cdf0e10cSrcweir     nBoxVersion(0),
147cdf0e10cSrcweir     nLineVersion(0),
148cdf0e10cSrcweir     nBrushVersion(0),
149cdf0e10cSrcweir     nAdjustVersion(0),
150cdf0e10cSrcweir     nHorJustifyVersion(0),
151cdf0e10cSrcweir     nVerJustifyVersion(0),
152cdf0e10cSrcweir     nOrientationVersion(0),
153cdf0e10cSrcweir     nMarginVersion(0),
154cdf0e10cSrcweir     nBoolVersion(0),
155cdf0e10cSrcweir     nInt32Version(0),
156cdf0e10cSrcweir     nRotateModeVersion(0),
157cdf0e10cSrcweir     nNumFmtVersion(0)
158cdf0e10cSrcweir {
159cdf0e10cSrcweir }
160cdf0e10cSrcweir 
Load(SvStream & rStream,sal_uInt16 nVer)161cdf0e10cSrcweir void SwAfVersions::Load( SvStream& rStream, sal_uInt16 nVer )
162cdf0e10cSrcweir {
163cdf0e10cSrcweir     rStream >> nFontVersion;
164cdf0e10cSrcweir     rStream >> nFontHeightVersion;
165cdf0e10cSrcweir     rStream >> nWeightVersion;
166cdf0e10cSrcweir     rStream >> nPostureVersion;
167cdf0e10cSrcweir     rStream >> nUnderlineVersion;
168cdf0e10cSrcweir     if ( nVer >= AUTOFORMAT_ID_300OVRLN )
169cdf0e10cSrcweir         rStream >> nOverlineVersion;
170cdf0e10cSrcweir     rStream >> nCrossedOutVersion;
171cdf0e10cSrcweir     rStream >> nContourVersion;
172cdf0e10cSrcweir     rStream >> nShadowedVersion;
173cdf0e10cSrcweir     rStream >> nColorVersion;
174cdf0e10cSrcweir     rStream >> nBoxVersion;
175cdf0e10cSrcweir     if ( nVer >= AUTOFORMAT_ID_680DR14 )
176cdf0e10cSrcweir         rStream >> nLineVersion;
177cdf0e10cSrcweir     rStream >> nBrushVersion;
178cdf0e10cSrcweir     rStream >> nAdjustVersion;
179cdf0e10cSrcweir     rStream >> nHorJustifyVersion;
180cdf0e10cSrcweir     rStream >> nVerJustifyVersion;
181cdf0e10cSrcweir     rStream >> nOrientationVersion;
182cdf0e10cSrcweir     rStream >> nMarginVersion;
183cdf0e10cSrcweir     rStream >> nBoolVersion;
184cdf0e10cSrcweir     if ( nVer >= AUTOFORMAT_ID_504 )
185cdf0e10cSrcweir     {
186cdf0e10cSrcweir         rStream >> nInt32Version;
187cdf0e10cSrcweir         rStream >> nRotateModeVersion;
188cdf0e10cSrcweir     }
189cdf0e10cSrcweir     rStream >> nNumFmtVersion;
190cdf0e10cSrcweir }
191cdf0e10cSrcweir 
192cdf0e10cSrcweir //  ---------------------------------------------------------------------------
193cdf0e10cSrcweir 
SwBoxAutoFmt()194cdf0e10cSrcweir SwBoxAutoFmt::SwBoxAutoFmt()
195cdf0e10cSrcweir     : aFont( *(SvxFontItem*)GetDfltAttr( RES_CHRATR_FONT ) ),
196cdf0e10cSrcweir     aHeight( 240, 100, RES_CHRATR_FONTSIZE ),
197cdf0e10cSrcweir     aWeight( WEIGHT_NORMAL, RES_CHRATR_WEIGHT ),
198cdf0e10cSrcweir     aPosture( ITALIC_NONE, RES_CHRATR_POSTURE ),
199cdf0e10cSrcweir 
200cdf0e10cSrcweir     aCJKFont( *(SvxFontItem*)GetDfltAttr( RES_CHRATR_CJK_FONT ) ),
201cdf0e10cSrcweir     aCJKHeight( 240, 100, RES_CHRATR_CJK_FONTSIZE ),
202cdf0e10cSrcweir     aCJKWeight( WEIGHT_NORMAL, RES_CHRATR_CJK_WEIGHT ),
203cdf0e10cSrcweir     aCJKPosture( ITALIC_NONE, RES_CHRATR_CJK_POSTURE ),
204cdf0e10cSrcweir 
205cdf0e10cSrcweir     aCTLFont( *(SvxFontItem*)GetDfltAttr( RES_CHRATR_CTL_FONT ) ),
206cdf0e10cSrcweir     aCTLHeight( 240, 100, RES_CHRATR_CTL_FONTSIZE ),
207cdf0e10cSrcweir     aCTLWeight( WEIGHT_NORMAL, RES_CHRATR_CTL_WEIGHT ),
208cdf0e10cSrcweir     aCTLPosture( ITALIC_NONE, RES_CHRATR_CTL_POSTURE ),
209cdf0e10cSrcweir 
210cdf0e10cSrcweir     aUnderline( UNDERLINE_NONE, RES_CHRATR_UNDERLINE ),
211cdf0e10cSrcweir     aOverline( UNDERLINE_NONE, RES_CHRATR_OVERLINE ),
212cdf0e10cSrcweir     aCrossedOut( STRIKEOUT_NONE, RES_CHRATR_CROSSEDOUT ),
213cdf0e10cSrcweir     aContour( sal_False, RES_CHRATR_CONTOUR ),
214cdf0e10cSrcweir     aShadowed( sal_False, RES_CHRATR_SHADOWED ),
215cdf0e10cSrcweir     aColor( RES_CHRATR_COLOR ),
216cdf0e10cSrcweir     aBox( RES_BOX ),
217cdf0e10cSrcweir     aTLBR( 0 ),
218cdf0e10cSrcweir     aBLTR( 0 ),
219cdf0e10cSrcweir     aBackground( RES_BACKGROUND ),
220cdf0e10cSrcweir     aAdjust( SVX_ADJUST_LEFT, RES_PARATR_ADJUST ),
221cdf0e10cSrcweir     aHorJustify( SVX_HOR_JUSTIFY_STANDARD, 0),
222cdf0e10cSrcweir     aVerJustify( SVX_VER_JUSTIFY_STANDARD, 0),
223cdf0e10cSrcweir     aStacked( 0 ),
224cdf0e10cSrcweir     aMargin( 0 ),
225cdf0e10cSrcweir     aLinebreak( 0 ),
226cdf0e10cSrcweir     aRotateAngle( 0 ),
227cdf0e10cSrcweir 
228cdf0e10cSrcweir // FIXME - add attribute IDs for the diagonal line items
229cdf0e10cSrcweir //    aTLBR( RES_... ),
230cdf0e10cSrcweir //    aBLTR( RES_... ),
231cdf0e10cSrcweir     aRotateMode( SVX_ROTATE_MODE_STANDARD, 0 )
232cdf0e10cSrcweir {
233cdf0e10cSrcweir     eSysLanguage = eNumFmtLanguage = static_cast<LanguageType>(::GetAppLanguage());
234cdf0e10cSrcweir     aBox.SetDistance( 55 );
235cdf0e10cSrcweir }
236cdf0e10cSrcweir 
237cdf0e10cSrcweir 
SwBoxAutoFmt(const SwBoxAutoFmt & rNew)238cdf0e10cSrcweir SwBoxAutoFmt::SwBoxAutoFmt( const SwBoxAutoFmt& rNew )
239cdf0e10cSrcweir     : aFont( rNew.aFont ),
240cdf0e10cSrcweir     aHeight( rNew.aHeight ),
241cdf0e10cSrcweir     aWeight( rNew.aWeight ),
242cdf0e10cSrcweir     aPosture( rNew.aPosture ),
243cdf0e10cSrcweir     aCJKFont( rNew.aCJKFont ),
244cdf0e10cSrcweir     aCJKHeight( rNew.aCJKHeight ),
245cdf0e10cSrcweir     aCJKWeight( rNew.aCJKWeight ),
246cdf0e10cSrcweir     aCJKPosture( rNew.aCJKPosture ),
247cdf0e10cSrcweir     aCTLFont( rNew.aCTLFont ),
248cdf0e10cSrcweir     aCTLHeight( rNew.aCTLHeight ),
249cdf0e10cSrcweir     aCTLWeight( rNew.aCTLWeight ),
250cdf0e10cSrcweir     aCTLPosture( rNew.aCTLPosture ),
251cdf0e10cSrcweir     aUnderline( rNew.aUnderline ),
252cdf0e10cSrcweir     aOverline( rNew.aOverline ),
253cdf0e10cSrcweir     aCrossedOut( rNew.aCrossedOut ),
254cdf0e10cSrcweir     aContour( rNew.aContour ),
255cdf0e10cSrcweir     aShadowed( rNew.aShadowed ),
256cdf0e10cSrcweir     aColor( rNew.aColor ),
257cdf0e10cSrcweir     aBox( rNew.aBox ),
258cdf0e10cSrcweir     aTLBR( rNew.aTLBR ),
259cdf0e10cSrcweir     aBLTR( rNew.aBLTR ),
260cdf0e10cSrcweir     aBackground( rNew.aBackground ),
261cdf0e10cSrcweir     aAdjust( rNew.aAdjust ),
262cdf0e10cSrcweir     aHorJustify( rNew.aHorJustify ),
263cdf0e10cSrcweir     aVerJustify( rNew.aVerJustify ),
264cdf0e10cSrcweir     aStacked( rNew.aStacked ),
265cdf0e10cSrcweir     aMargin( rNew.aMargin ),
266cdf0e10cSrcweir     aLinebreak( rNew.aLinebreak ),
267cdf0e10cSrcweir     aRotateAngle( rNew.aRotateAngle ),
268cdf0e10cSrcweir     aRotateMode( rNew.aRotateMode ),
269cdf0e10cSrcweir     sNumFmtString( rNew.sNumFmtString ),
270cdf0e10cSrcweir     eSysLanguage( rNew.eSysLanguage ),
271cdf0e10cSrcweir     eNumFmtLanguage( rNew.eNumFmtLanguage )
272cdf0e10cSrcweir {
273cdf0e10cSrcweir }
274cdf0e10cSrcweir 
275cdf0e10cSrcweir 
~SwBoxAutoFmt()276cdf0e10cSrcweir SwBoxAutoFmt::~SwBoxAutoFmt()
277cdf0e10cSrcweir {
278cdf0e10cSrcweir }
279cdf0e10cSrcweir 
operator =(const SwBoxAutoFmt & rNew)280cdf0e10cSrcweir SwBoxAutoFmt& SwBoxAutoFmt::operator=( const SwBoxAutoFmt& rNew )
281cdf0e10cSrcweir {
282cdf0e10cSrcweir     aFont = rNew.aFont;
283cdf0e10cSrcweir     aHeight = rNew.aHeight;
284cdf0e10cSrcweir     aWeight = rNew.aWeight;
285cdf0e10cSrcweir     aPosture = rNew.aPosture;
286cdf0e10cSrcweir     aCJKFont = rNew.aCJKFont;
287cdf0e10cSrcweir     aCJKHeight = rNew.aCJKHeight;
288cdf0e10cSrcweir     aCJKWeight = rNew.aCJKWeight;
289cdf0e10cSrcweir     aCJKPosture = rNew.aCJKPosture;
290cdf0e10cSrcweir     aCTLFont = rNew.aCTLFont;
291cdf0e10cSrcweir     aCTLHeight = rNew.aCTLHeight;
292cdf0e10cSrcweir     aCTLWeight = rNew.aCTLWeight;
293cdf0e10cSrcweir     aCTLPosture = rNew.aCTLPosture;
294cdf0e10cSrcweir     aUnderline = rNew.aUnderline;
295cdf0e10cSrcweir     aOverline = rNew.aOverline;
296cdf0e10cSrcweir     aCrossedOut = rNew.aCrossedOut;
297cdf0e10cSrcweir     aContour = rNew.aContour;
298cdf0e10cSrcweir     aShadowed = rNew.aShadowed;
299cdf0e10cSrcweir     aColor = rNew.aColor;
300cdf0e10cSrcweir     SetAdjust( rNew.aAdjust );
301cdf0e10cSrcweir     aBox = rNew.aBox;
302cdf0e10cSrcweir     aTLBR = rNew.aTLBR;
303cdf0e10cSrcweir     aBLTR = rNew.aBLTR;
304cdf0e10cSrcweir     aBackground = rNew.aBackground;
305cdf0e10cSrcweir 
306cdf0e10cSrcweir     aHorJustify = rNew.aHorJustify;
307cdf0e10cSrcweir     aVerJustify = rNew.aVerJustify;
308cdf0e10cSrcweir     aStacked.SetValue( rNew.aStacked.GetValue() );
309cdf0e10cSrcweir     aMargin = rNew.aMargin;
310cdf0e10cSrcweir     aLinebreak.SetValue( rNew.aLinebreak.GetValue() );
311cdf0e10cSrcweir     aRotateAngle.SetValue( rNew.aRotateAngle.GetValue() );
312cdf0e10cSrcweir     aRotateMode.SetValue( rNew.aRotateMode.GetValue() );
313cdf0e10cSrcweir 
314cdf0e10cSrcweir     sNumFmtString = rNew.sNumFmtString;
315cdf0e10cSrcweir     eSysLanguage = rNew.eSysLanguage;
316cdf0e10cSrcweir     eNumFmtLanguage = rNew.eNumFmtLanguage;
317cdf0e10cSrcweir 
318cdf0e10cSrcweir     return *this;
319cdf0e10cSrcweir }
320cdf0e10cSrcweir 
321cdf0e10cSrcweir 
322cdf0e10cSrcweir #define READ( aItem, aItemType, nVers )\
323cdf0e10cSrcweir     pNew = aItem.Create(rStream, nVers ); \
324cdf0e10cSrcweir     aItem = *(aItemType*)pNew; \
325cdf0e10cSrcweir     delete pNew;
326cdf0e10cSrcweir 
Load(SvStream & rStream,const SwAfVersions & rVersions,sal_uInt16 nVer)327cdf0e10cSrcweir sal_Bool SwBoxAutoFmt::Load( SvStream& rStream, const SwAfVersions& rVersions, sal_uInt16 nVer )
328cdf0e10cSrcweir {
329cdf0e10cSrcweir     SfxPoolItem* pNew;
330cdf0e10cSrcweir     SvxOrientationItem aOrientation( SVX_ORIENTATION_STANDARD, 0);
331cdf0e10cSrcweir 
332cdf0e10cSrcweir     READ( aFont,        SvxFontItem            , rVersions.nFontVersion)
333cdf0e10cSrcweir 
334cdf0e10cSrcweir     if( rStream.GetStreamCharSet() == aFont.GetCharSet() )
335cdf0e10cSrcweir         aFont.SetCharSet(::gsl_getSystemTextEncoding());
336cdf0e10cSrcweir 
337cdf0e10cSrcweir     READ( aHeight,      SvxFontHeightItem  , rVersions.nFontHeightVersion)
338cdf0e10cSrcweir     READ( aWeight,      SvxWeightItem      , rVersions.nWeightVersion)
339cdf0e10cSrcweir     READ( aPosture,     SvxPostureItem     , rVersions.nPostureVersion)
340cdf0e10cSrcweir     // --- from 641 on: CJK and CTL font settings
341cdf0e10cSrcweir     if( AUTOFORMAT_DATA_ID_641 <= nVer )
342cdf0e10cSrcweir     {
343cdf0e10cSrcweir         READ( aCJKFont,                        SvxFontItem         , rVersions.nFontVersion)
344cdf0e10cSrcweir         READ( aCJKHeight,       SvxFontHeightItem   , rVersions.nFontHeightVersion)
345cdf0e10cSrcweir         READ( aCJKWeight,     SvxWeightItem       , rVersions.nWeightVersion)
346cdf0e10cSrcweir         READ( aCJKPosture,   SvxPostureItem      , rVersions.nPostureVersion)
347cdf0e10cSrcweir         READ( aCTLFont,                        SvxFontItem         , rVersions.nFontVersion)
348cdf0e10cSrcweir         READ( aCTLHeight,        SvxFontHeightItem   , rVersions.nFontHeightVersion)
349cdf0e10cSrcweir         READ( aCTLWeight,       SvxWeightItem       , rVersions.nWeightVersion)
350cdf0e10cSrcweir         READ( aCTLPosture,   SvxPostureItem      , rVersions.nPostureVersion)
351cdf0e10cSrcweir     }
352cdf0e10cSrcweir     READ( aUnderline,   SvxUnderlineItem   , rVersions.nUnderlineVersion)
353cdf0e10cSrcweir     if( nVer >= AUTOFORMAT_DATA_ID_300OVRLN )
354cdf0e10cSrcweir     {
355cdf0e10cSrcweir         READ( aOverline,       SvxOverlineItem     , rVersions.nOverlineVersion)
356cdf0e10cSrcweir     }
357cdf0e10cSrcweir     READ( aCrossedOut,  SvxCrossedOutItem  , rVersions.nCrossedOutVersion)
358cdf0e10cSrcweir     READ( aContour,     SvxContourItem     , rVersions.nContourVersion)
359cdf0e10cSrcweir     READ( aShadowed,    SvxShadowedItem       , rVersions.nShadowedVersion)
360cdf0e10cSrcweir     READ( aColor,       SvxColorItem       , rVersions.nColorVersion)
361cdf0e10cSrcweir 
362cdf0e10cSrcweir     READ( aBox,         SvxBoxItem         , rVersions.nBoxVersion)
363cdf0e10cSrcweir 
364cdf0e10cSrcweir     // --- from 680/dr14 on: diagonal frame lines
365cdf0e10cSrcweir     if( nVer >= AUTOFORMAT_DATA_ID_680DR14 )
366cdf0e10cSrcweir     {
367cdf0e10cSrcweir         READ( aTLBR, SvxLineItem, rVersions.nLineVersion)
368cdf0e10cSrcweir         READ( aBLTR, SvxLineItem, rVersions.nLineVersion)
369cdf0e10cSrcweir     }
370cdf0e10cSrcweir 
371cdf0e10cSrcweir     READ( aBackground,  SvxBrushItem        , rVersions.nBrushVersion)
372cdf0e10cSrcweir 
373cdf0e10cSrcweir     pNew = aAdjust.Create(rStream, rVersions.nAdjustVersion );
374cdf0e10cSrcweir     SetAdjust( *(SvxAdjustItem*)pNew );
375cdf0e10cSrcweir     delete pNew;
376cdf0e10cSrcweir 
377cdf0e10cSrcweir     READ( aHorJustify,  SvxHorJustifyItem , rVersions.nHorJustifyVersion)
378cdf0e10cSrcweir     READ( aVerJustify,  SvxVerJustifyItem   , rVersions.nVerJustifyVersion)
379cdf0e10cSrcweir     READ( aOrientation, SvxOrientationItem  , rVersions.nOrientationVersion)
380cdf0e10cSrcweir     READ( aMargin, SvxMarginItem       , rVersions.nMarginVersion)
381cdf0e10cSrcweir 
382cdf0e10cSrcweir     pNew = aLinebreak.Create(rStream, rVersions.nBoolVersion );
383cdf0e10cSrcweir     aLinebreak.SetValue( ((SfxBoolItem*)pNew)->GetValue() );
384cdf0e10cSrcweir     delete pNew;
385cdf0e10cSrcweir 
386cdf0e10cSrcweir     if ( nVer >= AUTOFORMAT_DATA_ID_504 )
387cdf0e10cSrcweir     {
388cdf0e10cSrcweir         pNew = aRotateAngle.Create( rStream, rVersions.nInt32Version );
389cdf0e10cSrcweir         aRotateAngle.SetValue( ((SfxInt32Item*)pNew)->GetValue() );
390cdf0e10cSrcweir         delete pNew;
391cdf0e10cSrcweir         pNew = aRotateMode.Create( rStream, rVersions.nRotateModeVersion );
392cdf0e10cSrcweir         aRotateMode.SetValue( ((SvxRotateModeItem*)pNew)->GetValue() );
393cdf0e10cSrcweir         delete pNew;
394cdf0e10cSrcweir     }
395cdf0e10cSrcweir 
396cdf0e10cSrcweir     if( 0 == rVersions.nNumFmtVersion )
397cdf0e10cSrcweir     {
398cdf0e10cSrcweir         sal_uInt16 eSys, eLge;
399cdf0e10cSrcweir         // --- from 680/dr25 on: #21549# store strings as UTF-8
400cdf0e10cSrcweir         CharSet eCharSet = (nVer >= AUTOFORMAT_ID_680DR25) ? RTL_TEXTENCODING_UTF8 : rStream.GetStreamCharSet();
401cdf0e10cSrcweir         rStream.ReadByteString( sNumFmtString, eCharSet )
402cdf0e10cSrcweir                 >> eSys >> eLge;
403cdf0e10cSrcweir         eSysLanguage = (LanguageType) eSys;
404cdf0e10cSrcweir         eNumFmtLanguage = (LanguageType) eLge;
405cdf0e10cSrcweir         if ( eSysLanguage == LANGUAGE_SYSTEM )      // von alten Versionen (Calc)
406cdf0e10cSrcweir             eSysLanguage = static_cast<LanguageType>(::GetAppLanguage());
407cdf0e10cSrcweir     }
408cdf0e10cSrcweir 
409cdf0e10cSrcweir     aStacked.SetValue( aOrientation.IsStacked() );
410cdf0e10cSrcweir     aRotateAngle.SetValue( aOrientation.GetRotation( aRotateAngle.GetValue() ) );
411cdf0e10cSrcweir 
412cdf0e10cSrcweir     return 0 == rStream.GetError();
413cdf0e10cSrcweir }
414cdf0e10cSrcweir 
415cdf0e10cSrcweir #ifdef READ_OLDVERS
416cdf0e10cSrcweir 
LoadOld(SvStream & rStream,sal_uInt16 aLoadVer[])417cdf0e10cSrcweir sal_Bool SwBoxAutoFmt::LoadOld( SvStream& rStream, sal_uInt16 aLoadVer[] )
418cdf0e10cSrcweir {
419cdf0e10cSrcweir     SfxPoolItem* pNew;
420cdf0e10cSrcweir     READ( aFont,        SvxFontItem         , 0)
421cdf0e10cSrcweir 
422cdf0e10cSrcweir     if( rStream.GetStreamCharSet() == aFont.GetCharSet() )
423cdf0e10cSrcweir         aFont.SetCharSet(::gsl_getSystemTextEncoding());
424cdf0e10cSrcweir 
425cdf0e10cSrcweir     READ( aHeight,      SvxFontHeightItem   , 1)
426cdf0e10cSrcweir     READ( aWeight,      SvxWeightItem       , 2)
427cdf0e10cSrcweir     READ( aPosture,     SvxPostureItem      , 3)
428cdf0e10cSrcweir     READ( aUnderline,   SvxUnderlineItem    , 4)
429cdf0e10cSrcweir     READ( aCrossedOut,  SvxCrossedOutItem   , 5)
430cdf0e10cSrcweir     READ( aContour,     SvxContourItem      , 6)
431cdf0e10cSrcweir     READ( aShadowed,    SvxShadowedItem     , 7)
432cdf0e10cSrcweir     READ( aColor,       SvxColorItem        , 8)
433cdf0e10cSrcweir 
434cdf0e10cSrcweir     pNew = aAdjust.Create(rStream, aLoadVer[ 9 ] );
435cdf0e10cSrcweir     SetAdjust( *(SvxAdjustItem*)pNew );
436cdf0e10cSrcweir     delete pNew;
437cdf0e10cSrcweir 
438cdf0e10cSrcweir     READ( aBox,         SvxBoxItem          , 10)
439cdf0e10cSrcweir     READ( aBackground,  SvxBrushItem        , 11)
440cdf0e10cSrcweir 
441cdf0e10cSrcweir     return 0 == rStream.GetError();
442cdf0e10cSrcweir }
443cdf0e10cSrcweir 
444cdf0e10cSrcweir #endif
445cdf0e10cSrcweir 
446cdf0e10cSrcweir 
Save(SvStream & rStream) const447cdf0e10cSrcweir sal_Bool SwBoxAutoFmt::Save( SvStream& rStream ) const
448cdf0e10cSrcweir {
449cdf0e10cSrcweir     SvxOrientationItem aOrientation( aRotateAngle.GetValue(), aStacked.GetValue(), 0 );
450cdf0e10cSrcweir 
451cdf0e10cSrcweir     aFont.Store( rStream, aFont.GetVersion(SOFFICE_FILEFORMAT_40)  );
452cdf0e10cSrcweir     aHeight.Store( rStream, aHeight.GetVersion(SOFFICE_FILEFORMAT_40) );
453cdf0e10cSrcweir     aWeight.Store( rStream, aWeight.GetVersion(SOFFICE_FILEFORMAT_40) );
454cdf0e10cSrcweir     aPosture.Store( rStream, aPosture.GetVersion(SOFFICE_FILEFORMAT_40) );
455cdf0e10cSrcweir     aCJKFont.Store( rStream, aCJKFont.GetVersion(SOFFICE_FILEFORMAT_40)  );
456cdf0e10cSrcweir     aCJKHeight.Store( rStream, aCJKHeight.GetVersion(SOFFICE_FILEFORMAT_40) );
457cdf0e10cSrcweir     aCJKWeight.Store( rStream, aCJKWeight.GetVersion(SOFFICE_FILEFORMAT_40) );
458cdf0e10cSrcweir     aCJKPosture.Store( rStream, aCJKPosture.GetVersion(SOFFICE_FILEFORMAT_40) );
459cdf0e10cSrcweir     aCTLFont.Store( rStream, aCTLFont.GetVersion(SOFFICE_FILEFORMAT_40)  );
460cdf0e10cSrcweir     aCTLHeight.Store( rStream, aCTLHeight.GetVersion(SOFFICE_FILEFORMAT_40) );
461cdf0e10cSrcweir     aCTLWeight.Store( rStream, aCTLWeight.GetVersion(SOFFICE_FILEFORMAT_40) );
462cdf0e10cSrcweir     aCTLPosture.Store( rStream, aCTLPosture.GetVersion(SOFFICE_FILEFORMAT_40) );
463cdf0e10cSrcweir     aUnderline.Store( rStream, aUnderline.GetVersion(SOFFICE_FILEFORMAT_40) );
464cdf0e10cSrcweir     aOverline.Store( rStream, aOverline.GetVersion(SOFFICE_FILEFORMAT_40) );
465cdf0e10cSrcweir     aCrossedOut.Store( rStream, aCrossedOut.GetVersion(SOFFICE_FILEFORMAT_40) );
466cdf0e10cSrcweir     aContour.Store( rStream, aContour.GetVersion(SOFFICE_FILEFORMAT_40) );
467cdf0e10cSrcweir     aShadowed.Store( rStream, aShadowed.GetVersion(SOFFICE_FILEFORMAT_40) );
468cdf0e10cSrcweir     aColor.Store( rStream, aColor.GetVersion(SOFFICE_FILEFORMAT_40) );
469cdf0e10cSrcweir     aBox.Store( rStream, aBox.GetVersion(SOFFICE_FILEFORMAT_40) );
470cdf0e10cSrcweir     aTLBR.Store( rStream, aTLBR.GetVersion(SOFFICE_FILEFORMAT_40) );
471cdf0e10cSrcweir     aBLTR.Store( rStream, aBLTR.GetVersion(SOFFICE_FILEFORMAT_40) );
472cdf0e10cSrcweir     aBackground.Store( rStream, aBackground.GetVersion(SOFFICE_FILEFORMAT_40) );
473cdf0e10cSrcweir 
474cdf0e10cSrcweir     aAdjust.Store( rStream, aAdjust.GetVersion(SOFFICE_FILEFORMAT_40) );
475cdf0e10cSrcweir 
476cdf0e10cSrcweir     aHorJustify.Store( rStream, aHorJustify.GetVersion(SOFFICE_FILEFORMAT_40) );
477cdf0e10cSrcweir     aVerJustify.Store( rStream, aVerJustify.GetVersion(SOFFICE_FILEFORMAT_40) );
478cdf0e10cSrcweir     aOrientation.Store( rStream, aOrientation.GetVersion(SOFFICE_FILEFORMAT_40) );
479cdf0e10cSrcweir     aMargin.Store( rStream, aMargin.GetVersion(SOFFICE_FILEFORMAT_40) );
480cdf0e10cSrcweir     aLinebreak.Store( rStream, aLinebreak.GetVersion(SOFFICE_FILEFORMAT_40) );
481cdf0e10cSrcweir     // Calc Rotation ab SO5
482cdf0e10cSrcweir     aRotateAngle.Store( rStream, aRotateAngle.GetVersion(SOFFICE_FILEFORMAT_40) );
483cdf0e10cSrcweir     aRotateMode.Store( rStream, aRotateMode.GetVersion(SOFFICE_FILEFORMAT_40) );
484cdf0e10cSrcweir 
485cdf0e10cSrcweir     // --- from 680/dr25 on: #21549# store strings as UTF-8
486cdf0e10cSrcweir     rStream.WriteByteString( sNumFmtString, RTL_TEXTENCODING_UTF8 )
487cdf0e10cSrcweir         << (sal_uInt16)eSysLanguage << (sal_uInt16)eNumFmtLanguage;
488cdf0e10cSrcweir 
489cdf0e10cSrcweir     return 0 == rStream.GetError();
490cdf0e10cSrcweir }
491cdf0e10cSrcweir 
492cdf0e10cSrcweir 
SaveVersionNo(SvStream & rStream) const493*19a30862Smseidel sal_Bool SwBoxAutoFmt::SaveVersionNo( SvStream& rStream ) const
494cdf0e10cSrcweir {
495cdf0e10cSrcweir     rStream << aFont.GetVersion( SOFFICE_FILEFORMAT_40 );
496cdf0e10cSrcweir     rStream << aHeight.GetVersion( SOFFICE_FILEFORMAT_40 );
497cdf0e10cSrcweir     rStream << aWeight.GetVersion( SOFFICE_FILEFORMAT_40 );
498cdf0e10cSrcweir     rStream << aPosture.GetVersion( SOFFICE_FILEFORMAT_40 );
499cdf0e10cSrcweir     rStream << aUnderline.GetVersion( SOFFICE_FILEFORMAT_40 );
500cdf0e10cSrcweir     rStream << aOverline.GetVersion( SOFFICE_FILEFORMAT_40 );
501cdf0e10cSrcweir     rStream << aCrossedOut.GetVersion( SOFFICE_FILEFORMAT_40 );
502cdf0e10cSrcweir     rStream << aContour.GetVersion( SOFFICE_FILEFORMAT_40 );
503cdf0e10cSrcweir     rStream << aShadowed.GetVersion( SOFFICE_FILEFORMAT_40 );
504cdf0e10cSrcweir     rStream << aColor.GetVersion( SOFFICE_FILEFORMAT_40 );
505cdf0e10cSrcweir     rStream << aBox.GetVersion( SOFFICE_FILEFORMAT_40 );
506cdf0e10cSrcweir     rStream << aTLBR.GetVersion( SOFFICE_FILEFORMAT_40 );
507cdf0e10cSrcweir     rStream << aBackground.GetVersion( SOFFICE_FILEFORMAT_40 );
508cdf0e10cSrcweir 
509cdf0e10cSrcweir     rStream << aAdjust.GetVersion( SOFFICE_FILEFORMAT_40 );
510cdf0e10cSrcweir 
511cdf0e10cSrcweir     rStream << aHorJustify.GetVersion( SOFFICE_FILEFORMAT_40 );
512cdf0e10cSrcweir     rStream << aVerJustify.GetVersion( SOFFICE_FILEFORMAT_40 );
513cdf0e10cSrcweir     rStream << SvxOrientationItem(SVX_ORIENTATION_STANDARD, 0).GetVersion( SOFFICE_FILEFORMAT_40 );
514cdf0e10cSrcweir     rStream << aMargin.GetVersion( SOFFICE_FILEFORMAT_40 );
515cdf0e10cSrcweir     rStream << aLinebreak.GetVersion( SOFFICE_FILEFORMAT_40 );
516cdf0e10cSrcweir     rStream << aRotateAngle.GetVersion( SOFFICE_FILEFORMAT_40 );
517cdf0e10cSrcweir     rStream << aRotateMode.GetVersion( SOFFICE_FILEFORMAT_40 );
518cdf0e10cSrcweir 
519cdf0e10cSrcweir     rStream << (sal_uInt16)0;       // NumberFormat
520cdf0e10cSrcweir 
521cdf0e10cSrcweir     return 0 == rStream.GetError();
522cdf0e10cSrcweir }
523cdf0e10cSrcweir 
524cdf0e10cSrcweir 
SwTableAutoFmt(const String & rName)525cdf0e10cSrcweir SwTableAutoFmt::SwTableAutoFmt( const String& rName )
526cdf0e10cSrcweir     : aName( rName ), nStrResId( USHRT_MAX )
527cdf0e10cSrcweir {
528cdf0e10cSrcweir     bInclFont = sal_True;
529cdf0e10cSrcweir     bInclJustify = sal_True;
530cdf0e10cSrcweir     bInclFrame = sal_True;
531cdf0e10cSrcweir     bInclBackground = sal_True;
532cdf0e10cSrcweir     bInclValueFormat = sal_True;
533cdf0e10cSrcweir     bInclWidthHeight = sal_True;
534cdf0e10cSrcweir 
535cdf0e10cSrcweir     memset( aBoxAutoFmt, 0, sizeof( aBoxAutoFmt ) );
536cdf0e10cSrcweir }
537cdf0e10cSrcweir 
538cdf0e10cSrcweir 
SwTableAutoFmt(const SwTableAutoFmt & rNew)539cdf0e10cSrcweir SwTableAutoFmt::SwTableAutoFmt( const SwTableAutoFmt& rNew )
540cdf0e10cSrcweir {
541cdf0e10cSrcweir     for( sal_uInt8 n = 0; n < 16; ++n )
542cdf0e10cSrcweir         aBoxAutoFmt[ n ] = 0;
543cdf0e10cSrcweir     *this = rNew;
544cdf0e10cSrcweir }
545cdf0e10cSrcweir 
operator =(const SwTableAutoFmt & rNew)546cdf0e10cSrcweir SwTableAutoFmt& SwTableAutoFmt::operator=( const SwTableAutoFmt& rNew )
547cdf0e10cSrcweir {
548cdf0e10cSrcweir     for( sal_uInt8 n = 0; n < 16; ++n )
549cdf0e10cSrcweir     {
550cdf0e10cSrcweir         if( aBoxAutoFmt[ n ] )
551cdf0e10cSrcweir             delete aBoxAutoFmt[ n ];
552cdf0e10cSrcweir 
553cdf0e10cSrcweir         SwBoxAutoFmt* pFmt = rNew.aBoxAutoFmt[ n ];
554cdf0e10cSrcweir         if( pFmt )      // ist gesetzt -> kopieren
555cdf0e10cSrcweir             aBoxAutoFmt[ n ] = new SwBoxAutoFmt( *pFmt );
556cdf0e10cSrcweir         else            // sonst default
557cdf0e10cSrcweir             aBoxAutoFmt[ n ] = 0;
558cdf0e10cSrcweir     }
559cdf0e10cSrcweir 
560cdf0e10cSrcweir     aName = rNew.aName;
561cdf0e10cSrcweir     nStrResId = rNew.nStrResId;
562cdf0e10cSrcweir     bInclFont = rNew.bInclFont;
563cdf0e10cSrcweir     bInclJustify = rNew.bInclJustify;
564cdf0e10cSrcweir     bInclFrame = rNew.bInclFrame;
565cdf0e10cSrcweir     bInclBackground = rNew.bInclBackground;
566cdf0e10cSrcweir     bInclValueFormat = rNew.bInclValueFormat;
567cdf0e10cSrcweir     bInclWidthHeight = rNew.bInclWidthHeight;
568cdf0e10cSrcweir 
569cdf0e10cSrcweir     return *this;
570cdf0e10cSrcweir }
571cdf0e10cSrcweir 
572cdf0e10cSrcweir 
~SwTableAutoFmt()573cdf0e10cSrcweir SwTableAutoFmt::~SwTableAutoFmt()
574cdf0e10cSrcweir {
575cdf0e10cSrcweir     SwBoxAutoFmt** ppFmt = aBoxAutoFmt;
576cdf0e10cSrcweir     for( sal_uInt8 n = 0; n < 16; ++n, ++ppFmt )
577cdf0e10cSrcweir         if( *ppFmt )
578cdf0e10cSrcweir             delete *ppFmt;
579cdf0e10cSrcweir }
580cdf0e10cSrcweir 
581cdf0e10cSrcweir 
SetBoxFmt(const SwBoxAutoFmt & rNew,sal_uInt8 nPos)582cdf0e10cSrcweir void SwTableAutoFmt::SetBoxFmt( const SwBoxAutoFmt& rNew, sal_uInt8 nPos )
583cdf0e10cSrcweir {
584cdf0e10cSrcweir     ASSERT( nPos < 16, "falscher Bereich" );
585cdf0e10cSrcweir 
586cdf0e10cSrcweir     SwBoxAutoFmt* pFmt = aBoxAutoFmt[ nPos ];
587cdf0e10cSrcweir     if( pFmt )      // ist gesetzt -> kopieren
588cdf0e10cSrcweir         *aBoxAutoFmt[ nPos ] = rNew;
589cdf0e10cSrcweir     else            // sonst neu setzen
590cdf0e10cSrcweir         aBoxAutoFmt[ nPos ] = new SwBoxAutoFmt( rNew );
591cdf0e10cSrcweir }
592cdf0e10cSrcweir 
593cdf0e10cSrcweir 
GetBoxFmt(sal_uInt8 nPos) const594cdf0e10cSrcweir const SwBoxAutoFmt& SwTableAutoFmt::GetBoxFmt( sal_uInt8 nPos ) const
595cdf0e10cSrcweir {
596cdf0e10cSrcweir     ASSERT( nPos < 16, "falscher Bereich" );
597cdf0e10cSrcweir 
598cdf0e10cSrcweir     SwBoxAutoFmt* pFmt = aBoxAutoFmt[ nPos ];
599cdf0e10cSrcweir     if( pFmt )      // ist gesetzt -> kopieren
600cdf0e10cSrcweir         return *pFmt;
601cdf0e10cSrcweir     else            // sonst den default returnen
602cdf0e10cSrcweir     {
603cdf0e10cSrcweir         // falls noch nicht vorhanden:
604cdf0e10cSrcweir         if( !pDfltBoxAutoFmt )
605cdf0e10cSrcweir             pDfltBoxAutoFmt = new SwBoxAutoFmt;
606cdf0e10cSrcweir         return *pDfltBoxAutoFmt;
607cdf0e10cSrcweir     }
608cdf0e10cSrcweir }
609cdf0e10cSrcweir 
610cdf0e10cSrcweir 
611cdf0e10cSrcweir 
UpdateFromSet(sal_uInt8 nPos,const SfxItemSet & rSet,UpdateFlags eFlags,SvNumberFormatter * pNFmtr)612cdf0e10cSrcweir SwBoxAutoFmt& SwTableAutoFmt::UpdateFromSet( sal_uInt8 nPos,
613cdf0e10cSrcweir                                             const SfxItemSet& rSet,
614cdf0e10cSrcweir                                             UpdateFlags eFlags,
615cdf0e10cSrcweir                                             SvNumberFormatter* pNFmtr )
616cdf0e10cSrcweir {
617cdf0e10cSrcweir     ASSERT( nPos < 16, "falscher Bereich" );
618cdf0e10cSrcweir 
619cdf0e10cSrcweir     SwBoxAutoFmt* pFmt = aBoxAutoFmt[ nPos ];
620cdf0e10cSrcweir     if( !pFmt )     // ist gesetzt -> kopieren
621cdf0e10cSrcweir     {
622cdf0e10cSrcweir         pFmt = new SwBoxAutoFmt;
623cdf0e10cSrcweir         aBoxAutoFmt[ nPos ] = pFmt;
624cdf0e10cSrcweir     }
625cdf0e10cSrcweir 
626cdf0e10cSrcweir     if( UPDATE_CHAR & eFlags )
627cdf0e10cSrcweir     {
628cdf0e10cSrcweir         pFmt->SetFont( (SvxFontItem&)rSet.Get( RES_CHRATR_FONT ) );
629cdf0e10cSrcweir         pFmt->SetHeight( (SvxFontHeightItem&)rSet.Get( RES_CHRATR_FONTSIZE ) );
630cdf0e10cSrcweir         pFmt->SetWeight( (SvxWeightItem&)rSet.Get( RES_CHRATR_WEIGHT ) );
631cdf0e10cSrcweir         pFmt->SetPosture( (SvxPostureItem&)rSet.Get( RES_CHRATR_POSTURE ) );
632cdf0e10cSrcweir         pFmt->SetCJKFont( (SvxFontItem&)rSet.Get( RES_CHRATR_CJK_FONT ) );
633cdf0e10cSrcweir         pFmt->SetCJKHeight( (SvxFontHeightItem&)rSet.Get( RES_CHRATR_CJK_FONTSIZE ) );
634cdf0e10cSrcweir         pFmt->SetCJKWeight( (SvxWeightItem&)rSet.Get( RES_CHRATR_CJK_WEIGHT ) );
635cdf0e10cSrcweir         pFmt->SetCJKPosture( (SvxPostureItem&)rSet.Get( RES_CHRATR_CJK_POSTURE ) );
636cdf0e10cSrcweir         pFmt->SetCTLFont( (SvxFontItem&)rSet.Get( RES_CHRATR_CTL_FONT ) );
637cdf0e10cSrcweir         pFmt->SetCTLHeight( (SvxFontHeightItem&)rSet.Get( RES_CHRATR_CTL_FONTSIZE ) );
638cdf0e10cSrcweir         pFmt->SetCTLWeight( (SvxWeightItem&)rSet.Get( RES_CHRATR_CTL_WEIGHT ) );
639cdf0e10cSrcweir         pFmt->SetCTLPosture( (SvxPostureItem&)rSet.Get( RES_CHRATR_CTL_POSTURE ) );
640cdf0e10cSrcweir         pFmt->SetUnderline( (SvxUnderlineItem&)rSet.Get( RES_CHRATR_UNDERLINE ) );
641cdf0e10cSrcweir         pFmt->SetOverline( (SvxOverlineItem&)rSet.Get( RES_CHRATR_OVERLINE ) );
642cdf0e10cSrcweir         pFmt->SetCrossedOut( (SvxCrossedOutItem&)rSet.Get( RES_CHRATR_CROSSEDOUT ) );
643cdf0e10cSrcweir         pFmt->SetContour( (SvxContourItem&)rSet.Get( RES_CHRATR_CONTOUR ) );
644cdf0e10cSrcweir         pFmt->SetShadowed( (SvxShadowedItem&)rSet.Get( RES_CHRATR_SHADOWED ) );
645cdf0e10cSrcweir         pFmt->SetColor( (SvxColorItem&)rSet.Get( RES_CHRATR_COLOR ) );
646cdf0e10cSrcweir         pFmt->SetAdjust( (SvxAdjustItem&)rSet.Get( RES_PARATR_ADJUST ) );
647cdf0e10cSrcweir     }
648cdf0e10cSrcweir     if( UPDATE_BOX & eFlags )
649cdf0e10cSrcweir     {
650cdf0e10cSrcweir         pFmt->SetBox( (SvxBoxItem&)rSet.Get( RES_BOX ) );
651cdf0e10cSrcweir // FIXME - add attribute IDs for the diagonal line items
652cdf0e10cSrcweir //        pFmt->SetTLBR( (SvxLineItem&)rSet.Get( RES_... ) );
653cdf0e10cSrcweir //        pFmt->SetBLTR( (SvxLineItem&)rSet.Get( RES_... ) );
654cdf0e10cSrcweir         pFmt->SetBackground( (SvxBrushItem&)rSet.Get( RES_BACKGROUND ) );
655cdf0e10cSrcweir 
656cdf0e10cSrcweir         const SwTblBoxNumFormat* pNumFmtItem;
657cdf0e10cSrcweir         const SvNumberformat* pNumFormat = 0;
658cdf0e10cSrcweir         if( SFX_ITEM_SET == rSet.GetItemState( RES_BOXATR_FORMAT, sal_True,
659cdf0e10cSrcweir             (const SfxPoolItem**)&pNumFmtItem ) && pNFmtr &&
660cdf0e10cSrcweir             0 != (pNumFormat = pNFmtr->GetEntry( pNumFmtItem->GetValue() )) )
661cdf0e10cSrcweir             pFmt->SetValueFormat( ((SvNumberformat*)pNumFormat)->GetFormatstring(),
662cdf0e10cSrcweir                                     pNumFormat->GetLanguage(),
663cdf0e10cSrcweir                                     static_cast<LanguageType>(::GetAppLanguage()));
664cdf0e10cSrcweir         else
665cdf0e10cSrcweir         {
666cdf0e10cSrcweir             // defaulten
667cdf0e10cSrcweir             pFmt->SetValueFormat( aEmptyStr, LANGUAGE_SYSTEM,
668cdf0e10cSrcweir                                   static_cast<LanguageType>(::GetAppLanguage() ));
669cdf0e10cSrcweir         }
670cdf0e10cSrcweir     }
671*19a30862Smseidel     // den Rest koennen wir nicht, Calc spezifisch
672cdf0e10cSrcweir 
673cdf0e10cSrcweir     return *pFmt;
674cdf0e10cSrcweir }
675cdf0e10cSrcweir 
676cdf0e10cSrcweir 
UpdateToSet(sal_uInt8 nPos,SfxItemSet & rSet,UpdateFlags eFlags,SvNumberFormatter * pNFmtr) const677cdf0e10cSrcweir void SwTableAutoFmt::UpdateToSet( sal_uInt8 nPos, SfxItemSet& rSet,
678cdf0e10cSrcweir                 UpdateFlags eFlags, SvNumberFormatter* pNFmtr ) const
679cdf0e10cSrcweir {
680cdf0e10cSrcweir     const SwBoxAutoFmt& rChg = GetBoxFmt( nPos );
681cdf0e10cSrcweir 
682cdf0e10cSrcweir     if( UPDATE_CHAR & eFlags )
683cdf0e10cSrcweir     {
684cdf0e10cSrcweir         if( IsFont() )
685cdf0e10cSrcweir         {
686cdf0e10cSrcweir             rSet.Put( rChg.GetFont() );
687cdf0e10cSrcweir             rSet.Put( rChg.GetHeight() );
688cdf0e10cSrcweir             rSet.Put( rChg.GetWeight() );
689cdf0e10cSrcweir             rSet.Put( rChg.GetPosture() );
690cdf0e10cSrcweir             // #103065# do not insert empty CJK font
691cdf0e10cSrcweir             const SvxFontItem& rCJKFont = rChg.GetCJKFont();
692cdf0e10cSrcweir             if( rCJKFont.GetStyleName().Len() )
693cdf0e10cSrcweir             {
694cdf0e10cSrcweir                 rSet.Put( rChg.GetCJKFont() );
695cdf0e10cSrcweir                 rSet.Put( rChg.GetCJKHeight() );
696cdf0e10cSrcweir                 rSet.Put( rChg.GetCJKWeight() );
697cdf0e10cSrcweir                 rSet.Put( rChg.GetCJKPosture() );
698cdf0e10cSrcweir             }
699cdf0e10cSrcweir             else
700cdf0e10cSrcweir             {
701cdf0e10cSrcweir                 rSet.Put( rChg.GetHeight(), RES_CHRATR_CJK_FONTSIZE );
702cdf0e10cSrcweir                 rSet.Put( rChg.GetWeight(), RES_CHRATR_CJK_WEIGHT );
703cdf0e10cSrcweir                 rSet.Put( rChg.GetPosture(), RES_CHRATR_CJK_POSTURE );
704cdf0e10cSrcweir             }
705cdf0e10cSrcweir             // #103065# do not insert empty CTL font
706cdf0e10cSrcweir             const SvxFontItem& rCTLFont = rChg.GetCTLFont();
707cdf0e10cSrcweir             if( rCTLFont.GetStyleName().Len() )
708cdf0e10cSrcweir             {
709cdf0e10cSrcweir                 rSet.Put( rChg.GetCTLFont() );
710cdf0e10cSrcweir                 rSet.Put( rChg.GetCTLHeight() );
711cdf0e10cSrcweir                 rSet.Put( rChg.GetCTLWeight() );
712cdf0e10cSrcweir                 rSet.Put( rChg.GetCTLPosture() );
713cdf0e10cSrcweir             }
714cdf0e10cSrcweir             else
715cdf0e10cSrcweir             {
716cdf0e10cSrcweir                 rSet.Put( rChg.GetHeight(), RES_CHRATR_CTL_FONTSIZE );
717cdf0e10cSrcweir                 rSet.Put( rChg.GetWeight(), RES_CHRATR_CTL_WEIGHT );
718cdf0e10cSrcweir                 rSet.Put( rChg.GetPosture(), RES_CHRATR_CTL_POSTURE );
719cdf0e10cSrcweir             }
720cdf0e10cSrcweir             rSet.Put( rChg.GetUnderline() );
721cdf0e10cSrcweir             rSet.Put( rChg.GetOverline() );
722cdf0e10cSrcweir             rSet.Put( rChg.GetCrossedOut() );
723cdf0e10cSrcweir             rSet.Put( rChg.GetContour() );
724cdf0e10cSrcweir             rSet.Put( rChg.GetShadowed() );
725cdf0e10cSrcweir             rSet.Put( rChg.GetColor() );
726cdf0e10cSrcweir         }
727cdf0e10cSrcweir         if( IsJustify() )
728cdf0e10cSrcweir             rSet.Put( rChg.GetAdjust() );
729cdf0e10cSrcweir     }
730cdf0e10cSrcweir 
731cdf0e10cSrcweir     if( UPDATE_BOX & eFlags )
732cdf0e10cSrcweir     {
733cdf0e10cSrcweir         if( IsFrame() )
734cdf0e10cSrcweir         {
735cdf0e10cSrcweir             rSet.Put( rChg.GetBox() );
736cdf0e10cSrcweir // FIXME - uncomment the lines to put the diagonal line items
737cdf0e10cSrcweir //            rSet.Put( rChg.GetTLBR() );
738cdf0e10cSrcweir //            rSet.Put( rChg.GetBLTR() );
739cdf0e10cSrcweir         }
740cdf0e10cSrcweir         if( IsBackground() )
741cdf0e10cSrcweir             rSet.Put( rChg.GetBackground() );
742cdf0e10cSrcweir 
743cdf0e10cSrcweir         if( IsValueFormat() && pNFmtr )
744cdf0e10cSrcweir         {
745cdf0e10cSrcweir             String sFmt; LanguageType eLng, eSys;
746cdf0e10cSrcweir             rChg.GetValueFormat( sFmt, eLng, eSys );
747cdf0e10cSrcweir             if( sFmt.Len() )
748cdf0e10cSrcweir             {
749cdf0e10cSrcweir                 short nType;
750cdf0e10cSrcweir                 sal_Bool bNew;
751cdf0e10cSrcweir                 xub_StrLen nCheckPos;
752cdf0e10cSrcweir                 sal_uInt32 nKey = pNFmtr->GetIndexPuttingAndConverting( sFmt, eLng,
753cdf0e10cSrcweir                         eSys, nType, bNew, nCheckPos);
754cdf0e10cSrcweir                 rSet.Put( SwTblBoxNumFormat( nKey ));
755cdf0e10cSrcweir             }
756cdf0e10cSrcweir             else
757cdf0e10cSrcweir                 rSet.ClearItem( RES_BOXATR_FORMAT );
758cdf0e10cSrcweir         }
759cdf0e10cSrcweir     }
760cdf0e10cSrcweir 
761*19a30862Smseidel     // den Rest koennen wir nicht, Calc spezifisch
762cdf0e10cSrcweir }
763cdf0e10cSrcweir 
764cdf0e10cSrcweir 
Load(SvStream & rStream,const SwAfVersions & rVersions)765cdf0e10cSrcweir sal_Bool SwTableAutoFmt::Load( SvStream& rStream, const SwAfVersions& rVersions )
766cdf0e10cSrcweir {
767cdf0e10cSrcweir     sal_Bool    bRet = sal_True;
768cdf0e10cSrcweir     sal_uInt16  nVal = 0;
769cdf0e10cSrcweir     rStream >> nVal;
770cdf0e10cSrcweir     bRet = 0 == rStream.GetError();
771cdf0e10cSrcweir 
772cdf0e10cSrcweir     if( bRet && (nVal == AUTOFORMAT_DATA_ID_X ||
773cdf0e10cSrcweir             (AUTOFORMAT_DATA_ID_504 <= nVal && nVal <= AUTOFORMAT_DATA_ID)) )
774cdf0e10cSrcweir     {
775cdf0e10cSrcweir         sal_Bool b;
776cdf0e10cSrcweir         // --- from 680/dr25 on: #21549# store strings as UTF-8
777cdf0e10cSrcweir         CharSet eCharSet = (nVal >= AUTOFORMAT_ID_680DR25) ? RTL_TEXTENCODING_UTF8 : rStream.GetStreamCharSet();
778cdf0e10cSrcweir         rStream.ReadByteString( aName, eCharSet );
779cdf0e10cSrcweir         if( AUTOFORMAT_DATA_ID_552 <= nVal )
780cdf0e10cSrcweir         {
781cdf0e10cSrcweir             rStream >> nStrResId;
782cdf0e10cSrcweir             sal_uInt16 nId = RID_SVXSTR_TBLAFMT_BEGIN + nStrResId;
783cdf0e10cSrcweir             if( RID_SVXSTR_TBLAFMT_BEGIN <= nId &&
784cdf0e10cSrcweir                 nId < RID_SVXSTR_TBLAFMT_END )
785cdf0e10cSrcweir             {
786cdf0e10cSrcweir                 aName = SVX_RESSTR( nId );
787cdf0e10cSrcweir             }
788cdf0e10cSrcweir             else
789cdf0e10cSrcweir                 nStrResId = USHRT_MAX;
790cdf0e10cSrcweir         }
791cdf0e10cSrcweir         rStream >> b; bInclFont = b;
792cdf0e10cSrcweir         rStream >> b; bInclJustify = b;
793cdf0e10cSrcweir         rStream >> b; bInclFrame = b;
794cdf0e10cSrcweir         rStream >> b; bInclBackground = b;
795cdf0e10cSrcweir         rStream >> b; bInclValueFormat = b;
796cdf0e10cSrcweir         rStream >> b; bInclWidthHeight = b;
797cdf0e10cSrcweir 
798cdf0e10cSrcweir         bRet = 0 == rStream.GetError();
799cdf0e10cSrcweir 
800cdf0e10cSrcweir         for( sal_uInt8 i = 0; i < 16; ++i )
801cdf0e10cSrcweir         {
802cdf0e10cSrcweir             SwBoxAutoFmt* pFmt = new SwBoxAutoFmt;
803cdf0e10cSrcweir             bRet = pFmt->Load( rStream, rVersions, nVal );
804cdf0e10cSrcweir             if( bRet )
805cdf0e10cSrcweir                 aBoxAutoFmt[ i ] = pFmt;
806cdf0e10cSrcweir             else
807cdf0e10cSrcweir             {
808cdf0e10cSrcweir                 delete pFmt;
809cdf0e10cSrcweir                 break;
810cdf0e10cSrcweir             }
811cdf0e10cSrcweir         }
812cdf0e10cSrcweir     }
813cdf0e10cSrcweir     return bRet;
814cdf0e10cSrcweir }
815cdf0e10cSrcweir 
816cdf0e10cSrcweir #ifdef READ_OLDVERS
817cdf0e10cSrcweir 
LoadOld(SvStream & rStream,sal_uInt16 aLoadVer[])818cdf0e10cSrcweir sal_Bool SwTableAutoFmt::LoadOld( SvStream& rStream, sal_uInt16 aLoadVer[] )
819cdf0e10cSrcweir {
820cdf0e10cSrcweir     sal_Bool    bRet = sal_True;
821cdf0e10cSrcweir     sal_uInt16  nVal = 0;
822cdf0e10cSrcweir     rStream >> nVal;
823cdf0e10cSrcweir     bRet = 0 == rStream.GetError();
824cdf0e10cSrcweir 
825cdf0e10cSrcweir     if( bRet && ( AUTOFORMAT_OLD_DATA_ID == nVal ))
826cdf0e10cSrcweir     {
827cdf0e10cSrcweir         sal_Bool b;
828cdf0e10cSrcweir         rStream.ReadByteString( aName, rStream.GetStreamCharSet() );
829cdf0e10cSrcweir         rStream >> b; bInclFont = b;
830cdf0e10cSrcweir         rStream >> b; bInclJustify = b;
831cdf0e10cSrcweir         rStream >> b; bInclFrame = b;
832cdf0e10cSrcweir         rStream >> b; bInclBackground = b;
833cdf0e10cSrcweir         bRet = (rStream.GetError() == 0);
834cdf0e10cSrcweir 
835cdf0e10cSrcweir         for( int i = 0; i < 16; i++)
836cdf0e10cSrcweir         {
837cdf0e10cSrcweir             SwBoxAutoFmt* pFmt = new SwBoxAutoFmt;
838cdf0e10cSrcweir             bRet = pFmt->LoadOld( rStream, aLoadVer );
839cdf0e10cSrcweir             if( bRet )
840cdf0e10cSrcweir                 aBoxAutoFmt[ i ] = pFmt;
841cdf0e10cSrcweir             else
842cdf0e10cSrcweir             {
843cdf0e10cSrcweir                 delete pFmt;
844cdf0e10cSrcweir                 break;
845cdf0e10cSrcweir             }
846cdf0e10cSrcweir         }
847cdf0e10cSrcweir     }
848cdf0e10cSrcweir     return bRet;
849cdf0e10cSrcweir }
850cdf0e10cSrcweir #endif
851cdf0e10cSrcweir 
852cdf0e10cSrcweir 
Save(SvStream & rStream) const853cdf0e10cSrcweir sal_Bool SwTableAutoFmt::Save( SvStream& rStream ) const
854cdf0e10cSrcweir {
855cdf0e10cSrcweir     sal_uInt16 nVal = AUTOFORMAT_DATA_ID;
856cdf0e10cSrcweir     sal_Bool b;
857cdf0e10cSrcweir     rStream << nVal;
858cdf0e10cSrcweir     // --- from 680/dr25 on: #21549# store strings as UTF-8
859cdf0e10cSrcweir     rStream.WriteByteString( aName, RTL_TEXTENCODING_UTF8 );
860cdf0e10cSrcweir     rStream << nStrResId;
861cdf0e10cSrcweir     rStream << ( b = bInclFont );
862cdf0e10cSrcweir     rStream << ( b = bInclJustify );
863cdf0e10cSrcweir     rStream << ( b = bInclFrame );
864cdf0e10cSrcweir     rStream << ( b = bInclBackground );
865cdf0e10cSrcweir     rStream << ( b = bInclValueFormat );
866cdf0e10cSrcweir     rStream << ( b = bInclWidthHeight );
867cdf0e10cSrcweir 
868cdf0e10cSrcweir     sal_Bool bRet = 0 == rStream.GetError();
869cdf0e10cSrcweir 
870cdf0e10cSrcweir     for( int i = 0; bRet && i < 16; ++i )
871cdf0e10cSrcweir     {
872cdf0e10cSrcweir         SwBoxAutoFmt* pFmt = aBoxAutoFmt[ i ];
873cdf0e10cSrcweir         if( !pFmt )     // nicht gesetzt -> default schreiben
874cdf0e10cSrcweir         {
875cdf0e10cSrcweir             // falls noch nicht vorhanden:
876cdf0e10cSrcweir             if( !pDfltBoxAutoFmt )
877cdf0e10cSrcweir                 pDfltBoxAutoFmt = new SwBoxAutoFmt;
878cdf0e10cSrcweir             pFmt = pDfltBoxAutoFmt;
879cdf0e10cSrcweir         }
880cdf0e10cSrcweir         bRet = pFmt->Save( rStream );
881cdf0e10cSrcweir     }
882cdf0e10cSrcweir     return bRet;
883cdf0e10cSrcweir }
884cdf0e10cSrcweir 
885cdf0e10cSrcweir 
SwTableAutoFmtTbl()886cdf0e10cSrcweir SwTableAutoFmtTbl::SwTableAutoFmtTbl()
887cdf0e10cSrcweir {
888cdf0e10cSrcweir     String sNm;
889cdf0e10cSrcweir     SwTableAutoFmt* pNew = new SwTableAutoFmt(
890cdf0e10cSrcweir                             SwStyleNameMapper::GetUIName( RES_POOLCOLL_STANDARD, sNm ) );
891cdf0e10cSrcweir 
892cdf0e10cSrcweir     SwBoxAutoFmt aNew;
893cdf0e10cSrcweir 
894cdf0e10cSrcweir     sal_uInt8 i;
895cdf0e10cSrcweir 
896cdf0e10cSrcweir     Color aColor( COL_BLUE );
897cdf0e10cSrcweir     SvxBrushItem aBrushItem( aColor, RES_BACKGROUND );
898cdf0e10cSrcweir     aNew.SetBackground( aBrushItem );
899cdf0e10cSrcweir     aNew.SetColor( SvxColorItem(Color( COL_WHITE ), RES_CHRATR_COLOR) );
900cdf0e10cSrcweir 
901cdf0e10cSrcweir     for( i = 0; i < 4; ++i )
902cdf0e10cSrcweir         pNew->SetBoxFmt( aNew, i );
903cdf0e10cSrcweir 
904cdf0e10cSrcweir     // 70% Grau
905cdf0e10cSrcweir     aBrushItem.SetColor( RGB_COLORDATA( 0x4d, 0x4d, 0x4d ) );
906cdf0e10cSrcweir     aNew.SetBackground( aBrushItem );
907cdf0e10cSrcweir     for( i = 4; i <= 12; i += 4 )
908cdf0e10cSrcweir         pNew->SetBoxFmt( aNew, i );
909cdf0e10cSrcweir 
910cdf0e10cSrcweir     // 20% Grau
911cdf0e10cSrcweir     aBrushItem.SetColor( RGB_COLORDATA( 0xcc, 0xcc, 0xcc ) );
912cdf0e10cSrcweir     aNew.SetBackground( aBrushItem );
913cdf0e10cSrcweir     aColor.SetColor( COL_BLACK );
914cdf0e10cSrcweir     aNew.SetColor( SvxColorItem( aColor, RES_CHRATR_COLOR) );
915cdf0e10cSrcweir     for( i = 7; i <= 15; i += 4 )
916cdf0e10cSrcweir         pNew->SetBoxFmt( aNew, i );
917cdf0e10cSrcweir     for( i = 13; i <= 14; ++i )
918cdf0e10cSrcweir         pNew->SetBoxFmt( aNew, i );
919cdf0e10cSrcweir 
920cdf0e10cSrcweir     aBrushItem.SetColor( Color( COL_WHITE ) );
921cdf0e10cSrcweir     aNew.SetBackground( aBrushItem );
922cdf0e10cSrcweir     for( i = 5; i <= 6; ++i )
923cdf0e10cSrcweir         pNew->SetBoxFmt( aNew, i );
924cdf0e10cSrcweir     for( i = 9; i <= 10; ++i )
925cdf0e10cSrcweir         pNew->SetBoxFmt( aNew, i );
926cdf0e10cSrcweir 
927cdf0e10cSrcweir 
928cdf0e10cSrcweir     SvxBoxItem aBox( RES_BOX );
929cdf0e10cSrcweir     aBox.SetDistance( 55 );
930cdf0e10cSrcweir     SvxBorderLine aLn( &aColor, DEF_LINE_WIDTH_0 );
931cdf0e10cSrcweir     aBox.SetLine( &aLn, BOX_LINE_LEFT );
932cdf0e10cSrcweir     aBox.SetLine( &aLn, BOX_LINE_BOTTOM );
933cdf0e10cSrcweir 
934cdf0e10cSrcweir     for( i = 0; i <= 15; ++i )
935cdf0e10cSrcweir     {
936cdf0e10cSrcweir         aBox.SetLine( i <= 3 ? &aLn : 0, BOX_LINE_TOP );
937cdf0e10cSrcweir         aBox.SetLine( (3 == ( i & 3 )) ? &aLn : 0, BOX_LINE_RIGHT );
938cdf0e10cSrcweir         ((SwBoxAutoFmt&)pNew->GetBoxFmt( i )).SetBox( aBox );
939cdf0e10cSrcweir     }
940cdf0e10cSrcweir 
941cdf0e10cSrcweir     Insert( pNew, Count() );
942cdf0e10cSrcweir }
943cdf0e10cSrcweir 
Load()944cdf0e10cSrcweir sal_Bool SwTableAutoFmtTbl::Load()
945cdf0e10cSrcweir {
946cdf0e10cSrcweir     sal_Bool bRet = sal_False;
947cdf0e10cSrcweir     String sNm( String::CreateFromAscii(
948cdf0e10cSrcweir                 RTL_CONSTASCII_STRINGPARAM( sAutoTblFmtName )));
949cdf0e10cSrcweir     SvtPathOptions aOpt;
950cdf0e10cSrcweir     if( aOpt.SearchFile( sNm, SvtPathOptions::PATH_USERCONFIG ))
951cdf0e10cSrcweir     {
952cdf0e10cSrcweir         SfxMedium aStream( sNm, STREAM_STD_READ, sal_True );
953cdf0e10cSrcweir         bRet = Load( *aStream.GetInStream() );
954cdf0e10cSrcweir     }
955cdf0e10cSrcweir     else
956cdf0e10cSrcweir         bRet = sal_False;
957cdf0e10cSrcweir     return bRet;
958cdf0e10cSrcweir }
959cdf0e10cSrcweir 
Save() const960cdf0e10cSrcweir sal_Bool SwTableAutoFmtTbl::Save() const
961cdf0e10cSrcweir {
962cdf0e10cSrcweir     SvtPathOptions aPathOpt;
963cdf0e10cSrcweir     String sNm( aPathOpt.GetUserConfigPath() );
964cdf0e10cSrcweir     sNm += INET_PATH_TOKEN;
965cdf0e10cSrcweir     sNm.AppendAscii( RTL_CONSTASCII_STRINGPARAM( sAutoTblFmtName ));
966cdf0e10cSrcweir     SfxMedium aStream(sNm, STREAM_STD_WRITE, sal_True );
967cdf0e10cSrcweir     return Save( *aStream.GetOutStream() ) && aStream.Commit();
968cdf0e10cSrcweir }
969cdf0e10cSrcweir 
Load(SvStream & rStream)970cdf0e10cSrcweir sal_Bool SwTableAutoFmtTbl::Load( SvStream& rStream )
971cdf0e10cSrcweir {
972cdf0e10cSrcweir     sal_Bool bRet = 0 == rStream.GetError();
973cdf0e10cSrcweir     if (bRet)
974cdf0e10cSrcweir     {
975cdf0e10cSrcweir         // Achtung hier muss ein allgemeiner Header gelesen werden
976cdf0e10cSrcweir         sal_uInt16 nVal = 0;
977cdf0e10cSrcweir         rStream >> nVal;
978cdf0e10cSrcweir         bRet = 0 == rStream.GetError();
979cdf0e10cSrcweir 
980cdf0e10cSrcweir         if( bRet )
981cdf0e10cSrcweir         {
982cdf0e10cSrcweir             SwAfVersions aVersions;
983cdf0e10cSrcweir 
984cdf0e10cSrcweir             if( nVal == AUTOFORMAT_ID_358 ||
985cdf0e10cSrcweir                     (AUTOFORMAT_ID_504 <= nVal && nVal <= AUTOFORMAT_ID) )
986cdf0e10cSrcweir             {
987cdf0e10cSrcweir                 sal_uInt16 nFileVers = SOFFICE_FILEFORMAT_40;
988cdf0e10cSrcweir                 sal_uInt8 nChrSet, nCnt;
989cdf0e10cSrcweir                 long nPos = rStream.Tell();
990cdf0e10cSrcweir                 rStream >> nCnt >> nChrSet;
991cdf0e10cSrcweir //              if( 4 <= nCnt )
992cdf0e10cSrcweir //                  rStream >> nFileVers;
993cdf0e10cSrcweir                 if( rStream.Tell() != sal_uLong(nPos + nCnt) )
994cdf0e10cSrcweir                 {
995870262e3SDon Lewis                     ASSERT( sal_False, "The header contains more / newer data" );
996cdf0e10cSrcweir                     rStream.Seek( nPos + nCnt );
997cdf0e10cSrcweir                 }
998cdf0e10cSrcweir                 rStream.SetStreamCharSet( (CharSet)nChrSet );
999cdf0e10cSrcweir                 rStream.SetVersion( nFileVers );
1000cdf0e10cSrcweir             }
1001cdf0e10cSrcweir 
1002cdf0e10cSrcweir             if( nVal == AUTOFORMAT_ID_358 || nVal == AUTOFORMAT_ID_X ||
1003cdf0e10cSrcweir                     (AUTOFORMAT_ID_504 <= nVal && nVal <= AUTOFORMAT_ID) )
1004cdf0e10cSrcweir             {
1005cdf0e10cSrcweir                 aVersions.Load( rStream, nVal );        // Item-Versionen
1006cdf0e10cSrcweir 
1007cdf0e10cSrcweir                 SwTableAutoFmt* pNew;
1008cdf0e10cSrcweir                 sal_uInt16 nAnz = 0;
1009cdf0e10cSrcweir                 rStream >> nAnz;
1010cdf0e10cSrcweir 
1011cdf0e10cSrcweir                 bRet = 0 == rStream.GetError();
1012cdf0e10cSrcweir 
1013cdf0e10cSrcweir                 for( sal_uInt16 i = 0; i < nAnz; ++i )
1014cdf0e10cSrcweir                 {
1015cdf0e10cSrcweir                     pNew = new SwTableAutoFmt( aEmptyStr );
1016cdf0e10cSrcweir                     bRet = pNew->Load( rStream, aVersions );
1017cdf0e10cSrcweir                     if( bRet )
1018cdf0e10cSrcweir                     {
1019cdf0e10cSrcweir                         Insert( pNew, Count() );
1020cdf0e10cSrcweir                     }
1021cdf0e10cSrcweir                     else
1022cdf0e10cSrcweir                     {
1023cdf0e10cSrcweir                         delete pNew;
1024cdf0e10cSrcweir                         break;
1025cdf0e10cSrcweir                     }
1026cdf0e10cSrcweir                 }
1027cdf0e10cSrcweir             }
1028cdf0e10cSrcweir #ifdef READ_OLDVERS
1029cdf0e10cSrcweir             else if( AUTOFORMAT_OLD_ID == nVal || AUTOFORMAT_OLD_ID1 == nVal )
1030cdf0e10cSrcweir             {
1031cdf0e10cSrcweir                 SwTableAutoFmt* pNew;
1032cdf0e10cSrcweir                 sal_uInt16 nAnz = 0;
1033cdf0e10cSrcweir                 rStream >> nAnz;
1034cdf0e10cSrcweir 
1035cdf0e10cSrcweir                 sal_uInt16 aArr[ 12 ];
1036cdf0e10cSrcweir                 memset( aArr, 0, 12 * sizeof( sal_uInt16 ) );
1037cdf0e10cSrcweir                 if( AUTOFORMAT_OLD_ID1 == nVal )
1038cdf0e10cSrcweir                     for( sal_uInt16 n = 0; n < 12; ++n )
1039cdf0e10cSrcweir                         rStream >> aArr[ n ];
1040cdf0e10cSrcweir 
1041cdf0e10cSrcweir                 bRet = 0 == rStream.GetError();
1042cdf0e10cSrcweir 
1043cdf0e10cSrcweir                 for( sal_uInt16 i = 0; i < nAnz; ++i )
1044cdf0e10cSrcweir                 {
1045cdf0e10cSrcweir                     pNew = new SwTableAutoFmt( aEmptyStr );
1046cdf0e10cSrcweir                     bRet = pNew->LoadOld( rStream, aArr );
1047cdf0e10cSrcweir                     if( bRet )
1048cdf0e10cSrcweir                     {
1049cdf0e10cSrcweir                         Insert( pNew, Count() );
1050cdf0e10cSrcweir                     }
1051cdf0e10cSrcweir                     else
1052cdf0e10cSrcweir                     {
1053cdf0e10cSrcweir                         delete pNew;
1054cdf0e10cSrcweir                         break;
1055cdf0e10cSrcweir                     }
1056cdf0e10cSrcweir                 }
1057cdf0e10cSrcweir             }
1058cdf0e10cSrcweir #endif
1059cdf0e10cSrcweir         }
1060cdf0e10cSrcweir     }
1061cdf0e10cSrcweir     return bRet;
1062cdf0e10cSrcweir }
1063cdf0e10cSrcweir 
1064cdf0e10cSrcweir 
Save(SvStream & rStream) const1065cdf0e10cSrcweir sal_Bool SwTableAutoFmtTbl::Save( SvStream& rStream ) const
1066cdf0e10cSrcweir {
1067cdf0e10cSrcweir     sal_Bool bRet = 0 == rStream.GetError();
1068cdf0e10cSrcweir     if (bRet)
1069cdf0e10cSrcweir     {
1070cdf0e10cSrcweir         rStream.SetVersion( SOFFICE_FILEFORMAT_40 );
1071cdf0e10cSrcweir 
1072cdf0e10cSrcweir         // Achtung hier muss ein allgemeiner Header gespeichert werden
1073cdf0e10cSrcweir         sal_uInt16 nVal = AUTOFORMAT_ID;
1074cdf0e10cSrcweir         rStream << nVal
1075cdf0e10cSrcweir                 << (sal_uInt8)2         // Anzahl von Zeichen des Headers incl. diesem
1076cdf0e10cSrcweir                 << (sal_uInt8)GetStoreCharSet( ::gsl_getSystemTextEncoding() );
1077cdf0e10cSrcweir //              << (sal_uInt8)4         // Anzahl von Zeichen des Headers incl. diesem
1078cdf0e10cSrcweir //              << (sal_uInt8)::GetSystemCharSet()
1079cdf0e10cSrcweir //              << (UNIT16)SOFFICE_FILEFORMAT_NOW;
1080cdf0e10cSrcweir         bRet = 0 == rStream.GetError();
1081cdf0e10cSrcweir 
1082cdf0e10cSrcweir         //-----------------------------------------------------------
1083cdf0e10cSrcweir         // die VersionsNummer fuer alle Attribute schreiben
1084*19a30862Smseidel         (*this)[ 0 ]->GetBoxFmt( 0 ).SaveVersionNo( rStream );
1085cdf0e10cSrcweir 
1086cdf0e10cSrcweir         rStream << (sal_uInt16)(Count() - 1);
1087cdf0e10cSrcweir         bRet = 0 == rStream.GetError();
1088cdf0e10cSrcweir 
1089cdf0e10cSrcweir         for( sal_uInt16 i = 1; bRet && i < Count(); ++i )
1090cdf0e10cSrcweir         {
1091cdf0e10cSrcweir             SwTableAutoFmt* pFmt = (*this)[ i ];
1092cdf0e10cSrcweir             bRet = pFmt->Save( rStream );
1093cdf0e10cSrcweir         }
1094cdf0e10cSrcweir     }
1095cdf0e10cSrcweir     rStream.Flush();
1096cdf0e10cSrcweir     return bRet;
1097cdf0e10cSrcweir }
1098