summaryrefslogtreecommitdiff
path: root/sd/source/filter/ppt/pptin.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/filter/ppt/pptin.cxx')
-rw-r--r--sd/source/filter/ppt/pptin.cxx2740
1 files changed, 0 insertions, 2740 deletions
diff --git a/sd/source/filter/ppt/pptin.cxx b/sd/source/filter/ppt/pptin.cxx
deleted file mode 100644
index 37017f4d7..000000000
--- a/sd/source/filter/ppt/pptin.cxx
+++ /dev/null
@@ -1,2740 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_sd.hxx"
-
-#include <editeng/numitem.hxx>
-
-#include <unotools/ucbstreamhelper.hxx>
-#include <vcl/wrkwin.hxx>
-#include <svl/urihelper.hxx>
-#include <svx/svxids.hrc>
-#include <filter/msfilter/svdfppt.hxx>
-#include <svx/svditer.hxx>
-#include <sfx2/docfile.hxx>
-#include <sfx2/app.hxx>
-#include <svx/svdograf.hxx>
-#include <svx/svdlayer.hxx>
-#include <vcl/msgbox.hxx>
-#include <svl/style.hxx>
-#include <svx/xflclit.hxx>
-#include <editeng/eeitem.hxx>
-#include <editeng/colritem.hxx>
-#include <svl/whiter.hxx>
-#include <svx/xgrad.hxx>
-#include <svx/xflgrit.hxx>
-#include <svx/xbtmpit.hxx>
-#include <svx/xlnclit.hxx>
-#include <editeng/adjitem.hxx>
-#include <editeng/editeng.hxx>
-#include <editeng/bulitem.hxx>
-#include <editeng/lrspitem.hxx>
-#include <editeng/lspcitem.hxx>
-#include <editeng/tstpitem.hxx>
-
-#include <sfx2/docinf.hxx>
-
-#include "glob.hrc"
-#include "pptin.hxx"
-#include "Outliner.hxx"
-#include "drawdoc.hxx"
-#include "sdpage.hxx"
-#include "sdresid.hxx"
-#include "pres.hxx"
-#include "sdresid.hxx"
-#include "stlpool.hxx"
-#include "anminfo.hxx"
-#include <svx/gallery.hxx>
-#include <tools/urlobj.hxx>
-#include <editeng/numitem.hxx>
-#include <svl/itempool.hxx>
-#include <editeng/fhgtitem.hxx>
-#include <svx/svdopage.hxx>
-#include <svx/svdomedia.hxx>
-#include <svx/svdogrp.hxx>
-#include "propread.hxx"
-#include <cusshow.hxx>
-#include <vcl/bmpacc.hxx>
-
-#include "../../ui/inc/DrawDocShell.hxx"
-#include "../../ui/inc/FrameView.hxx"
-#include "../../ui/inc/optsitem.hxx"
-
-#include <unotools/fltrcfg.hxx>
-#include <sfx2/progress.hxx>
-#include <unotools/localfilehelper.hxx>
-#include <editeng/editstat.hxx>
-#include <unotools/pathoptions.hxx>
-#include <sfx2/docfac.hxx>
-#define MAX_USER_MOVE 2
-
-#include "pptinanimations.hxx"
-#include "ppt97animations.hxx"
-
-#include <com/sun/star/document/XDocumentProperties.hpp>
-#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
-
-#include <comphelper/processfactory.hxx>
-#include <comphelper/componentcontext.hxx>
-
-using namespace ::com::sun::star;
-
-uno::Reference< uno::XComponentContext >
-lcl_getUnoCtx()
-{
- comphelper::ComponentContext aCtx( ::comphelper::getProcessServiceFactory() );
- return aCtx.getUNOContext();
-}
-
-SdPPTImport::SdPPTImport( SdDrawDocument* pDocument, SvStream& rDocStream, SvStorage& rStorage, SfxMedium& rMedium, MSFilterTracer* pTracer )
-{
-
- sal_uInt32 nImportFlags = 0;
-
-#ifdef DBG_UTIL
- PropRead* pSummaryInformation = new PropRead( rStorage, String( RTL_CONSTASCII_USTRINGPARAM( "\005SummaryInformation" ) ) );
- if ( pSummaryInformation->IsValid() )
- {
- pSummaryInformation->Read();
- sal_uInt8 aPropSetGUID[ 16 ] =
- {
- 0xe0, 0x85, 0x9f, 0xf2, 0xf9, 0x4f, 0x68, 0x10, 0xab, 0x91, 0x08, 0x00, 0x2b, 0x27, 0xb3, 0xd9
- };
- Section* pSection = (Section*)pSummaryInformation->GetSection( aPropSetGUID );
- if ( pSection )
- {
- PropItem aPropItem;
- if ( pSection->GetProperty( PID_COMMENTS, aPropItem ) )
- {
- String aComment;
- aPropItem.Read( aComment );
- if ( aComment.Search( String( RTL_CONSTASCII_USTRINGPARAM( "Applixware" ) ), 0 ) != STRING_NOTFOUND )
- {
- nImportFlags |= PPT_IMPORTFLAGS_NO_TEXT_ASSERT;
- }
- }
- }
- }
- delete pSummaryInformation;
-#endif
-
- PowerPointImportParam aParam( rDocStream, nImportFlags, pTracer );
- SvStream* pCurrentUserStream = rStorage.OpenSotStream( String( RTL_CONSTASCII_USTRINGPARAM( "Current User" ) ), STREAM_STD_READ );
- if( pCurrentUserStream )
- {
- *pCurrentUserStream >> aParam.aCurrentUserAtom;
- delete pCurrentUserStream;
- }
-
- if( pDocument )
- {
- // iterate over all styles
- SdStyleSheetPool* pStyleSheetPool = pDocument->GetSdStyleSheetPool();
-
- sal_uInt32 nStyles = pStyleSheetPool ? pStyleSheetPool->GetStyles().size() : 0;
- for (sal_uInt32 nStyle = 0; nStyle < nStyles; nStyle++)
- {
- SfxStyleSheet* pSheet = static_cast<SfxStyleSheet*>( pStyleSheetPool->GetStyles()[nStyle].get() );
- SfxItemSet& rSet = pSheet->GetItemSet();
-
- // if autokerning is set in style, override it, ppt has no autokerning
- if( rSet.GetItemState( EE_CHAR_PAIRKERNING, sal_False ) == SFX_ITEM_SET )
- rSet.ClearItem( EE_CHAR_PAIRKERNING );
- }
- }
-
- pFilter = new ImplSdPPTImport( pDocument, rStorage, rMedium, aParam );
-}
-
-sal_Bool SdPPTImport::Import()
-{
- return pFilter->Import();
-}
-
-SdPPTImport::~SdPPTImport()
-{
- delete pFilter;
-}
-
-ImplSdPPTImport::ImplSdPPTImport( SdDrawDocument* pDocument, SvStorage& rStorage_, SfxMedium& rMedium, PowerPointImportParam& rParam )
-: SdrPowerPointImport ( rParam, rMedium.GetBaseURL() )
-, mrMed ( rMedium )
-, mrStorage ( rStorage_ )
-, mbDocumentFound ( sal_False )
-, mnFilterOptions ( 0 )
-{
- mpDoc = pDocument;
- if ( bOk )
- {
- mbDocumentFound = SeekToDocument( &maDocHd ); // maDocHd = the latest DocumentHeader
- while ( SeekToRec( rStCtrl, PPT_PST_Document, nStreamLen, &maDocHd ) )
- mbDocumentFound = sal_True;
-
- sal_uInt32 nDggContainerOfs = 0;
-
- if ( mbDocumentFound )
- {
- sal_uLong nPosMerk = rStCtrl.Tell();
-
- pStData = rStorage_.OpenSotStream( String( RTL_CONSTASCII_USTRINGPARAM( "Pictures" ) ), STREAM_STD_READ );
-
- rStCtrl.Seek( maDocHd.GetRecBegFilePos() + 8 );
- sal_uLong nDocLen = maDocHd.GetRecEndFilePos();
- DffRecordHeader aPPDGHd;
- if ( SeekToRec( rStCtrl, PPT_PST_PPDrawingGroup, nDocLen, &aPPDGHd ) )
- {
- sal_uLong nPPDGLen = aPPDGHd.GetRecEndFilePos();
- if ( SeekToRec( rStCtrl, DFF_msofbtDggContainer, nPPDGLen, NULL ) )
- nDggContainerOfs = rStCtrl.Tell();
- }
- rStCtrl.Seek( nPosMerk );
- }
- sal_uInt32 nSvxMSDffOLEConvFlags2 = 0;
-
- SvtFilterOptions* pBasOpt = SvtFilterOptions::Get();
- if ( pBasOpt )
- {
- if ( pBasOpt->IsLoadPPointBasicCode() )
- mnFilterOptions |= 1;
- if ( pBasOpt->IsMathType2Math() )
- nSvxMSDffOLEConvFlags2 |= OLE_MATHTYPE_2_STARMATH;
- if ( pBasOpt->IsWinWord2Writer() )
- nSvxMSDffOLEConvFlags2 |= OLE_WINWORD_2_STARWRITER;
- if ( pBasOpt->IsExcel2Calc() )
- nSvxMSDffOLEConvFlags2 |= OLE_EXCEL_2_STARCALC;
- if ( pBasOpt->IsPowerPoint2Impress() )
- nSvxMSDffOLEConvFlags2 |= OLE_POWERPOINT_2_STARIMPRESS;
- }
-
- InitSvxMSDffManager( nDggContainerOfs, pStData, nSvxMSDffOLEConvFlags2 );
- SetSvxMSDffSettings( SVXMSDFF_SETTINGS_CROP_BITMAPS
- | SVXMSDFF_SETTINGS_IMPORT_PPT );
- SetModel( mpDoc, 576 );
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-//
-// Dtor
-//
-//////////////////////////////////////////////////////////////////////////
-
-ImplSdPPTImport::~ImplSdPPTImport()
-{
- delete pStData;
-}
-
-//////////////////////////////////////////////////////////////////////////
-//
-// Import
-//
-//////////////////////////////////////////////////////////////////////////
-
-sal_Bool ImplSdPPTImport::Import()
-{
- if ( !bOk )
- return sal_False;
-
- pSdrModel->setLock(true);
- pSdrModel->EnableUndo(false);
-
- SdrOutliner& rOutl = mpDoc->GetDrawOutliner();
- sal_uInt32 nControlWord = rOutl.GetEditEngine().GetControlWord();
- nControlWord |= EE_CNTRL_ULSPACESUMMATION;
- nControlWord &=~ EE_CNTRL_ULSPACEFIRSTPARA;
- ((EditEngine&)rOutl.GetEditEngine()).SetControlWord( nControlWord );
-
- SdrLayerAdmin& rAdmin = mpDoc->GetLayerAdmin();
- mnBackgroundLayerID = rAdmin.GetLayerID( String( SdResId( STR_LAYER_BCKGRND )), sal_False );
- mnBackgroundObjectsLayerID = rAdmin.GetLayerID( String( SdResId( STR_LAYER_BCKGRNDOBJ )), sal_False );
-
- ::sd::DrawDocShell* pDocShell = mpDoc->GetDocSh();
- if ( pDocShell )
- SeekOle( pDocShell, mnFilterOptions );
-
- // hyperlinks
- PropRead* pDInfoSec2 = new PropRead( mrStorage, String( RTL_CONSTASCII_USTRINGPARAM( "\005DocumentSummaryInformation" ) ) );
- if ( pDInfoSec2->IsValid() )
- {
- PropItem aPropItem;
-
- sal_uInt32 nType, nPropSize, nPropCount;
-
- pDInfoSec2->Read();
-
- sal_uInt8 aPropSetGUID[ 16 ] =
- {
- 0x02, 0xd5, 0xcd, 0xd5, 0x9c, 0x2e, 0x1b, 0x10, 0x93, 0x97, 0x08, 0x00, 0x2b, 0x2c, 0xf9, 0xae
- };
- Section* pSection = (Section*)pDInfoSec2->GetSection( aPropSetGUID );
- if ( pSection )
- {
- if ( pSection->GetProperty( PID_SLIDECOUNT, aPropItem ) )
- {
- aPropItem >> nType;
- if ( ( nType == VT_I4 ) || ( nType == VT_UI4 ) )
- {
- // examine PID_HEADINGPAIR to get the correct entry for PID_DOCPARTS
- sal_uInt32 nSlideCount, nVecCount;
- aPropItem >> nSlideCount;
- if ( nSlideCount && pSection->GetProperty( PID_HEADINGPAIR, aPropItem ) )
- {
- sal_uInt32 nSlideTitleIndex = 0, nSlideTitleCount = 0;
- sal_uInt32 i, nTemp, nEntryCount = 0;
-
- String aUString;
-
- aPropItem >> nType
- >> nVecCount;
-
- if ( ( nType == ( VT_VARIANT | VT_VECTOR ) ) && ( nVecCount ^ 1 ) )
- {
- nVecCount >>= 1;
-
- for ( i = 0; i < nVecCount; i++ )
- {
- if ( !aPropItem.Read( aUString, VT_EMPTY, sal_False ) )
- break;
- aPropItem >> nType;
- if ( ( nType != VT_I4 ) && ( nType != VT_UI4 ) )
- break;
- aPropItem >> nTemp;
- if ( aUString.EqualsAscii("Slide Titles") || aUString.EqualsAscii("Folientitel") )
- {
- nSlideTitleCount = nTemp;
- nSlideTitleIndex = nEntryCount;
- }
- nEntryCount += nTemp;
- }
- }
- if ( ( nSlideCount == nSlideTitleCount ) && pSection->GetProperty( PID_DOCPARTS, aPropItem ) )
- {
- aPropItem >> nType
- >> nVecCount;
-
- if ( ( nVecCount >= ( nSlideTitleIndex + nSlideTitleCount ) )
- && ( nType == ( VT_LPSTR | VT_VECTOR ) ) )
- {
- for ( i = 0; i != nSlideTitleIndex; i++ )
- {
- aPropItem >> nTemp;
- aPropItem.SeekRel( nTemp );
- }
- for ( i = 0; i < nSlideTitleCount; i++ )
- {
- if ( !aPropItem.Read( aUString, nType, sal_False ) )
- break;
-
- String aString( aUString );
- if ( aString.EqualsAscii( "No Slide Title" ))
- aString = String();
- else
- {
- std::vector<String>::const_iterator pIter =
- std::find(maSlideNameList.begin(),maSlideNameList.end(),aString);
-
- if (pIter != maSlideNameList.end())
- aString = String();
- }
- maSlideNameList.push_back( aString );
- }
- }
- }
- }
- }
- }
-
- sal_uInt8 aUserPropSetGUID[ 16 ] =
- {
- 0x05, 0xd5, 0xcd, 0xd5, 0x9c, 0x2e, 0x1b, 0x10, 0x93, 0x97, 0x08, 0x00, 0x2b, 0x2c, 0xf9, 0xae
- };
- pSection = (Section*)pDInfoSec2->GetSection( aUserPropSetGUID );
- if ( pSection )
- {
- Dictionary aDict;
- if ( pSection->GetDictionary( aDict ) )
- {
- Dictionary::const_iterator iter = aDict.find( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_PID_HLINKS" )));
-
- if ( iter != aDict.end() )
- {
- if ( pSection->GetProperty( iter->second, aPropItem ) )
- {
- aPropItem.Seek( STREAM_SEEK_TO_BEGIN );
- aPropItem >> nType;
- if ( nType == VT_BLOB )
- {
- aPropItem >> nPropSize
- >> nPropCount;
-
- if ( ! ( nPropCount % 6 ) )
- {
- sal_uInt32 i;
-
- nPropCount /= 6; // 6 propertys a hyperlink
-
- SdHyperlinkEntry* pHyperlink = 0;
- for ( i = 0; i < nPropCount; i++ )
- {
- pHyperlink = new SdHyperlinkEntry;
- pHyperlink->nIndex = 0;
- aPropItem >> nType;
- if ( nType != VT_I4 )
- break;
- aPropItem >> pHyperlink->nPrivate1
- >> nType;
- if ( nType != VT_I4 )
- break;
- aPropItem >> pHyperlink->nPrivate2
- >> nType;
- if ( nType != VT_I4 )
- break;
- aPropItem >> pHyperlink->nPrivate3
- >> nType;
- if ( nType != VT_I4 )
- break;
- aPropItem >> pHyperlink->nInfo;
- if ( !aPropItem.Read( pHyperlink->aTarget, VT_EMPTY ) )
- break;
-
- // Convert '\\' notation to 'smb://'
- INetURLObject aUrl( pHyperlink->aTarget, INET_PROT_FILE );
- pHyperlink->aTarget = aUrl.GetMainURL( INetURLObject::NO_DECODE );
-
- if ( !aPropItem.Read( pHyperlink->aSubAdress, VT_EMPTY ) )
- break;
- pHyperlink->nStartPos = pHyperlink->nEndPos = -1;
-
- if ( pHyperlink->aSubAdress.Len() ) // get the converted subadress
- {
- sal_uInt32 nPageNumber = 0;
- String aString( pHyperlink->aSubAdress );
- ByteString aStringAry[ 3 ];
- sal_uInt16 nTokenCount = aString.GetTokenCount( ',' );
- if ( nTokenCount > 3 )
- nTokenCount = 3;
- sal_uInt16 nToken;
- for( nToken = 0; nToken < nTokenCount; nToken++ )
- aStringAry[ nToken ] = ByteString( aString.GetToken( nToken, (sal_Unicode)',' ), RTL_TEXTENCODING_UTF8 );
-
- sal_Bool bSucceeded = sal_False;
-
- // first pass, searching for a SlideId
- for( nToken = 0; nToken < nTokenCount; nToken++ )
- {
- if ( aStringAry[ nToken ].IsNumericAscii() )
- {
- sal_Int32 nNumber = aStringAry[ nToken ].ToInt32();
- if ( nNumber & ~0xff )
- {
- PptSlidePersistList* pPageList = GetPageList( PPT_SLIDEPAGE );
- if ( pPageList )
- {
- sal_uInt16 nPage = pPageList->FindPage( nNumber );
- if ( nPage != PPTSLIDEPERSIST_ENTRY_NOTFOUND )
- {
- nPageNumber = nPage;
- bSucceeded = sal_True;
- break;
- }
- }
- }
- }
- }
- if ( !bSucceeded )
- { // second pass, searching for a SlideName
- for ( nToken = 0; nToken < nTokenCount; nToken++ )
- {
- String aToken( aString.GetToken( nToken, (sal_Unicode)',' ) );
- std::vector<String>::const_iterator pIter =
- std::find(maSlideNameList.begin(),maSlideNameList.end(),aToken);
-
- if (pIter != maSlideNameList.end())
- {
- nPageNumber = pIter - maSlideNameList.begin();
- bSucceeded = sal_True;
- }
- }
- }
- if ( !bSucceeded )
- { // third pass, searching for a slide number
- for ( nToken = 0; nToken < nTokenCount; nToken++ )
- {
- if ( aStringAry[ nToken ].IsNumericAscii() )
- {
- sal_Int32 nNumber = aStringAry[ nToken ].ToInt32();
- if ( ( nNumber & ~0xff ) == 0 )
- {
- nPageNumber = (sal_uInt32)nNumber - 1;
- bSucceeded = sal_True;
- break;
- }
- }
- }
- }
- if ( bSucceeded )
- {
- if ( nPageNumber < maSlideNameList.size() )
- pHyperlink->aConvSubString = maSlideNameList[ nPageNumber ];
- if ( !pHyperlink->aConvSubString.Len() )
- {
- pHyperlink->aConvSubString = String( SdResId( STR_PAGE ) );
- pHyperlink->aConvSubString.Append( sal_Unicode( ' ' ) );
- pHyperlink->aConvSubString.Append( mpDoc->CreatePageNumValue( (sal_uInt16)nPageNumber + 1 ) );
- }
- }
- }
- aHyperList.push_back( pHyperlink );
- }
- if ( i != nPropCount )
- delete pHyperlink;
- }
- }
- }
- }
- }
- }
- }
- }
- delete pDInfoSec2;
-
- if ( mbDocumentFound )
- {
- rStCtrl.Seek( maDocHd.GetRecBegFilePos() + 8 );
- // HyperList lesen / Indexe der einzelnen Eintraege setzen
- DffRecordHeader aHyperHd;
- if ( SeekToRec( rStCtrl, PPT_PST_ExObjList, maDocHd.GetRecEndFilePos(), &aHyperHd ) )
- {
- sal_uInt32 nExObjHyperListLen = aHyperHd.GetRecEndFilePos();
- for ( size_t i = 0, n = aHyperList.size(); i < n; ++i )
- {
- SdHyperlinkEntry* pPtr = aHyperList[ i ];
- DffRecordHeader aHyperE;
- if ( !SeekToRec( rStCtrl, PPT_PST_ExHyperlink, nExObjHyperListLen, &aHyperE ) )
- break;
- if ( !SeekToRec( rStCtrl, PPT_PST_ExHyperlinkAtom, nExObjHyperListLen, NULL, 0 ) )
- break;
- rStCtrl.SeekRel( 8 );
- rStCtrl >> pPtr->nIndex;
- aHyperE.SeekToEndOfRecord( rStCtrl );
- }
- }
- }
-
- Size aVisAreaSize;
- switch ( aUserEditAtom.eLastViewType )
- {
- case 5 : // notes master
- case 3 : // notes
- aVisAreaSize = aDocAtom.GetNotesPageSize();
- break;
- default :
- aVisAreaSize = aDocAtom.GetSlidesPageSize();
- }
- Scale( aVisAreaSize );
- pDocShell->SetVisArea( Rectangle( Point(), aVisAreaSize ) );
-
- ///////////////////////////////////////////////////////////
- // create master pages:
- ///////////////////////////////////////////////////////////
- SfxProgress* pStbMgr = new SfxProgress( pDocShell, String( SdResId( STR_POWERPOINT_IMPORT ) ),
- pMasterPages->Count() + pSlidePages->Count() + pNotePages->Count() );
-
- sal_uInt32 nImportedPages = 0;
- {
- sal_uInt16 nMasterAnz = GetPageCount( PPT_MASTERPAGE );
-
- for ( sal_uInt16 nMasterNum = 0; nMasterNum < nMasterAnz; nMasterNum++ )
- {
- SetPageNum( nMasterNum, PPT_MASTERPAGE );
- SdPage* pPage = (SdPage*)MakeBlancPage( sal_True );
- if ( pPage )
- {
- sal_Bool bNotesMaster = (*GetPageList( eAktPageKind ) )[ nAktPageNum ]->bNotesMaster;
- sal_Bool bStarDrawFiller = (*GetPageList( eAktPageKind ) )[ nAktPageNum ]->bStarDrawFiller;
-
- PageKind ePgKind = ( bNotesMaster ) ? PK_NOTES : PK_STANDARD;
- pPage->SetPageKind( ePgKind );
- pSdrModel->InsertMasterPage( (SdrPage*)pPage );
- if ( bNotesMaster && bStarDrawFiller )
- ((SdPage*)pPage)->SetAutoLayout( AUTOLAYOUT_NOTES, sal_True );
- if ( nMasterNum )
- {
- boost::optional< sal_Int16 > oStartNumbering;
- SfxStyleSheet* pSheet;
- if ( nMasterNum == 1 )
- {
- ///////////////////
- // standardsheet //
- ///////////////////
- pSheet = (SfxStyleSheet*)mpDoc->GetStyleSheetPool()->Find( String(SdResId( STR_STANDARD_STYLESHEET_NAME )), SD_STYLE_FAMILY_GRAPHICS );
- if ( pSheet )
- {
- SfxItemSet& rItemSet = pSheet->GetItemSet();
- PPTParagraphObj aParagraph( *pPPTStyleSheet, TSS_TYPE_TEXT_IN_SHAPE, 0 );
- PPTPortionObj aPortion( *pPPTStyleSheet, TSS_TYPE_TEXT_IN_SHAPE, 0 );
- aParagraph.AppendPortion( aPortion );
- aParagraph.ApplyTo( rItemSet, oStartNumbering, (SdrPowerPointImport&)*this, 0xffffffff, NULL );
- aPortion.ApplyTo( rItemSet, (SdrPowerPointImport&)*this, 0xffffffff );
- }
- }
-
- // PSEUDO
- pSheet = (SfxStyleSheet*)mpDoc->GetStyleSheetPool()->Find( String(SdResId( STR_PSEUDOSHEET_BACKGROUNDOBJECTS )), SD_STYLE_FAMILY_PSEUDO );
- if ( pSheet )
- {
- SfxItemSet& rItemSet = pSheet->GetItemSet();
- PPTParagraphObj aParagraph( *pPPTStyleSheet, TSS_TYPE_TEXT_IN_SHAPE, 0 );
- PPTPortionObj aPortion( *pPPTStyleSheet, TSS_TYPE_TEXT_IN_SHAPE, 0 );
- aParagraph.AppendPortion( aPortion );
- aParagraph.ApplyTo( rItemSet, oStartNumbering, (SdrPowerPointImport&)*this, 0xffffffff, NULL );
- aPortion.ApplyTo( rItemSet, (SdrPowerPointImport&)*this, 0xffffffff );
- }
-
- ///////////////////////////////////////////////////////////
- // create layoutstylesheets, set layoutname and stylesheet
- // (nur auf Standard- und Notizseiten)
- ///////////////////////////////////////////////////////////
- String aLayoutName( SdResId( STR_LAYOUT_DEFAULT_NAME ) );
- if ( nMasterNum > 2 )
- {
- if ( ePgKind == PK_STANDARD )
- { // Standardseite: Neues Praesentationslayout erzeugen
- aLayoutName = String( SdResId( STR_LAYOUT_DEFAULT_TITLE_NAME ) );
- aLayoutName += String::CreateFromInt32( (sal_Int32)( ( nMasterNum + 1 ) / 2 - 1 ) );
- ( (SdStyleSheetPool*)mpDoc->GetStyleSheetPool() )->CreateLayoutStyleSheets( aLayoutName );
- }
- else // Notizseite: Praesentationslayout von der Standardseite verwenden
- aLayoutName = ( (SdPage*)mpDoc->GetMasterPage( nMasterNum - 1 ) )->GetName();
- }
- pPage->SetName( aLayoutName );
- aLayoutName.AppendAscii( RTL_CONSTASCII_STRINGPARAM( SD_LT_SEPARATOR ));
- aLayoutName += String( SdResId( STR_LAYOUT_OUTLINE ) );
- pPage->SetLayoutName( aLayoutName );
-
- /////////////////////
- // set stylesheets //
- /////////////////////
- if ( pPage->GetPageKind() == PK_STANDARD )
- {
- sal_uInt32 nTitleInstance = TSS_TYPE_PAGETITLE;
- sal_uInt32 nOutlinerInstance = TSS_TYPE_BODY;
-
- /////////////////////
- // titelstylesheet //
- /////////////////////
- pSheet = pPage->GetStyleSheetForPresObj( PRESOBJ_TITLE );
- if ( pSheet )
- {
- SfxItemSet& rItemSet = pSheet->GetItemSet();
- PPTParagraphObj aParagraph( *pPPTStyleSheet, nTitleInstance, 0 );
- PPTPortionObj aPortion( *pPPTStyleSheet, nTitleInstance, 0 );
- aParagraph.AppendPortion( aPortion );
- aParagraph.ApplyTo( rItemSet, oStartNumbering, (SdrPowerPointImport&)*this, 0xffffffff, NULL );
- aPortion.ApplyTo( rItemSet, (SdrPowerPointImport&)*this, 0xffffffff );
- }
- ////////////////////////
- // outlinerstylesheet //
- ////////////////////////
- sal_uInt16 nLevel;
- PPTParagraphObj* pParagraphs[ 9 ];
- PPTParagraphObj* pPreviousPara = NULL;
-
- for ( nLevel = 0; nLevel < 9; nLevel++ )
- {
- String aName( pPage->GetLayoutName() );
- aName.Append( (sal_Unicode)( ' ' ) );
- aName.Append( String::CreateFromInt32( nLevel + 1 ) );
- SfxStyleSheet* pOutlineSheet = (SfxStyleSheet*)mpDoc->GetStyleSheetPool()->Find( aName, SD_STYLE_FAMILY_MASTERPAGE );
- DBG_ASSERT( pOutlineSheet, "Vorlage fuer Gliederungsobjekt nicht gefunden" );
- if ( pOutlineSheet )
- {
- pParagraphs[ nLevel ] = new PPTParagraphObj( *pPPTStyleSheet, nOutlinerInstance, nLevel );
- SfxItemSet& rItemSet = pOutlineSheet->GetItemSet();
- PPTPortionObj aPortion( *pPPTStyleSheet, nOutlinerInstance, nLevel );
- pParagraphs[ nLevel ]->AppendPortion( aPortion );
- pParagraphs[ nLevel ]->ApplyTo( rItemSet, oStartNumbering, (SdrPowerPointImport&)*this, 0xffffffff, pPreviousPara );
- aPortion.ApplyTo( rItemSet, (SdrPowerPointImport&)*this, 0xffffffff );
- pPreviousPara = pParagraphs[ nLevel ];
- }
- else
- pParagraphs[ nLevel ] = NULL;
- }
- for ( nLevel = 0; nLevel < 9; delete pParagraphs[ nLevel++ ] ) ;
- /////////////////////////
- // subtitle stylesheet //
- /////////////////////////
- pSheet = pPage->GetStyleSheetForPresObj( PRESOBJ_TEXT );
- if ( pSheet )
- {
- SfxItemSet& rItemSet = pSheet->GetItemSet();
- PPTParagraphObj aParagraph( *pPPTStyleSheet, TSS_TYPE_SUBTITLE, 0 );
- PPTPortionObj aPortion( *pPPTStyleSheet, TSS_TYPE_SUBTITLE, 0 );
- aParagraph.AppendPortion( aPortion );
- aParagraph.ApplyTo( rItemSet, oStartNumbering, (SdrPowerPointImport&)*this, 0xffffffff, NULL );
- aPortion.ApplyTo( rItemSet, (SdrPowerPointImport&)*this, 0xffffffff );
- }
- }
- else if ( ePgKind == PK_NOTES )
- {
- pSheet = pPage->GetStyleSheetForPresObj( PRESOBJ_NOTES );
- if ( pSheet )
- {
- SfxItemSet& rItemSet = pSheet->GetItemSet();
- PPTParagraphObj aParagraph( *pPPTStyleSheet, TSS_TYPE_NOTES, 0 );
- PPTPortionObj aPortion( *pPPTStyleSheet, TSS_TYPE_NOTES, 0 );
- aParagraph.AppendPortion( aPortion );
- aParagraph.ApplyTo( rItemSet, oStartNumbering, (SdrPowerPointImport&)*this, 0xffffffff, NULL );
- aPortion.ApplyTo( rItemSet, (SdrPowerPointImport&)*this, 0xffffffff );
- }
- }
- }
- }
- }
- }
- SdPage* pMPage;
- sal_uInt16 i;
- for ( i = 1; i < mpDoc->GetMasterPageCount() && ( (pMPage = (SdPage*)mpDoc->GetMasterPage( i )) != 0 ); i++ )
- {
- SetPageNum( i, PPT_MASTERPAGE );
- /////////////////////////////////////////////
- // importing master page objects //
- /////////////////////////////////////////////
- PptSlidePersistList* pList = GetPageList( eAktPageKind );
- PptSlidePersistEntry* pPersist = ( pList && ( nAktPageNum < pList->Count() ) )
- ? (*pList)[ nAktPageNum ] : NULL;
- if ( pPersist )
- {
- if ( pPersist->bStarDrawFiller && pPersist->bNotesMaster && ( nAktPageNum > 2 ) && ( ( nAktPageNum & 1 ) == 0 ) )
- {
- pSdrModel->DeleteMasterPage( nAktPageNum );
- SdrPage* pNotesClone = ((SdPage*)pSdrModel->GetMasterPage( 2 ))->Clone();
- pSdrModel->InsertMasterPage( pNotesClone, nAktPageNum );
- if ( pNotesClone )
- {
- String aLayoutName( ((SdPage*)pSdrModel->GetMasterPage( nAktPageNum - 1 ))->GetLayoutName() );
- ((SdPage*)pNotesClone)->SetPresentationLayout( aLayoutName, sal_False, sal_False, sal_False );
- ((SdPage*)pNotesClone)->SetLayoutName( aLayoutName );
- }
- }
- else if ( ( pPersist->bStarDrawFiller == sal_False ) )
- {
- PptSlidePersistEntry* pE = pPersist;
- while( ( pE->aSlideAtom.nFlags & 4 ) && pE->aSlideAtom.nMasterId )
- {
- sal_uInt16 nNextMaster = pMasterPages->FindPage( pE->aSlideAtom.nMasterId );
- if ( nNextMaster == PPTSLIDEPERSIST_ENTRY_NOTFOUND )
- break;
- else
- pE = (*pList)[ nNextMaster ];
- }
- SdrObject* pObj = ImportPageBackgroundObject( *pMPage, pE->nBackgroundOffset, sal_True ); // import background
- if ( pObj )
- pMPage->NbcInsertObject( pObj );
-
- sal_Bool bNewAnimationsUsed = sal_False;
- ProcessData aProcessData( *(*pList)[ nAktPageNum ], (SdPage*)pMPage );
- sal_uInt32 nFPosMerk = rStCtrl.Tell();
- DffRecordHeader aPageHd;
- if ( SeekToAktPage( &aPageHd ) )
- {
- if ( mbTracing )
- mpTracer->AddAttribute( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "MasterPage" )), rtl::OUString::valueOf( (sal_Int32) (nAktPageNum + 1) ) );
-
- while( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < aPageHd.GetRecEndFilePos() ) )
- {
- DffRecordHeader aHd;
- rStCtrl >> aHd;
- switch( aHd.nRecType )
- {
- case PPT_PST_PPDrawing :
- {
- aHd.SeekToBegOfRecord( rStCtrl );
- DffRecordHeader aPPDrawHd;
- if ( SeekToRec( rStCtrl, PPT_PST_PPDrawing, aHd.GetRecEndFilePos(), &aPPDrawHd ) )
- {
- sal_uInt32 nPPDrawEnd = aPPDrawHd.GetRecEndFilePos();
- DffRecordHeader aEscherF002Hd;
- if ( SeekToRec( rStCtrl, DFF_msofbtDgContainer, nPPDrawEnd, &aEscherF002Hd ) )
- {
- sal_uInt32 nEscherF002End = aEscherF002Hd.GetRecEndFilePos();
- DffRecordHeader aEscherObjListHd;
- if ( SeekToRec( rStCtrl, DFF_msofbtSpgrContainer, nEscherF002End, &aEscherObjListHd ) )
- {
- sal_uInt32 nObjCount = 0;
- while( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < aEscherObjListHd.GetRecEndFilePos() ) )
- {
- DffRecordHeader aHd2;
- rStCtrl >> aHd2;
- if ( ( aHd2.nRecType == DFF_msofbtSpContainer ) || ( aHd2.nRecType == DFF_msofbtSpgrContainer ) )
- {
- if ( nObjCount++ ) // skipping the first object
- {
- Rectangle aEmpty;
- aHd2.SeekToBegOfRecord( rStCtrl );
- SdrObject* pImpObj = ImportObj( rStCtrl, (void*)&aProcessData, aEmpty, aEmpty );
- if ( pImpObj )
- {
- pImpObj->SetLayer( mnBackgroundObjectsLayerID );
- pMPage->NbcInsertObject( pImpObj );
- }
- }
- }
- aHd2.SeekToEndOfRecord( rStCtrl );
- }
- }
- }
- }
- }
- break;
-
- case PPT_PST_ProgTags :
- {
- DffRecordHeader aProgTagHd;
- if ( SeekToContentOfProgTag( 10, rStCtrl, aPageHd, aProgTagHd ) )
- {
- while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < aProgTagHd.GetRecEndFilePos() ) )
- {
- DffRecordHeader aProgTagContentHd;
- rStCtrl >> aProgTagContentHd;
- switch( aProgTagContentHd.nRecType )
- {
- case DFF_msofbtAnimGroup :
- {
- ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > xPage( pMPage->getUnoPage(), ::com::sun::star::uno::UNO_QUERY );
- ppt::AnimationImporter aImporter( this, rStCtrl );
- aImporter.import( xPage, aProgTagContentHd );
- bNewAnimationsUsed = sal_True;
- }
- break;
- }
- aProgTagContentHd.SeekToEndOfRecord( rStCtrl );
- }
- }
- }
- break;
- }
- aHd.SeekToEndOfRecord( rStCtrl );
- }
- if ( mbTracing )
- mpTracer->RemoveAttribute( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "MasterPage" )) );
- }
- rStCtrl.Seek( nFPosMerk );
- ImportPageEffect( (SdPage*)pMPage, bNewAnimationsUsed );
-
- ///////////////////////
- // background object //
- ///////////////////////
- pObj = pMPage->GetObj( 0 );
- if ( pObj && pObj->GetObjIdentifier() == OBJ_RECT )
- {
- if ( pMPage->GetPageKind() == PK_STANDARD )
- {
- // transform data from imported background object to new form
- // and delete the object. It was used as container to transport
- // the attributes of the MasterPage background fill
- SfxStyleSheet* pSheet = pMPage->GetStyleSheetForMasterPageBackground();
-
- if(pSheet)
- {
- // if we have a StyleSheet (for Masterpages), set attributes there and use it
- pSheet->GetItemSet().ClearItem();
- pSheet->GetItemSet().Put(pObj->GetMergedItemSet());
- pMPage->getSdrPageProperties().ClearItem();
- pMPage->getSdrPageProperties().SetStyleSheet(pSheet);
- }
- else
- {
- // without StyleSheet, set attributes directly. This
- // should not be done at all and is an error (will be asserted by SdrPage)
- pMPage->getSdrPageProperties().ClearItem();
- pMPage->getSdrPageProperties().PutItemSet(pObj->GetMergedItemSet());
- }
-
- pMPage->RemoveObject(pObj->GetOrdNum());
- SdrObject::Free(pObj);
- }
- }
- }
- }
- if( pStbMgr )
- pStbMgr->SetState( nImportedPages++ );
- }
- ////////////////////////////////////
- // importing slide pages //
- ////////////////////////////////////
- {
- sal_uInt32 nFPosMerk = rStCtrl.Tell();
- PptPageKind ePageKind = eAktPageKind;
- sal_uInt16 nPageNum = nAktPageNum;
-
- SdPage* pHandoutPage = (SdPage*)MakeBlancPage( sal_False );
- pHandoutPage->SetPageKind( PK_HANDOUT );
- pSdrModel->InsertPage( pHandoutPage );
-
- sal_uInt16 nPageAnz = GetPageCount( PPT_SLIDEPAGE );
- if ( nPageAnz )
- {
- for ( sal_uInt16 nPage = 0; nPage < nPageAnz; nPage++ )
- {
- sal_Bool bNewAnimationsUsed = sal_False;
-
- mePresChange = PRESCHANGE_SEMIAUTO;
- SetPageNum( nPage, PPT_SLIDEPAGE );
- SdPage* pPage = (SdPage*)MakeBlancPage( sal_False );
- PptSlidePersistEntry* pMasterPersist = NULL;
- if ( HasMasterPage( nPage, PPT_SLIDEPAGE ) ) // try to get the LayoutName from the masterpage
- {
- sal_uInt16 nMasterNum = GetMasterPageIndex( nAktPageNum, eAktPageKind );
- pPage->TRG_SetMasterPage(*pSdrModel->GetMasterPage(nMasterNum));
- PptSlidePersistList* pPageList = GetPageList( PPT_MASTERPAGE );
- if ( pPageList && nMasterNum < pPageList->Count() )
- pMasterPersist = (*pPageList)[ nMasterNum ];
- pPage->SetLayoutName(((SdPage&)pPage->TRG_GetMasterPage()).GetLayoutName());
- }
- pPage->SetPageKind( PK_STANDARD );
- pSdrModel->InsertPage( pPage ); // SJ: #i29625# because of form controls, the
- ImportPage( pPage, pMasterPersist ); // page must be inserted before importing
- SetHeaderFooterPageSettings( pPage, pMasterPersist );
- // CWS preseng01: pPage->SetPageKind( PK_STANDARD );
-
- DffRecordHeader aPageHd;
- if ( SeekToAktPage( &aPageHd ) )
- {
- aPageHd.SeekToContent( rStCtrl );
- while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < aPageHd.GetRecEndFilePos() ) )
- {
- DffRecordHeader aHd;
- rStCtrl >> aHd;
- switch ( aHd.nRecType )
- {
- case PPT_PST_ProgTags :
- {
- DffRecordHeader aProgTagHd;
- if ( SeekToContentOfProgTag( 10, rStCtrl, aPageHd, aProgTagHd ) )
- {
- while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < aProgTagHd.GetRecEndFilePos() ) )
- {
- DffRecordHeader aProgTagContentHd;
- rStCtrl >> aProgTagContentHd;
- switch( aProgTagContentHd.nRecType )
- {
- case DFF_msofbtAnimGroup :
- {
- ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > xPage( pPage->getUnoPage(), ::com::sun::star::uno::UNO_QUERY );
- ppt::AnimationImporter aImporter( this, rStCtrl );
- aImporter.import( xPage, aProgTagContentHd );
- bNewAnimationsUsed = sal_True;
- }
- break;
-
- case PPT_PST_NewlyAddedAtomByXP11008 : // ???
- break;
-
- case PPT_PST_NewlyAddedAtomByXP12011 : // ??? don't know, this atom is always 8 bytes big
- break; // and is appearing in nearly every l10 progtag
- }
- aProgTagContentHd.SeekToEndOfRecord( rStCtrl );
- }
- }
- }
- break;
-
- case PPT_PST_HeadersFooters :
- case PPT_PST_PPDrawing :
- default:
- break;
- }
-
- aHd.SeekToEndOfRecord( rStCtrl );
- }
- ImportPageEffect( (SdPage*)pPage, bNewAnimationsUsed );
- }
-
- // creating the corresponding note page
- eAktPageKind = PPT_NOTEPAGE;
- SdPage* pNotesPage = (SdPage*)MakeBlancPage( sal_False );
- sal_uInt16 nNotesMasterNum = GetMasterPageIndex( nPage, PPT_SLIDEPAGE ) + 1;
- sal_uInt32 nNotesPageId = GetNotesPageId( nPage );
- if ( nNotesPageId )
- {
- nImportedPages++;
- sal_uInt16 nNotesPageIndex = pNotePages->FindPage( nNotesPageId );
- if ( nNotesPageIndex == PPTSLIDEPERSIST_ENTRY_NOTFOUND )
- nNotesPageIndex = 0;
- SetPageNum( nNotesPageIndex, PPT_NOTEPAGE );
- PptSlidePersistEntry* pMasterPersist2 = NULL;
- if ( HasMasterPage( nNotesPageIndex, PPT_NOTEPAGE ) ) // try to get the LayoutName from the masterpage
- {
- pNotesPage->TRG_SetMasterPage(*pSdrModel->GetMasterPage(nNotesMasterNum));
- PptSlidePersistList* pPageList = GetPageList( PPT_MASTERPAGE );
- if ( pPageList && nNotesMasterNum < pPageList->Count() )
- pMasterPersist2 = (*pPageList)[ nNotesMasterNum ];
- pNotesPage->SetLayoutName( ((SdPage&)pNotesPage->TRG_GetMasterPage()).GetLayoutName() );
- }
- pNotesPage->SetPageKind( PK_NOTES );
- pNotesPage->TRG_SetMasterPage(*pSdrModel->GetMasterPage(nNotesMasterNum));
- pSdrModel->InsertPage( pNotesPage ); // SJ: #i29625# because of form controls, the
- ImportPage( pNotesPage, pMasterPersist2 ); // page must be inserted before importing
- SetHeaderFooterPageSettings( pNotesPage, pMasterPersist2 );
- pNotesPage->SetAutoLayout( AUTOLAYOUT_NOTES, sal_False );
- }
- else
- {
- pNotesPage->SetPageKind( PK_NOTES );
- pNotesPage->TRG_SetMasterPage(*pSdrModel->GetMasterPage(nNotesMasterNum));
- pNotesPage->SetAutoLayout( AUTOLAYOUT_NOTES, sal_True );
- pSdrModel->InsertPage( pNotesPage );
- SdrObject* pPageObj = pNotesPage->GetPresObj( PRESOBJ_PAGE, 1 );
- if ( pPageObj )
- ((SdrPageObj*)pPageObj)->SetReferencedPage(pSdrModel->GetPage(( nPage << 1 ) + 1));
- }
-
- if( pStbMgr )
- pStbMgr->SetState( nImportedPages++ );
- }
- //////////////
- }
- else
- {
- // Das kann bei Dokumentvorlagen vorkommen
- eAktPageKind = PPT_SLIDEPAGE;
- SdrPage* pPage = MakeBlancPage( sal_False );
- pSdrModel->InsertPage( pPage );
-
- // #i37397#, trying to set the title master for the first page
- sal_uInt16 nMaster, nMasterCount = pSdrModel->GetMasterPageCount();
- SdPage* pFoundMaster = NULL;
- for ( nMaster = 1; nMaster < nMasterCount; nMaster++ )
- {
- SdPage* pMaster = static_cast<SdPage*>( pSdrModel->GetMasterPage( nMaster ) );
- if ( pMaster->GetPageKind() == PK_STANDARD )
- {
- SetPageNum( nMaster, PPT_MASTERPAGE );
- if ( !pFoundMaster )
- pFoundMaster = pMaster;
- else if ( GetSlideLayoutAtom()->eLayout == PPT_LAYOUT_TITLEMASTERSLIDE )
- pFoundMaster = pMaster;
- if ( GetSlideLayoutAtom()->eLayout == PPT_LAYOUT_TITLEMASTERSLIDE )
- break;
- }
- }
- if ( pFoundMaster )
- {
- ((SdPage*)pPage)->TRG_SetMasterPage( *((SdPage*)pFoundMaster) );
- ((SdPage*)pPage)->SetLayoutName( ((SdPage*)pFoundMaster)->GetLayoutName() );
- }
- ((SdPage*)pPage)->SetAutoLayout( AUTOLAYOUT_TITLE, sal_True, sal_True );
-
- eAktPageKind = PPT_NOTEPAGE;
- SdrPage* pNPage = MakeBlancPage( sal_False );
- pSdrModel->InsertPage( pNPage );
- }
- SetPageNum( nPageNum, ePageKind );
- rStCtrl.Seek( nFPosMerk );
- }
- ///////////////////////////////////////////////////////////////////
- // Handzettel und Notiz-Seiten erzeugen //
- ///////////////////////////////////////////////////////////////////
- bOk = mpDoc->CreateMissingNotesAndHandoutPages();
- if ( bOk )
- {
- for ( i = 0; i < mpDoc->GetSdPageCount( PK_STANDARD ); i++ )
- {
- ////////////////////
- // set AutoLayout //
- ////////////////////
- SetPageNum( i, PPT_SLIDEPAGE );
- SdPage* pPage = mpDoc->GetSdPage( i, PK_STANDARD );
- AutoLayout eAutoLayout = AUTOLAYOUT_NONE;
- const PptSlideLayoutAtom* pSlideLayout = GetSlideLayoutAtom();
- if ( pSlideLayout )
- {
- switch ( pSlideLayout->eLayout ) // Praesentationslayouts fuer Standard-Seiten
- {
- case PPT_LAYOUT_TITLEANDBODYSLIDE :
- {
- eAutoLayout = AUTOLAYOUT_ENUM;
- sal_uInt16 nID1 = pSlideLayout->aPlaceholderId[ 1 ];
- switch ( nID1 )
- {
- case PPT_PLACEHOLDER_BODY :
- eAutoLayout = AUTOLAYOUT_ENUM;
- break;
- case PPT_PLACEHOLDER_TABLE :
- eAutoLayout = AUTOLAYOUT_TAB;
- break;
- case PPT_PLACEHOLDER_ORGANISZATIONCHART :
- eAutoLayout = AUTOLAYOUT_ORG;
- break;
- case PPT_PLACEHOLDER_GRAPH :
- eAutoLayout = AUTOLAYOUT_CHART;
- break;
- case PPT_PLACEHOLDER_OBJECT :
- eAutoLayout = AUTOLAYOUT_OBJ;
- break;
- case PPT_PLACEHOLDER_VERTICALTEXTBODY :
- eAutoLayout = AUTOLAYOUT_TITLE_VERTICAL_OUTLINE;
- break;
- }
- }
- break;
-
- case PPT_LAYOUT_2COLUMNSANDTITLE :
- {
- eAutoLayout = AUTOLAYOUT_2TEXT;
- sal_uInt16 nID1 = pSlideLayout->aPlaceholderId[ 1 ];
- sal_uInt16 nID2 = pSlideLayout->aPlaceholderId[ 2 ];
- if ( nID1 == PPT_PLACEHOLDER_BODY && nID2 == PPT_PLACEHOLDER_GRAPH )
- eAutoLayout = AUTOLAYOUT_TEXTCHART;
- else if ( nID1 == PPT_PLACEHOLDER_GRAPH && nID2 == PPT_PLACEHOLDER_BODY )
- eAutoLayout = AUTOLAYOUT_CHARTTEXT;
- else if ( nID1 == PPT_PLACEHOLDER_BODY && nID2 == PPT_PLACEHOLDER_CLIPART )
- eAutoLayout = AUTOLAYOUT_TEXTCLIP;
- else if ( nID1 == PPT_PLACEHOLDER_CLIPART && nID2 == PPT_PLACEHOLDER_BODY )
- eAutoLayout = AUTOLAYOUT_CLIPTEXT;
- else if ( nID1 == PPT_PLACEHOLDER_CLIPART && nID2 == PPT_PLACEHOLDER_VERTICALTEXTBODY )
- eAutoLayout = AUTOLAYOUT_TITLE_VERTICAL_OUTLINE_CLIPART;
- else if ( ( nID1 == PPT_PLACEHOLDER_BODY )
- && ( ( nID2 == PPT_PLACEHOLDER_OBJECT ) || ( nID2 == PPT_PLACEHOLDER_MEDIACLIP ) ) )
- eAutoLayout = AUTOLAYOUT_TEXTOBJ;
- else if ( ( nID2 == PPT_PLACEHOLDER_BODY )
- && ( ( nID1 == PPT_PLACEHOLDER_OBJECT ) || ( nID1 == PPT_PLACEHOLDER_MEDIACLIP ) ) )
- eAutoLayout = AUTOLAYOUT_OBJTEXT;
- else if ( ( nID1 == PPT_PLACEHOLDER_OBJECT ) && ( nID2 == PPT_PLACEHOLDER_OBJECT ) )
- eAutoLayout = AUTOLAYOUT_OBJ;
- }
- break;
-
- case PPT_LAYOUT_2ROWSANDTITLE :
- {
- eAutoLayout = AUTOLAYOUT_2TEXT;
- sal_uInt16 nID1 = pSlideLayout->aPlaceholderId[ 1 ];
- sal_uInt16 nID2 = pSlideLayout->aPlaceholderId[ 2 ];
- if ( nID1 == PPT_PLACEHOLDER_BODY && nID2 == PPT_PLACEHOLDER_OBJECT )
- eAutoLayout = AUTOLAYOUT_TEXTOVEROBJ;
- else if ( nID1 == PPT_PLACEHOLDER_OBJECT && nID2 == PPT_PLACEHOLDER_BODY )
- eAutoLayout = AUTOLAYOUT_OBJOVERTEXT;
- }
- break;
-
- case PPT_LAYOUT_TITLESLIDE :
- eAutoLayout = AUTOLAYOUT_TITLE;
- break;
- case PPT_LAYOUT_ONLYTITLE :
- eAutoLayout = AUTOLAYOUT_ONLY_TITLE;
- break;
- case PPT_LAYOUT_RIGHTCOLUMN2ROWS :
- eAutoLayout = AUTOLAYOUT_TEXT2OBJ;
- break;
- case PPT_LAYOUT_LEFTCOLUMN2ROWS :
- eAutoLayout = AUTOLAYOUT_2OBJTEXT;
- break;
- case PPT_LAYOUT_TOPROW2COLUMN :
- eAutoLayout = AUTOLAYOUT_2OBJOVERTEXT;
- break;
- case PPT_LAYOUT_4OBJECTS :
- eAutoLayout = AUTOLAYOUT_4OBJ;
- break;
- case PPT_LAYOUT_BIGOBJECT :
- eAutoLayout = AUTOLAYOUT_OBJ;
- break;
- case PPT_LAYOUT_TITLERIGHTBODYLEFT :
- eAutoLayout = AUTOLAYOUT_VERTICAL_TITLE_VERTICAL_OUTLINE; // AUTOLAYOUT_ENUM;
- break;
- case PPT_LAYOUT_TITLERIGHT2BODIESLEFT :
- eAutoLayout = AUTOLAYOUT_VERTICAL_TITLE_TEXT_CHART; // AUTOLAYOUT_TEXT2OBJ;
- break;
-
- case PPT_LAYOUT_BOTTOMROW2COLUMNS :
- case PPT_LAYOUT_BLANCSLIDE :
- case PPT_LAYOUT_MASTERSLIDE : // Layout der Standard- und Titel-MasterPage
- case PPT_LAYOUT_TITLEMASTERSLIDE :
- case PPT_LAYOUT_MASTERNOTES : // Layout der Notizen-MasterPage
- case PPT_LAYOUT_NOTESTITLEBODY : // Praesentationslayout fuer Notiz-Seiten
- case PPT_LAYOUT_HANDOUTLAYOUT : // Praesentationslayout fuer Handzettelseiten
- eAutoLayout = AUTOLAYOUT_NONE;
- break;
- }
- if ( eAutoLayout != AUTOLAYOUT_NONE )
- pPage->SetAutoLayout( eAutoLayout, sal_False );
- }
- }
- //////////////////////////////////////////////////////////////
- // Handzettel-MasterPage: Autolayout setzen //
- //////////////////////////////////////////////////////////////
- SdPage* pHandoutMPage = mpDoc->GetMasterSdPage( 0, PK_HANDOUT );
- pHandoutMPage->SetAutoLayout( AUTOLAYOUT_HANDOUT6, sal_True, sal_True );
- }
-
- sal_uInt32 nSlideCount = GetPageCount();
- for ( i = 0; ( i < nSlideCount) && ( i < maSlideNameList.size() ); i++ )
- {
- SdPage* pPage = mpDoc->GetSdPage( i, PK_STANDARD );
- String &aName = maSlideNameList[ i ];
- if ( pPage )
- {
- if ( aName.Len() )
- pPage->SetName( aName );
- else
- aName = pPage->GetName();
- }
- }
- if ( mbDocumentFound )
- {
- mpDoc->SetSummationOfParagraphs( sal_True );
- if ( pDocShell )
- {
- ::sd::FrameView* pFrameView = mpDoc->GetFrameView( 0 );
- if ( !pFrameView )
- {
- std::vector<sd::FrameView*> &rViews = mpDoc->GetFrameViewList();
- pFrameView = new ::sd::FrameView( mpDoc );
- rViews.push_back( pFrameView );
- }
- if ( pFrameView )
- {
- sal_uInt16 nSelectedPage = 0;
- PageKind ePageKind = PK_STANDARD;
- EditMode eEditMode = EM_PAGE;
-
- switch ( aUserEditAtom.eLastViewType )
- {
- case 7 : // outliner view
- {
- SfxItemSet* pSet = mrMed.GetItemSet();
- if ( pSet )
- pSet->Put( SfxUInt16Item( SID_VIEW_ID, 3 ) );
- }
- break;
- case 8 : // slide sorter
- {
- SfxItemSet* pSet = mrMed.GetItemSet();
- if ( pSet )
- pSet->Put( SfxUInt16Item( SID_VIEW_ID, 2 ) );
- }
- break;
- case 10 : // titlemaster
- nSelectedPage = 1;
- case 2 : // master
- {
- ePageKind = PK_STANDARD;
- eEditMode = EM_MASTERPAGE;
- }
- break;
- case 5 : // notes master
- eEditMode = EM_MASTERPAGE;
- case 3 : // notes
- ePageKind = PK_NOTES;
- break;
- case 4 : // handout
- ePageKind = PK_HANDOUT;
- break;
- default :
- case 1 : // normal
- break;
- }
- pFrameView->SetPageKind( ePageKind );
- pFrameView->SetSelectedPage( nSelectedPage );
- pFrameView->SetViewShEditMode( eEditMode, ePageKind );
- }
- }
- DffRecordHeader aCustomShowHeader;
- // custom show einlesen und setzen
- rStCtrl.Seek( maDocHd.GetRecBegFilePos() + 8 );
- if ( SeekToRec( rStCtrl, PPT_PST_NamedShows, maDocHd.GetRecEndFilePos(), &aCustomShowHeader ) )
- {
- DffRecordHeader aCuHeader;
- while( SeekToRec( rStCtrl, PPT_PST_NamedShow, aCustomShowHeader.GetRecEndFilePos(), &aCuHeader ) )
- {
- DffRecordHeader aContent;
- if ( SeekToRec( rStCtrl, PPT_PST_CString, aCuHeader.GetRecEndFilePos(), &aContent ) )
- {
- String aCuShow;
- aContent.SeekToBegOfRecord( rStCtrl );
- if ( ReadString( aCuShow ) )
- {
- if ( SeekToRec( rStCtrl, PPT_PST_NamedShowSlides, aCuHeader.GetRecEndFilePos(), &aContent ) )
- {
- PptSlidePersistList* pPageList = GetPageList( PPT_SLIDEPAGE );
- sal_uInt32 nSCount = aContent.nRecLen >> 2;
- if ( pPageList && nSCount )
- {
- List* pList = mpDoc->GetCustomShowList( sal_True );
- if ( pList )
- {
- SdCustomShow* pSdCustomShow = new SdCustomShow( mpDoc );
- if ( pSdCustomShow )
- {
- pSdCustomShow->SetName( aCuShow );
- sal_uInt32 nFound = 0;
- for ( sal_uInt32 nS = 0; nS < nSCount; nS++ )
- {
- sal_uInt32 nPageNumber;
- rStCtrl >> nPageNumber;
- sal_uInt16 nPage = pPageList->FindPage( nPageNumber );
- if ( nPage != PPTSLIDEPERSIST_ENTRY_NOTFOUND )
- {
- SdPage* pPage = mpDoc->GetSdPage( nPage, PK_STANDARD );
- if ( pPage )
- {
- pSdCustomShow->Insert( pPage, LIST_APPEND );
- nFound++;
- }
- }
- }
- if ( nFound )
- pList->Insert( pSdCustomShow, LIST_APPEND );
- else
- delete pSdCustomShow;
- }
- }
- }
- }
- }
- }
- }
- }
- // this is defaulted, maybe there is no SSDocInfoAtom
- String aCustomShow;
- sal_uInt32 nFlags = 1; // Bit 0: Auto advance
- sal_uInt16 nStartSlide = 0;
-
- // read the pres. configuration
- rStCtrl.Seek( maDocHd.GetRecBegFilePos() + 8 );
- if ( SeekToRec( rStCtrl, PPT_PST_SSDocInfoAtom, maDocHd.GetRecEndFilePos(), &aCustomShowHeader ) )
- {
- sal_uInt32 nPenColor = 0x1000000;
- sal_Int32 nRestartTime = 0x7fffffff;
- sal_Int16 nEndSlide = 0;
- rStCtrl >> nPenColor
- >> nRestartTime
- >> nStartSlide
- >> nEndSlide;
-
- sal_Unicode nChar;
- for ( sal_uInt32 i2 = 0; i2 < 32; i2++ )
- {
- rStCtrl >> nChar;
- if ( nChar )
- aCustomShow.Append( nChar );
- else
- {
- rStCtrl.SeekRel( ( 31 - i2 ) << 1 );
- break;
- }
- }
- rStCtrl >> nFlags;
- }
- // set the current custom show
- if ( aCustomShow.Len() )
- {
- void* pPtr;
- List* pList = mpDoc->GetCustomShowList( sal_False );
- if ( pList )
- {
- for ( pPtr = pList->First(); pPtr; pPtr = pList->Next() )
- {
- if ( ((SdCustomShow*)pPtr)->GetName() == aCustomShow )
- break;
- }
- if ( !pPtr )
- pList->First();
- }
- }
- sd::PresentationSettings& rPresSettings = mpDoc->getPresentationSettings();
-
- rPresSettings.mbManual = ( nFlags & 1 ) == 0;
- rPresSettings.mbAnimationAllowed = ( nFlags & 2 ) == 0;
- rPresSettings.mbAll = ( nFlags & 4 ) == 0;
- rPresSettings.mbCustomShow = ( nFlags & 8 ) != 0;
- rPresSettings.mbEndless = ( nFlags & 0x80 ) != 0;
- rPresSettings.mbFullScreen = ( nFlags & 0x10 ) == 0;
-
- if ( nStartSlide && ( nStartSlide <= GetPageCount() ) )
- {
- SdPage* pPage = mpDoc->GetSdPage( nStartSlide - 1, PK_STANDARD );
- if ( pPage )
- rPresSettings.maPresPage = pPage->GetName();
- }
- }
-
- delete pStbMgr;
-
- // read DocumentInfo
- uno::Reference<document::XDocumentPropertiesSupplier> xDPS(
- mpDoc->GetObjectShell()->GetModel(), uno::UNO_QUERY_THROW);
- uno::Reference<document::XDocumentProperties> xDocProps
- = xDPS->getDocumentProperties();
- sfx2::LoadOlePropertySet(xDocProps, &mrStorage);
- xDocProps->setTemplateName(::rtl::OUString());
-
- pSdrModel->setLock(false);
- pSdrModel->EnableUndo(true);
- return bOk;
-}
-
-void ImplSdPPTImport::SetHeaderFooterPageSettings( SdPage* pPage, const PptSlidePersistEntry* pMasterPersist )
-{
- sal_uInt32 i;
- PptSlidePersistList* pList = GetPageList( eAktPageKind );
- if ( ( !pList ) || ( pList->Count() <= nAktPageNum ) )
- return;
- PptSlidePersistEntry& rSlidePersist = *(*pList)[ nAktPageNum ];
- HeaderFooterEntry* pHFE = rSlidePersist.pHeaderFooterEntry;
- if ( pHFE )
- {
- for ( i = 0; i < 4; i++ )
- {
- bool bVisible = pHFE->IsToDisplay( i );
- if ( ( eAktPageKind == PPT_SLIDEPAGE )
- && ( rSlidePersist.aSlideAtom.aLayout.eLayout == PPT_LAYOUT_TITLESLIDE )
- && ( aDocAtom.bTitlePlaceholdersOmitted == sal_True ) )
- {
- bVisible = sal_False;
- }
- if ( bVisible && pMasterPersist )
- {
- sal_uInt32 nPosition = pHFE->NeedToImportInstance( i, rSlidePersist );
- if ( nPosition )
- {
- Rectangle aEmpty;
- bVisible = sal_False;
- rStCtrl.Seek( nPosition );
- ProcessData aProcessData( rSlidePersist, (SdPage*)pPage );
- SdrObject* pObj = ImportObj( rStCtrl, (void*)&aProcessData, aEmpty, aEmpty );
- if ( pObj )
- pPage->NbcInsertObject( pObj, 0 );
- }
- }
- String aPlaceHolderString;
- if ( pHFE->pPlaceholder )
- aPlaceHolderString = pHFE->pPlaceholder[ i ];
-
- sd::HeaderFooterSettings rHeaderFooterSettings( pPage->getHeaderFooterSettings() );
- switch( i )
- {
- case 0 :
- {
- rHeaderFooterSettings.mbDateTimeVisible = bVisible;
- rHeaderFooterSettings.mbDateTimeIsFixed = ( pHFE->nAtom & 0x20000 ) == 0;
- rHeaderFooterSettings.maDateTimeText = aPlaceHolderString;
- SvxDateFormat eDateFormat;
- SvxTimeFormat eTimeFormat;
- PPTFieldEntry::GetDateTime( pHFE->nAtom & 0xff, eDateFormat, eTimeFormat );
- rHeaderFooterSettings.meDateTimeFormat = eDateFormat | ( eTimeFormat << 4 );
- }
- break;
- case 1 :
- {
- rHeaderFooterSettings.mbHeaderVisible = bVisible;
- rHeaderFooterSettings.maHeaderText = aPlaceHolderString;
- }
- break;
- case 2 :
- {
- rHeaderFooterSettings.mbFooterVisible = bVisible;
- rHeaderFooterSettings.maFooterText = aPlaceHolderString;
- }
- break;
- case 3 :
- {
- rHeaderFooterSettings.mbSlideNumberVisible = bVisible;
- }
- break;
- }
- pPage->setHeaderFooterSettings( rHeaderFooterSettings );
- }
- }
-}
-
-//////////////////////////////////////////////////////////////////////////
-//
-// Import von Seiten
-//
-//////////////////////////////////////////////////////////////////////////
-
-struct Ppt97AnimationStlSortHelper
-{
- bool operator()( const std::pair< SdrObject*, Ppt97AnimationPtr >& p1, const std::pair< SdrObject*, Ppt97AnimationPtr >& p2 );
-};
-
-bool Ppt97AnimationStlSortHelper::operator()( const std::pair< SdrObject*, Ppt97AnimationPtr >& p1, const std::pair< SdrObject*, Ppt97AnimationPtr >& p2 )
-{
- if( !p1.second.get() || !p2.second.get() )
- return true;
- if( *p1.second < *p2.second )
- return true;
- if( *p1.second > *p2.second )
- return false;
- if( p1.first->GetOrdNum() < p2.first->GetOrdNum() )
- return true;
- return false;
-}
-
-void ImplSdPPTImport::ImportPageEffect( SdPage* pPage, const sal_Bool bNewAnimationsUsed )
-{
- sal_uLong nFilePosMerk = rStCtrl.Tell();
-
- // PageKind an der Seite setzen (bisher nur PK_STANDARD oder PK_NOTES)
- if ( pPage->GetPageKind() == PK_STANDARD )
- {
- PptSlidePersistList* pPersistList = GetPageList( eAktPageKind );
- PptSlidePersistEntry* pActualSlidePersist = ( pPersistList && ( nAktPageNum < pPersistList->Count() ) )
- ? (*pPersistList)[ nAktPageNum ] : NULL;
-
- if ( pActualSlidePersist && ( eAktPageKind == PPT_SLIDEPAGE ) )
- {
- if ( ! ( pActualSlidePersist->aSlideAtom.nFlags & 1 ) ) // do not follow master objects ?
- {
- if(pPage->TRG_HasMasterPage())
- {
- SetOfByte aVisibleLayers = pPage->TRG_GetMasterPageVisibleLayers();
- aVisibleLayers.Set(mnBackgroundObjectsLayerID, sal_False);
- pPage->TRG_SetMasterPageVisibleLayers(aVisibleLayers);
- }
- }
- }
- DffRecordHeader aPageRecHd;
- if ( pPage && SeekToAktPage( &aPageRecHd ) )
- {
- sal_uLong nPageRecEnd = aPageRecHd.GetRecEndFilePos();
-
- sal_Bool bTryTwice = ( eAktPageKind == PPT_SLIDEPAGE );
- sal_Bool bSSSlideInfoAtom = sal_False;
- while ( sal_True )
- {
- while ( ( rStCtrl.GetError() == 0 ) && ( rStCtrl.Tell() < nPageRecEnd ) )
- {
- DffRecordHeader aHd;
- rStCtrl >> aHd;
- switch ( aHd.nRecType )
- {
- case PPT_PST_SSSlideInfoAtom:
- {
- bSSSlideInfoAtom = sal_True;
- if ( eAktPageKind == PPT_MASTERPAGE )
- {
- if ( pActualSlidePersist )
- pActualSlidePersist->aPersistAtom.nReserved = aHd.GetRecBegFilePos();
- }
- else
- {
- sal_Int8 nDirection, nTransitionType, nByteDummy, nSpeed;
- sal_Int16 nBuildFlags;
- sal_Int32 nSlideTime, nSoundRef;
- rStCtrl >> nSlideTime // Standzeit (in Ticks)
- >> nSoundRef // Index in SoundCollection
- >> nDirection // Richtung des Ueberblendeffekts
- >> nTransitionType // Ueberblendeffekt
- >> nBuildFlags // Buildflags (s.u.)
- >> nSpeed // Geschwindigkeit (langsam, mittel, schnell)
- >> nByteDummy >> nByteDummy >> nByteDummy;
-
- switch ( nTransitionType )
- {
- case PPT_TRANSITION_TYPE_BLINDS :
- {
- if ( nDirection == 0 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_VERTICAL_STRIPES );// Vertikal blenden
- else if ( nDirection == 1 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_HORIZONTAL_STRIPES );// Horizontal blenden
- }
- break;
- case PPT_TRANSITION_TYPE_CHECKER :
- {
- if ( nDirection == 0 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_HORIZONTAL_CHECKERBOARD );// Vertikal versetzt einblenden ??
- else if ( nDirection == 1 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_VERTICAL_CHECKERBOARD );// Horizontal versetzt einblenden ??
- }
- break;
- case PPT_TRANSITION_TYPE_COVER :
- {
- if ( nDirection == 0 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_MOVE_FROM_RIGHT ); // Von rechts ueberdecken
- else if ( nDirection == 1 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_MOVE_FROM_BOTTOM ); // Von unten ueberdecken
- else if ( nDirection == 2 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_MOVE_FROM_LEFT ); // Von links ueberdecken
- else if ( nDirection == 3 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_MOVE_FROM_TOP ); // Von oben ueberdecken
- else if ( nDirection == 4 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_MOVE_FROM_LOWERRIGHT );// Von rechts unten ueberdecken ??
- else if ( nDirection == 5 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_MOVE_FROM_LOWERLEFT ); // Von links unten ueberdecken ??
- else if ( nDirection == 6 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_MOVE_FROM_UPPERRIGHT );// Von rechts oben ueberdecken
- else if ( nDirection == 7 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_MOVE_FROM_UPPERLEFT ); // Von links oben ueberdecken ??
- }
- break;
- case PPT_TRANSITION_TYPE_NONE :
- {
- if ( nBuildFlags )
- {
- if ( nDirection == 0 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_NONE ); // Direkt
- else if ( nDirection == 1 )
- {
- pPage->setTransitionType( animations::TransitionType::BARWIPE );
- pPage->setTransitionSubtype( animations::TransitionSubType::FADEOVERCOLOR );
- pPage->setTransitionFadeColor( 0 );
- }
- }
- else
- pPage->setTransitionType( 0 );
- }
- break;
- case PPT_TRANSITION_TYPE_DISSOLVE :
- pPage->SetFadeEffect(::com::sun::star::presentation::FadeEffect_DISSOLVE); // Aufloesen
- break;
- case PPT_TRANSITION_TYPE_RANDOM_BARS :
- {
- if ( nDirection == 0 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_HORIZONTAL_LINES ); // Horizontale Linien
- else if ( nDirection == 1 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_VERTICAL_LINES ); // Vertikale Linien
- }
- break;
- case PPT_TRANSITION_TYPE_SPLIT :
- {
- if ( nDirection == 0 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_OPEN_VERTICAL ); // Horizontal oeffnen
- else if ( nDirection == 1 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_CLOSE_VERTICAL ); // Horizontal schliessen
- else if ( nDirection == 2 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_OPEN_HORIZONTAL ); // Vertikal oeffnen
- else if ( nDirection == 3 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_CLOSE_HORIZONTAL );// Vertikal schliessen
- }
- break;
- case PPT_TRANSITION_TYPE_STRIPS :
- {
- if ( nDirection == 4 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_FADE_FROM_LOWERRIGHT );// Diagonal nach links oben
- else if ( nDirection == 5 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_FADE_FROM_LOWERLEFT ); // Diagonal nach rechts oben
- else if ( nDirection == 6 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_FADE_FROM_UPPERRIGHT );// Diagonal nach links unten
- else if ( nDirection == 7 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_FADE_FROM_UPPERLEFT ); // Diagonal nach rechts unten
- }
- break;
- case PPT_TRANSITION_TYPE_PULL :
- {
- if ( nDirection == 0 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_UNCOVER_TO_LEFT ); // Nach links aufdecken
- else if ( nDirection == 1 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_UNCOVER_TO_TOP ); // Nach oben aufdecken
- else if ( nDirection == 2 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_UNCOVER_TO_RIGHT ); // Nach rechts aufdecken
- else if ( nDirection == 3 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_UNCOVER_TO_BOTTOM ); // Nach unten aufdecken
- else if ( nDirection == 4 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_UNCOVER_TO_UPPERLEFT );// Nach links oben aufdecken
- else if ( nDirection == 5 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_UNCOVER_TO_UPPERRIGHT );// Nach rechts oben aufdecken
- else if ( nDirection == 6 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_UNCOVER_TO_LOWERLEFT );// Nach links unten aufdecken
- else if ( nDirection == 7 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_UNCOVER_TO_LOWERRIGHT );// Nach rechts unten aufdecken
- }
- break;
- case PPT_TRANSITION_TYPE_WIPE :
- {
- if ( nDirection == 0 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_FADE_FROM_RIGHT ); // Von rechts rollen
- else if ( nDirection == 1 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_FADE_FROM_BOTTOM );// Von unten rollen
- else if ( nDirection == 2 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_FADE_FROM_LEFT ); // Von links rollen
- else if ( nDirection == 3 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_FADE_FROM_TOP ); // Von oben rollen
- }
- break;
- case PPT_TRANSITION_TYPE_RANDOM :
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_RANDOM ); // Automatisch
- break;
- case PPT_TRANSITION_TYPE_FADE :
- {
- pPage->setTransitionType( animations::TransitionType::FADE );
- pPage->setTransitionSubtype( animations::TransitionSubType::FADEOVERCOLOR );
- pPage->setTransitionFadeColor( 0 );
- }
- break;
- case PPT_TRANSITION_TYPE_ZOOM :
- {
- if ( nDirection == 0 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_FADE_FROM_CENTER );// Von innen einblenden
- else if ( nDirection == 1 )
- pPage->SetFadeEffect( ::com::sun::star::presentation::FadeEffect_FADE_TO_CENTER ); // Von aussen einblenden
- }
- break;
- case PPT_TRANSITION_TYPE_DIAMOND :
- {
- pPage->setTransitionType( animations::TransitionType::IRISWIPE );
- pPage->setTransitionSubtype( animations::TransitionSubType::DIAMOND );
- }
- break;
- case PPT_TRANSITION_TYPE_PLUS :
- {
- pPage->setTransitionType( animations::TransitionType::FOURBOXWIPE );
- pPage->setTransitionSubtype( animations::TransitionSubType::CORNERSOUT );
- }
- break;
- case PPT_TRANSITION_TYPE_CIRCLE :
- {
- pPage->setTransitionType( animations::TransitionType::ELLIPSEWIPE );
- pPage->setTransitionSubtype( animations::TransitionSubType::CIRCLE );
- }
- break;
- case PPT_TRANSITION_TYPE_WEDGE :
- {
- pPage->setTransitionType( animations::TransitionType::FANWIPE );
- pPage->setTransitionSubtype( animations::TransitionSubType::CENTERTOP );
- }
- break;
- case PPT_TRANSITION_TYPE_WHEEL :
- {
- pPage->setTransitionType( animations::TransitionType::PINWHEELWIPE );
- sal_Int16 nSubType;
- switch( nDirection )
- {
- default:
- case 1 : nSubType = animations::TransitionSubType::ONEBLADE; break;
- case 2 : nSubType = animations::TransitionSubType::TWOBLADEVERTICAL; break;
- case 3 : nSubType = animations::TransitionSubType::THREEBLADE; break;
- case 4 : nSubType = animations::TransitionSubType::FOURBLADE; break;
- case 8 : nSubType = animations::TransitionSubType::EIGHTBLADE; break;
- }
- pPage->setTransitionSubtype( nSubType );
- }
- break;
- case PPT_TRANSITION_TYPE_PUSH :
- {
- pPage->setTransitionType( animations::TransitionType::PUSHWIPE );
- sal_Int16 nSubType;
- switch( nDirection )
- {
- default:
- case 0 : nSubType = animations::TransitionSubType::FROMRIGHT; break;
- case 1 : nSubType = animations::TransitionSubType::FROMBOTTOM; break;
- case 2 : nSubType = animations::TransitionSubType::FROMLEFT; break;
- case 3 : nSubType = animations::TransitionSubType::FROMTOP; break;
- }
- pPage->setTransitionSubtype( nSubType );
- }
- break;
- case PPT_TRANSITION_TYPE_COMB :
- {
- pPage->setTransitionType( animations::TransitionType::PUSHWIPE );
- pPage->setTransitionSubtype( nDirection ? animations::TransitionSubType::COMBVERTICAL : animations::TransitionSubType::COMBHORIZONTAL );
- }
- break;
- case PPT_TRANSITION_TYPE_NEWSFLASH :
- {
- pPage->setTransitionType( animations::TransitionType::ZOOM );
- pPage->setTransitionSubtype( animations::TransitionSubType::ROTATEIN );
- }
- break;
- case PPT_TRANSITION_TYPE_SMOOTHFADE :
- {
- pPage->setTransitionType( animations::TransitionType::FADE );
- pPage->setTransitionSubtype( animations::TransitionSubType::CROSSFADE );
- }
- break;
- }
-
- if ( nSpeed == 0 )
- pPage->setTransitionDuration( 3.0 ); // langsam
- else if ( nSpeed == 1 )
- pPage->setTransitionDuration( 2.0 ); // mittel
- else if ( nSpeed == 2 )
- pPage->setTransitionDuration( 1.0 ); // schnell
-
- if ( nBuildFlags & 0x400 ) // slidechange by time
- { // Standzeit (in Ticks)
- pPage->SetPresChange( PRESCHANGE_AUTO );
- pPage->SetTime( nSlideTime / 1000 );
- }
- else
- pPage->SetPresChange( mePresChange );
-
- if ( nBuildFlags & 4 )
- pPage->SetExcluded( sal_True ); // Dia nicht anzeigen
- if ( nBuildFlags & 16 )
- { // Dia mit Soundeffekt
- pPage->SetSound( sal_True );
- String aSoundFile( ReadSound( nSoundRef ) );
- pPage->SetSoundFile( aSoundFile );
- }
- if ( nBuildFlags & ( 1 << 6 ) ) // Loop until next sound
- pPage->SetLoopSound( sal_True );
- if ( nBuildFlags & ( 1 << 8 ) ) // Stop the previous sound
- pPage->SetStopSound( sal_True );
- break;
- }
- }
- }
- aHd.SeekToEndOfRecord( rStCtrl );
- }
- if ( bTryTwice && ( bSSSlideInfoAtom == sal_False ) )
- {
- bTryTwice = sal_False;
- if ( HasMasterPage( nAktPageNum, eAktPageKind ) )
- {
- sal_uInt16 nMasterNum = GetMasterPageIndex( nAktPageNum, eAktPageKind );
- PptSlidePersistList* pPageList = GetPageList( PPT_MASTERPAGE );
- if ( pPageList && ( nMasterNum < pPageList->Count() ) )
- {
- PptSlidePersistEntry* pE = (*pPageList)[ nMasterNum ];
- if ( pE )
- {
- sal_uInt32 nOfs = pE->aPersistAtom.nReserved;
- if ( nOfs )
- {
- rStCtrl.Seek( nOfs );
- nPageRecEnd = nOfs + 16;
- continue;
- }
- }
- }
-
- }
- }
- break;
- }
- }
- }
-
- if ( !bNewAnimationsUsed )
- {
- tAnimationVector aAnimationsOnThisPage;
-
- // add effects from page in correct order
- SdrObjListIter aSdrIter( *pPage, IM_FLAT );
- while ( aSdrIter.IsMore() )
- {
- SdrObject* pObj = aSdrIter.Next();
- tAnimationMap::iterator aFound = maAnimations.find( pObj );
- if( aFound != maAnimations.end() )
- {
- std::pair< SdrObject*, Ppt97AnimationPtr > aPair( (*aFound).first, (*aFound).second );
- aAnimationsOnThisPage.push_back( aPair );
- }
- }
-
- Ppt97AnimationStlSortHelper aSortHelper;
- std::sort( aAnimationsOnThisPage.begin(), aAnimationsOnThisPage.end(), aSortHelper );
-
- tAnimationVector::iterator aIter( aAnimationsOnThisPage.begin() );
- const tAnimationVector::iterator aEnd( aAnimationsOnThisPage.end() );
-
- for( ;aIter != aEnd; ++aIter )
- {
- Ppt97AnimationPtr pPpt97Animation = (*aIter).second;;
- if( pPpt97Animation.get() )
- pPpt97Animation->createAndSetCustomAnimationEffect( (*aIter).first );
- }
- }
- rStCtrl.Seek( nFilePosMerk );
-}
-
-//////////////////////////////////////////////////////////////////////////
-//
-// Import von Sounds
-//
-// Die Sounds werden nicht nur als String importiert sondern auch
-// in die Gallery einefuegt, falls dort noch nicht vorhanden.
-//
-///////////////////////////////////////////////////////////////////////////
-
-String ImplSdPPTImport::ReadSound(sal_uInt32 nSoundRef) const
-{
- String aRetval;
- sal_uInt32 nPosMerk = rStCtrl.Tell();
- DffRecordHeader aDocHd;
- if ( SeekToDocument( &aDocHd ) )
- {
- sal_uInt32 nSoundLen = aDocHd.GetRecEndFilePos();
- DffRecordHeader aSoundBlockRecHd;
- if( SeekToRec( rStCtrl, PPT_PST_SoundCollection, nSoundLen, &aSoundBlockRecHd ) )
- {
- sal_uInt32 nDataLen = aSoundBlockRecHd.GetRecEndFilePos();
- DffRecordHeader aSoundRecHd;
- sal_Bool bRefStrValid = sal_False;
- sal_Bool bDone = sal_False;
-
- while( !bDone && SeekToRec( rStCtrl, PPT_PST_Sound, nDataLen, &aSoundRecHd ) )
- {
- sal_uInt32 nStrLen = aSoundRecHd.GetRecEndFilePos();
- String aRefStr;
- sal_uInt32 nPosMerk2 = rStCtrl.Tell();
- if ( SeekToRec( rStCtrl, PPT_PST_CString, nStrLen, NULL, 2 ) )
- {
- if ( ReadString( aRefStr ) )
- bRefStrValid = sal_True;
- }
- if ( bRefStrValid )
- {
- if ( UniString::CreateFromInt32( nSoundRef ) == aRefStr )
- {
- rStCtrl.Seek( nPosMerk2 );
- if ( SeekToRec( rStCtrl, PPT_PST_CString, nStrLen, NULL, 0 ) )
- {
- ReadString( aRetval );
- bDone = sal_True;
- }
- }
- }
- if ( bDone )
- {
- // ueberpruefen, ob diese Sound-Datei schon
- // existiert. Wenn nicht, exportiere diese
- // in unser lokales Sound-Verzeichnis.
- sal_Bool bSoundExists = sal_False;
- ::std::vector< String > aSoundList;
-
- GalleryExplorer::FillObjList( GALLERY_THEME_SOUNDS, aSoundList );
- GalleryExplorer::FillObjList( GALLERY_THEME_USERSOUNDS, aSoundList );
-
- for( size_t n = 0; ( n < aSoundList.size() ) && !bSoundExists; n++ )
- {
- INetURLObject aURL( aSoundList[ n ] );
- String aSoundName( aURL.GetName() );
-
- if( aSoundName == aRetval )
- {
- aRetval = aSoundList[ n ];
- bSoundExists = sal_True;
- }
- }
-
- aSoundList.clear();
-
- if ( !bSoundExists )
- {
- rStCtrl.Seek( nPosMerk2 );
- DffRecordHeader aSoundDataRecHd;
- if ( SeekToRec( rStCtrl, PPT_PST_SoundData, nStrLen, &aSoundDataRecHd, 0 ) )
- {
- String aGalleryDir( SvtPathOptions().GetGalleryPath() );
- INetURLObject aGalleryUserSound( aGalleryDir.GetToken( aGalleryDir.GetTokenCount( ';' ) - 1 ) );
-
- aGalleryUserSound.Append( aRetval );
- sal_uInt32 nSoundDataLen = aSoundDataRecHd.nRecLen;
- sal_uInt8* pBuf = new sal_uInt8[ nSoundDataLen ];
-
- rStCtrl.Read( pBuf, nSoundDataLen );
- SvStream* pOStm = ::utl::UcbStreamHelper::CreateStream( aGalleryUserSound.GetMainURL( INetURLObject::NO_DECODE ), STREAM_WRITE | STREAM_TRUNC );
-
- if( pOStm )
- {
- pOStm->Write( pBuf, nSoundDataLen );
-
- if( pOStm->GetError() == ERRCODE_NONE )
- {
- GalleryExplorer::InsertURL( GALLERY_THEME_USERSOUNDS, aGalleryUserSound.GetMainURL( INetURLObject::NO_DECODE ) );
- aRetval = aGalleryUserSound.GetMainURL( INetURLObject::NO_DECODE );
- }
-
- delete pOStm;
- }
-
- delete[] pBuf;
- }
- }
- }
- if ( !bDone )
- aSoundRecHd.SeekToEndOfRecord( rStCtrl );
- }
- }
- }
- rStCtrl.Seek( nPosMerk );
- return aRetval;
-}
-
-//////////////////////////////////////////////////////////////////////////
-//
-// media object import, the return value is the url to the media object
-//
-//////////////////////////////////////////////////////////////////////////
-
-String ImplSdPPTImport::ReadMedia( sal_uInt32 nMediaRef ) const
-{
- String aRetVal;
- DffRecordHeader* pHd( const_cast<ImplSdPPTImport*>(this)->aDocRecManager.GetRecordHeader( PPT_PST_ExObjList, SEEK_FROM_BEGINNING ) );
- if ( pHd )
- {
- pHd->SeekToContent( rStCtrl );
- while ( ( rStCtrl.Tell() < pHd->GetRecEndFilePos() ) && !aRetVal.Len() )
- {
- DffRecordHeader aHdMovie;
- rStCtrl >> aHdMovie;
- switch( aHdMovie.nRecType )
- {
- case PPT_PST_ExAviMovie :
- case PPT_PST_ExMCIMovie :
- {
- DffRecordHeader aExVideoHd;
- if ( SeekToRec( rStCtrl, PPT_PST_ExVideo, aHdMovie.GetRecEndFilePos(), &aExVideoHd ) )
- {
- DffRecordHeader aExMediaAtomHd;
- if ( SeekToRec( rStCtrl, PPT_PST_ExMediaAtom, aExVideoHd.GetRecEndFilePos(), &aExMediaAtomHd ) )
- {
- sal_uInt32 nRef;
- rStCtrl >> nRef;
- if ( nRef == nMediaRef )
- {
- aExVideoHd.SeekToContent( rStCtrl );
- while( rStCtrl.Tell() < aExVideoHd.GetRecEndFilePos() )
- {
- DffRecordHeader aHd;
- rStCtrl >> aHd;
- switch( aHd.nRecType )
- {
- case PPT_PST_CString :
- {
- aHd.SeekToBegOfRecord( rStCtrl );
- String aStr;
- if ( ReadString( aStr ) )
- {
- if( ::utl::LocalFileHelper::ConvertPhysicalNameToURL( aStr, aRetVal ) )
- {
- aRetVal = INetURLObject( aRetVal ).GetMainURL( INetURLObject::DECODE_UNAMBIGUOUS );
- }
- }
- }
- break;
- }
- aHd.SeekToEndOfRecord( rStCtrl );
- }
- break;
- }
- }
- }
- }
- break;
- }
- aHdMovie.SeekToEndOfRecord( rStCtrl );
- }
- }
- return aRetVal;
-}
-
-//////////////////////////////////////////////////////////////////////////
-//
-// Import von Objekten
-//
-//////////////////////////////////////////////////////////////////////////
-
-void ImplSdPPTImport::FillSdAnimationInfo( SdAnimationInfo* pInfo, PptInteractiveInfoAtom* pIAtom, String aMacroName )
-{
- // Lokale Informationen in pInfo eintragen
- if( pIAtom->nSoundRef )
- {
- pInfo->SetBookmark( ReadSound( pIAtom->nSoundRef ) ); // Pfad zum Soundfile in MSDOS-Notation
- pInfo->meClickAction = ::com::sun::star::presentation::ClickAction_SOUND; // RunProgramAction
- }
-
- switch ( pIAtom->nAction )
- {
-
- case 0x02 : // RunProgramAction
- {
- pInfo->meClickAction = ::com::sun::star::presentation::ClickAction_PROGRAM;
- pInfo->SetBookmark( aMacroName ); // Programmname in aBookmark
- }
- break;
- case 0x03 : // JumpAction
- {
- switch( pIAtom->nJump )
- {
- case 0x01 :
- pInfo->meClickAction = ::com::sun::star::presentation::ClickAction_NEXTPAGE; // Next slide
- break;
- case 0x02 :
- pInfo->meClickAction = ::com::sun::star::presentation::ClickAction_PREVPAGE; // Previous slide
- break;
- case 0x03 :
- pInfo->meClickAction = ::com::sun::star::presentation::ClickAction_FIRSTPAGE; // First slide
- break;
- case 0x04 :
- pInfo->meClickAction = ::com::sun::star::presentation::ClickAction_LASTPAGE; // last Slide
- break;
- case 0x05 :
- pInfo->meClickAction = ::com::sun::star::presentation::ClickAction_PREVPAGE; // Last slide viewed
- break;
- case 0x06 :
- pInfo->meClickAction = ::com::sun::star::presentation::ClickAction_STOPPRESENTATION; // End show
- break;
- default :
- pInfo->meClickAction = ::com::sun::star::presentation::ClickAction_NONE; // 0x00: no action, else unknown
- break;
- }
- }
- break;
- case 0x04 :
- {
- SdHyperlinkEntry* pPtr = NULL;
- for ( size_t i = 0, n = aHyperList.size(); i < n; ++i ) {
- if ( aHyperList[ i ]->nIndex == pIAtom->nExHyperlinkId ) {
- pPtr = aHyperList[ i ];
- break;
- }
- }
- if ( pPtr )
- {
- switch( pIAtom->nHyperlinkType )
- {
- case 9:
- case 8: // hyperlink : URL
- {
- if ( pPtr->aTarget.Len() )
- {
- ::sd::DrawDocShell* pDocShell = mpDoc->GetDocSh();
- if ( pDocShell )
- {
- String aBaseURL = pDocShell->GetMedium()->GetBaseURL();
- String aBookmarkURL( pInfo->GetBookmark() );
- INetURLObject aURL( pPtr->aTarget );
- if( INET_PROT_NOT_VALID == aURL.GetProtocol() )
- utl::LocalFileHelper::ConvertSystemPathToURL( pPtr->aTarget, aBaseURL, aBookmarkURL );
- if( !aBookmarkURL.Len() )
- aBookmarkURL = URIHelper::SmartRel2Abs( INetURLObject(aBaseURL), pPtr->aTarget, URIHelper::GetMaybeFileHdl(), true );
- pInfo->SetBookmark( aBookmarkURL );
- pInfo->meClickAction = ::com::sun::star::presentation::ClickAction_PROGRAM;
- }
- }
- }
- break;
-
- case 10:
- break;
-
- case 7: // hyperlink auf eine Seite
- {
- if ( pPtr->aConvSubString.Len() )
- {
- pInfo->meClickAction = ::com::sun::star::presentation::ClickAction_BOOKMARK;
- pInfo->SetBookmark( pPtr->aConvSubString );
- }
- }
- break;
- }
- }
- }
- break;
- case 0x05 : // OLEAction ( OLEVerb to use, 0==first, 1==secnd, .. )
- case 0x06 : // MediaAction
- case 0x07 : // CustomShowAction
- default : // 0x00: no action, else unknown action
- break;
- }
-}
-
-SdrObject* ImplSdPPTImport::ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pObj, SdPage* pPage,
- SfxStyleSheet* pSheet, SfxStyleSheet** ppStyleSheetAry ) const
-{
- SfxStyleSheet* pStyleSheetAry[ 9 ];
- SdrTextObj* pText = pObj;
- SdrObject* pRet = pText;
-
- ppStyleSheetAry = NULL;
-
- PresObjKind ePresKind = PRESOBJ_NONE;
- PptOEPlaceholderAtom* pPlaceHolder = pTextObj->GetOEPlaceHolderAtom();
- String aPresentationText;
- if ( pPlaceHolder )
- {
- switch( pPlaceHolder->nPlaceholderId )
- {
- case PPT_PLACEHOLDER_MASTERNOTESSLIDEIMAGE :
- case PPT_PLACEHOLDER_MASTERCENTEREDTITLE :
- case PPT_PLACEHOLDER_MASTERTITLE :
- {
- ePresKind = PRESOBJ_TITLE;
- aPresentationText = pPage->GetPresObjText( ePresKind );
- }
- break;
- case PPT_PLACEHOLDER_MASTERBODY :
- {
- ePresKind = PRESOBJ_OUTLINE;
- aPresentationText = pPage->GetPresObjText( ePresKind );
- }
- break;
- case PPT_PLACEHOLDER_MASTERSUBTITLE :
- {
- ePresKind = PRESOBJ_TEXT;
- aPresentationText = pPage->GetPresObjText( ePresKind );
- }
- break;
- case PPT_PLACEHOLDER_MASTERNOTESBODYIMAGE :
- {
- ePresKind = PRESOBJ_NOTES;
- aPresentationText = pPage->GetPresObjText( ePresKind );
- }
- break;
- case PPT_PLACEHOLDER_MASTERDATE : ePresKind = PRESOBJ_DATETIME; break;
- case PPT_PLACEHOLDER_MASTERSLIDENUMBER : ePresKind = PRESOBJ_SLIDENUMBER;break;
- case PPT_PLACEHOLDER_MASTERFOOTER : ePresKind = PRESOBJ_FOOTER; break;
- case PPT_PLACEHOLDER_MASTERHEADER : ePresKind = PRESOBJ_HEADER; break;
- }
- }
- switch ( pTextObj->GetDestinationInstance() )
- {
- case TSS_TYPE_PAGETITLE :
- case TSS_TYPE_TITLE :
- {
- pSheet = pPage->GetStyleSheetForPresObj( PRESOBJ_TITLE );
- if ( pSheet )
- ((SdrAttrObj*)pText)->SdrAttrObj::NbcSetStyleSheet( pSheet, sal_True );
- DBG_ASSERT( pSheet, "ImplSdPPTImport::ApplyTextObj -> could not get stylesheet for titleobject (SJ)" );
- }
- break;
- case TSS_TYPE_SUBTITLE :
- {
- pSheet = pPage->GetStyleSheetForPresObj( PRESOBJ_TEXT );
- if ( pSheet )
- ((SdrAttrObj*)pText)->SdrAttrObj::NbcSetStyleSheet( pSheet, sal_True );
- DBG_ASSERT( pSheet, "ImplSdPPTImport::ApplyTextObj -> could not get stylesheet for subtitleobject (SJ)" );
- }
- break;
- case TSS_TYPE_BODY :
- case TSS_TYPE_HALFBODY :
- case TSS_TYPE_QUARTERBODY :
- {
- for ( sal_uInt16 nLevel = 9; nLevel; nLevel-- )
- {
- String aName( pPage->GetLayoutName() );
- aName.Append( (sal_Unicode)( ' ' ) );
- aName.Append( String::CreateFromInt32( nLevel ) );
- pSheet = (SfxStyleSheet*)mpDoc->GetStyleSheetPool()->Find( aName, SD_STYLE_FAMILY_MASTERPAGE );
- if ( pSheet )
- pText->StartListening( *pSheet );
- pStyleSheetAry[ nLevel - 1 ] = pSheet;
- }
- DBG_ASSERT( pSheet, "ImplSdPPTImport::ApplyTextObj -> could not get stylesheet for outlinerobject (SJ)" );
- if ( pSheet )
- ((SdrAttrObj*)pText)->SdrAttrObj::NbcSetStyleSheet( pSheet, sal_True );
- ppStyleSheetAry = &pStyleSheetAry[ 0 ];
- }
- break;
- case TSS_TYPE_NOTES :
- {
- if ( pPlaceHolder && ( ( pPlaceHolder->nPlaceholderId == PPT_PLACEHOLDER_NOTESSLIDEIMAGE )
- || ( pPlaceHolder->nPlaceholderId == PPT_PLACEHOLDER_MASTERNOTESSLIDEIMAGE ) ) )
- {
- pSheet = pPage->GetStyleSheetForPresObj( PRESOBJ_TITLE );
- if ( pSheet )
- ((SdrAttrObj*)pText)->SdrAttrObj::NbcSetStyleSheet( pSheet, sal_True );
- DBG_ASSERT( pSheet, "ImplSdPPTImport::ApplyTextObj -> could not get stylesheet for titleobject (SJ)" );
- }
- else
- {
- pSheet = pPage->GetStyleSheetForPresObj( PRESOBJ_NOTES );
- DBG_ASSERT( pSheet, "ImplSdPPTImport::ApplyTextObj -> could not get stylesheet for notesobj (SJ)" );
- if ( pSheet )
- ((SdrAttrObj*)pText)->SdrAttrObj::NbcSetStyleSheet( pSheet, sal_True );
- }
- }
- break;
- case TSS_TYPE_UNUSED :
- case TSS_TYPE_TEXT_IN_SHAPE :
- {
- switch( ePresKind )
- {
- case PRESOBJ_DATETIME :
- case PRESOBJ_SLIDENUMBER :
- case PRESOBJ_FOOTER :
- case PRESOBJ_HEADER :
- pSheet = (SfxStyleSheet*)mpDoc->GetStyleSheetPool()->Find( String(SdResId( STR_PSEUDOSHEET_BACKGROUNDOBJECTS )), SD_STYLE_FAMILY_PSEUDO );
- break;
- default :
- pSheet = (SfxStyleSheet*)mpDoc->GetStyleSheetPool()->Find( String(SdResId( STR_STANDARD_STYLESHEET_NAME )), SD_STYLE_FAMILY_GRAPHICS );
- }
- }
- break;
- }
- pText = (SdrTextObj*)SdrPowerPointImport::ApplyTextObj( pTextObj, pText, pPage, pSheet, ppStyleSheetAry );
- if ( pPlaceHolder && pPlaceHolder->nPlaceholderId )
- {
- if ( eAktPageKind == PPT_MASTERPAGE )
- {
- sal_Bool bCreatePlaceHolder = ( pTextObj->GetInstance() != TSS_TYPE_SUBTITLE ) && ( pTextObj->GetInstance() != TSS_TYPE_UNUSED );
- sal_Bool bIsHeaderFooter = ( ePresKind == PRESOBJ_HEADER) || (ePresKind == PRESOBJ_FOOTER)
- || (ePresKind == PRESOBJ_DATETIME) || (ePresKind == PRESOBJ_SLIDENUMBER);
- if ( bCreatePlaceHolder && ( pTextObj->GetInstance() == TSS_TYPE_TEXT_IN_SHAPE ) )
- bCreatePlaceHolder = bIsHeaderFooter;
- if ( bCreatePlaceHolder )
- {
- if ( !bIsHeaderFooter )
- {
- pText->SetNotVisibleAsMaster( sal_True );
- pText->SetEmptyPresObj( sal_True );
- }
- pText->SetUserCall( pPage );
- pPage->InsertPresObj( pText, ePresKind );
- SdrOutliner* pOutl = NULL;
- if ( pTextObj->GetInstance() == TSS_TYPE_NOTES )
- pOutl = GetDrawOutliner( pText );
- if ( aPresentationText.Len() )
- pPage->SetObjText( (SdrTextObj*)pText, pOutl, ePresKind, aPresentationText );
-
- if ( pPage->GetPageKind() != PK_NOTES )
- {
- SfxStyleSheet* pSheet2( pPage->GetStyleSheetForPresObj( ePresKind ) );
- if ( pSheet2 )
- {
- SfxItemSet& rItemSet = pSheet2->GetItemSet();
- rItemSet.Put( (SdrTextLeftDistItem&)pText->GetMergedItem( SDRATTR_TEXT_LEFTDIST ) );
- rItemSet.Put( (SdrTextRightDistItem&)pText->GetMergedItem( SDRATTR_TEXT_RIGHTDIST ) );
- rItemSet.Put( (SdrTextUpperDistItem&)pText->GetMergedItem( SDRATTR_TEXT_UPPERDIST ) );
- rItemSet.Put( (SdrTextLowerDistItem&)pText->GetMergedItem( SDRATTR_TEXT_LOWERDIST ) );
- rItemSet.Put( (SdrTextVertAdjustItem&)pText->GetMergedItem( SDRATTR_TEXT_VERTADJUST ) );
- rItemSet.Put( (SdrTextHorzAdjustItem&)pText->GetMergedItem( SDRATTR_TEXT_HORZADJUST ) );
- }
- pText->NbcSetStyleSheet( pSheet2, sal_False );
- }
-
- SfxItemSet aTempAttr( mpDoc->GetPool() );
- SdrTextMinFrameHeightItem aMinHeight( pText->GetLogicRect().GetSize().Height() );
- aTempAttr.Put( aMinHeight );
- SdrTextAutoGrowHeightItem aAutoGrowHeight( sal_False );
- aTempAttr.Put( aAutoGrowHeight );
- pText->SetMergedItemSet(aTempAttr);
- }
- else
- {
- pRet = NULL;
- }
- }
- else
- {
- const PptSlideLayoutAtom* pSlideLayout = GetSlideLayoutAtom();
- if ( pSlideLayout || ( eAktPageKind == PPT_NOTEPAGE ) )
- {
- sal_Int16 nPlaceholderId = pPlaceHolder->nPlaceholderId;
- sal_uInt16 i = 0;
- if ( eAktPageKind == PPT_SLIDEPAGE )
- {
- for ( ; i < 8; i++ )
- {
- if ( pSlideLayout->aPlaceholderId[ i ] == nPlaceholderId )
- break;
- }
- }
- if ( i < 8 )
- {
- PresObjKind ePresObjKind = PRESOBJ_NONE;
- sal_Bool bEmptyPresObj = sal_True;
- sal_Bool bVertical = sal_False;
- if ( ( pTextObj->GetShapeType() == mso_sptRectangle ) || ( pTextObj->GetShapeType() == mso_sptTextBox ) )
- {
- if ( pTextObj->Count() )
- bEmptyPresObj = sal_False;
- switch ( nPlaceholderId )
- {
- case PPT_PLACEHOLDER_NOTESBODY : ePresObjKind = PRESOBJ_NOTES; break;
- case PPT_PLACEHOLDER_VERTICALTEXTTITLE :
- bVertical = sal_True; // PASSTHROUGH !!!
- case PPT_PLACEHOLDER_TITLE : ePresObjKind = PRESOBJ_TITLE; break;
- case PPT_PLACEHOLDER_VERTICALTEXTBODY :
- bVertical = sal_True; // PASSTHROUGH !!!
- case PPT_PLACEHOLDER_BODY : ePresObjKind = PRESOBJ_OUTLINE; break;
- case PPT_PLACEHOLDER_CENTEREDTITLE : ePresObjKind = PRESOBJ_TITLE; break;
- case PPT_PLACEHOLDER_SUBTITLE : ePresObjKind = PRESOBJ_TEXT; break; // PRESOBJ_OUTLINE
-
- default :
- {
- if ( !pTextObj->Count() )
- {
- switch ( nPlaceholderId )
- {
- case PPT_PLACEHOLDER_MEDIACLIP :
- case PPT_PLACEHOLDER_OBJECT : ePresObjKind = PRESOBJ_OBJECT; break;
- case PPT_PLACEHOLDER_GRAPH : ePresObjKind = PRESOBJ_CHART; break;
- case PPT_PLACEHOLDER_TABLE : ePresObjKind = PRESOBJ_TABLE; break;
- case PPT_PLACEHOLDER_CLIPART : ePresObjKind = PRESOBJ_GRAPHIC; break;
- case PPT_PLACEHOLDER_ORGANISZATIONCHART : ePresObjKind = PRESOBJ_ORGCHART; break;
- }
- }
- };
- }
- }
- else if ( pTextObj->GetShapeType() == mso_sptPictureFrame )
- {
- if ( !pTextObj->Count() && pObj->ISA( SdrGrafObj ) )
- {
- bEmptyPresObj = sal_False;
- switch ( nPlaceholderId )
- {
- case PPT_PLACEHOLDER_MEDIACLIP :
- case PPT_PLACEHOLDER_OBJECT : ePresObjKind = PRESOBJ_OBJECT; break;
- case PPT_PLACEHOLDER_GRAPH : ePresObjKind = PRESOBJ_CHART; break;
- case PPT_PLACEHOLDER_TABLE : ePresObjKind = PRESOBJ_CALC; break;
- case PPT_PLACEHOLDER_CLIPART : ePresObjKind = PRESOBJ_GRAPHIC; break;
- case PPT_PLACEHOLDER_ORGANISZATIONCHART : ePresObjKind = PRESOBJ_ORGCHART; break;
- }
- }
- }
- if ( ePresObjKind != PRESOBJ_NONE )
- {
- if ( !bEmptyPresObj )
- {
- pPage->InsertPresObj( pRet, ePresObjKind );
- }
- else
- {
- SdrObject* pPresObj = pPage->CreatePresObj( ePresObjKind, bVertical, pText->GetLogicRect(), sal_True );
- pPresObj->SetUserCall( pPage );
-
- SfxItemSet aSet( pSdrModel->GetItemPool() );
- ApplyAttributes( rStCtrl, aSet );
- pPresObj->SetMergedItemSet(aSet);
-
- if ( ( eAktPageKind != PPT_NOTEPAGE ) && ( pSlideLayout->aPlacementId[ i ] != (sal_uLong)-1 ) )
- {
- SdrObject* pTitleObj = ((SdPage&)pPage->TRG_GetMasterPage()).GetPresObj( PRESOBJ_TITLE );
- SdrObject* pOutlineObj = ((SdPage&)pPage->TRG_GetMasterPage()).GetPresObj( PRESOBJ_OUTLINE );
-
- Rectangle aTitleRect;
- Rectangle aOutlineRect;
- Size aOutlineSize;
-
- if ( pTitleObj )
- aTitleRect = pTitleObj->GetLogicRect();
- if ( pOutlineObj )
- {
- aOutlineRect = pOutlineObj->GetLogicRect();
- aOutlineSize = aOutlineRect.GetSize();
- }
- Rectangle aLogicRect( pPresObj->GetLogicRect() );
- Size aLogicSize( aLogicRect.GetSize() );
-
- switch ( pSlideLayout->aPlacementId[ i ] )
- {
- case 0 : // Lage im Titelbereich
- {
- if ( aLogicRect != aTitleRect )
- pPresObj->SetUserCall( NULL );
- }
- break;
-
- case 1:
- {
- if ( pSlideLayout->eLayout == PPT_LAYOUT_TITLEANDBODYSLIDE )
- { // Lage im Outlinebereich
- if ( aLogicRect != aOutlineRect )
- pPresObj->SetUserCall( NULL );
- }
- else if ( pSlideLayout->eLayout == PPT_LAYOUT_2COLUMNSANDTITLE )
- { // Lage im Outlinebereich links
- if (Abs(aLogicRect.Left() - aOutlineRect.Left()) > MAX_USER_MOVE ||
- Abs(aLogicRect.Top() - aOutlineRect.Top()) > MAX_USER_MOVE ||
- Abs(aLogicRect.Bottom() - aOutlineRect.Bottom()) > MAX_USER_MOVE ||
- aLogicSize.Width() / aOutlineSize.Width() < 0.48 ||
- aLogicSize.Width() / aOutlineSize.Width() > 0.5)
- {
- pPresObj->SetUserCall(NULL);
- }
- }
- else if ( pSlideLayout->eLayout == PPT_LAYOUT_2ROWSANDTITLE )
- { // Lage im Outlinebereich oben
- if (Abs(aLogicRect.Left() - aOutlineRect.Left()) > MAX_USER_MOVE ||
- Abs(aLogicRect.Top() - aOutlineRect.Top()) > MAX_USER_MOVE ||
- Abs(aLogicRect.Right() - aOutlineRect.Right()) > MAX_USER_MOVE)
- {
- pPresObj->SetUserCall( NULL );
- }
- }
- else if (Abs(aLogicRect.Left() - aOutlineRect.Left()) > MAX_USER_MOVE ||
- Abs(aLogicRect.Top() - aOutlineRect.Top()) > MAX_USER_MOVE)
- { // Lage im Outlinebereich links oben
- pPresObj->SetUserCall( NULL );
- }
- }
- break;
-
- case 2:
- {
- if ( pSlideLayout->eLayout == PPT_LAYOUT_2COLUMNSANDTITLE )
- { // Lage im Outlinebereich rechts
- if (Abs(aLogicRect.Right() - aOutlineRect.Right()) > MAX_USER_MOVE ||
- Abs(aLogicRect.Top() - aOutlineRect.Top()) > MAX_USER_MOVE ||
- Abs(aLogicRect.Bottom() - aOutlineRect.Bottom()) > MAX_USER_MOVE ||
- aLogicSize.Width() / aOutlineSize.Width() < 0.48 ||
- aLogicSize.Width() / aOutlineSize.Width() > 0.5)
- {
- pPresObj->SetUserCall( NULL );
- }
- }
- else if ( pSlideLayout->eLayout == PPT_LAYOUT_2ROWSANDTITLE )
- { // Lage im Outlinebereich unten
- if (Abs(aLogicRect.Left() - aOutlineRect.Left()) > MAX_USER_MOVE ||
- Abs(aLogicRect.Bottom() - aOutlineRect.Bottom()) > MAX_USER_MOVE ||
- Abs(aLogicRect.Right() - aOutlineRect.Right()) > MAX_USER_MOVE)
- {
- pPresObj->SetUserCall( NULL );
- }
- }
- else if (Abs(aLogicRect.Right() - aOutlineRect.Right()) > MAX_USER_MOVE ||
- Abs(aLogicRect.Top() - aOutlineRect.Top()) > MAX_USER_MOVE)
- { // Lage im Outlinebereich rechts oben
- pPresObj->SetUserCall(NULL);
- }
- }
- break;
-
- case 3:
- { // Lage im Outlinebereich links unten
- if (Abs(aLogicRect.Left() - aOutlineRect.Left()) > MAX_USER_MOVE ||
- Abs(aLogicRect.Bottom() - aOutlineRect.Bottom()) > MAX_USER_MOVE)
- {
- pPresObj->SetUserCall( NULL );
- }
- }
- break;
-
- case 4:
- { // Lage im Outlinebereich rechts unten
- if (Abs(aLogicRect.Right() - aOutlineRect.Right()) > MAX_USER_MOVE ||
- Abs(aLogicRect.Bottom() - aOutlineRect.Bottom()) > MAX_USER_MOVE)
- {
- pObj->SetUserCall( NULL );
- }
- }
- break;
- }
- }
- pRet = NULL; // return zero cause this obj was already inserted by CreatePresObj
- }
- }
- else if ( !pTextObj->Count() )
- pRet = NULL;
- }
- }
- }
- }
- if ( pRet != pText )
- {
- SdrObject* pFree( pText );
- SdrObject::Free( pFree );
- }
- return pRet;
-}
-
-SdrObject* ImplSdPPTImport::ProcessObj( SvStream& rSt, DffObjData& rObjData, void* pData, Rectangle& rTextRect, SdrObject* pRet )
-{
- SdrObject* pObj = SdrPowerPointImport::ProcessObj( rSt, rObjData, pData, rTextRect, pRet );
-
- // Animationseffekte des Objektes lesen
- if ( pObj )
- {
- // further setup placeholder objects
- if( pObj->ISA(SdrPageObj) && pData )
- {
- const ProcessData* pProcessData=(const ProcessData*)pData;
- if( pProcessData->pPage )
- pProcessData->pPage->InsertPresObj( pObj, PRESOBJ_PAGE );
- }
-
- sal_Bool bInhabitanceChecked = sal_False;
- sal_Bool bAnimationInfoFound = sal_False;
- DffRecordHeader aMasterShapeHd;
-
- if ( maShapeRecords.SeekToContent( rSt, DFF_msofbtClientData, SEEK_FROM_CURRENT_AND_RESTART ) )
- {
- DffRecordHeader& rHdClientData = *maShapeRecords.Current();
- while( sal_True )
- {
- sal_uInt32 nClientDataLen = rHdClientData.GetRecEndFilePos();
- DffRecordHeader aHd;
- do
- {
- rSt >> aHd;
- sal_uInt32 nHdRecEnd = aHd.GetRecEndFilePos();
- switch ( aHd.nRecType )
- {
- case PPT_PST_AnimationInfo :
- {
- DffRecordHeader aHdAnimInfoAtom;
- if ( SeekToRec( rSt, PPT_PST_AnimationInfoAtom, nHdRecEnd, &aHdAnimInfoAtom ) )
- {
- // read data from stream
- Ppt97AnimationPtr pAnimation( new Ppt97Animation( rSt ) );
- // store animation informations
- if( pAnimation->HasEffect() )
- {
- // translate color to RGB
- pAnimation->SetDimColor( MSO_CLR_ToColor(pAnimation->GetDimColor()).GetColor() );
- // translate sound bits to file url
- if( pAnimation->HasSoundEffect() )
- pAnimation->SetSoundFileUrl( ReadSound( pAnimation->GetSoundRef() ) );
-
- bool bDontAnimateInvisibleShape = false;
- {
- SdrTextObj* pTextObj = dynamic_cast<SdrTextObj*>(pObj);
-
- if( pTextObj && pTextObj->HasText() &&
- !pObj->ISA( SdrObjGroup ) &&
- pAnimation->HasAnimateAssociatedShape() )
- {
- const SfxItemSet& rObjItemSet = pObj->GetMergedItemSet();
-
- XFillStyle eFillStyle = ((XFillStyleItem&)(rObjItemSet.Get(XATTR_FILLSTYLE))).GetValue();
- XLineStyle eLineStyle = ((XLineStyleItem&)(rObjItemSet.Get(XATTR_LINESTYLE))).GetValue();
-
- if ( ( eFillStyle == XFILL_NONE ) && ( eLineStyle == XLINE_NONE ) )
- bDontAnimateInvisibleShape = true;
- }
- }
- if( bDontAnimateInvisibleShape )
- pAnimation->SetAnimateAssociatedShape(false);
-
- //maybe some actions necessary to ensure that animations on master pages are played before animations on normal pages
- ///mabe todo in future: bool bIsEffectOnMasterPage = !bInhabitanceChecked;?
-
- maAnimations[pObj] = pAnimation;
-
- bAnimationInfoFound = sal_True;
- }
- }
- }
- break;
- case PPT_PST_InteractiveInfo:
- {
- sal_uInt32 nFilePosMerk2 = rSt.Tell();
- String aMacroName;
-
- if(SeekToRec( rSt, PPT_PST_CString, nHdRecEnd, NULL, 0 ) )
- ReadString(aMacroName);
-
- rSt.Seek( nFilePosMerk2 );
- DffRecordHeader aHdInteractiveInfoAtom;
- if ( SeekToRec( rSt, PPT_PST_InteractiveInfoAtom, nHdRecEnd, &aHdInteractiveInfoAtom ) )
- {
- PptInteractiveInfoAtom aInteractiveInfoAtom;
- rSt >> aInteractiveInfoAtom;
-
- // interactive object
- SdAnimationInfo* pInfo = SdDrawDocument::GetShapeUserData(*pObj, true);
-
- ( (ImplSdPPTImport*) this )->FillSdAnimationInfo( pInfo, &aInteractiveInfoAtom, aMacroName );
- if ( aInteractiveInfoAtom.nAction == 6 ) // Sj -> media action
- {
- rHdClientData.SeekToContent( rStCtrl );
- DffRecordHeader aObjRefAtomHd;
- if ( SeekToRec( rSt, PPT_PST_ExObjRefAtom, nHdRecEnd, &aObjRefAtomHd ) )
- {
- sal_uInt32 nRef;
- rSt >> nRef;
- String aMediaURL( ReadMedia( nRef ) );
- if ( !aMediaURL.Len() )
- aMediaURL = ReadSound( nRef );
- if ( aMediaURL.Len() )
- {
- SdrMediaObj* pMediaObj = new SdrMediaObj( pObj->GetSnapRect() );
- pMediaObj->SetModel( pObj->GetModel() );
- pMediaObj->SetMergedItemSet( pObj->GetMergedItemSet() );
-
- //--remove object from maAnimations list and add the new object instead
- Ppt97AnimationPtr pAnimation;
- {
- tAnimationMap::iterator aFound = maAnimations.find( pObj );
- if( aFound != maAnimations.end() )
- {
- pAnimation = (*aFound).second;
- maAnimations.erase(aFound);
- }
- maAnimations[pMediaObj] = pAnimation;
- }
- //--
-
- SdrObject::Free( pObj ), pObj = pMediaObj; // SJ: hoping that pObj is not inserted in any list
- pMediaObj->setURL( aMediaURL );
- }
- }
- }
- }
- }
- break;
- }
- aHd.SeekToEndOfRecord( rSt );
- }
- while( ( rSt.GetError() == 0 ) && ( rSt.Tell() < nClientDataLen ) );
-
- if ( bInhabitanceChecked || bAnimationInfoFound )
- break;
- bInhabitanceChecked = sal_True;
- if ( ! ( IsProperty( DFF_Prop_hspMaster ) && SeekToShape( rSt, pData, GetPropertyValue( DFF_Prop_hspMaster ) ) ) )
- break;
- rSt >> aMasterShapeHd;
- if ( !SeekToRec( rSt, DFF_msofbtClientData, aMasterShapeHd.GetRecEndFilePos(), &aMasterShapeHd ) )
- break;
- aMasterShapeHd.SeekToContent( rSt );
- rHdClientData = aMasterShapeHd;
- }
- }
- }
- return pObj;
-}
-
-
-bool
-ImplSdPPTImport::ReadFormControl( uno::Reference< io::XInputStream >& xIs, com::sun::star::uno::Reference< com::sun::star::form::XFormComponent > & rFormComp ) const
-{
- ::oox::ole::OleFormCtrlImportHelper maFormCtrlHelper( xIs, lcl_getUnoCtx(), mpDoc->GetDocSh()->GetModel() );
- return maFormCtrlHelper.importFormControlFromObjStorage( rFormComp );
-}
-
-// ---------------------
-// - exported function -
-// ---------------------
-
-extern "C" SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL ImportPPT( const ::rtl::OUString& rConfigPath,
- uno::Sequence< beans::PropertyValue >* pConfigData,
- SdDrawDocument* pDocument, SvStream& rDocStream, SvStorage& rStorage, SfxMedium& rMedium )
-{
- sal_Bool bRet = sal_False;
-
- MSFilterTracer aTracer( rConfigPath, pConfigData );
- aTracer.StartTracing();
-
- SdPPTImport* pImport = new SdPPTImport( pDocument, rDocStream, rStorage, rMedium, &aTracer );
- bRet = pImport->Import();
-
- aTracer.EndTracing();
- delete pImport;
-
- return bRet;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */