diff options
-rw-r--r-- | filter/source/msfilter/svdfppt.cxx | 10 | ||||
-rw-r--r-- | include/filter/msfilter/svdfppt.hxx | 18 | ||||
-rw-r--r-- | sd/source/filter/ppt/pptin.cxx | 14 | ||||
-rw-r--r-- | sd/source/filter/ppt/pptin.hxx | 2 |
4 files changed, 27 insertions, 17 deletions
diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx index 6a80926833bc..0400f5bce454 100644 --- a/filter/source/msfilter/svdfppt.cxx +++ b/filter/source/msfilter/svdfppt.cxx @@ -576,7 +576,7 @@ PptFontEntityAtom* SdrEscherImport::GetFontEnityAtom( sal_uInt32 nNum ) const return pRetValue; } -SdrObject* SdrEscherImport::ReadObjText( PPTTextObj* /*pTextObj*/, SdrObject* pObj, SdPage* /*pPage*/) const +SdrObject* SdrEscherImport::ReadObjText( PPTTextObj* /*pTextObj*/, SdrObject* pObj, SdPageCapsule /*pPage*/) const { return pObj; } @@ -1211,7 +1211,7 @@ SdrObject* SdrEscherImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, voi { if ( rObjData.nSpFlags & SP_FBACKGROUND ) { - pRet->NbcSetSnapRect( Rectangle( Point(), ((SdrPage*)rData.pPage)->GetSize() ) ); // set size + pRet->NbcSetSnapRect( Rectangle( Point(), rData.pPage.page->GetSize() ) ); // set size } if ( rPersistEntry.pSolverContainer ) { @@ -2176,7 +2176,7 @@ SdrOutliner* SdrPowerPointImport::GetDrawOutliner( SdrTextObj* pSdrText ) const } -SdrObject* SdrPowerPointImport::ReadObjText( PPTTextObj* pTextObj, SdrObject* pSdrObj, SdPage* pPage ) const +SdrObject* SdrPowerPointImport::ReadObjText( PPTTextObj* pTextObj, SdrObject* pSdrObj, SdPageCapsule pPage ) const { SdrTextObj* pText = PTR_CAST( SdrTextObj, pSdrObj ); if ( pText ) @@ -2188,7 +2188,7 @@ SdrObject* SdrPowerPointImport::ReadObjText( PPTTextObj* pTextObj, SdrObject* pS } -SdrObject* SdrPowerPointImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pSdrText, SdPage* /*pPage*/, +SdrObject* SdrPowerPointImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pSdrText, SdPageCapsule /*pPage*/, SfxStyleSheet* pSheet, SfxStyleSheet** ppStyleSheetAry ) const { SdrTextObj* pText = pSdrText; @@ -2706,7 +2706,7 @@ void SdrPowerPointImport::ImportPage( SdrPage* pRet, const PptSlidePersistEntry* if ( SeekToAktPage( &aPageHd ) ) { rSlidePersist.pHeaderFooterEntry = new HeaderFooterEntry( pMasterPersist ); - ProcessData aProcessData( rSlidePersist, (SdPage*)pRet ); + ProcessData aProcessData( rSlidePersist, SdPageCapsule(pRet) ); while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < aPageHd.GetRecEndFilePos() ) ) { DffRecordHeader aHd; diff --git a/include/filter/msfilter/svdfppt.hxx b/include/filter/msfilter/svdfppt.hxx index 6bbe818ebe7b..c7a191223db2 100644 --- a/include/filter/msfilter/svdfppt.hxx +++ b/include/filter/msfilter/svdfppt.hxx @@ -404,6 +404,14 @@ public: friend SvStream& ReadPptExOleObjAtom( SvStream& rIn, PptExOleObjAtom& rAtom ); }; +// SdPage derives from SdrPage, is only known inside sd, and needs to be carried +// around as an opaque pointer here: +struct SdPageCapsule { + explicit SdPageCapsule(SdrPage * thePage): page(thePage) {} + + SdrPage * page; +}; + typedef ::std::vector< PPTOleEntry* > PPTOleEntryList; class PPTExtParaProv; class MSFILTER_DLLPUBLIC SdrEscherImport : public SvxMSDffManager @@ -449,7 +457,7 @@ public: virtual bool SeekToShape( SvStream& rSt, void* pClientData, sal_uInt32 nId ) const SAL_OVERRIDE; PptFontEntityAtom* GetFontEnityAtom( sal_uInt32 nNum ) const; void RecolorGraphic( SvStream& rSt, sal_uInt32 nRecLen, Graphic& rGraph ); - virtual SdrObject* ReadObjText( PPTTextObj* pTextObj, SdrObject* pObj, SdPage* pPage ) const; + virtual SdrObject* ReadObjText( PPTTextObj* pTextObj, SdrObject* pObj, SdPageCapsule pPage ) const; virtual SdrObject* ProcessObj( SvStream& rSt, DffObjData& rData, void* pData, Rectangle& rTextRect, SdrObject* pObj ) SAL_OVERRIDE; virtual void ProcessClientAnchor2( SvStream& rSt, DffRecordHeader& rHd, void* pData, DffObjData& rObj ) SAL_OVERRIDE; void ImportHeaderFooterContainer( DffRecordHeader& rHeader, HeaderFooterEntry& rEntry ); @@ -506,11 +514,11 @@ struct MSFILTER_DLLPUBLIC HeaderFooterEntry struct ProcessData { PptSlidePersistEntry& rPersistEntry; - SdPage* pPage; + SdPageCapsule pPage; ::std::vector< SdrObject* > aBackgroundColoredObjects; sal_uInt32* pTableRowProperties; - ProcessData( PptSlidePersistEntry& rP, SdPage* pP ) : + ProcessData( PptSlidePersistEntry& rP, SdPageCapsule pP ) : rPersistEntry ( rP ), pPage ( pP ), pTableRowProperties ( NULL ) {}; @@ -565,11 +573,11 @@ protected: virtual SdrObject* ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pText, - SdPage* pPage, + SdPageCapsule pPage, SfxStyleSheet*, SfxStyleSheet** ) const; - virtual SdrObject* ReadObjText( PPTTextObj* pTextObj, SdrObject* pObj, SdPage* pPage ) const SAL_OVERRIDE; + virtual SdrObject* ReadObjText( PPTTextObj* pTextObj, SdrObject* pObj, SdPageCapsule pPage ) const SAL_OVERRIDE; // #i32596# - new parameter <_nCalledByGroup>, which // indicates, if the OLE object is imported inside a group object. virtual SdrObject* ImportOLE( diff --git a/sd/source/filter/ppt/pptin.cxx b/sd/source/filter/ppt/pptin.cxx index 731fb65cc447..099a88fd59af 100644 --- a/sd/source/filter/ppt/pptin.cxx +++ b/sd/source/filter/ppt/pptin.cxx @@ -737,7 +737,7 @@ bool ImplSdPPTImport::Import() pMPage->NbcInsertObject( pObj ); bool bNewAnimationsUsed = false; - ProcessData aProcessData( (*pList)[ nAktPageNum ], (SdPage*)pMPage ); + ProcessData aProcessData( (*pList)[ nAktPageNum ], SdPageCapsule(pMPage) ); sal_uInt32 nFPosMerk = rStCtrl.Tell(); DffRecordHeader aPageHd; if ( SeekToAktPage( &aPageHd ) ) @@ -1394,7 +1394,7 @@ void ImplSdPPTImport::SetHeaderFooterPageSettings( SdPage* pPage, const PptSlide Rectangle aEmpty; bVisible = false; rStCtrl.Seek( nPosition ); - ProcessData aProcessData( rSlidePersist, (SdPage*)pPage ); + ProcessData aProcessData( rSlidePersist, SdPageCapsule(pPage) ); SdrObject* pObj = ImportObj( rStCtrl, (void*)&aProcessData, aEmpty, aEmpty ); if ( pObj ) pPage->NbcInsertObject( pObj, 0 ); @@ -2104,9 +2104,10 @@ void ImplSdPPTImport::FillSdAnimationInfo( SdAnimationInfo* pInfo, PptInteractiv } } -SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pObj, SdPage* pPage, +SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pObj, SdPageCapsule pPageCapsule, SfxStyleSheet* pSheet, SfxStyleSheet** ppStyleSheetAry ) const { + SdPage * pPage = static_cast<SdPage *>(pPageCapsule.page); SfxStyleSheet* pStyleSheetAry[ 9 ]; SdrTextObj* pText = pObj; SdrObject* pRet = pText; @@ -2227,7 +2228,7 @@ SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pObj } break; } - pText = static_cast<SdrTextObj*>(SdrPowerPointImport::ApplyTextObj( pTextObj, pText, pPage, pSheet, ppStyleSheetAry )); + pText = static_cast<SdrTextObj*>(SdrPowerPointImport::ApplyTextObj( pTextObj, pText, pPageCapsule, pSheet, ppStyleSheetAry )); if ( pPlaceHolder && pPlaceHolder->nPlaceholderId ) { if ( eAktPageKind == PPT_MASTERPAGE ) @@ -2517,8 +2518,9 @@ SdrObject* ImplSdPPTImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, voi if( pObj->ISA(SdrPageObj) && pData ) { const ProcessData* pProcessData=(const ProcessData*)pData; - if( pProcessData->pPage ) - pProcessData->pPage->InsertPresObj( pObj, PRESOBJ_PAGE ); + if( pProcessData->pPage.page ) + static_cast<SdPage *>(pProcessData->pPage.page)->InsertPresObj( + pObj, PRESOBJ_PAGE ); } bool bInhabitanceChecked = false; diff --git a/sd/source/filter/ppt/pptin.hxx b/sd/source/filter/ppt/pptin.hxx index 49c7e6479b96..d9c0382b19b3 100644 --- a/sd/source/filter/ppt/pptin.hxx +++ b/sd/source/filter/ppt/pptin.hxx @@ -66,7 +66,7 @@ class ImplSdPPTImport : public SdrPowerPointImport void FillSdAnimationInfo( SdAnimationInfo* pInfo, PptInteractiveInfoAtom* pIAtom, const OUString& aMacroName ); virtual SdrObject* ProcessObj( SvStream& rSt, DffObjData& rData, void* pData, Rectangle& rTextRect, SdrObject* pObj ) SAL_OVERRIDE; - virtual SdrObject* ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pText, SdPage* pPage, + virtual SdrObject* ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pText, SdPageCapsule pPage, SfxStyleSheet*, SfxStyleSheet** ) const SAL_OVERRIDE; public: |