Kaydet (Commit) 2f3e1c77 authored tarafından Muthu Subramanian's avatar Muthu Subramanian

n#699334: Legacy diagram import (PPTX).

Minimalistic implementation.
Had to rework on some parts because of the rebasing.
üst 2e008602
......@@ -67,6 +67,7 @@ struct SvxMSDffShapeOrder;
class SvxMSDffManager;
class SfxItemSet;
class SdrObject;
class SdrTextObj;
struct DffObjData;
class MSFILTER_DLLPUBLIC DffPropertyReader : public DffPropSet
......@@ -503,7 +504,7 @@ protected :
// Fontwork objects use a new implementation of ReadObjText because the old
// one does not properly import multiple paragraphs.
void ReadObjText( const OUString& rText, SdrObject* pObj ) const;
static void ReadObjText( const OUString& rText, SdrObject* pObj );
// the following method needs to be overridden for the import of OLE objects
virtual sal_Bool GetOLEStorageName( long nOLEId,
......@@ -600,6 +601,7 @@ public:
void SetSvxMSDffSettings( sal_uInt32 nSettings ) { nSvxMSDffSettings = nSettings; };
static sal_Bool MakeContentStream( SotStorage * pStor, const GDIMetaFile & );
static void ReadObjText( SvStream& rStream, SdrObject* pObj );
static sal_Bool ConvertToOle2( SvStream& rStm,
sal_uInt32 nLen,
const GDIMetaFile*,
......
......@@ -3444,10 +3444,39 @@ Color SvxMSDffManager::MSO_CLR_ToColor( sal_uInt32 nColorCode, sal_uInt16 nConte
return aColor;
}
void SvxMSDffManager::ReadObjText( SvStream& rStream, SdrObject* pObj )
{
DffRecordHeader aRecHd;
rStream >> aRecHd;
if( aRecHd.nRecType == DFF_msofbtClientTextbox || aRecHd.nRecType == 0x1022 )
{
while( rStream.GetError() == 0 && rStream.Tell() < aRecHd.GetRecEndFilePos() )
{
DffRecordHeader aHd;
rStream >> aHd;
switch( aHd.nRecType )
{
case DFF_PST_TextBytesAtom:
case DFF_PST_TextCharsAtom:
{
bool bUniCode = ( aHd.nRecType == DFF_PST_TextCharsAtom );
sal_uInt32 nBytes = aHd.nRecLen;
String aStr = MSDFFReadZString( rStream, nBytes, bUniCode );
ReadObjText( aStr, pObj );
}
break;
default:
break;
}
aHd.SeekToEndOfRecord( rStream );
}
}
}
// sj: I just want to set a string for a text object that may contain multiple
// paragraphs. If I now take a look at the follwing code I get the impression that
// our outliner is too complicate to be used properly,
void SvxMSDffManager::ReadObjText( const OUString& rText, SdrObject* pObj ) const
void SvxMSDffManager::ReadObjText( const OUString& rText, SdrObject* pObj )
{
SdrTextObj* pText = PTR_CAST( SdrTextObj, pObj );
if ( pText )
......
......@@ -623,7 +623,6 @@ void SAL_CALL SdXShape::setPropertyValue( const ::rtl::OUString& aPropertyName,
SetMasterDepend( ::cppu::any2bool(aValue) );
break;
#ifdef FIXME_REMOVE_WHEN_RE_BASE_COMPLETE
case WID_LEGACYFRAGMENT:
{
uno::Reference< io::XInputStream > xInputStream;
......@@ -636,7 +635,7 @@ void SAL_CALL SdXShape::setPropertyValue( const ::rtl::OUString& aPropertyName,
}
}
break;
#endif
case WID_ANIMPATH:
{
uno::Reference< drawing::XShape > xShape( aValue, uno::UNO_QUERY );
......
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