summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--editeng/inc/editeng/numitem.hxx9
-rw-r--r--editeng/source/items/frmitems.cxx5
-rw-r--r--editeng/source/items/numitem.cxx103
3 files changed, 107 insertions, 10 deletions
diff --git a/editeng/inc/editeng/numitem.hxx b/editeng/inc/editeng/numitem.hxx
index 86f4aef59503..f17e9cf56026 100644
--- a/editeng/inc/editeng/numitem.hxx
+++ b/editeng/inc/editeng/numitem.hxx
@@ -157,10 +157,12 @@ public:
explicit SvxNumberFormat( sal_Int16 nNumberingType,
SvxNumPositionAndSpaceMode ePositionAndSpaceMode = LABEL_WIDTH_AND_POSITION );
SvxNumberFormat(const SvxNumberFormat& rFormat);
+ SvxNumberFormat( SvStream & rStream );
virtual ~SvxNumberFormat();
SvStream& Store(SvStream &rStream, FontToSubsFontConverter pConverter);
+ SvxNumberFormat* Create(SvStream& rStream );
SvxNumberFormat& operator=( const SvxNumberFormat& );
sal_Bool operator==( const SvxNumberFormat& ) const;
@@ -252,6 +254,7 @@ public:
eDefaultNumberFormatPositionAndSpaceMode
= SvxNumberFormat::LABEL_WIDTH_AND_POSITION );
SvxNumRule(const SvxNumRule& rCopy);
+ SvxNumRule(SvStream &rStream);
virtual ~SvxNumRule();
int operator==( const SvxNumRule& ) const;
@@ -260,7 +263,7 @@ public:
SvxNumRule& operator=( const SvxNumRule& );
SvStream& Store(SvStream &rStream);
-
+ SvxNumRule* Create(SvStream &rStream);
const SvxNumberFormat* Get(sal_uInt16 nLevel)const;
const SvxNumberFormat& GetLevel(sal_uInt16 nLevel)const;
void SetLevel(sal_uInt16 nLevel, const SvxNumberFormat& rFmt, sal_Bool bIsValid = sal_True);
@@ -294,9 +297,9 @@ public:
virtual ~SvxNumBulletItem();
virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
- virtual SfxPoolItem* Create(SvStream &, sal_uInt16) const;
+ virtual SfxPoolItem* Create(SvStream &rStream, sal_uInt16 nItemVersion) const;
sal_uInt16 GetVersion( sal_uInt16 nFileVersion ) const;
- virtual SvStream& Store(SvStream &, sal_uInt16 nItemVersion ) const;
+ virtual SvStream& Store(SvStream &rStream, sal_uInt16 nItemVersion ) const;
virtual int operator==( const SfxPoolItem& ) const;
SvxNumRule* GetNumRule() const {return pNumRule;}
diff --git a/editeng/source/items/frmitems.cxx b/editeng/source/items/frmitems.cxx
index 8741e69778de..b8ec78affb55 100644
--- a/editeng/source/items/frmitems.cxx
+++ b/editeng/source/items/frmitems.cxx
@@ -3475,7 +3475,7 @@ SvxBrushItem::SvxBrushItem( SvStream& rStream, sal_uInt16 nVersion,
if ( nVersion >= BRUSH_GRAPHIC_VERSION )
{
sal_uInt16 nDoLoad = 0;
- sal_Int8 nPos;
+ sal_uInt16 nPos;
rStream >> nDoLoad;
@@ -3892,7 +3892,8 @@ SvStream& SvxBrushItem::Store( SvStream& rStream , sal_uInt16 /*nItemVersion*/ )
// UNICODE: rStream << *pStrFilter;
rStream.WriteUniOrByteString(*pStrFilter, rStream.GetStreamCharSet());
}
- rStream << (sal_Int8)eGraphicPos;
+ // SvStream doesn't support sal_Int8
+ rStream << (sal_uInt16)eGraphicPos;
return rStream;
}
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) :