Kaydet (Commit) 6fa2e38b authored tarafından Sun Ying's avatar Sun Ying

#119523# fix the indent and left margin attribute lost when save .ppt file and open .ppt file

Reported by: liupingtan 
Patch by: Ying Sun
Review by: Jian Yuan Li
üst a19ed1cb
...@@ -5165,9 +5165,15 @@ void PPTStyleTextPropReader::ReadParaProps( SvStream& rIn, SdrPowerPointImport& ...@@ -5165,9 +5165,15 @@ void PPTStyleTextPropReader::ReadParaProps( SvStream& rIn, SdrPowerPointImport&
if ( nMask & 0x4000 ) // pfSpaceAfter if ( nMask & 0x4000 ) // pfSpaceAfter
rIn >> aSet.mpArry[ PPT_ParaAttr_LowerDist ]; rIn >> aSet.mpArry[ PPT_ParaAttr_LowerDist ];
if ( nMask & 0x100 ) // pfLeftMargin if ( nMask & 0x100 ) // pfLeftMargin
rIn >> nDummy16; {
rIn >> aSet.mpArry[ PPT_ParaAttr_TextOfs ];
aSet.mnAttrSet |= 1 << PPT_ParaAttr_TextOfs;
}
if ( nMask & 0x400 ) // pfIndent if ( nMask & 0x400 ) // pfIndent
rIn >> nDummy16; {
rIn >> aSet.mpArry[ PPT_ParaAttr_BulletOfs ];
aSet.mnAttrSet |= 1 << PPT_ParaAttr_BulletOfs;
}
if ( nMask & 0x8000 ) // pfDefaultTabSize if ( nMask & 0x8000 ) // pfDefaultTabSize
rIn >> nDummy16; rIn >> nDummy16;
if ( nMask & 0x100000 ) // pfTabStops if ( nMask & 0x100000 ) // pfTabStops
...@@ -5199,9 +5205,10 @@ void PPTStyleTextPropReader::ReadParaProps( SvStream& rIn, SdrPowerPointImport& ...@@ -5199,9 +5205,10 @@ void PPTStyleTextPropReader::ReadParaProps( SvStream& rIn, SdrPowerPointImport&
else else
nCharCount = nStringLen; nCharCount = nStringLen;
if ( rRuler.GetTextOfs( aParaPropSet.pParaSet->mnDepth, aSet.mpArry[ PPT_ParaAttr_TextOfs ] ) ) //if the textofs attr has been read at above, need not to reset.
if ( ( !( aSet.mnAttrSet & 1 << PPT_ParaAttr_TextOfs ) ) && rRuler.GetTextOfs( aParaPropSet.pParaSet->mnDepth, aSet.mpArry[ PPT_ParaAttr_TextOfs ] ) )
aSet.mnAttrSet |= 1 << PPT_ParaAttr_TextOfs; aSet.mnAttrSet |= 1 << PPT_ParaAttr_TextOfs;
if ( rRuler.GetBulletOfs( aParaPropSet.pParaSet->mnDepth, aSet.mpArry[ PPT_ParaAttr_BulletOfs ] ) ) if ( ( !( aSet.mnAttrSet & 1 << PPT_ParaAttr_BulletOfs ) ) && rRuler.GetBulletOfs( aParaPropSet.pParaSet->mnDepth, aSet.mpArry[ PPT_ParaAttr_BulletOfs ] ) )
aSet.mnAttrSet |= 1 << PPT_ParaAttr_BulletOfs; aSet.mnAttrSet |= 1 << PPT_ParaAttr_BulletOfs;
if ( rRuler.GetDefaultTab( aParaPropSet.pParaSet->mnDepth, aSet.mpArry[ PPT_ParaAttr_DefaultTab ] ) ) if ( rRuler.GetDefaultTab( aParaPropSet.pParaSet->mnDepth, aSet.mpArry[ PPT_ParaAttr_DefaultTab ] ) )
aSet.mnAttrSet |= 1 << PPT_ParaAttr_DefaultTab; aSet.mnAttrSet |= 1 << PPT_ParaAttr_DefaultTab;
......
...@@ -1406,6 +1406,13 @@ void PPTWriter::ImplWriteParagraphs( SvStream& rOut, TextObj& rTextObj ) ...@@ -1406,6 +1406,13 @@ void PPTWriter::ImplWriteParagraphs( SvStream& rOut, TextObj& rTextObj )
nPropertyFlags |= 1; // turn off bullet explicit nPropertyFlags |= 1; // turn off bullet explicit
nBulletFlags = 0; nBulletFlags = 0;
} }
// Write nTextOfs and nBullets
if ( mpStyleSheet->IsHardAttribute( nInstance, nDepth, ParaAttr_TextOfs, pPara->nTextOfs ) )
nPropertyFlags |= 0x100;
if ( mpStyleSheet->IsHardAttribute( nInstance, nDepth, ParaAttr_BulletOfs, pPara->nBulletOfs ))
nPropertyFlags |= 0x400;
FontCollectionEntry aFontDescEntry( pPara->aFontDesc.Name, pPara->aFontDesc.Family, pPara->aFontDesc.Pitch, pPara->aFontDesc.CharSet ); FontCollectionEntry aFontDescEntry( pPara->aFontDesc.Name, pPara->aFontDesc.Family, pPara->aFontDesc.Pitch, pPara->aFontDesc.CharSet );
sal_uInt16 nFontId = (sal_uInt16)maFontCollection.GetId( aFontDescEntry ); sal_uInt16 nFontId = (sal_uInt16)maFontCollection.GetId( aFontDescEntry );
...@@ -1444,6 +1451,10 @@ void PPTWriter::ImplWriteParagraphs( SvStream& rOut, TextObj& rTextObj ) ...@@ -1444,6 +1451,10 @@ void PPTWriter::ImplWriteParagraphs( SvStream& rOut, TextObj& rTextObj )
rOut << (sal_uInt16)( pPara->mnLineSpacingTop ); rOut << (sal_uInt16)( pPara->mnLineSpacingTop );
if ( nPropertyFlags & 0x00004000 ) if ( nPropertyFlags & 0x00004000 )
rOut << (sal_uInt16)( pPara->mnLineSpacingBottom ); rOut << (sal_uInt16)( pPara->mnLineSpacingBottom );
if ( nPropertyFlags & 0x100 )
rOut << (sal_uInt16)(pPara->nTextOfs);
if ( nPropertyFlags & 0x400 )
rOut << (sal_uInt16)(pPara->nBulletOfs);
if ( nPropertyFlags & 0x000e0000 ) if ( nPropertyFlags & 0x000e0000 )
{ {
sal_uInt16 nAsianSettings = 0; sal_uInt16 nAsianSettings = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment