summaryrefslogtreecommitdiff
path: root/editeng/source/items
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2013-04-19 13:26:01 +0200
committerEike Rathke <erack@redhat.com>2013-04-19 14:56:15 +0200
commit721d0dfe70323d31e26394cfb32056a7ceec96c7 (patch)
tree6376b67cc1b1024c0de50c409efbe8ee034aafc5 /editeng/source/items
parent533f708cc872728a7b46705bde53b7499af30d85 (diff)
Revert "Revert "fix fdo#47018 Impress paste destroy bullet""
This reverts commit 674a40fe830748b63eafeaf07e0932e2e0a81ba6. And restores a95cce27295f9cd255fa72eaded00972e3efb69b with the exception that the sal_Int8 to sal_uInt16 change is omitted. This stream length change causes loading of autoformats to fail, which are stored in binary format, i.e. in user config's autotbl.fmt, loaded and stored in Calc's ScAutoFormat sc/source/core/tool/autoform.cxx and Writer's SwTableAutoFmtTbl sw/source/core/doc/tblafmt.cxx Change-Id: I59f5d3b1c7e1011a8db304855b2fcf28971e7cb1
Diffstat (limited to 'editeng/source/items')
-rw-r--r--editeng/source/items/numitem.cxx103
1 files changed, 98 insertions, 5 deletions
diff --git a/editeng/source/items/numitem.cxx b/editeng/source/items/numitem.cxx
index 7c3ec9c89f09..7ef42e01cfac 100644
--- a/editeng/source/items/numitem.cxx
+++ b/editeng/source/items/numitem.cxx
@@ -28,6 +28,7 @@
#include <editeng/editids.hrc>
#include <editeng/editrids.hrc>
#include <editeng/numdef.hxx>
+#include <editeng/eeitem.hxx>
#include <vcl/graph.hxx>
#include <vcl/window.hxx>
#include <vcl/svapp.hxx>
@@ -177,6 +178,59 @@ SvxNumberFormat::SvxNumberFormat(const SvxNumberFormat& rFormat) :
*this = rFormat;
}
+SvxNumberFormat::SvxNumberFormat( SvStream &rStream )
+{
+ sal_uInt16 nTmp16;
+ sal_Int32 nTmp32;
+ rStream >> nTmp16; // Version number
+
+ rStream >> nTmp16; SetNumberingType( nTmp16 );
+ rStream >> nTmp16; eNumAdjust = ( SvxAdjust )nTmp16;
+ rStream >> nTmp16; nInclUpperLevels = nTmp16;
+ rStream >> nStart;
+ rStream >> nTmp16; cBullet = (sal_Unicode)nTmp16;
+
+ rStream >> nFirstLineOffset;
+ rStream >> nAbsLSpace;
+ rStream >> nLSpace;
+
+ rStream >> nCharTextDistance;
+
+ sPrefix = rStream.ReadUniOrByteString( rStream.GetStreamCharSet() );
+ sSuffix = rStream.ReadUniOrByteString( rStream.GetStreamCharSet() );
+ sCharStyleName = rStream.ReadUniOrByteString( rStream.GetStreamCharSet() );
+
+ sal_uInt16 hasGraphicBrush = 0;
+ rStream >> hasGraphicBrush;
+ if ( hasGraphicBrush )
+ {
+ pGraphicBrush = new SvxBrushItem( SID_ATTR_BRUSH );
+ pGraphicBrush = (SvxBrushItem*)(pGraphicBrush->Create( rStream, BRUSH_GRAPHIC_VERSION ));
+ }
+ else pGraphicBrush = 0;
+ rStream >> nTmp16; eVertOrient = nTmp16;
+
+ sal_uInt16 hasBulletFont = 0;
+ rStream >> hasBulletFont;
+ if ( hasBulletFont )
+ {
+ pBulletFont = new Font( );
+ rStream >> *pBulletFont;
+ }
+ else pBulletFont = NULL;
+ rStream >> aGraphicSize;
+
+ rStream >> nBulletColor;
+ rStream >> nBulletRelSize;
+ rStream >> nTmp16; SetShowSymbol( nTmp16 );
+
+ rStream >> nTmp16; mePositionAndSpaceMode = ( SvxNumPositionAndSpaceMode )nTmp16;
+ rStream >> nTmp16; meLabelFollowedBy = ( LabelFollowedBy )nTmp16;
+ rStream >> nTmp32; mnListtabPos = nTmp32;
+ rStream >> nTmp32; mnFirstLineIndent = nTmp32;
+ rStream >> nTmp32; mnIndentAt = nTmp32;
+
+}
SvxNumberFormat::~SvxNumberFormat()
{
delete pGraphicBrush;
@@ -253,6 +307,11 @@ SvStream& SvxNumberFormat::Store(SvStream &rStream, FontToSubsFontConverter pC
return rStream;
}
+SvxNumberFormat* SvxNumberFormat::Create( SvStream &rStream )
+{
+ return new SvxNumberFormat( rStream );
+}
+
SvxNumberFormat& SvxNumberFormat::operator=( const SvxNumberFormat& rFormat )
{
if (& rFormat == this) { return *this; }
@@ -621,7 +680,41 @@ SvxNumRule::SvxNumRule(const SvxNumRule& rCopy)
}
}
-SvStream& SvxNumRule::Store(SvStream &rStream)
+SvxNumRule::SvxNumRule( SvStream &rStream )
+{
+ sal_uInt16 nTmp16;
+ rStream >> nTmp16; // NUM_ITEM_VERSION
+ rStream >> nLevelCount;
+
+ // first nFeatureFlags of old Versions
+ rStream >> nTmp16; nFeatureFlags = nTmp16;
+ rStream >> nTmp16; bContinuousNumbering = nTmp16;
+ rStream >> nTmp16; eNumberingType = ( SvxNumRuleType )nTmp16;
+
+ for (sal_uInt16 i = 0; i < SVX_MAX_NUM; i++)
+ {
+ rStream >> nTmp16;
+ sal_Bool hasNumberingFormat = nTmp16;
+ if ( hasNumberingFormat ){
+ aFmts[i] = new SvxNumberFormat( rStream );
+ aFmtsSet[i] = sal_True;
+ }
+ else
+ {
+ aFmts[i] = 0;
+ aFmtsSet[i] = sal_False;
+ }
+ }
+ //second nFeatureFlags for new versions
+ rStream >> nTmp16; nFeatureFlags = nTmp16;
+}
+
+SvxNumRule* SvxNumRule::Create( SvStream & rStream )
+{
+ return new SvxNumRule( rStream );
+}
+
+SvStream& SvxNumRule::Store( SvStream &rStream )
{
rStream<<(sal_uInt16)NUMITEM_VERSION_03;
rStream<<nLevelCount;
@@ -631,7 +724,7 @@ SvStream& SvxNumRule::Store(SvStream &rStream)
rStream<<(sal_uInt16)eNumberingType;
FontToSubsFontConverter pConverter = 0;
- sal_Bool bConvertBulletFont = rStream.GetVersion() <= SOFFICE_FILEFORMAT_50;
+ sal_Bool bConvertBulletFont = ( rStream.GetVersion() <= SOFFICE_FILEFORMAT_50 ) && ( rStream.GetVersion() );
for(sal_uInt16 i = 0; i < SVX_MAX_NUM; i++)
{
if(aFmts[i])
@@ -656,7 +749,6 @@ SvStream& SvxNumRule::Store(SvStream &rStream)
return rStream;
}
-
SvxNumRule::~SvxNumRule()
{
for(sal_uInt16 i = 0; i < SVX_MAX_NUM; i++)
@@ -843,9 +935,10 @@ SvxNumBulletItem::SvxNumBulletItem(SvxNumRule& rRule, sal_uInt16 _nWhich ) :
{
}
-SfxPoolItem* SvxNumBulletItem::Create(SvStream &s, sal_uInt16 n) const
+SfxPoolItem* SvxNumBulletItem::Create(SvStream &rStream, sal_uInt16 /*nItemVersion*/ ) const
{
- return SfxPoolItem::Create(s, n );
+ SvxNumRule aNumRule( rStream );
+ return new SvxNumBulletItem( aNumRule, EE_PARA_NUMBULLET );
}
SvxNumBulletItem::SvxNumBulletItem(const SvxNumBulletItem& rCopy) :