25#include <rtl/ustring.hxx>
29#include <com/sun/star/container/XIndexContainer.hpp>
30#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
31#include <com/sun/star/drawing/FillStyle.hpp>
32#include <com/sun/star/drawing/XDrawPage.hpp>
33#include <com/sun/star/frame/XModel.hpp>
34#include <com/sun/star/office/XAnnotation.hpp>
35#include <com/sun/star/office/XAnnotationAccess.hpp>
36#include <com/sun/star/office/XAnnotationEnumeration.hpp>
37#include <com/sun/star/presentation/AnimationSpeed.hpp>
38#include <com/sun/star/presentation/XPresentationSupplier.hpp>
39#include <com/sun/star/presentation/XCustomPresentationSupplier.hpp>
40#include <com/sun/star/geometry/RealPoint2D.hpp>
41#include <com/sun/star/util/DateTime.hpp>
42#include <com/sun/star/task/XStatusIndicator.hpp>
64using ::com::sun::star::beans::XPropertySet;
69 css::uno::Reference< css::frame::XModel >
const & rXModel,
70 css::uno::Reference< css::task::XStatusIndicator >
const & rXStatInd,
73 mnCnvrtFlags ( nCnvrtFlags ),
76 mnLatestStatValue ( 0 ),
78 mbFontIndependentLineSpacing( false ),
80 mrStg (
std::move( xSvStorage )),
88 mnShapeMasterTitle ( 0 ),
89 mnShapeMasterBody ( 0 )
106 mrStg->SetClass( aGName, SotClipboardFormatId::NONE,
"MS PowerPoint 97" );
111 mpStrm =
mrStg->OpenSotStream(
"PowerPoint Document" );
118 auto aIter = std::find_if(rMediaData.begin(), rMediaData.end(),
119 [](
const css::beans::PropertyValue& rProp) { return rProp.Name ==
"BaseURI"; });
120 if (aIter != rMediaData.end())
155 bool bHasBackground, Reference< XPropertySet >
const & aXBackgroundPropSet )
163 mpStrm->WriteInt32(
static_cast<sal_Int32
>(rLayout.
nLayout) );
165 mpStrm->WriteUInt32( nMasterNum | 0x80000000 )
166 .WriteUInt32( nPageNum + 0x100 )
167 .WriteUInt16( nMode )
172 css::presentation::FadeEffect eFe = css::presentation::FadeEffect_NONE;
178 switch ( *o3tl::doAccess<sal_Int32>(aAny) )
194 sal_uInt32 nSoundRef = 0;
195 bool bIsSound =
false;
196 bool bStopSound =
false;
197 bool bLoopSound =
false;
202 if ( aAny >>= aSoundURL )
213 bool bNeedsSSSlideInfoAtom = !
bVisible
217 || ( eFe != css::presentation::FadeEffect_NONE );
218 if ( bNeedsSSSlideInfoAtom )
222 sal_uInt16 nBuildFlags = 1;
223 sal_Int32 nSlideTime = 0;
228 css::presentation::AnimationSpeed aAs;
229 double fTransitionDuration = -1.0;
230 aAny >>= fTransitionDuration;
232 if (fTransitionDuration >= 0)
234 if (fTransitionDuration <= 0.5)
236 aAs = css::presentation::AnimationSpeed::AnimationSpeed_FAST;
238 else if (fTransitionDuration >= 1.0)
240 aAs = css::presentation::AnimationSpeed::AnimationSpeed_SLOW;
244 aAs = css::presentation::AnimationSpeed::AnimationSpeed_MEDIUM;
248 aAs = css::presentation::AnimationSpeed::AnimationSpeed_MEDIUM;
254 && ( aAny >>= nTT ) )
258 && ( aAny >>= nTST ) )
259 nTransitionType =
GetTransition( nTT, nTST, eFe, 0, nDirection );
262 if ( !nTransitionType )
265 nBuildFlags |= 0x400;
276 nSlideTime = *o3tl::doAccess<sal_Int32>(aAny) << 10;
279 mpStrm->WriteInt32( nSlideTime )
280 .WriteUInt32( nSoundRef )
281 .WriteUChar( nDirection )
282 .WriteUChar( nTransitionType )
283 .WriteUInt16( nBuildFlags )
284 .WriteUChar( nSpeed )
285 .WriteUChar( 0 ).WriteUChar( 0 ).WriteUChar( 0 );
297 if ( bHasBackground )
303 ShapeFlag::Background | ShapeFlag::HaveShapeProperty );
320 mpStrm->WriteUInt32( 0xffffff ).WriteUInt32( 0x000000 ).WriteUInt32( 0x808080 ).WriteUInt32( 0x000000 ).WriteUInt32( 0x99cc00 ).WriteUInt32( 0xcc3333 ).WriteUInt32( 0xffcccc ).WriteUInt32( 0xb2b2b2 );
327 sal_uInt32 nmsofbtAnimGroupSize = amsofbtAnimGroup.
Tell();
328 if ( nmsofbtAnimGroupSize )
344 if ( aBinaryTagData10Atom.
Tell() )
350 mpStrm->WriteUInt32( 0x5f005f )
351 .WriteUInt32( 0x50005f )
352 .WriteUInt32( 0x540050 )
354 .WriteUInt16( 0x30 );
366 if (!aXBackgroundPropSet)
372 .WriteUChar( 1 ).WriteUChar( 2 ).WriteUChar( 0 ).WriteUChar( 0 ).WriteUChar( 0 ).WriteUChar( 0 ).WriteUChar( 0 ).WriteUChar( 0 )
379 mpStrm->WriteUInt32( 0xffffff ).WriteUInt32( 0x000000 ).WriteUInt32( 0x808080 ).WriteUInt32( 0x000000 ).WriteUInt32( 0x99cc00 ).WriteUInt32( 0xcc3333 ).WriteUInt32( 0xffcccc ).WriteUInt32( 0xb2b2b2 );
381 mpStrm->WriteUInt32( 0xff0000 ).WriteUInt32( 0xffffff ).WriteUInt32( 0x000000 ).WriteUInt32( 0x00ffff ).WriteUInt32( 0x0099ff ).WriteUInt32( 0xffff00 ).WriteUInt32( 0x0000ff ).WriteUInt32( 0x969696 );
383 mpStrm->WriteUInt32( 0xccffff ).WriteUInt32( 0x000000 ).WriteUInt32( 0x336666 ).WriteUInt32( 0x008080 ).WriteUInt32( 0x339933 ).WriteUInt32( 0x000080 ).WriteUInt32( 0xcc3300 ).WriteUInt32( 0x66ccff );
385 mpStrm->WriteUInt32( 0xffffff ).WriteUInt32( 0x000000 ).WriteUInt32( 0x333333 ).WriteUInt32( 0x000000 ).WriteUInt32( 0xdddddd ).WriteUInt32( 0x808080 ).WriteUInt32( 0x4d4d4d ).WriteUInt32( 0xeaeaea );
387 mpStrm->WriteUInt32( 0xffffff ).WriteUInt32( 0x000000 ).WriteUInt32( 0x808080 ).WriteUInt32( 0x000000 ).WriteUInt32( 0x66ccff ).WriteUInt32( 0xff0000 ).WriteUInt32( 0xcc00cc ).WriteUInt32( 0xc0c0c0 );
389 mpStrm->WriteUInt32( 0xffffff ).WriteUInt32( 0x000000 ).WriteUInt32( 0x808080 ).WriteUInt32( 0x000000 ).WriteUInt32( 0xc0c0c0 ).WriteUInt32( 0xff6600 ).WriteUInt32( 0x0000ff ).WriteUInt32( 0x009900 );
391 mpStrm->WriteUInt32( 0xffffff ).WriteUInt32( 0x000000 ).WriteUInt32( 0x808080 ).WriteUInt32( 0x000000 ).WriteUInt32( 0xff9933 ).WriteUInt32( 0xccff99 ).WriteUInt32( 0xcc00cc ).WriteUInt32( 0xb2b2b2 );
406 bool bSimpleText =
false;
410 for ( sal_uInt16 nLev = 0; nLev < 5; nLev++ )
415 mpStrm->WriteUInt16( nLev );
440 mpStrm->WriteUInt32( 0xffffff ).WriteUInt32( 0x000000 ).WriteUInt32( 0x808080 ).WriteUInt32( 0x000000 ).WriteUInt32( 0x99cc00 ).WriteUInt32( 0xcc3333 ).WriteUInt32( 0xffcccc ).WriteUInt32( 0xb2b2b2 );
442 if ( aBuExMasterStream.Tell() )
467 char pUserName[] =
"Current User";
468 sal_uInt32 nLenOfUserName = strlen( pUserName );
469 sal_uInt32 nSizeOfRecord = 0x14 + ( ( nLenOfUserName + 4 ) & ~ 3 );
473 .WriteUInt32( 0xe391c05f );
477 .WriteUInt16( nLenOfUserName )
478 .WriteUInt16( 0x3f4 )
482 pUserName[ nLenOfUserName ] = 8;
484 for ( sal_uInt32
i = 0x15 + nLenOfUserName;
i < nSizeOfRecord;
i++ )
494 uno::Reference<document::XDocumentPropertiesSupplier> xDPS(
495 mXModel, uno::UNO_QUERY_THROW);
496 uno::Reference<document::XDocumentProperties> xDocProps(
497 xDPS->getDocumentProperties());
503 static const sal_Int8 aGuid[ 0x52 ] =
505 0x4e, 0x00, 0x00, 0x00,
506 '{',0,
'D',0,
'B',0,
'1',0,
'A',0,
'C',0,
'9',0,
'6',0,
'4',0,
'-',0,
507 'E',0,
'3',0,
'9',0,
'C',0,
'-',0,
'1',0,
'1',0,
'D',0,
'2',0,
'-',0,
508 'A',0,
'1',0,
'E',0,
'F',0,
'-',0,
'0',0,
'0',0,
'6',0,
'0',0,
'9',0,
509 '7',0,
'D',0,
'A',0,
'5',0,
'6',0,
'8',0,
'9',0,
'}',0
512 uno::Sequence<sal_Int8> aGuidSeq(aGuid, 0x52);
517 auto nHyperLength =
static_cast<sal_Int32
>(aHyperBlob.
Tell());
520 auto aHyperSeq = comphelper::arrayToSequence<sal_Int8>(pBlob, nHyperLength);
524 uno::Sequence<sal_Int8> aThumbSeq;
527 aThumbSeq = *o3tl::doAccess<uno::Sequence<sal_Int8>>(
mAny);
530 &aThumbSeq, &aGuidSeq, &aHyperSeq);
535 nullptr, &aGuidSeq, &aHyperSeq );
546 .WriteUInt32( nSlideId )
547 .WriteUInt32( nInstance );
548 aBuExOutlineStream.WriteBytes(rSt.
GetData(), rSt.
Tell());
554 if ( !rXPagePropSet.is() )
561 if ( aAny >>= aString )
566 if ( aAny >>= aString )
571 if ( aAny >>= aString )
578 if ( !rXPagePropSet.is() )
586 if ( ( aAny >>= bVal ) && bVal )
591 if ( ( aAny >>= bVal ) && bVal )
596 if ( ( aAny >>= bVal ) && bVal )
601 if ( ( aAny >>= bVal ) && bVal )
606 if ( ( aAny >>= bVal ) && !bVal )
613 sal_Int32 nFormat = *o3tl::doAccess<sal_Int32>(aAny);
616 switch( eDateFormat )
618 case SvxDateFormat::F :
621 case SvxDateFormat::D :
624 case SvxDateFormat::C :
628 case SvxDateFormat::A :
631 switch( eTimeFormat )
633 case SvxTimeFormat::HH24_MM :
636 case SvxTimeFormat::HH12_MM :
639 case SvxTimeFormat::HH24_MM_SS :
642 case SvxTimeFormat::HH12_MM_SS :
653 mpStrm->WriteUInt32( nVal );
666 if ( ( nWidth == 0x1680 ) && ( nHeight == 0x10e0 ) )
668 else if ( ( nWidth == 0x1200 ) && ( nHeight == 0x240 ) )
670 else if ( ( nWidth == 0x1950 ) && ( nHeight == 0x10e0 ) )
672 else if ( ( nWidth == 0x1860 ) && ( nHeight == 0x10e0 ) )
678 mpStrm->WriteUInt32( nWidth )
679 .WriteUInt32( nHeight )
682 .WriteInt32( 1 ).WriteInt32( 2 );
687 .WriteUInt16( nSlideType )
697 mpStrm->WriteUInt32( 0x25000d );
703 mpStrm->WriteUInt32( 0x3d000d );
717 .WriteInt32(
i + 0x100 )
724 css::uno::Reference< css::container::XNamed >
742 .WriteInt32(
i + 0x100 )
747 css::uno::Reference< css::presentation::XPresentationSupplier >
748 aXPresSupplier(
mXModel, css::uno::UNO_QUERY );
749 if ( aXPresSupplier.is() )
751 css::uno::Reference< css::presentation::XPresentation > aXPresentation( aXPresSupplier->getPresentation() );
752 if ( aXPresentation.is() )
754 mXPropSet.set( aXPresentation, css::uno::UNO_QUERY );
757 OUString aCustomShow;
758 sal_uInt32
const nPenColor = 0x1000000;
759 sal_Int32
const nRestartTime = 0x7fffffff;
760 sal_Int16 nStartSlide = 0;
761 sal_Int16 nEndSlide = 0;
762 sal_uInt32 nFlags = 0;
774 aCustomShow = *o3tl::doAccess<OUString>(
mAny);
775 if ( !aCustomShow.isEmpty() )
780 if ( ( nFlags & 8 ) == 0 )
784 auto aSlideName = o3tl::doAccess<OUString>(
mAny);
786 std::vector<OUString>::const_iterator pIter = std::find(
793 nEndSlide =
static_cast<sal_uInt16
>(
mnPages);
822 mpStrm->WriteUInt32( nPenColor ).WriteInt32( nRestartTime ).WriteInt16( nStartSlide ).WriteInt16( nEndSlide );
824 sal_uInt32 nCustomShowNameLen = aCustomShow.getLength();
825 if ( nCustomShowNameLen > 31 )
826 nCustomShowNameLen = 31;
827 if ( nCustomShowNameLen )
829 const sal_Unicode* pCustomShow = aCustomShow.getStr();
830 for (
i = 0;
i < nCustomShowNameLen;
i++ )
832 mpStrm->WriteUInt16( pCustomShow[
i ] );
835 for (
i = nCustomShowNameLen;
i < 32;
i++,
mpStrm->WriteUInt16( 0 ) ) ;
837 mpStrm->WriteUInt32( nFlags );
838 css::uno::Reference< css::presentation::XCustomPresentationSupplier > aXCPSup(
mXModel, css::uno::UNO_QUERY );
841 css::uno::Reference< css::container::XNameContainer > aXCont( aXCPSup->getCustomPresentations() );
844 const css::uno::Sequence< OUString> aNameSeq( aXCont->getElementNames() );
845 if ( aNameSeq.hasElements() )
848 sal_uInt32 nCustomShowIndex = 0;
849 for( OUString
const & customShowName : aNameSeq )
851 if ( !customShowName.isEmpty() )
855 sal_uInt32 nNamedShowLen = customShowName.getLength();
856 if ( nNamedShowLen > 31 )
859 const sal_Unicode* pCustomShowName = customShowName.getStr();
860 for ( sal_uInt32 k = 0; k < nNamedShowLen; ++k )
861 mpStrm->WriteUInt16( pCustomShowName[ k ] );
862 mAny = aXCont->getByName( customShowName );
863 css::uno::Reference< css::container::XIndexContainer > aXIC;
868 sal_Int32 nSlideCount = aXIC->getCount();
869 for ( sal_Int32 j = 0; j < nSlideCount; j++ )
871 mAny = aXIC->getByIndex( j );
872 css::uno::Reference< css::drawing::XDrawPage > aXDrawPage;
873 if (
mAny >>= aXDrawPage )
875 css::uno::Reference< css::container::XNamed > aXName( aXDrawPage, css::uno::UNO_QUERY );
878 OUString aSlideName( aXName->getName() );
879 std::vector<OUString>::const_iterator pIter = std::find(
885 mpStrm->WriteUInt32( nPageNumber + 0x100 );
909 sal_uInt32 nCurrentOfs, nParaOfs, nParaCount = 0;
939 sal_Int32 nUrlLen = rHyperlink.aURL.getLength();
940 const OUString& rUrl = rHyperlink.aURL;
942 sal_uInt32
const nInfo = 7;
947 switch( rHyperlink.nType & 0xff )
953 for ( sal_Int32
i = 0;
i < nUrlLen;
i++ )
966 for (
i = 0;
i < nUrlLen;
i++ )
994 mpStrm->WriteUInt32( 0x80000001 )
1022 mpStrm->WriteUInt32( 0xffffff ).WriteUInt32( 0x000000 ).WriteUInt32( 0x808080 ).WriteUInt32( 0x000000 ).WriteUInt32( 0x99cc00 ).WriteUInt32( 0xcc3333 ).WriteUInt32( 0xffcccc ).WriteUInt32( 0xb2b2b2 );
1029 OUStringBuffer sInitials;
1032 sal_Int32
nLength = rName.getLength();
1037 while(
nLength && (*pStr <=
' ') )
1045 sInitials.append( *pStr );
1050 while(
nLength && (*pStr >
' ') )
1056 return sInitials.makeStringAndClear();
1063 uno::Reference< office::XAnnotationAccess > xAnnotationAccess( xPage, uno::UNO_QUERY_THROW );
1064 uno::Reference< office::XAnnotationEnumeration > xAnnotationEnumeration( xAnnotationAccess->createAnnotationEnumeration() );
1068 while( xAnnotationEnumeration->hasMoreElements() )
1072 uno::Reference< office::XAnnotation > xAnnotation( xAnnotationEnumeration->nextElement() );
1074 geometry::RealPoint2D aRealPoint2D( xAnnotation->getPosition() );
1078 OUString sAuthor( xAnnotation->getAuthor() );
1079 uno::Reference< text::XText > xText( xAnnotation->getTextRange() );
1080 OUString sText( xText->getString() );
1082 util::DateTime aDateTime( xAnnotation->getDateTime() );
1083 if ( !sAuthor.isEmpty() )
1085 if ( !sText.isEmpty() )
1087 if ( !sInitials.isEmpty() )
1090 sal_Int16 nMilliSeconds =
static_cast<sal_Int16
>(::rtl::math::round(
static_cast<double>(aDateTime.NanoSeconds) / 1000000000.0));
1106 catch ( uno::Exception& )
1116 mpStrm->WriteUInt32( nPageNum + 0x100 )
1150 mpStrm->WriteUInt32( 0xffffff ).WriteUInt32( 0x000000 ).WriteUInt32( 0x808080 ).WriteUInt32( 0x000000 ).WriteUInt32( 0x99cc00 ).WriteUInt32( 0xcc3333 ).WriteUInt32( 0xffcccc ).WriteUInt32( 0xb2b2b2 );
1159 sal_uInt32 nFillColor = 0xffffff;
1160 sal_uInt32 nFillBackColor = 0;
1170 css::drawing::FillStyle aFS( css::drawing::FillStyle_NONE );
1176 case css::drawing::FillStyle_GRADIENT :
1185 case css::drawing::FillStyle_BITMAP :
1189 case css::drawing::FillStyle_HATCH :
1193 case css::drawing::FillStyle_SOLID :
1198 nFillBackColor = nFillColor ^ 0xffffff;
1202 case css::drawing::FillStyle_NONE :
1239 for (
const auto& rxExOleObjEntry :
maExOleObj )
1242 std::unique_ptr<SvMemoryStream> pStrm;
1244 switch ( pPtr->
eType )
1249 if (
auto pSdrOle2Obj =
dynamic_cast< SdrOle2Obj*
>(pSdrObj) )
1251 const ::uno::Reference < embed::XEmbeddedObject >& xObj( pSdrOle2Obj->GetObjRef() );
1260 xTempStorage->CopyTo( xCleanStorage.
get() );
1264 xStm->WriteUInt32( 0 )
1273 pStrm = xCleanStorage->CreateMemoryStream();
1285 css::awt::Size aSize( pPtr->
xShape->getSize() );
1289 pStrm = xDest->CreateMemoryStream();
1297 sal_uInt32 npStrmSize = pStrm->Tell();
1298 mpStrm->WriteUInt32( npStrmSize );
1301 ZCodec aZCodec( 0x8000, 0x8000 );
1316#define EPP_LastViewTypeSlideView 1
1318 sal_uInt32
i,
nPos, nOfs, nPersistOfs =
mpStrm->Tell();
1319 sal_uInt32 nPersistEntrys = 0;
1320 mpStrm->WriteUInt32( 0 ).WriteUInt32( 0 ).WriteUInt32( 0 );
1324 mpStrm->WriteUInt32( 0 );
1331 mpStrm->WriteUInt32( nOfs );
1339 mpStrm->WriteUInt32( nOfs );
1348 mpStrm->WriteUInt32( nOfs );
1358 mpStrm->WriteUInt32( nOfs );
1363 for (
const auto& rxExOleObjEntry :
maExOleObj )
1371 sal_uInt32 nOldPos, nPersOfs = nOfs + pPtr->
nOfsA + 16 + 8;
1372 nOldPos =
mpStrm->Tell();
1373 mpStrm->Seek( nPersOfs );
1374 mpStrm->WriteUInt32( nPersistEntrys );
1392 sal_uInt32 nOldPos =
mpStrm->Tell();
1394 mpStrm->WriteUInt32( nPersistEntrys )
1402 mpStrm->Seek( nPersistOfs );
1404 mpStrm->WriteUInt32( ( nPersistEntrys << 20 ) | 1 );
1409 mpStrm->WriteInt32( 0x100 )
1410 .WriteUInt32( 0x03000dbc )
1412 .WriteUInt32( nPersistOfs )
1414 .WriteUInt32( nPersistEntrys )
1416 .WriteInt16( 0x12 );
1421SAL_DLLPUBLIC_EXPORT
bool ExportPPT(
const std::vector< css::beans::PropertyValue >& rMediaData,
1423 css::uno::Reference< css::frame::XModel >
const & rXModel,
1424 css::uno::Reference< css::task::XStatusIndicator >
const & rXStatInd,
1426 sal_uInt32 nCnvrtFlags )
1428 PPTWriter aPPTWriter( rSvStorage, rXModel, rXStatInd, pVBA, nCnvrtFlags );
1430 bool bStatus = aPPTWriter.
IsValid();
1441 if ( xOverhead.
is() && ( xOverhead->GetError() ==
ERRCODE_NONE ) )
1444 if ( xOverhead2.
is() && ( xOverhead2->GetError() ==
ERRCODE_NONE ) )
1449 sal_uInt32 nLen = xTemp->GetSize();
1452 char* pTemp =
new char[ nLen ];
1454 xTemp->ReadBytes(pTemp, nLen);
static sal_uInt32 GetColor(const sal_uInt32 nColor)
bool CreateGraphicProperties(const css::uno::Reference< css::drawing::XShape > &rXShape, const GraphicObject &rGraphicObj)
void AddOpt(sal_uInt16 nPropID, bool bBlib, sal_uInt32 nSizeReduction, SvMemoryStream &rStream)
void CreateGradientProperties(const css::awt::Gradient &rGradient)
bool GetOpt(sal_uInt16 nPropertyID, sal_uInt32 &rPropValue) const
void Commit(SvStream &rSt, sal_uInt16 nVersion=3, sal_uInt16 nRecType=ESCHER_OPT)
void WriteSolver(SvStream &)
std::unique_ptr< PPTExCharSheet > mpCharSheet[PPTEX_STYLESHEETENTRIES]
std::unique_ptr< PPTExParaSheet > mpParaSheet[PPTEX_STYLESHEETENTRIES]
PPTExStyleSheet * mpStyleSheet
bool GetPageByIndex(sal_uInt32 nIndex, PageType)
std::vector< std::unique_ptr< PPTExStyleSheet > > maStyleSheetList
static PHLayout const & GetLayout(const css::uno::Reference< css::beans::XPropertySet > &rXPropSet)
css::awt::Size maPageSize
sal_uInt32 GetMasterIndex(PageType ePageType)
css::uno::Reference< css::beans::XPropertySet > mXPagePropSet
css::uno::Reference< css::task::XStatusIndicator > mXStatusIndicator
void exportPPT(const std::vector< css::beans::PropertyValue > &)
static sal_Int8 GetTransition(sal_Int16 nTransitionType, sal_Int16 nTransitionSubtype, css::presentation::FadeEffect eEffect, sal_Int32 nTransitionFadeColor, sal_uInt8 &nDirection)
sal_uInt32 mnPages
number of Slides ( w/o master pages & notes & handout )
void SetCurrentStyleSheet(sal_uInt32 nPageNum)
css::uno::Reference< css::frame::XModel > mXModel
css::uno::Reference< css::drawing::XDrawPage > mXDrawPage
css::awt::Size maNotesPageSize
css::awt::Size maDestPageSize
std::vector< std::unique_ptr< PPTExOleObjEntry > > maExOleObj
void ImplCreateDocumentSummaryInformation()
sal_uInt32 mnStatMaxValue
virtual void ImplWriteSlideMaster(sal_uInt32 nPageNum, css::uno::Reference< css::beans::XPropertySet > const &aXBackgroundPropSet) override
tools::SvRef< SotStorageStream > mpStrm
sal_uInt32 mnLatestStatValue
std::vector< EPPTHyperlink > maHyperlink
void ImplWritePage(const PHLayout &rLayout, EscherSolverContainer &rSolver, PageType ePageType, bool bMaster, int nPageNumber=0)
sal_uInt32 ImplProgTagContainer(SvStream *pOutStrm, SvMemoryStream *pBinTag=nullptr)
bool ImplCreateCurrentUserStream()
void ImplCreateHyperBlob(SvMemoryStream &rStream)
ppt::ExSoundCollection maSoundCollection
virtual bool ImplCreateDocument() override
std::vector< OUString > maSlideNameList
void ImplWriteExtParaHeader(SvMemoryStream &rSt, sal_uInt32 nRef, sal_uInt32 nInstance, sal_uInt32 nSlideId)
virtual void ImplWriteNotes(sal_uInt32 nPageNum) override
std::unique_ptr< PptEscherEx > mpPptEscherEx
tools::SvRef< SotStorageStream > mpCurUserStrm
static void ImplCreateHeaderFooterStrings(SvStream &rOut, css::uno::Reference< css::beans::XPropertySet > const &rXPagePropSet)
static void WriteCString(SvStream &, std::u16string_view, sal_uInt32 nInstance=0)
virtual void ImplWriteSlide(sal_uInt32 nPageNum, sal_uInt32 nMasterID, sal_uInt16 nMode, bool bHasBackground, css::uno::Reference< css::beans::XPropertySet > const &aXBackgroundPropSet) override
PPTWriter(tools::SvRef< SotStorage > xSvStorage, css::uno::Reference< css::frame::XModel > const &rModel, css::uno::Reference< css::task::XStatusIndicator > const &rStatInd, SvMemoryStream *pVBA, sal_uInt32 nCnvrtFlags)
virtual void exportPPTPre(const std::vector< css::beans::PropertyValue > &) override
virtual ~PPTWriter() override
void ImplWriteBackground(css::uno::Reference< css::beans::XPropertySet > const &rXBackgroundPropSet)
std::unique_ptr< SvMemoryStream > mpExEmbed
tools::SvRef< SotStorageStream > mpPicStrm
virtual bool ImplCreateMainNotes() override
virtual void exportPPTPost() override
tools::SvRef< SotStorage > mrStg
void ImplWriteAtomEnding()
void ImplCreateHeaderFooters(css::uno::Reference< css::beans::XPropertySet > const &rXPagePropSet)
constexpr tools::Long Y() const
constexpr tools::Long X() const
css::uno::Reference< css::beans::XPropertySet > mXPropSet
static bool GetPropertyValue(css::uno::Any &rAny, const css::uno::Reference< css::beans::XPropertySet > &, const OUString &rPropertyName, bool bTestPropertyAvailability=false)
bool ImplGetPropertyValue(const OUString &rString)
static SdrObject * getSdrObjectFromXShape(const css::uno::Reference< css::uno::XInterface > &xInt)
virtual sal_uInt64 TellEnd() override
void ObjectOwnsMemory(bool bOwn)
SvStream & WriteInt32(sal_Int32 nInt32)
std::size_t WriteBytes(const void *pData, std::size_t nSize)
SvStream & WriteInt16(sal_Int16 nInt16)
SvStream & WriteUInt16(sal_uInt16 nUInt16)
SvStream & WriteUInt32(sal_uInt32 nUInt32)
SvStream & ReadUInt32(sal_uInt32 &rUInt32)
sal_uInt64 Seek(sal_uInt64 nPos)
ErrCode SaveOrDelMSVBAStorage(bool bSaveInto, const OUString &rStorageName)
void ExportOLEObject(svt::EmbeddedObjectRef const &rObj, SotStorage &rDestStg)
tools::Long EndCompression()
void BeginCompression(int nCompressLevel=ZCODEC_DEFAULT_COMPRESSION, bool gzLib=false)
void Compress(SvStream &rIStm, SvStream &rOStm)
static bool WriteOCXStream(const css::uno::Reference< css::frame::XModel > &rxModel, tools::SvRef< SotStorage > const &rSrc1, const css::uno::Reference< css::awt::XControlModel > &rControlModel, const css::awt::Size &rSize, OUString &rName)
void doexport(const css::uno::Reference< css::drawing::XDrawPage > &xPage, SvStream &rStrm)
sal_uInt32 GetId(const OUString &)
SAL_DLLPUBLIC_EXPORT bool SaveVBA(SfxObjectShell &rDocShell, SvMemoryStream *&pBas)
static void ImplExportComments(const uno::Reference< drawing::XDrawPage > &xPage, SvMemoryStream &rBinaryTagData10Atom)
static OUString getInitials(const OUString &rName)
SAL_DLLPUBLIC_EXPORT bool ExportPPT(const std::vector< css::beans::PropertyValue > &rMediaData, tools::SvRef< SotStorage > const &rSvStorage, css::uno::Reference< css::frame::XModel > const &rXModel, css::uno::Reference< css::task::XStatusIndicator > const &rXStatInd, SvMemoryStream *pVBA, sal_uInt32 nCnvrtFlags)
#define EPP_LastViewTypeSlideView
#define EPP_Persist_MainNotes
#define EPP_Persist_VBAInfoAtom
#define EPP_MAINSLIDE_PERSIST_KEY
#define EPP_MAINNOTESMASTER_PERSIST_KEY
#define EPP_Persist_Slide
#define EPP_MAINNOTES_PERSIST_KEY
#define EPP_Persist_ExObj
#define EPP_Persist_Notes
#define EPP_Persist_MainMaster
#define EPP_Persist_Document
#define EPP_MAINMASTER_PERSIST_KEY
#define EPP_SlidePersistAtom
#define EPP_PersistPtrIncrementalBlock
#define EPP_TEXTTYPE_CenterBody
#define EPP_SSSlideInfoAtom
#define EPP_NamedShowSlides
#define EPP_SLIDESIZE_TYPEONSCREEN
#define EPP_HeadersFooters
#define EPP_SLIDESIZE_TYPEBANNER
#define EPP_TEXTTYPE_Notes
#define EPP_TxMasterStyleAtom
#define EPP_TEXTTYPE_QuarterBody
#define EPP_PST_ExtendedParagraphHeaderAtom
#define EPP_TEXTTYPE_Title
#define EPP_CurrentUserAtom
#define EPP_SLIDESIZE_TYPEA4PAPER
#define EPP_SSDocInfoAtom
#define EPP_CommentAtom10
#define EPP_TEXTTYPE_notUsed
#define EPP_HeadersFootersAtom
#define EPP_SlideListWithText
#define EPP_ProgBinaryTag
#define EPP_ColorSchemeAtom
#define EPP_BinaryTagData
#define EPP_SLIDESIZE_TYPECUSTOM
#define EPP_SLIDESIZE_TYPE35MM
#define ESCHER_Prop_fNoFillHitTest
#define ESCHER_Prop_fNoLineDrawDash
#define ESCHER_Prop_bWMode
#define ESCHER_DgContainer
#define ESCHER_Prop_fillBackColor
#define ESCHER_Prop_fillRectBottom
#define ESCHER_ShpInst_Rectangle
#define ESCHER_Prop_fBackground
#define ESCHER_Prop_fillType
#define ESCHER_SpContainer
#define ESCHER_Prop_fillColor
#define ESCHER_Prop_fillRectRight
constexpr OUStringLiteral SVEXT_PERSIST_STREAM
constexpr Point convert(const Point &rPoint, o3tl::Length eFrom, o3tl::Length eTo)
bool SaveOlePropertySet(const uno::Reference< document::XDocumentProperties > &i_xDocProps, SotStorage *i_pStorage, const uno::Sequence< sal_Int8 > *i_pThumb, const uno::Sequence< sal_Int8 > *i_pGuid, const uno::Sequence< sal_Int8 > *i_pHyperlinks)
#define STREAM_SEEK_TO_END
#define STREAM_SEEK_TO_BEGIN
sal_uInt8 nPlaceHolder[8]
PPTExOleObjEntryType eType
sal_uInt32 nOfsB
offset to the EPP_ExOleObjStg
css::uno::Reference< css::awt::XControlModel > xControlModel
sal_uInt32 nOfsA
offset to the EPP_ExOleObjAtom in mpExEmbed (set at creation)
css::uno::Reference< css::drawing::XShape > xShape