summaryrefslogtreecommitdiff
path: root/sc/source/core
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/core')
-rw-r--r--sc/source/core/data/attrib.cxx5
-rw-r--r--sc/source/core/data/patattr.cxx55
-rw-r--r--sc/source/core/tool/autoform.cxx343
3 files changed, 102 insertions, 301 deletions
diff --git a/sc/source/core/data/attrib.cxx b/sc/source/core/data/attrib.cxx
index cf6a61663a59..1b523f918a41 100644
--- a/sc/source/core/data/attrib.cxx
+++ b/sc/source/core/data/attrib.cxx
@@ -558,11 +558,6 @@ SfxPoolItem* ScViewObjectModeItem::Clone( SfxItemPool* ) const
return new ScViewObjectModeItem( *this );
}
-sal_uInt16 ScViewObjectModeItem::GetVersion( sal_uInt16 /* nFileVersion */ ) const
-{
- return 1;
-}
-
ScPageScaleToItem::ScPageScaleToItem() :
SfxPoolItem( ATTR_PAGE_SCALETO ),
mnWidth( 0 ),
diff --git a/sc/source/core/data/patattr.cxx b/sc/source/core/data/patattr.cxx
index efaebde867b5..fbf6d33e4a6c 100644
--- a/sc/source/core/data/patattr.cxx
+++ b/sc/source/core/data/patattr.cxx
@@ -582,14 +582,14 @@ void ScPatternAttr::FillToEditItemSet( SfxItemSet& rEditSet, const SfxItemSet& r
{
// Read Items
- SvxColorItem aColorItem(EE_CHAR_COLOR); // use item as-is
- SvxFontItem aFontItem(EE_CHAR_FONTINFO); // use item as-is
- SvxFontItem aCjkFontItem(EE_CHAR_FONTINFO_CJK);
- SvxFontItem aCtlFontItem(EE_CHAR_FONTINFO_CTL);
+ std::shared_ptr<SvxColorItem> aColorItem(std::make_shared<SvxColorItem>(EE_CHAR_COLOR)); // use item as-is
+ std::shared_ptr<SvxFontItem> aFontItem(std::make_shared<SvxFontItem>(EE_CHAR_FONTINFO)); // use item as-is
+ std::shared_ptr<SvxFontItem> aCjkFontItem(std::make_shared<SvxFontItem>(EE_CHAR_FONTINFO_CJK)); // use item as-is
+ std::shared_ptr<SvxFontItem> aCtlFontItem(std::make_shared<SvxFontItem>(EE_CHAR_FONTINFO_CTL)); // use item as-is
long nTHeight, nCjkTHeight, nCtlTHeight; // Twips
FontWeight eWeight, eCjkWeight, eCtlWeight;
- SvxUnderlineItem aUnderlineItem(LINESTYLE_NONE, EE_CHAR_UNDERLINE);
- SvxOverlineItem aOverlineItem(LINESTYLE_NONE, EE_CHAR_OVERLINE);
+ std::shared_ptr<SvxUnderlineItem> aUnderlineItem(std::make_shared<SvxUnderlineItem>(LINESTYLE_NONE, EE_CHAR_UNDERLINE));
+ std::shared_ptr<SvxOverlineItem> aOverlineItem(std::make_shared<SvxOverlineItem>(LINESTYLE_NONE, EE_CHAR_OVERLINE));
bool bWordLine;
FontStrikeout eStrike;
FontItalic eItalic, eCjkItalic, eCtlItalic;
@@ -610,17 +610,19 @@ void ScPatternAttr::FillToEditItemSet( SfxItemSet& rEditSet, const SfxItemSet& r
if ( pCondSet->GetItemState( ATTR_FONT_COLOR, true, &pItem ) != SfxItemState::SET )
pItem = &rSrcSet.Get( ATTR_FONT_COLOR );
- aColorItem = *static_cast<const SvxColorItem*>(pItem);
+ aColorItem.reset(static_cast<SvxColorItem*>(pItem->Clone()));
if ( pCondSet->GetItemState( ATTR_FONT, true, &pItem ) != SfxItemState::SET )
pItem = &rSrcSet.Get( ATTR_FONT );
- aFontItem = *static_cast<const SvxFontItem*>(pItem);
+ aFontItem.reset(static_cast<SvxFontItem*>(pItem->Clone()));
+
if ( pCondSet->GetItemState( ATTR_CJK_FONT, true, &pItem ) != SfxItemState::SET )
pItem = &rSrcSet.Get( ATTR_CJK_FONT );
- aCjkFontItem = *static_cast<const SvxFontItem*>(pItem);
+ aCjkFontItem.reset(static_cast<SvxFontItem*>(pItem->Clone()));
+
if ( pCondSet->GetItemState( ATTR_CTL_FONT, true, &pItem ) != SfxItemState::SET )
pItem = &rSrcSet.Get( ATTR_CTL_FONT );
- aCtlFontItem = *static_cast<const SvxFontItem*>(pItem);
+ aCtlFontItem.reset(static_cast<SvxFontItem*>(pItem->Clone()));
if ( pCondSet->GetItemState( ATTR_FONT_HEIGHT, true, &pItem ) != SfxItemState::SET )
pItem = &rSrcSet.Get( ATTR_FONT_HEIGHT );
@@ -654,11 +656,11 @@ void ScPatternAttr::FillToEditItemSet( SfxItemSet& rEditSet, const SfxItemSet& r
if ( pCondSet->GetItemState( ATTR_FONT_UNDERLINE, true, &pItem ) != SfxItemState::SET )
pItem = &rSrcSet.Get( ATTR_FONT_UNDERLINE );
- aUnderlineItem = *static_cast<const SvxUnderlineItem*>(pItem);
+ aUnderlineItem.reset(static_cast<SvxUnderlineItem*>(pItem->Clone()));
if ( pCondSet->GetItemState( ATTR_FONT_OVERLINE, true, &pItem ) != SfxItemState::SET )
pItem = &rSrcSet.Get( ATTR_FONT_OVERLINE );
- aOverlineItem = *static_cast<const SvxOverlineItem*>(pItem);
+ aOverlineItem.reset(static_cast<SvxOverlineItem*>(pItem->Clone()));
if ( pCondSet->GetItemState( ATTR_FONT_WORDLINE, true, &pItem ) != SfxItemState::SET )
pItem = &rSrcSet.Get( ATTR_FONT_WORDLINE );
@@ -707,10 +709,10 @@ void ScPatternAttr::FillToEditItemSet( SfxItemSet& rEditSet, const SfxItemSet& r
}
else // Everything directly from Pattern
{
- aColorItem = rSrcSet.Get( ATTR_FONT_COLOR );
- aFontItem = rSrcSet.Get( ATTR_FONT );
- aCjkFontItem = rSrcSet.Get( ATTR_CJK_FONT );
- aCtlFontItem = rSrcSet.Get( ATTR_CTL_FONT );
+ aColorItem.reset(static_cast<SvxColorItem*>(rSrcSet.Get(ATTR_FONT_COLOR).Clone()));
+ aFontItem.reset(static_cast<SvxFontItem*>(rSrcSet.Get(ATTR_FONT).Clone()));
+ aCjkFontItem.reset(static_cast<SvxFontItem*>(rSrcSet.Get(ATTR_CJK_FONT).Clone()));
+ aCtlFontItem.reset(static_cast<SvxFontItem*>(rSrcSet.Get(ATTR_CTL_FONT).Clone()));
nTHeight = rSrcSet.Get( ATTR_FONT_HEIGHT ).GetHeight();
nCjkTHeight = rSrcSet.Get( ATTR_CJK_FONT_HEIGHT ).GetHeight();
nCtlTHeight = rSrcSet.Get( ATTR_CTL_FONT_HEIGHT ).GetHeight();
@@ -720,8 +722,8 @@ void ScPatternAttr::FillToEditItemSet( SfxItemSet& rEditSet, const SfxItemSet& r
eItalic = rSrcSet.Get( ATTR_FONT_POSTURE ).GetValue();
eCjkItalic = rSrcSet.Get( ATTR_CJK_FONT_POSTURE ).GetValue();
eCtlItalic = rSrcSet.Get( ATTR_CTL_FONT_POSTURE ).GetValue();
- aUnderlineItem = rSrcSet.Get( ATTR_FONT_UNDERLINE );
- aOverlineItem = rSrcSet.Get( ATTR_FONT_OVERLINE );
+ aUnderlineItem.reset(static_cast<SvxUnderlineItem*>(rSrcSet.Get(ATTR_FONT_UNDERLINE).Clone()));
+ aOverlineItem.reset(static_cast<SvxOverlineItem*>(rSrcSet.Get(ATTR_FONT_OVERLINE).Clone()));
bWordLine = rSrcSet.Get( ATTR_FONT_WORDLINE ).GetValue();
eStrike = rSrcSet.Get( ATTR_FONT_CROSSEDOUT ).GetValue();
bOutline = rSrcSet.Get( ATTR_FONT_CONTOUR ).GetValue();
@@ -744,7 +746,7 @@ void ScPatternAttr::FillToEditItemSet( SfxItemSet& rEditSet, const SfxItemSet& r
// put items into EditEngine ItemSet
- if ( aColorItem.GetValue() == COL_AUTO )
+ if ( aColorItem->GetValue() == COL_AUTO )
{
// When cell attributes are converted to EditEngine paragraph attributes,
// don't create a hard item for automatic color, because that would be converted
@@ -754,18 +756,21 @@ void ScPatternAttr::FillToEditItemSet( SfxItemSet& rEditSet, const SfxItemSet& r
rEditSet.ClearItem( EE_CHAR_COLOR );
}
else
- rEditSet.Put( aColorItem );
- rEditSet.Put( aFontItem );
- rEditSet.Put( aCjkFontItem );
- rEditSet.Put( aCtlFontItem );
+ {
+ rEditSet.Put( *aColorItem );
+ }
+
+ rEditSet.Put( *aFontItem );
+ rEditSet.Put( *aCjkFontItem );
+ rEditSet.Put( *aCtlFontItem );
rEditSet.Put( SvxFontHeightItem( nHeight, 100, EE_CHAR_FONTHEIGHT ) );
rEditSet.Put( SvxFontHeightItem( nCjkHeight, 100, EE_CHAR_FONTHEIGHT_CJK ) );
rEditSet.Put( SvxFontHeightItem( nCtlHeight, 100, EE_CHAR_FONTHEIGHT_CTL ) );
rEditSet.Put( SvxWeightItem ( eWeight, EE_CHAR_WEIGHT ) );
rEditSet.Put( SvxWeightItem ( eCjkWeight, EE_CHAR_WEIGHT_CJK ) );
rEditSet.Put( SvxWeightItem ( eCtlWeight, EE_CHAR_WEIGHT_CTL ) );
- rEditSet.Put( aUnderlineItem );
- rEditSet.Put( aOverlineItem );
+ rEditSet.Put( *aUnderlineItem );
+ rEditSet.Put( *aOverlineItem );
rEditSet.Put( SvxWordLineModeItem( bWordLine, EE_CHAR_WLM ) );
rEditSet.Put( SvxCrossedOutItem( eStrike, EE_CHAR_STRIKEOUT ) );
rEditSet.Put( SvxPostureItem ( eItalic, EE_CHAR_ITALIC ) );
diff --git a/sc/source/core/tool/autoform.cxx b/sc/source/core/tool/autoform.cxx
index fd28eb291ab4..00e0a7430b02 100644
--- a/sc/source/core/tool/autoform.cxx
+++ b/sc/source/core/tool/autoform.cxx
@@ -42,6 +42,10 @@
#include <scresid.hxx>
#include <document.hxx>
+#include <svl/legacyitem.hxx>
+#include <editeng/legacyitem.hxx>
+#include <svx/legacyitem.hxx>
+
/*
* XXX: BIG RED NOTICE! Changes MUST be binary file format compatible and MUST
* be synchronized with Writer's SwTableAutoFmtTbl sw/source/core/doc/tblafmt.cxx
@@ -61,20 +65,9 @@ const sal_uInt16 AUTOFORMAT_DATA_ID_504 = 9802;
const sal_uInt16 AUTOFORMAT_DATA_ID_552 = 9902;
-// --- from 641 on: CJK and CTL font settings
-const sal_uInt16 AUTOFORMAT_DATA_ID_641 = 10002;
-
-// --- from 680/dr14 on: diagonal frame lines
-const sal_uInt16 AUTOFORMAT_ID_680DR14 = 10011;
-const sal_uInt16 AUTOFORMAT_DATA_ID_680DR14 = 10012;
-
// --- from 680/dr25 on: store strings as UTF-8
const sal_uInt16 AUTOFORMAT_ID_680DR25 = 10021;
-// --- from DEV300/overline2 on: overline support
-const sal_uInt16 AUTOFORMAT_ID_300OVRLN = 10031;
-const sal_uInt16 AUTOFORMAT_DATA_ID_300OVRLN = 10032;
-
// --- Bug fix to fdo#31005: Table Autoformats does not save/apply all properties (Writer and Calc)
const sal_uInt16 AUTOFORMAT_ID_31005 = 10041;
const sal_uInt16 AUTOFORMAT_DATA_ID_31005 = 10042;
@@ -119,163 +112,77 @@ namespace
}
}
-ScAfVersions::ScAfVersions() :
- nFontVersion(0),
- nFontHeightVersion(0),
- nWeightVersion(0),
- nPostureVersion(0),
- nUnderlineVersion(0),
- nOverlineVersion(0),
- nCrossedOutVersion(0),
- nContourVersion(0),
- nShadowedVersion(0),
- nColorVersion(0),
- nBoxVersion(0),
- nLineVersion(0),
- nBrushVersion(0),
- nAdjustVersion(0),
- nHorJustifyVersion(0),
- nVerJustifyVersion(0),
- nOrientationVersion(0),
- nMarginVersion(0),
- nBoolVersion(0),
- nInt32Version(0),
- nRotateModeVersion(0),
- nNumFmtVersion(0)
+ScAfVersions::ScAfVersions()
+: AutoFormatVersions(),
+ swVersions()
{
}
void ScAfVersions::Load( SvStream& rStream, sal_uInt16 nVer )
{
- rStream.ReadUInt16( nFontVersion );
- rStream.ReadUInt16( nFontHeightVersion );
- rStream.ReadUInt16( nWeightVersion );
- rStream.ReadUInt16( nPostureVersion );
- rStream.ReadUInt16( nUnderlineVersion );
- if ( nVer >= AUTOFORMAT_ID_300OVRLN )
- rStream.ReadUInt16( nOverlineVersion );
- rStream.ReadUInt16( nCrossedOutVersion );
- rStream.ReadUInt16( nContourVersion );
- rStream.ReadUInt16( nShadowedVersion );
- rStream.ReadUInt16( nColorVersion );
- rStream.ReadUInt16( nBoxVersion );
- if ( nVer >= AUTOFORMAT_ID_680DR14 )
- rStream.ReadUInt16( nLineVersion );
- rStream.ReadUInt16( nBrushVersion );
- rStream.ReadUInt16( nAdjustVersion );
+ LoadBlockA(rStream, nVer);
if (nVer >= AUTOFORMAT_ID_31005)
- rStream >> swVersions;
- rStream.ReadUInt16( nHorJustifyVersion );
- rStream.ReadUInt16( nVerJustifyVersion );
- rStream.ReadUInt16( nOrientationVersion );
- rStream.ReadUInt16( nMarginVersion );
- rStream.ReadUInt16( nBoolVersion );
- if ( nVer >= AUTOFORMAT_ID_504 )
{
- rStream.ReadUInt16( nInt32Version );
- rStream.ReadUInt16( nRotateModeVersion );
+ rStream >> swVersions;
}
- rStream.ReadUInt16( nNumFmtVersion );
+ LoadBlockB(rStream, nVer);
}
void ScAfVersions::Write(SvStream& rStream, sal_uInt16 fileVersion)
{
- rStream.WriteUInt16( SvxFontItem(ATTR_FONT).GetVersion(fileVersion) );
- rStream.WriteUInt16( SvxFontHeightItem(240, 100, ATTR_FONT_HEIGHT).GetVersion(fileVersion) );
- rStream.WriteUInt16( SvxWeightItem(WEIGHT_NORMAL, ATTR_FONT_WEIGHT).GetVersion(fileVersion) );
- rStream.WriteUInt16( SvxPostureItem(ITALIC_NONE, ATTR_FONT_POSTURE).GetVersion(fileVersion) );
- rStream.WriteUInt16( SvxUnderlineItem(LINESTYLE_NONE, ATTR_FONT_UNDERLINE).GetVersion(fileVersion) );
- rStream.WriteUInt16( SvxOverlineItem(LINESTYLE_NONE, ATTR_FONT_OVERLINE).GetVersion(fileVersion) );
- rStream.WriteUInt16( SvxCrossedOutItem(STRIKEOUT_NONE, ATTR_FONT_CROSSEDOUT).GetVersion(fileVersion) );
- rStream.WriteUInt16( SvxContourItem(false, ATTR_FONT_CONTOUR).GetVersion(fileVersion) );
- rStream.WriteUInt16( SvxShadowedItem(false, ATTR_FONT_SHADOWED).GetVersion(fileVersion) );
- rStream.WriteUInt16( SvxColorItem(ATTR_FONT_COLOR).GetVersion(fileVersion) );
- rStream.WriteUInt16( SvxBoxItem(ATTR_BORDER).GetVersion(fileVersion) );
- rStream.WriteUInt16( SvxLineItem(SID_FRAME_LINESTYLE).GetVersion(fileVersion) );
- rStream.WriteUInt16( SvxBrushItem(ATTR_BACKGROUND).GetVersion(fileVersion) );
-
- rStream.WriteUInt16( SvxAdjustItem(SvxAdjust::Left, 0).GetVersion(fileVersion) );
+ AutoFormatVersions::WriteBlockA(rStream, fileVersion);
+
if (fileVersion >= SOFFICE_FILEFORMAT_50)
+ {
WriteAutoFormatSwBlob( rStream, swVersions );
+ }
- rStream.WriteUInt16( SvxHorJustifyItem(SvxCellHorJustify::Standard, ATTR_HOR_JUSTIFY).GetVersion(fileVersion) );
- rStream.WriteUInt16( SvxVerJustifyItem(SvxCellVerJustify::Standard, ATTR_VER_JUSTIFY).GetVersion(fileVersion) );
- rStream.WriteUInt16( SvxOrientationItem(SvxCellOrientation::Standard, 0).GetVersion(fileVersion) );
- rStream.WriteUInt16( SvxMarginItem(ATTR_MARGIN).GetVersion(fileVersion) );
- rStream.WriteUInt16( SfxBoolItem(ATTR_LINEBREAK).GetVersion(fileVersion) );
- rStream.WriteUInt16( SfxInt32Item(ATTR_ROTATE_VALUE).GetVersion(fileVersion) );
- rStream.WriteUInt16( SvxRotateModeItem(SVX_ROTATE_MODE_STANDARD,0).GetVersion(fileVersion) );
-
- rStream.WriteUInt16( 0 ); // Num-Format
-}
-
-ScAutoFormatDataField::ScAutoFormatDataField() :
- aFont( ATTR_FONT ),
- aHeight( 240, 100, ATTR_FONT_HEIGHT ),
- aWeight( WEIGHT_NORMAL, ATTR_FONT_WEIGHT ),
- aPosture( ITALIC_NONE, ATTR_FONT_POSTURE ),
-
- aCJKFont( ATTR_CJK_FONT ),
- aCJKHeight( 240, 100, ATTR_CJK_FONT_HEIGHT ),
- aCJKWeight( WEIGHT_NORMAL, ATTR_CJK_FONT_WEIGHT ),
- aCJKPosture( ITALIC_NONE, ATTR_CJK_FONT_POSTURE ),
-
- aCTLFont( ATTR_CTL_FONT ),
- aCTLHeight( 240, 100, ATTR_CTL_FONT_HEIGHT ),
- aCTLWeight( WEIGHT_NORMAL, ATTR_CTL_FONT_WEIGHT ),
- aCTLPosture( ITALIC_NONE, ATTR_CTL_FONT_POSTURE ),
-
- aUnderline( LINESTYLE_NONE,ATTR_FONT_UNDERLINE ),
- aOverline( LINESTYLE_NONE,ATTR_FONT_OVERLINE ),
- aCrossedOut( STRIKEOUT_NONE, ATTR_FONT_CROSSEDOUT ),
- aContour( false, ATTR_FONT_CONTOUR ),
- aShadowed( false, ATTR_FONT_SHADOWED ),
- aColor( ATTR_FONT_COLOR ),
- aBox( ATTR_BORDER ),
- aTLBR( ATTR_BORDER_TLBR ),
- aBLTR( ATTR_BORDER_BLTR ),
- aBackground( ATTR_BACKGROUND ),
- aAdjust( SvxAdjust::Left, 0 ),
- aHorJustify( SvxCellHorJustify::Standard, ATTR_HOR_JUSTIFY ),
- aVerJustify( SvxCellVerJustify::Standard, ATTR_VER_JUSTIFY ),
- aMargin( ATTR_MARGIN ),
- aLinebreak( ATTR_LINEBREAK ),
- aRotateAngle( ATTR_ROTATE_VALUE ),
- aRotateMode( SVX_ROTATE_MODE_STANDARD, ATTR_ROTATE_MODE )
-{
-}
-
-ScAutoFormatDataField::ScAutoFormatDataField( const ScAutoFormatDataField& rCopy ) :
- aFont( rCopy.aFont ),
- aHeight( rCopy.aHeight ),
- aWeight( rCopy.aWeight ),
- aPosture( rCopy.aPosture ),
- aCJKFont( rCopy.aCJKFont ),
- aCJKHeight( rCopy.aCJKHeight ),
- aCJKWeight( rCopy.aCJKWeight ),
- aCJKPosture( rCopy.aCJKPosture ),
- aCTLFont( rCopy.aCTLFont ),
- aCTLHeight( rCopy.aCTLHeight ),
- aCTLWeight( rCopy.aCTLWeight ),
- aCTLPosture( rCopy.aCTLPosture ),
- aUnderline( rCopy.aUnderline ),
- aOverline( rCopy.aOverline ),
- aCrossedOut( rCopy.aCrossedOut ),
- aContour( rCopy.aContour ),
- aShadowed( rCopy.aShadowed ),
- aColor( rCopy.aColor ),
- aBox( rCopy.aBox ),
- aTLBR( rCopy.aTLBR ),
- aBLTR( rCopy.aBLTR ),
- aBackground( rCopy.aBackground ),
- aAdjust( rCopy.aAdjust ),
- aHorJustify( rCopy.aHorJustify ),
- aVerJustify( rCopy.aVerJustify ),
- aStacked( rCopy.aStacked ),
- aMargin( rCopy.aMargin ),
- aLinebreak( rCopy.aLinebreak ),
- aRotateAngle( rCopy.aRotateAngle ),
- aRotateMode( rCopy.aRotateMode ),
+ AutoFormatVersions::WriteBlockB(rStream, fileVersion);
+}
+
+ScAutoFormatDataField::ScAutoFormatDataField()
+: AutoFormatBase(),
+ m_swFields(),
+ aNumFormat()
+{
+ // need to set default instances for base class AutoFormatBase here
+ // due to ressource defines (e.g. ATTR_FONT) which are not available
+ // in svx and different in the different usages of derivations
+ m_aFont = std::make_shared<SvxFontItem>(ATTR_FONT);
+ m_aHeight = std::make_shared<SvxFontHeightItem>(240, 100, ATTR_FONT_HEIGHT);
+ m_aWeight = std::make_shared<SvxWeightItem>(WEIGHT_NORMAL, ATTR_FONT_WEIGHT);
+ m_aPosture = std::make_shared<SvxPostureItem>(ITALIC_NONE, ATTR_FONT_POSTURE);
+ m_aCJKFont = std::make_shared<SvxFontItem>(ATTR_CJK_FONT);
+ m_aCJKHeight = std::make_shared<SvxFontHeightItem>(240, 100, ATTR_CJK_FONT_HEIGHT);
+ m_aCJKWeight = std::make_shared<SvxWeightItem>(WEIGHT_NORMAL, ATTR_CJK_FONT_WEIGHT);
+ m_aCJKPosture = std::make_shared<SvxPostureItem>(ITALIC_NONE, ATTR_CJK_FONT_POSTURE);
+ m_aCTLFont = std::make_shared<SvxFontItem>(ATTR_CTL_FONT);
+ m_aCTLHeight = std::make_shared<SvxFontHeightItem>(240, 100, ATTR_CTL_FONT_HEIGHT);
+ m_aCTLWeight = std::make_shared<SvxWeightItem>(WEIGHT_NORMAL, ATTR_CTL_FONT_WEIGHT);
+ m_aCTLPosture = std::make_shared<SvxPostureItem>(ITALIC_NONE, ATTR_CTL_FONT_POSTURE);
+ m_aUnderline = std::make_shared<SvxUnderlineItem>(LINESTYLE_NONE,ATTR_FONT_UNDERLINE);
+ m_aOverline = std::make_shared<SvxOverlineItem>(LINESTYLE_NONE,ATTR_FONT_OVERLINE);
+ m_aCrossedOut = std::make_shared<SvxCrossedOutItem>(STRIKEOUT_NONE, ATTR_FONT_CROSSEDOUT);
+ m_aContour = std::make_shared<SvxContourItem>(false, ATTR_FONT_CONTOUR);
+ m_aShadowed = std::make_shared<SvxShadowedItem>(false, ATTR_FONT_SHADOWED);
+ m_aColor = std::make_shared<SvxColorItem>(ATTR_FONT_COLOR);
+ m_aBox = std::make_shared<SvxBoxItem>(ATTR_BORDER);
+ m_aTLBR = std::make_shared<SvxLineItem>(ATTR_BORDER_TLBR);
+ m_aBLTR = std::make_shared<SvxLineItem>(ATTR_BORDER_BLTR);
+ m_aBackground = std::make_shared<SvxBrushItem>(ATTR_BACKGROUND);
+ m_aAdjust = std::make_shared<SvxAdjustItem>(SvxAdjust::Left, 0);
+ m_aHorJustify = std::make_shared<SvxHorJustifyItem>(SvxCellHorJustify::Standard, ATTR_HOR_JUSTIFY);
+ m_aVerJustify = std::make_shared<SvxVerJustifyItem>(SvxCellVerJustify::Standard, ATTR_VER_JUSTIFY);
+ m_aStacked = std::make_shared<SfxBoolItem>();
+ m_aMargin = std::make_shared<SvxMarginItem>(ATTR_MARGIN);
+ m_aLinebreak = std::make_shared<SfxBoolItem>(ATTR_LINEBREAK);
+ m_aRotateAngle = std::make_shared<SfxInt32Item>(ATTR_ROTATE_VALUE);
+ m_aRotateMode = std::make_shared<SvxRotateModeItem>(SVX_ROTATE_MODE_STANDARD, ATTR_ROTATE_MODE);
+}
+
+ScAutoFormatDataField::ScAutoFormatDataField( const ScAutoFormatDataField& rCopy )
+: AutoFormatBase(rCopy),
+ m_swFields(), // was not copied in original, needed?
aNumFormat( rCopy.aNumFormat )
{
}
@@ -284,86 +191,18 @@ ScAutoFormatDataField::~ScAutoFormatDataField()
{
}
-void ScAutoFormatDataField::SetAdjust( const SvxAdjustItem& rAdjust )
-{
- aAdjust.SetAdjust( rAdjust.GetAdjust() );
- aAdjust.SetOneWord( rAdjust.GetOneWord() );
- aAdjust.SetLastBlock( rAdjust.GetLastBlock() );
-}
-
-#define READ( aItem, ItemType, nVers ) \
- pNew = aItem.Create( rStream, nVers ); \
- aItem = *static_cast<ItemType*>(pNew); \
- delete pNew;
-
bool ScAutoFormatDataField::Load( SvStream& rStream, const ScAfVersions& rVersions, sal_uInt16 nVer )
{
- SfxPoolItem* pNew;
- SvxOrientationItem aOrientation( SvxCellOrientation::Standard, 0 );
-
- READ( aFont, SvxFontItem, rVersions.nFontVersion)
- READ( aHeight, SvxFontHeightItem, rVersions.nFontHeightVersion)
- READ( aWeight, SvxWeightItem, rVersions.nWeightVersion)
- READ( aPosture, SvxPostureItem, rVersions.nPostureVersion)
- // --- from 641 on: CJK and CTL font settings
- if( AUTOFORMAT_DATA_ID_641 <= nVer )
- {
- READ( aCJKFont, SvxFontItem, rVersions.nFontVersion)
- READ( aCJKHeight, SvxFontHeightItem, rVersions.nFontHeightVersion)
- READ( aCJKWeight, SvxWeightItem, rVersions.nWeightVersion)
- READ( aCJKPosture, SvxPostureItem, rVersions.nPostureVersion)
- READ( aCTLFont, SvxFontItem, rVersions.nFontVersion)
- READ( aCTLHeight, SvxFontHeightItem, rVersions.nFontHeightVersion)
- READ( aCTLWeight, SvxWeightItem, rVersions.nWeightVersion)
- READ( aCTLPosture, SvxPostureItem, rVersions.nPostureVersion)
- }
- READ( aUnderline, SvxUnderlineItem, rVersions.nUnderlineVersion)
- if ( nVer >= AUTOFORMAT_DATA_ID_300OVRLN )
- {
- READ( aOverline, SvxOverlineItem, rVersions.nOverlineVersion)
- }
- 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)
-
- // --- from 680/dr14 on: diagonal frame lines
- if( AUTOFORMAT_DATA_ID_680DR14 <= nVer )
- {
- READ( aTLBR, SvxLineItem, rVersions.nLineVersion)
- READ( aBLTR, SvxLineItem, rVersions.nLineVersion)
- }
-
- READ( aBackground, SvxBrushItem, rVersions.nBrushVersion)
-
- pNew = aAdjust.Create( rStream, rVersions.nAdjustVersion );
- SetAdjust( *static_cast<SvxAdjustItem*>(pNew) );
- delete pNew;
+ LoadBlockA( rStream, rVersions, nVer );
if (nVer >= AUTOFORMAT_DATA_ID_31005)
- rStream >> m_swFields;
-
- 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 );
- SetLinebreak( *static_cast<SfxBoolItem*>(pNew) );
- delete pNew;
-
- if ( nVer >= AUTOFORMAT_DATA_ID_504 )
{
- pNew = aRotateAngle.Create( rStream, rVersions.nInt32Version );
- SetRotateAngle( *static_cast<SfxInt32Item*>(pNew) );
- delete pNew;
- pNew = aRotateMode.Create( rStream, rVersions.nRotateModeVersion );
- SetRotateMode( *static_cast<SvxRotateModeItem*>(pNew) );
- delete pNew;
+ rStream >> m_swFields;
}
- if( 0 == rVersions.nNumFmtVersion )
+ LoadBlockB( rStream, rVersions, nVer );
+
+ if( 0 == rVersions.nNumFormatVersion )
{
// --- from 680/dr25 on: store strings as UTF-8
rtl_TextEncoding eCharSet = (nVer >= AUTOFORMAT_ID_680DR25) ? RTL_TEXTENCODING_UTF8 : rStream.GetStreamCharSet();
@@ -373,60 +212,22 @@ bool ScAutoFormatDataField::Load( SvStream& rStream, const ScAfVersions& rVersio
// adjust charset in font
rtl_TextEncoding eSysSet = osl_getThreadTextEncoding();
rtl_TextEncoding eSrcSet = rStream.GetStreamCharSet();
- if( eSrcSet != eSysSet && aFont.GetCharSet() == eSrcSet )
- aFont.SetCharSet(eSysSet);
-
- aStacked.SetValue( aOrientation.IsStacked() );
- aRotateAngle.SetValue( aOrientation.GetRotation( aRotateAngle.GetValue() ) );
+ if( eSrcSet != eSysSet && m_aFont->GetCharSet() == eSrcSet )
+ m_aFont->SetCharSet(eSysSet);
return (rStream.GetError() == ERRCODE_NONE);
}
bool ScAutoFormatDataField::Save( SvStream& rStream, sal_uInt16 fileVersion )
{
- SvxOrientationItem aOrientation( aRotateAngle.GetValue(), aStacked.GetValue(), 0 );
-
- aFont.Store ( rStream, aFont.GetVersion( fileVersion ) );
- aHeight.Store ( rStream, aHeight.GetVersion( fileVersion ) );
- aWeight.Store ( rStream, aWeight.GetVersion( fileVersion ) );
- aPosture.Store ( rStream, aPosture.GetVersion( fileVersion ) );
- // --- from 641 on: CJK and CTL font settings
- aCJKFont.Store ( rStream, aCJKFont.GetVersion( fileVersion ) );
- aCJKHeight.Store ( rStream, aCJKHeight.GetVersion( fileVersion ) );
- aCJKWeight.Store ( rStream, aCJKWeight.GetVersion( fileVersion ) );
- aCJKPosture.Store ( rStream, aCJKPosture.GetVersion( fileVersion ) );
- aCTLFont.Store ( rStream, aCTLFont.GetVersion( fileVersion ) );
- aCTLHeight.Store ( rStream, aCTLHeight.GetVersion( fileVersion ) );
- aCTLWeight.Store ( rStream, aCTLWeight.GetVersion( fileVersion ) );
- aCTLPosture.Store ( rStream, aCTLPosture.GetVersion( fileVersion ) );
-
- aUnderline.Store ( rStream, aUnderline.GetVersion( fileVersion ) );
- // --- from DEV300/overline2 on: overline support
- aOverline.Store ( rStream, aOverline.GetVersion( fileVersion ) );
- aCrossedOut.Store ( rStream, aCrossedOut.GetVersion( fileVersion ) );
- aContour.Store ( rStream, aContour.GetVersion( fileVersion ) );
- aShadowed.Store ( rStream, aShadowed.GetVersion( fileVersion ) );
- aColor.Store ( rStream, aColor.GetVersion( fileVersion ) );
- aBox.Store ( rStream, aBox.GetVersion( fileVersion ) );
-
- // --- from 680/dr14 on: diagonal frame lines
- aTLBR.Store ( rStream, aTLBR.GetVersion( fileVersion ) );
- aBLTR.Store ( rStream, aBLTR.GetVersion( fileVersion ) );
-
- aBackground.Store ( rStream, aBackground.GetVersion( fileVersion ) );
-
- aAdjust.Store ( rStream, aAdjust.GetVersion( fileVersion ) );
+ SaveBlockA( rStream, fileVersion );
+
if (fileVersion >= SOFFICE_FILEFORMAT_50)
+ {
WriteAutoFormatSwBlob( rStream, m_swFields );
+ }
- aHorJustify.Store ( rStream, aHorJustify.GetVersion( fileVersion ) );
- aVerJustify.Store ( rStream, aVerJustify.GetVersion( fileVersion ) );
- aOrientation.Store ( rStream, aOrientation.GetVersion( fileVersion ) );
- aMargin.Store ( rStream, aMargin.GetVersion( fileVersion ) );
- aLinebreak.Store ( rStream, aLinebreak.GetVersion( fileVersion ) );
- // rotation from SO5 on
- aRotateAngle.Store ( rStream, aRotateAngle.GetVersion( fileVersion ) );
- aRotateMode.Store ( rStream, aRotateMode.GetVersion( fileVersion ) );
+ SaveBlockB( rStream, fileVersion );
// --- from 680/dr25 on: store strings as UTF-8
aNumFormat.Save( rStream, RTL_TEXTENCODING_UTF8 );