2000-09-18 23:08:29 +00:00
|
|
|
|
/*************************************************************************
|
|
|
|
|
*
|
|
|
|
|
* $RCSfile: tblafmt.cxx,v $
|
|
|
|
|
*
|
2000-11-15 14:28:04 +00:00
|
|
|
|
* $Revision: 1.4 $
|
2000-09-18 23:08:29 +00:00
|
|
|
|
*
|
2000-11-15 14:28:04 +00:00
|
|
|
|
* last change: $Author: hr $ $Date: 2000-11-15 15:28:04 $
|
2000-09-18 23:08:29 +00:00
|
|
|
|
*
|
|
|
|
|
* The Contents of this file are made available subject to the terms of
|
|
|
|
|
* either of the following licenses
|
|
|
|
|
*
|
|
|
|
|
* - GNU Lesser General Public License Version 2.1
|
|
|
|
|
* - Sun Industry Standards Source License Version 1.1
|
|
|
|
|
*
|
|
|
|
|
* Sun Microsystems Inc., October, 2000
|
|
|
|
|
*
|
|
|
|
|
* GNU Lesser General Public License Version 2.1
|
|
|
|
|
* =============================================
|
|
|
|
|
* Copyright 2000 by Sun Microsystems, Inc.
|
|
|
|
|
* 901 San Antonio Road, Palo Alto, CA 94303, USA
|
|
|
|
|
*
|
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
|
* License version 2.1, as published by the Free Software Foundation.
|
|
|
|
|
*
|
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
|
*
|
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
|
* License along with this library; if not, write to the Free Software
|
|
|
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
|
|
|
* MA 02111-1307 USA
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* Sun Industry Standards Source License Version 1.1
|
|
|
|
|
* =================================================
|
|
|
|
|
* The contents of this file are subject to the Sun Industry Standards
|
|
|
|
|
* Source License Version 1.1 (the "License"); You may not use this file
|
|
|
|
|
* except in compliance with the License. You may obtain a copy of the
|
|
|
|
|
* License at http://www.openoffice.org/license.html.
|
|
|
|
|
*
|
|
|
|
|
* Software provided under this License is provided on an "AS IS" basis,
|
|
|
|
|
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
|
|
|
|
|
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
|
|
|
|
|
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
|
|
|
|
|
* See the License for the specific provisions governing your rights and
|
|
|
|
|
* obligations concerning the Software.
|
|
|
|
|
*
|
|
|
|
|
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
|
|
|
|
|
*
|
|
|
|
|
* Copyright: 2000 by Sun Microsystems, Inc.
|
|
|
|
|
*
|
|
|
|
|
* All Rights Reserved.
|
|
|
|
|
*
|
|
|
|
|
* Contributor(s): _______________________________________
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef PRECOMPILED
|
|
|
|
|
#include "core_pch.hxx"
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#pragma hdrstop
|
|
|
|
|
|
|
|
|
|
#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef _TOOLS_RESID_HXX
|
|
|
|
|
#include <tools/resid.hxx>
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef _STREAM_HXX //autogen
|
|
|
|
|
#include <tools/stream.hxx>
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef _SHL_HXX
|
|
|
|
|
#include <tools/shl.hxx>
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef _SV_SVAPP_HXX
|
|
|
|
|
#include <vcl/svapp.hxx>
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef _SFXDOCFILE_HXX
|
|
|
|
|
#include <sfx2/docfile.hxx>
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef SVTOOLS_URIHELPER_HXX
|
|
|
|
|
#include <svtools/urihelper.hxx>
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef _ZFORLIST_HXX //autogen
|
|
|
|
|
#include <svtools/zforlist.hxx>
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef _ZFORMAT_HXX //autogen
|
|
|
|
|
#include <svtools/zformat.hxx>
|
|
|
|
|
#endif
|
2000-10-06 12:11:18 +00:00
|
|
|
|
#ifndef INCLUDED_SVTOOLS_PATHOPTIONS_HXX
|
|
|
|
|
#include <svtools/pathoptions.hxx>
|
|
|
|
|
#endif
|
2000-09-18 23:08:29 +00:00
|
|
|
|
#ifndef _SFXAPP_HXX
|
|
|
|
|
#include <sfx2/app.hxx>
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef _SVX_DIALMGR_HXX
|
|
|
|
|
#include <svx/dialmgr.hxx>
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef _SVX_DIALOGS_HRC
|
|
|
|
|
#include <svx/dialogs.hrc>
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#define READ_OLDVERS // erstmal noch alte Versionen lesen
|
|
|
|
|
|
|
|
|
|
#ifndef _SWTYPES_HXX
|
|
|
|
|
#include <swtypes.hxx>
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef _DOC_HXX
|
|
|
|
|
#include <doc.hxx>
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef _POOLFMT_HXX
|
|
|
|
|
#include <poolfmt.hxx>
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef _TBLAFMT_HXX
|
|
|
|
|
#include <tblafmt.hxx>
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef _CELLATR_HXX
|
|
|
|
|
#include <cellatr.hxx>
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// bis SO5PF
|
|
|
|
|
const USHORT AUTOFORMAT_ID_X = 9501;
|
|
|
|
|
const USHORT AUTOFORMAT_ID_358 = 9601;
|
|
|
|
|
const USHORT AUTOFORMAT_DATA_ID_X = 9502;
|
|
|
|
|
|
|
|
|
|
// ab SO5
|
|
|
|
|
//! in nachfolgenden Versionen muss der Betrag dieser IDs groesser sein
|
|
|
|
|
const USHORT AUTOFORMAT_ID_504 = 9801;
|
|
|
|
|
const USHORT AUTOFORMAT_DATA_ID_504 = 9802;
|
|
|
|
|
|
|
|
|
|
const USHORT AUTOFORMAT_ID_552 = 9901;
|
|
|
|
|
const USHORT AUTOFORMAT_DATA_ID_552 = 9902;
|
|
|
|
|
|
|
|
|
|
// aktuelle Version
|
|
|
|
|
const USHORT AUTOFORMAT_ID = AUTOFORMAT_ID_552;
|
|
|
|
|
const USHORT AUTOFORMAT_DATA_ID = AUTOFORMAT_DATA_ID_552;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef READ_OLDVERS
|
|
|
|
|
const USHORT AUTOFORMAT_OLD_ID = 8201;
|
|
|
|
|
const USHORT AUTOFORMAT_OLD_ID1 = 8301;
|
|
|
|
|
const USHORT AUTOFORMAT_OLD_DATA_ID = 8202;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwBoxAutoFmt* SwTableAutoFmt::pDfltBoxAutoFmt = 0;
|
|
|
|
|
|
|
|
|
|
#define sAutoTblFmtName "autotbl.fmt"
|
|
|
|
|
|
|
|
|
|
// SwTable Auto-Format-Tabelle
|
|
|
|
|
SV_IMPL_PTRARR( _SwTableAutoFmtTbl, SwTableAutoFmt* )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Struct mit Versionsnummern der Items
|
|
|
|
|
|
|
|
|
|
struct SwAfVersions
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
USHORT nFontVersion;
|
|
|
|
|
USHORT nFontHeightVersion;
|
|
|
|
|
USHORT nWeightVersion;
|
|
|
|
|
USHORT nPostureVersion;
|
|
|
|
|
USHORT nUnderlineVersion;
|
|
|
|
|
USHORT nCrossedOutVersion;
|
|
|
|
|
USHORT nContourVersion;
|
|
|
|
|
USHORT nShadowedVersion;
|
|
|
|
|
USHORT nColorVersion;
|
|
|
|
|
USHORT nBoxVersion;
|
|
|
|
|
USHORT nBrushVersion;
|
|
|
|
|
|
|
|
|
|
USHORT nAdjustVersion;
|
|
|
|
|
|
|
|
|
|
USHORT nHorJustifyVersion;
|
|
|
|
|
USHORT nVerJustifyVersion;
|
|
|
|
|
USHORT nOrientationVersion;
|
|
|
|
|
USHORT nMarginVersion;
|
|
|
|
|
USHORT nBoolVersion;
|
|
|
|
|
USHORT nInt32Version;
|
|
|
|
|
USHORT nRotateModeVersion;
|
|
|
|
|
|
|
|
|
|
USHORT nNumFmtVersion;
|
|
|
|
|
|
|
|
|
|
SwAfVersions();
|
|
|
|
|
void Load( SvStream& rStream, USHORT nVer );
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
SwAfVersions::SwAfVersions() :
|
|
|
|
|
nFontVersion(0),
|
|
|
|
|
nFontHeightVersion(0),
|
|
|
|
|
nWeightVersion(0),
|
|
|
|
|
nPostureVersion(0),
|
|
|
|
|
nUnderlineVersion(0),
|
|
|
|
|
nCrossedOutVersion(0),
|
|
|
|
|
nContourVersion(0),
|
|
|
|
|
nShadowedVersion(0),
|
|
|
|
|
nColorVersion(0),
|
|
|
|
|
nBoxVersion(0),
|
|
|
|
|
nBrushVersion(0),
|
|
|
|
|
nAdjustVersion(0),
|
|
|
|
|
nHorJustifyVersion(0),
|
|
|
|
|
nVerJustifyVersion(0),
|
|
|
|
|
nOrientationVersion(0),
|
|
|
|
|
nMarginVersion(0),
|
|
|
|
|
nBoolVersion(0),
|
|
|
|
|
nInt32Version(0),
|
|
|
|
|
nRotateModeVersion(0),
|
|
|
|
|
nNumFmtVersion(0)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SwAfVersions::Load( SvStream& rStream, USHORT nVer )
|
|
|
|
|
{
|
|
|
|
|
rStream >> nFontVersion;
|
|
|
|
|
rStream >> nFontHeightVersion;
|
|
|
|
|
rStream >> nWeightVersion;
|
|
|
|
|
rStream >> nPostureVersion;
|
|
|
|
|
rStream >> nUnderlineVersion;
|
|
|
|
|
rStream >> nCrossedOutVersion;
|
|
|
|
|
rStream >> nContourVersion;
|
|
|
|
|
rStream >> nShadowedVersion;
|
|
|
|
|
rStream >> nColorVersion;
|
|
|
|
|
rStream >> nBoxVersion;
|
|
|
|
|
rStream >> nBrushVersion;
|
|
|
|
|
rStream >> nAdjustVersion;
|
|
|
|
|
rStream >> nHorJustifyVersion;
|
|
|
|
|
rStream >> nVerJustifyVersion;
|
|
|
|
|
rStream >> nOrientationVersion;
|
|
|
|
|
rStream >> nMarginVersion;
|
|
|
|
|
rStream >> nBoolVersion;
|
|
|
|
|
if ( nVer >= AUTOFORMAT_ID_504 )
|
|
|
|
|
{
|
|
|
|
|
rStream >> nInt32Version;
|
|
|
|
|
rStream >> nRotateModeVersion;
|
|
|
|
|
}
|
|
|
|
|
rStream >> nNumFmtVersion;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
SwBoxAutoFmt::SwBoxAutoFmt()
|
|
|
|
|
: aFont( *(SvxFontItem*)GetDfltAttr( RES_CHRATR_FONT ) ),
|
|
|
|
|
aRotateMode( SVX_ROTATE_MODE_STANDARD, 0 )
|
|
|
|
|
{
|
|
|
|
|
eSysLanguage = eNumFmtLanguage = ::GetSystemLanguage();
|
|
|
|
|
aBox.SetDistance( 55 );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwBoxAutoFmt::SwBoxAutoFmt( const SwBoxAutoFmt& rNew )
|
|
|
|
|
: aFont( rNew.aFont ),
|
|
|
|
|
aHeight( rNew.aHeight ),
|
|
|
|
|
aWeight( rNew.aWeight ),
|
|
|
|
|
aPosture( rNew.aPosture ),
|
|
|
|
|
aUnderline( rNew.aUnderline ),
|
|
|
|
|
aCrossedOut( rNew.aCrossedOut ),
|
|
|
|
|
aContour( rNew.aContour ),
|
|
|
|
|
aShadowed( rNew.aShadowed ),
|
|
|
|
|
aColor( rNew.aColor ),
|
|
|
|
|
aAdjust( rNew.aAdjust ),
|
|
|
|
|
aBox( rNew.aBox ),
|
|
|
|
|
aBackground( rNew.aBackground ),
|
|
|
|
|
aHorJustify( rNew.aHorJustify ),
|
|
|
|
|
aVerJustify( rNew.aVerJustify ),
|
|
|
|
|
aOrientation( rNew.aOrientation ),
|
|
|
|
|
aMargin( rNew.aMargin ),
|
|
|
|
|
aLinebreak( rNew.aLinebreak ),
|
|
|
|
|
aRotateAngle( rNew.aRotateAngle ),
|
|
|
|
|
aRotateMode( rNew.aRotateMode ),
|
|
|
|
|
sNumFmtString( rNew.sNumFmtString ),
|
|
|
|
|
eSysLanguage( rNew.eSysLanguage ),
|
|
|
|
|
eNumFmtLanguage( rNew.eNumFmtLanguage )
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwBoxAutoFmt::~SwBoxAutoFmt()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#if USED
|
|
|
|
|
|
|
|
|
|
int SwBoxAutoFmt::operator==( const SwBoxAutoFmt& rCmp ) const
|
|
|
|
|
{
|
|
|
|
|
return aFont == rCmp.aFont &&
|
|
|
|
|
aHeight == rCmp.aHeight &&
|
|
|
|
|
aWeight == rCmp.aWeight &&
|
|
|
|
|
aPosture == rCmp.aPosture &&
|
|
|
|
|
aUnderline == rCmp.aUnderline &&
|
|
|
|
|
aCrossedOut == rCmp.aCrossedOut &&
|
|
|
|
|
aContour == rCmp.aContour &&
|
|
|
|
|
aShadowed == rCmp.aShadowed &&
|
|
|
|
|
aColor == rCmp.aColor &&
|
|
|
|
|
aAdjust == rCmp.aAdjust &&
|
|
|
|
|
aBox == rCmp.aBox &&
|
|
|
|
|
aBackground == rCmp.aBackground;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwBoxAutoFmt& SwBoxAutoFmt::operator=( const SwBoxAutoFmt& rNew )
|
|
|
|
|
{
|
|
|
|
|
aFont = rNew.aFont;
|
|
|
|
|
aHeight = rNew.aHeight;
|
|
|
|
|
aWeight = rNew.aWeight;
|
|
|
|
|
aPosture = rNew.aPosture;
|
|
|
|
|
aUnderline = rNew.aUnderline;
|
|
|
|
|
aCrossedOut = rNew.aCrossedOut;
|
|
|
|
|
aContour = rNew.aContour;
|
|
|
|
|
aShadowed = rNew.aShadowed;
|
|
|
|
|
aColor = rNew.aColor;
|
|
|
|
|
SetAdjust( rNew.aAdjust );
|
|
|
|
|
aBox = rNew.aBox;
|
|
|
|
|
aBackground = rNew.aBackground;
|
|
|
|
|
|
|
|
|
|
aHorJustify = rNew.aHorJustify;
|
|
|
|
|
aVerJustify = rNew.aVerJustify;
|
|
|
|
|
aOrientation = rNew.aOrientation;
|
|
|
|
|
aMargin = rNew.aMargin;
|
|
|
|
|
aLinebreak.SetValue( rNew.aLinebreak.GetValue() );
|
|
|
|
|
aRotateAngle.SetValue( rNew.aRotateAngle.GetValue() );
|
|
|
|
|
aRotateMode.SetValue( rNew.aRotateMode.GetValue() );
|
|
|
|
|
|
|
|
|
|
sNumFmtString = rNew.sNumFmtString;
|
|
|
|
|
eSysLanguage = rNew.eSysLanguage;
|
|
|
|
|
eNumFmtLanguage = rNew.eNumFmtLanguage;
|
|
|
|
|
|
|
|
|
|
return *this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define READ( aItem, aItemType, nVers )\
|
|
|
|
|
pNew = aItem.Create(rStream, nVers ); \
|
|
|
|
|
aItem = *(aItemType*)pNew; \
|
|
|
|
|
delete pNew;
|
|
|
|
|
|
|
|
|
|
BOOL SwBoxAutoFmt::Load( SvStream& rStream, const SwAfVersions& rVersions, USHORT nVer )
|
|
|
|
|
{
|
|
|
|
|
SfxPoolItem* pNew;
|
|
|
|
|
READ( aFont, SvxFontItem , rVersions.nFontVersion)
|
|
|
|
|
|
|
|
|
|
if( rStream.GetStreamCharSet() == aFont.GetCharSet() )
|
|
|
|
|
aFont.GetCharSet() = ::gsl_getSystemTextEncoding();
|
|
|
|
|
|
|
|
|
|
READ( aHeight, SvxFontHeightItem , rVersions.nFontHeightVersion)
|
|
|
|
|
READ( aWeight, SvxWeightItem , rVersions.nWeightVersion)
|
|
|
|
|
READ( aPosture, SvxPostureItem , rVersions.nPostureVersion)
|
|
|
|
|
READ( aUnderline, SvxUnderlineItem , rVersions.nUnderlineVersion)
|
|
|
|
|
READ( aCrossedOut, SvxCrossedOutItem , rVersions.nCrossedOutVersion)
|
|
|
|
|
READ( aContour, SvxContourItem , rVersions.nContourVersion)
|
|
|
|
|
READ( aShadowed, SvxShadowedItem , rVersions.nShadowedVersion)
|
|
|
|
|
READ( aColor, SvxColorItem , rVersions.nColorVersion)
|
|
|
|
|
|
|
|
|
|
READ( aBox, SvxBoxItem , rVersions.nBoxVersion)
|
|
|
|
|
READ( aBackground, SvxBrushItem , rVersions.nBrushVersion)
|
|
|
|
|
|
|
|
|
|
pNew = aAdjust.Create(rStream, rVersions.nAdjustVersion );
|
|
|
|
|
SetAdjust( *(SvxAdjustItem*)pNew );
|
|
|
|
|
delete pNew;
|
|
|
|
|
|
|
|
|
|
READ( aHorJustify, SvxHorJustifyItem , rVersions.nHorJustifyVersion)
|
|
|
|
|
READ( aVerJustify, SvxVerJustifyItem , rVersions.nVerJustifyVersion)
|
|
|
|
|
READ( aOrientation, SvxOrientationItem , rVersions.nOrientationVersion)
|
|
|
|
|
READ( aMargin, SvxMarginItem , rVersions.nMarginVersion)
|
|
|
|
|
|
|
|
|
|
pNew = aLinebreak.Create(rStream, rVersions.nBoolVersion );
|
|
|
|
|
aLinebreak.SetValue( ((SfxBoolItem*)pNew)->GetValue() );
|
|
|
|
|
delete pNew;
|
|
|
|
|
|
|
|
|
|
if ( nVer >= AUTOFORMAT_DATA_ID_504 )
|
|
|
|
|
{
|
|
|
|
|
pNew = aRotateAngle.Create( rStream, rVersions.nInt32Version );
|
|
|
|
|
aRotateAngle.SetValue( ((SfxInt32Item*)pNew)->GetValue() );
|
|
|
|
|
delete pNew;
|
|
|
|
|
pNew = aRotateMode.Create( rStream, rVersions.nRotateModeVersion );
|
|
|
|
|
aRotateMode.SetValue( ((SvxRotateModeItem*)pNew)->GetValue() );
|
|
|
|
|
delete pNew;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if( 0 == rVersions.nNumFmtVersion )
|
|
|
|
|
{
|
|
|
|
|
USHORT eSys, eLge;
|
|
|
|
|
rStream.ReadByteString( sNumFmtString, rStream.GetStreamCharSet() )
|
|
|
|
|
>> eSys >> eLge;
|
|
|
|
|
eSysLanguage = (LanguageType) eSys;
|
|
|
|
|
eNumFmtLanguage = (LanguageType) eLge;
|
|
|
|
|
if ( eSysLanguage == LANGUAGE_SYSTEM ) // von alten Versionen (Calc)
|
|
|
|
|
eSysLanguage = ::GetSystemLanguage();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0 == rStream.GetError();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#ifdef READ_OLDVERS
|
|
|
|
|
|
|
|
|
|
BOOL SwBoxAutoFmt::LoadOld( SvStream& rStream, USHORT aLoadVer[] )
|
|
|
|
|
{
|
|
|
|
|
SfxPoolItem* pNew;
|
|
|
|
|
READ( aFont, SvxFontItem , 0)
|
|
|
|
|
|
|
|
|
|
if( rStream.GetStreamCharSet() == aFont.GetCharSet() )
|
|
|
|
|
aFont.GetCharSet() = ::gsl_getSystemTextEncoding();
|
|
|
|
|
|
|
|
|
|
READ( aHeight, SvxFontHeightItem , 1)
|
|
|
|
|
READ( aWeight, SvxWeightItem , 2)
|
|
|
|
|
READ( aPosture, SvxPostureItem , 3)
|
|
|
|
|
READ( aUnderline, SvxUnderlineItem , 4)
|
|
|
|
|
READ( aCrossedOut, SvxCrossedOutItem , 5)
|
|
|
|
|
READ( aContour, SvxContourItem , 6)
|
|
|
|
|
READ( aShadowed, SvxShadowedItem , 7)
|
|
|
|
|
READ( aColor, SvxColorItem , 8)
|
|
|
|
|
|
|
|
|
|
pNew = aAdjust.Create(rStream, aLoadVer[ 9 ] );
|
|
|
|
|
SetAdjust( *(SvxAdjustItem*)pNew );
|
|
|
|
|
delete pNew;
|
|
|
|
|
|
|
|
|
|
READ( aBox, SvxBoxItem , 10)
|
|
|
|
|
READ( aBackground, SvxBrushItem , 11)
|
|
|
|
|
|
|
|
|
|
return 0 == rStream.GetError();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL SwBoxAutoFmt::Save( SvStream& rStream ) const
|
|
|
|
|
{
|
|
|
|
|
aFont.Store( rStream, aFont.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
aHeight.Store( rStream, aHeight.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
aWeight.Store( rStream, aWeight.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
aPosture.Store( rStream, aPosture.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
aUnderline.Store( rStream, aUnderline.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
aCrossedOut.Store( rStream, aCrossedOut.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
aContour.Store( rStream, aContour.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
aShadowed.Store( rStream, aShadowed.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
aColor.Store( rStream, aColor.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
aBox.Store( rStream, aBox.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
aBackground.Store( rStream, aBackground.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
|
|
|
|
|
aAdjust.Store( rStream, aAdjust.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
|
|
|
|
|
aHorJustify.Store( rStream, aHorJustify.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
aVerJustify.Store( rStream, aVerJustify.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
aOrientation.Store( rStream, aOrientation.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
aMargin.Store( rStream, aMargin.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
aLinebreak.Store( rStream, aLinebreak.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
// Calc Rotation ab SO5
|
|
|
|
|
aRotateAngle.Store( rStream, aRotateAngle.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
aRotateMode.Store( rStream, aRotateMode.GetVersion(SOFFICE_FILEFORMAT_40) );
|
|
|
|
|
|
|
|
|
|
rStream.WriteByteString( sNumFmtString, rStream.GetStreamCharSet() )
|
|
|
|
|
<< (USHORT)eSysLanguage << (USHORT)eNumFmtLanguage;
|
|
|
|
|
|
|
|
|
|
return 0 == rStream.GetError();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL SwBoxAutoFmt::SaveVerionNo( SvStream& rStream ) const
|
|
|
|
|
{
|
|
|
|
|
rStream << aFont.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
rStream << aHeight.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
rStream << aWeight.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
rStream << aPosture.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
rStream << aUnderline.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
rStream << aCrossedOut.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
rStream << aContour.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
rStream << aShadowed.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
rStream << aColor.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
rStream << aBox.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
rStream << aBackground.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
|
|
|
|
|
rStream << aAdjust.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
|
|
|
|
|
rStream << aHorJustify.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
rStream << aVerJustify.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
rStream << aOrientation.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
rStream << aMargin.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
rStream << aLinebreak.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
rStream << aRotateAngle.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
rStream << aRotateMode.GetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
|
|
|
|
|
rStream << (USHORT)0; // NumberFormat
|
|
|
|
|
|
|
|
|
|
return 0 == rStream.GetError();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwTableAutoFmt::SwTableAutoFmt( const String& rName )
|
|
|
|
|
: aName( rName ), nStrResId( USHRT_MAX )
|
|
|
|
|
{
|
|
|
|
|
bInclFont = TRUE;
|
|
|
|
|
bInclJustify = TRUE;
|
|
|
|
|
bInclFrame = TRUE;
|
|
|
|
|
bInclBackground = TRUE;
|
|
|
|
|
bInclValueFormat = TRUE;
|
|
|
|
|
bInclWidthHeight = TRUE;
|
|
|
|
|
|
|
|
|
|
memset( aBoxAutoFmt, 0, sizeof( aBoxAutoFmt ) );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwTableAutoFmt::SwTableAutoFmt( const SwTableAutoFmt& rNew )
|
|
|
|
|
{
|
|
|
|
|
for( BYTE n = 0; n < 16; ++n )
|
|
|
|
|
aBoxAutoFmt[ n ] = 0;
|
|
|
|
|
*this = rNew;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SwTableAutoFmt& SwTableAutoFmt::operator=( const SwTableAutoFmt& rNew )
|
|
|
|
|
{
|
|
|
|
|
for( BYTE n = 0; n < 16; ++n )
|
|
|
|
|
{
|
|
|
|
|
if( aBoxAutoFmt[ n ] )
|
|
|
|
|
delete aBoxAutoFmt[ n ];
|
|
|
|
|
|
|
|
|
|
SwBoxAutoFmt* pFmt = rNew.aBoxAutoFmt[ n ];
|
|
|
|
|
if( pFmt ) // ist gesetzt -> kopieren
|
|
|
|
|
aBoxAutoFmt[ n ] = new SwBoxAutoFmt( *pFmt );
|
|
|
|
|
else // sonst default
|
|
|
|
|
aBoxAutoFmt[ n ] = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
aName = rNew.aName;
|
|
|
|
|
nStrResId = rNew.nStrResId;
|
|
|
|
|
bInclFont = rNew.bInclFont;
|
|
|
|
|
bInclJustify = rNew.bInclJustify;
|
|
|
|
|
bInclFrame = rNew.bInclFrame;
|
|
|
|
|
bInclBackground = rNew.bInclBackground;
|
|
|
|
|
bInclValueFormat = rNew.bInclValueFormat;
|
|
|
|
|
bInclWidthHeight = rNew.bInclWidthHeight;
|
|
|
|
|
|
|
|
|
|
return *this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwTableAutoFmt::~SwTableAutoFmt()
|
|
|
|
|
{
|
|
|
|
|
SwBoxAutoFmt** ppFmt = aBoxAutoFmt;
|
|
|
|
|
for( BYTE n = 0; n < 16; ++n, ++ppFmt )
|
|
|
|
|
if( *ppFmt )
|
|
|
|
|
delete *ppFmt;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void SwTableAutoFmt::SetBoxFmt( const SwBoxAutoFmt& rNew, BYTE nPos )
|
|
|
|
|
{
|
|
|
|
|
ASSERT( 0 <= nPos && nPos < 16, "falscher Bereich" );
|
|
|
|
|
|
|
|
|
|
SwBoxAutoFmt* pFmt = aBoxAutoFmt[ nPos ];
|
|
|
|
|
if( pFmt ) // ist gesetzt -> kopieren
|
|
|
|
|
*aBoxAutoFmt[ nPos ] = rNew;
|
|
|
|
|
else // sonst neu setzen
|
|
|
|
|
aBoxAutoFmt[ nPos ] = new SwBoxAutoFmt( rNew );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const SwBoxAutoFmt& SwTableAutoFmt::GetBoxFmt( BYTE nPos ) const
|
|
|
|
|
{
|
|
|
|
|
ASSERT( 0 <= nPos && nPos < 16, "falscher Bereich" );
|
|
|
|
|
|
|
|
|
|
SwBoxAutoFmt* pFmt = aBoxAutoFmt[ nPos ];
|
|
|
|
|
if( pFmt ) // ist gesetzt -> kopieren
|
|
|
|
|
return *pFmt;
|
|
|
|
|
else // sonst den default returnen
|
|
|
|
|
{
|
|
|
|
|
// falls noch nicht vorhanden:
|
|
|
|
|
if( !pDfltBoxAutoFmt )
|
|
|
|
|
pDfltBoxAutoFmt = new SwBoxAutoFmt;
|
|
|
|
|
return *pDfltBoxAutoFmt;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwBoxAutoFmt& SwTableAutoFmt::UpdateFromSet( BYTE nPos,
|
|
|
|
|
const SfxItemSet& rSet,
|
|
|
|
|
UpdateFlags eFlags,
|
|
|
|
|
SvNumberFormatter* pNFmtr )
|
|
|
|
|
{
|
|
|
|
|
ASSERT( 0 <= nPos && nPos < 16, "falscher Bereich" );
|
|
|
|
|
|
|
|
|
|
SwBoxAutoFmt* pFmt = aBoxAutoFmt[ nPos ];
|
|
|
|
|
if( !pFmt ) // ist gesetzt -> kopieren
|
|
|
|
|
{
|
|
|
|
|
pFmt = new SwBoxAutoFmt;
|
|
|
|
|
aBoxAutoFmt[ nPos ] = pFmt;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if( UPDATE_CHAR & eFlags )
|
|
|
|
|
{
|
|
|
|
|
pFmt->SetFont( (SvxFontItem&)rSet.Get( RES_CHRATR_FONT ) );
|
|
|
|
|
pFmt->SetHeight( (SvxFontHeightItem&)rSet.Get( RES_CHRATR_FONTSIZE ) );
|
|
|
|
|
pFmt->SetWeight( (SvxWeightItem&)rSet.Get( RES_CHRATR_WEIGHT ) );
|
|
|
|
|
pFmt->SetPosture( (SvxPostureItem&)rSet.Get( RES_CHRATR_POSTURE ) );
|
|
|
|
|
pFmt->SetUnderline( (SvxUnderlineItem&)rSet.Get( RES_CHRATR_UNDERLINE ) );
|
|
|
|
|
pFmt->SetCrossedOut( (SvxCrossedOutItem&)rSet.Get( RES_CHRATR_CROSSEDOUT ) );
|
|
|
|
|
pFmt->SetContour( (SvxContourItem&)rSet.Get( RES_CHRATR_CONTOUR ) );
|
|
|
|
|
pFmt->SetShadowed( (SvxShadowedItem&)rSet.Get( RES_CHRATR_SHADOWED ) );
|
|
|
|
|
pFmt->SetColor( (SvxColorItem&)rSet.Get( RES_CHRATR_COLOR ) );
|
|
|
|
|
pFmt->SetAdjust( (SvxAdjustItem&)rSet.Get( RES_PARATR_ADJUST ) );
|
|
|
|
|
}
|
|
|
|
|
if( UPDATE_BOX & eFlags )
|
|
|
|
|
{
|
|
|
|
|
pFmt->SetBox( (SvxBoxItem&)rSet.Get( RES_BOX ) );
|
|
|
|
|
pFmt->SetBackground( (SvxBrushItem&)rSet.Get( RES_BACKGROUND ) );
|
|
|
|
|
|
|
|
|
|
const SwTblBoxNumFormat* pNumFmtItem;
|
|
|
|
|
const SvNumberformat* pNumFormat = 0;
|
|
|
|
|
if( SFX_ITEM_SET == rSet.GetItemState( RES_BOXATR_FORMAT, TRUE,
|
|
|
|
|
(const SfxPoolItem**)&pNumFmtItem ) && pNFmtr &&
|
|
|
|
|
0 != (pNumFormat = pNFmtr->GetEntry( pNumFmtItem->GetValue() )) )
|
|
|
|
|
pFmt->SetValueFormat( ((SvNumberformat*)pNumFormat)->GetFormatstring(),
|
|
|
|
|
pNumFormat->GetLanguage(),
|
|
|
|
|
::GetSystemLanguage() );
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// defaulten
|
|
|
|
|
pFmt->SetValueFormat( aEmptyStr, LANGUAGE_SYSTEM,
|
|
|
|
|
::GetSystemLanguage() );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// den Rest koennen wir nicht, StarCalc spezifisch
|
|
|
|
|
|
|
|
|
|
return *pFmt;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void SwTableAutoFmt::UpdateToSet( BYTE nPos, SfxItemSet& rSet,
|
|
|
|
|
UpdateFlags eFlags, SvNumberFormatter* pNFmtr ) const
|
|
|
|
|
{
|
|
|
|
|
const SwBoxAutoFmt& rChg = GetBoxFmt( nPos );
|
|
|
|
|
|
|
|
|
|
if( UPDATE_CHAR & eFlags )
|
|
|
|
|
{
|
|
|
|
|
if( IsFont() )
|
|
|
|
|
{
|
|
|
|
|
rSet.Put( rChg.GetFont() );
|
|
|
|
|
rSet.Put( rChg.GetHeight() );
|
|
|
|
|
rSet.Put( rChg.GetWeight() );
|
|
|
|
|
rSet.Put( rChg.GetPosture() );
|
|
|
|
|
rSet.Put( rChg.GetUnderline() );
|
|
|
|
|
rSet.Put( rChg.GetCrossedOut() );
|
|
|
|
|
rSet.Put( rChg.GetContour() );
|
|
|
|
|
rSet.Put( rChg.GetShadowed() );
|
|
|
|
|
rSet.Put( rChg.GetColor() );
|
|
|
|
|
}
|
|
|
|
|
if( IsJustify() )
|
|
|
|
|
rSet.Put( rChg.GetAdjust() );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if( UPDATE_BOX & eFlags )
|
|
|
|
|
{
|
|
|
|
|
if( IsFrame() )
|
|
|
|
|
rSet.Put( rChg.GetBox() );
|
|
|
|
|
if( IsBackground() )
|
|
|
|
|
rSet.Put( rChg.GetBackground() );
|
|
|
|
|
|
|
|
|
|
if( IsValueFormat() && pNFmtr )
|
|
|
|
|
{
|
|
|
|
|
String sFmt; LanguageType eLng, eSys;
|
|
|
|
|
rChg.GetValueFormat( sFmt, eLng, eSys );
|
|
|
|
|
if( sFmt.Len() )
|
|
|
|
|
{
|
|
|
|
|
ULONG nKey = 0;
|
|
|
|
|
if ( eLng == LANGUAGE_SYSTEM && eSys != ::GetSystemLanguage() )
|
|
|
|
|
{
|
|
|
|
|
// #53381# wenn System beim Speichern etwas anderes war,
|
|
|
|
|
// muss konvertiert werden (geht nur mit eingebauten Formaten)
|
|
|
|
|
ULONG nOrig = pNFmtr->GetEntryKey( sFmt, eSys );
|
|
|
|
|
if ( nOrig != NUMBERFORMAT_ENTRY_NOT_FOUND )
|
|
|
|
|
nKey = pNFmtr->GetFormatForLanguageIfBuiltIn( nOrig,
|
|
|
|
|
::GetSystemLanguage() );
|
|
|
|
|
}
|
|
|
|
|
else // sonst einfach suchen oder anlegen
|
|
|
|
|
{
|
|
|
|
|
nKey = pNFmtr->GetEntryKey( sFmt, eLng );
|
|
|
|
|
if( NUMBERFORMAT_ENTRY_NOT_FOUND == nKey )
|
|
|
|
|
{
|
|
|
|
|
xub_StrLen nCheckPos;
|
|
|
|
|
short nType;
|
|
|
|
|
pNFmtr->PutEntry( sFmt, nCheckPos, nType, nKey, eLng );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
rSet.Put( SwTblBoxNumFormat( nKey ));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
rSet.ClearItem( RES_BOXATR_FORMAT );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// den Rest koennen wir nicht, StarCalc spezifisch
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL SwTableAutoFmt::Load( SvStream& rStream, const SwAfVersions& rVersions )
|
|
|
|
|
{
|
|
|
|
|
BOOL bRet = TRUE;
|
|
|
|
|
USHORT nVal = 0;
|
|
|
|
|
rStream >> nVal;
|
|
|
|
|
bRet = 0 == rStream.GetError();
|
|
|
|
|
|
|
|
|
|
if( bRet && (nVal == AUTOFORMAT_DATA_ID_X ||
|
|
|
|
|
(AUTOFORMAT_DATA_ID_504 <= nVal && nVal <= AUTOFORMAT_DATA_ID)) )
|
|
|
|
|
{
|
|
|
|
|
BOOL b;
|
|
|
|
|
rStream.ReadByteString( aName, rStream.GetStreamCharSet() );
|
|
|
|
|
if( AUTOFORMAT_DATA_ID_552 <= nVal )
|
|
|
|
|
{
|
|
|
|
|
rStream >> nStrResId;
|
|
|
|
|
USHORT nId = RID_SVXSTR_TBLAFMT_BEGIN + nStrResId;
|
|
|
|
|
if( RID_SVXSTR_TBLAFMT_BEGIN <= nId &&
|
|
|
|
|
nId < RID_SVXSTR_TBLAFMT_END )
|
|
|
|
|
{
|
|
|
|
|
aName = SVX_RESSTR( nId );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
nStrResId = USHRT_MAX;
|
|
|
|
|
}
|
|
|
|
|
rStream >> b; bInclFont = b;
|
|
|
|
|
rStream >> b; bInclJustify = b;
|
|
|
|
|
rStream >> b; bInclFrame = b;
|
|
|
|
|
rStream >> b; bInclBackground = b;
|
|
|
|
|
rStream >> b; bInclValueFormat = b;
|
|
|
|
|
rStream >> b; bInclWidthHeight = b;
|
|
|
|
|
|
|
|
|
|
bRet = 0 == rStream.GetError();
|
|
|
|
|
|
|
|
|
|
for( BYTE i = 0; i < 16; ++i )
|
|
|
|
|
{
|
|
|
|
|
SwBoxAutoFmt* pFmt = new SwBoxAutoFmt;
|
|
|
|
|
bRet = pFmt->Load( rStream, rVersions, nVal );
|
|
|
|
|
if( bRet )
|
|
|
|
|
aBoxAutoFmt[ i ] = pFmt;
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
delete pFmt;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return bRet;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#ifdef READ_OLDVERS
|
|
|
|
|
|
|
|
|
|
BOOL SwTableAutoFmt::LoadOld( SvStream& rStream, USHORT aLoadVer[] )
|
|
|
|
|
{
|
|
|
|
|
BOOL bRet = TRUE;
|
|
|
|
|
USHORT nVal = 0;
|
|
|
|
|
rStream >> nVal;
|
|
|
|
|
bRet = 0 == rStream.GetError();
|
|
|
|
|
|
|
|
|
|
if( bRet && ( AUTOFORMAT_OLD_DATA_ID == nVal ))
|
|
|
|
|
{
|
|
|
|
|
BOOL b;
|
|
|
|
|
rStream.ReadByteString( aName, rStream.GetStreamCharSet() );
|
|
|
|
|
rStream >> b; bInclFont = b;
|
|
|
|
|
rStream >> b; bInclJustify = b;
|
|
|
|
|
rStream >> b; bInclFrame = b;
|
|
|
|
|
rStream >> b; bInclBackground = b;
|
|
|
|
|
bRet = (rStream.GetError() == 0);
|
|
|
|
|
|
|
|
|
|
for( int i = 0; i < 16; i++)
|
|
|
|
|
{
|
|
|
|
|
SwBoxAutoFmt* pFmt = new SwBoxAutoFmt;
|
|
|
|
|
bRet = pFmt->LoadOld( rStream, aLoadVer );
|
|
|
|
|
if( bRet )
|
|
|
|
|
aBoxAutoFmt[ i ] = pFmt;
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
delete pFmt;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return bRet;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL SwTableAutoFmt::Save( SvStream& rStream ) const
|
|
|
|
|
{
|
|
|
|
|
USHORT nVal = AUTOFORMAT_DATA_ID;
|
|
|
|
|
BOOL b;
|
|
|
|
|
rStream << nVal;
|
|
|
|
|
rStream.WriteByteString( aName, rStream.GetStreamCharSet() );
|
|
|
|
|
rStream << nStrResId;
|
|
|
|
|
rStream << ( b = bInclFont );
|
|
|
|
|
rStream << ( b = bInclJustify );
|
|
|
|
|
rStream << ( b = bInclFrame );
|
|
|
|
|
rStream << ( b = bInclBackground );
|
|
|
|
|
rStream << ( b = bInclValueFormat );
|
|
|
|
|
rStream << ( b = bInclWidthHeight );
|
|
|
|
|
|
|
|
|
|
BOOL bRet = 0 == rStream.GetError();
|
|
|
|
|
|
|
|
|
|
for( int i = 0; bRet && i < 16; ++i )
|
|
|
|
|
{
|
|
|
|
|
SwBoxAutoFmt* pFmt = aBoxAutoFmt[ i ];
|
|
|
|
|
if( !pFmt ) // nicht gesetzt -> default schreiben
|
|
|
|
|
{
|
|
|
|
|
// falls noch nicht vorhanden:
|
|
|
|
|
if( !pDfltBoxAutoFmt )
|
|
|
|
|
pDfltBoxAutoFmt = new SwBoxAutoFmt;
|
|
|
|
|
pFmt = pDfltBoxAutoFmt;
|
|
|
|
|
}
|
|
|
|
|
bRet = pFmt->Save( rStream );
|
|
|
|
|
}
|
|
|
|
|
return bRet;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SwTableAutoFmtTbl::SwTableAutoFmtTbl()
|
|
|
|
|
{
|
|
|
|
|
String sNm;
|
|
|
|
|
SwTableAutoFmt* pNew = new SwTableAutoFmt(
|
|
|
|
|
SwDoc::GetPoolNm( RES_POOLCOLL_STANDARD, sNm ) );
|
|
|
|
|
|
|
|
|
|
SwBoxAutoFmt aNew;
|
|
|
|
|
|
|
|
|
|
BYTE i;
|
|
|
|
|
|
|
|
|
|
Color aColor( COL_BLUE );
|
|
|
|
|
SvxBrushItem aBrushItem( aColor );
|
|
|
|
|
aNew.SetBackground( aBrushItem );
|
|
|
|
|
aNew.SetColor( Color( COL_WHITE ));
|
|
|
|
|
|
|
|
|
|
for( i = 0; i < 4; ++i )
|
|
|
|
|
pNew->SetBoxFmt( aNew, i );
|
|
|
|
|
|
|
|
|
|
// 70% Grau
|
|
|
|
|
aBrushItem.SetColor( RGB_COLORDATA( 0x4d, 0x4d, 0x4d ) );
|
|
|
|
|
aNew.SetBackground( aBrushItem );
|
|
|
|
|
for( i = 4; i <= 12; i += 4 )
|
|
|
|
|
pNew->SetBoxFmt( aNew, i );
|
|
|
|
|
|
|
|
|
|
// 20% Grau
|
|
|
|
|
aBrushItem.SetColor( RGB_COLORDATA( 0xcc, 0xcc, 0xcc ) );
|
|
|
|
|
aNew.SetBackground( aBrushItem );
|
|
|
|
|
aColor.SetColor( COL_BLACK );
|
|
|
|
|
aNew.SetColor( aColor );
|
|
|
|
|
for( i = 7; i <= 15; i += 4 )
|
|
|
|
|
pNew->SetBoxFmt( aNew, i );
|
|
|
|
|
for( i = 13; i <= 14; ++i )
|
|
|
|
|
pNew->SetBoxFmt( aNew, i );
|
|
|
|
|
|
|
|
|
|
aBrushItem.SetColor( Color( COL_WHITE ) );
|
|
|
|
|
aNew.SetBackground( aBrushItem );
|
|
|
|
|
for( i = 5; i <= 6; ++i )
|
|
|
|
|
pNew->SetBoxFmt( aNew, i );
|
|
|
|
|
for( i = 9; i <= 10; ++i )
|
|
|
|
|
pNew->SetBoxFmt( aNew, i );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SvxBoxItem aBox;
|
|
|
|
|
aBox.SetDistance( 55 );
|
|
|
|
|
SvxBorderLine aLn( &aColor, DEF_LINE_WIDTH_0 );
|
|
|
|
|
aBox.SetLine( &aLn, BOX_LINE_LEFT );
|
|
|
|
|
aBox.SetLine( &aLn, BOX_LINE_BOTTOM );
|
|
|
|
|
|
|
|
|
|
for( i = 0; i <= 15; ++i )
|
|
|
|
|
{
|
|
|
|
|
aBox.SetLine( i <= 3 ? &aLn : 0, BOX_LINE_TOP );
|
|
|
|
|
aBox.SetLine( (3 == ( i & 3 )) ? &aLn : 0, BOX_LINE_RIGHT );
|
|
|
|
|
((SwBoxAutoFmt&)pNew->GetBoxFmt( i )).SetBox( aBox );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Insert( pNew, Count() );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL SwTableAutoFmtTbl::Load()
|
|
|
|
|
{
|
|
|
|
|
BOOL bRet = FALSE;
|
|
|
|
|
String sNm( String::CreateFromAscii(
|
|
|
|
|
RTL_CONSTASCII_STRINGPARAM( sAutoTblFmtName )));
|
2000-11-13 09:30:28 +00:00
|
|
|
|
SvtPathOptions aOpt;
|
|
|
|
|
if( aOpt.SearchFile( sNm, SvtPathOptions::PATH_USERCONFIG ))
|
2000-09-18 23:08:29 +00:00
|
|
|
|
{
|
2000-10-06 12:11:18 +00:00
|
|
|
|
SfxMedium aStream( sNm, STREAM_STD_READ, TRUE );
|
|
|
|
|
bRet = Load( *aStream.GetInStream() );
|
2000-09-18 23:08:29 +00:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
bRet = FALSE;
|
|
|
|
|
return bRet;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL SwTableAutoFmtTbl::Save() const
|
|
|
|
|
{
|
2000-10-06 12:11:18 +00:00
|
|
|
|
SvtPathOptions aPathOpt;
|
|
|
|
|
String sNm( URIHelper::SmartRelToAbs( aPathOpt.GetUserConfigPath() ));
|
2000-09-18 23:08:29 +00:00
|
|
|
|
sNm += INET_PATH_TOKEN;
|
|
|
|
|
sNm.AppendAscii( RTL_CONSTASCII_STRINGPARAM( sAutoTblFmtName ));
|
|
|
|
|
SfxMedium aStream(sNm, STREAM_STD_WRITE, TRUE );
|
|
|
|
|
return Save( *aStream.GetOutStream() );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL SwTableAutoFmtTbl::Load( SvStream& rStream )
|
|
|
|
|
{
|
|
|
|
|
BOOL bRet = 0 == rStream.GetError();
|
|
|
|
|
if (bRet)
|
|
|
|
|
{
|
|
|
|
|
// Achtung hier muss ein allgemeiner Header gelesen werden
|
|
|
|
|
USHORT nVal = 0;
|
|
|
|
|
rStream >> nVal;
|
|
|
|
|
bRet = 0 == rStream.GetError();
|
|
|
|
|
|
|
|
|
|
if( bRet )
|
|
|
|
|
{
|
|
|
|
|
SwAfVersions aVersions;
|
|
|
|
|
|
|
|
|
|
if( nVal == AUTOFORMAT_ID_358 ||
|
|
|
|
|
(AUTOFORMAT_ID_504 <= nVal && nVal <= AUTOFORMAT_ID) )
|
|
|
|
|
{
|
|
|
|
|
UINT16 nFileVers = SOFFICE_FILEFORMAT_40;
|
|
|
|
|
BYTE nChrSet, nCnt;
|
|
|
|
|
long nPos = rStream.Tell();
|
|
|
|
|
rStream >> nCnt >> nChrSet;
|
|
|
|
|
// if( 4 <= nCnt )
|
|
|
|
|
// rStream >> nFileVers;
|
|
|
|
|
if( rStream.Tell() != ULONG(nPos + nCnt) )
|
|
|
|
|
{
|
|
|
|
|
ASSERT( !this, "Der Header enthaelt mehr/neuere Daten" );
|
|
|
|
|
rStream.Seek( nPos + nCnt );
|
|
|
|
|
}
|
|
|
|
|
rStream.SetStreamCharSet( (CharSet)nChrSet );
|
|
|
|
|
rStream.SetVersion( nFileVers );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if( nVal == AUTOFORMAT_ID_358 || nVal == AUTOFORMAT_ID_X ||
|
|
|
|
|
(AUTOFORMAT_ID_504 <= nVal && nVal <= AUTOFORMAT_ID) )
|
|
|
|
|
{
|
|
|
|
|
aVersions.Load( rStream, nVal ); // Item-Versionen
|
|
|
|
|
|
|
|
|
|
SwTableAutoFmt* pNew;
|
|
|
|
|
USHORT nAnz = 0;
|
|
|
|
|
rStream >> nAnz;
|
|
|
|
|
|
|
|
|
|
bRet = 0 == rStream.GetError();
|
|
|
|
|
|
|
|
|
|
for( USHORT i = 0; i < nAnz; ++i )
|
|
|
|
|
{
|
|
|
|
|
pNew = new SwTableAutoFmt( aEmptyStr );
|
|
|
|
|
bRet = pNew->Load( rStream, aVersions );
|
|
|
|
|
if( bRet )
|
|
|
|
|
{
|
|
|
|
|
Insert( pNew, Count() );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
delete pNew;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#ifdef READ_OLDVERS
|
|
|
|
|
else if( AUTOFORMAT_OLD_ID == nVal || AUTOFORMAT_OLD_ID1 == nVal )
|
|
|
|
|
{
|
|
|
|
|
SwTableAutoFmt* pNew;
|
|
|
|
|
USHORT nAnz = 0;
|
|
|
|
|
rStream >> nAnz;
|
|
|
|
|
|
|
|
|
|
USHORT aArr[ 12 ];
|
|
|
|
|
memset( aArr, 0, 12 * sizeof( USHORT ) );
|
|
|
|
|
if( AUTOFORMAT_OLD_ID1 == nVal )
|
|
|
|
|
for( USHORT n = 0; n < 12; ++n )
|
|
|
|
|
rStream >> aArr[ n ];
|
|
|
|
|
|
|
|
|
|
bRet = 0 == rStream.GetError();
|
|
|
|
|
|
|
|
|
|
for( USHORT i = 0; i < nAnz; ++i )
|
|
|
|
|
{
|
|
|
|
|
pNew = new SwTableAutoFmt( aEmptyStr );
|
|
|
|
|
bRet = pNew->LoadOld( rStream, aArr );
|
|
|
|
|
if( bRet )
|
|
|
|
|
{
|
|
|
|
|
Insert( pNew, Count() );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
delete pNew;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return bRet;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOL SwTableAutoFmtTbl::Save( SvStream& rStream ) const
|
|
|
|
|
{
|
|
|
|
|
BOOL bRet = 0 == rStream.GetError();
|
|
|
|
|
if (bRet)
|
|
|
|
|
{
|
|
|
|
|
rStream.SetVersion( SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
|
|
|
|
|
// Achtung hier muss ein allgemeiner Header gespeichert werden
|
|
|
|
|
USHORT nVal = AUTOFORMAT_ID;
|
|
|
|
|
rStream << nVal
|
|
|
|
|
<< (BYTE)2 // Anzahl von Zeichen des Headers incl. diesem
|
|
|
|
|
<< (BYTE)GetStoreCharSet( ::gsl_getSystemTextEncoding(),
|
|
|
|
|
SOFFICE_FILEFORMAT_40 );
|
|
|
|
|
// << (BYTE)4 // Anzahl von Zeichen des Headers incl. diesem
|
|
|
|
|
// << (BYTE)::GetSystemCharSet()
|
|
|
|
|
// << (UNIT16)SOFFICE_FILEFORMAT_NOW;
|
|
|
|
|
bRet = 0 == rStream.GetError();
|
|
|
|
|
|
|
|
|
|
//-----------------------------------------------------------
|
|
|
|
|
// die VersionsNummer fuer alle Attribute schreiben
|
|
|
|
|
(*this)[ 0 ]->GetBoxFmt( 0 ).SaveVerionNo( rStream );
|
|
|
|
|
|
|
|
|
|
rStream << (USHORT)(Count() - 1);
|
|
|
|
|
bRet = 0 == rStream.GetError();
|
|
|
|
|
|
|
|
|
|
for( USHORT i = 1; bRet && i < Count(); ++i )
|
|
|
|
|
{
|
|
|
|
|
SwTableAutoFmt* pFmt = (*this)[ i ];
|
|
|
|
|
bRet = pFmt->Save( rStream );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
rStream.Flush();
|
|
|
|
|
return bRet;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|