filter/inc/filter/msfilter/msdffimp.hxx | 4 +++- filter/source/msfilter/msdffimp.cxx | 31 ++++++++++++++++++++++++++++++- sd/source/ui/unoidl/unoobj.cxx | 3 +-- 3 files changed, 34 insertions(+), 4 deletions(-)
New commits: commit 2f3e1c77b2e2304f9a718d35f6b12daef261e2c1 Author: Muthu Subramanian <sumu...@suse.com> Date: Fri Mar 8 17:30:40 2013 +0530 n#699334: Legacy diagram import (PPTX). Minimalistic implementation. Had to rework on some parts because of the rebasing. diff --git a/filter/inc/filter/msfilter/msdffimp.hxx b/filter/inc/filter/msfilter/msdffimp.hxx index 8e625d4..6359277 100644 --- a/filter/inc/filter/msfilter/msdffimp.hxx +++ b/filter/inc/filter/msfilter/msdffimp.hxx @@ -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*, diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx index 41fe692..6ead1ee 100644 --- a/filter/source/msfilter/msdffimp.cxx +++ b/filter/source/msfilter/msdffimp.cxx @@ -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 ) diff --git a/sd/source/ui/unoidl/unoobj.cxx b/sd/source/ui/unoidl/unoobj.cxx index d46264d..856f64f 100644 --- a/sd/source/ui/unoidl/unoobj.cxx +++ b/sd/source/ui/unoidl/unoobj.cxx @@ -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 ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits