/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef _SVDFPPT_HXX #define _SVDFPPT_HXX #ifndef SVX_LIGHT #include #include #include #include #include #include #include #include #include // Escher-Grafikimport #include #include #include #define ITEMID_FIELD EE_FEATURE_FIELD #include #undef ITEMID_FIELD #include "filter/msfilter/msfilterdllapi.h" #include #include #include //////////////////////////////////////////////////////////////////////////////////////////////////// class SdrModel; class SdPage; class SdrPage; class SdrObject; class SvStream; class Polygon; class PolyPolygon; class SfxItemSet; class Outliner; class Graphic; class SvxMSDffManager; class PptTextMetaCharList; class PPTTextObj; class DffRecordHeader; struct PptCharAttrSet; class SvxBulletItem; #define PPT_IMPORTFLAGS_NO_TEXT_ASSERT 1 struct MSFILTER_DLLPUBLIC PptCurrentUserAtom { sal_uInt32 nMagic; sal_uInt32 nCurrentUserEdit; sal_uInt16 nDocFileVersion; sal_uInt8 nMajorVersion; sal_uInt8 nMinorVersion; String aCurrentUser; public: PptCurrentUserAtom() : nMagic ( 0 ), nCurrentUserEdit ( 0 ), nDocFileVersion ( 0 ), nMajorVersion ( 0 ), nMinorVersion ( 0 ) {} MSFILTER_DLLPUBLIC friend SvStream& operator>>( SvStream& rIn, PptCurrentUserAtom& rAtom ); }; struct MSFILTER_DLLPUBLIC PowerPointImportParam { SvStream& rDocStream; sal_uInt32 nImportFlags; MSFilterTracer* pTracer; PptCurrentUserAtom aCurrentUserAtom; PowerPointImportParam( SvStream& rDocStream, sal_uInt32 nImportFlags, MSFilterTracer* pTracer ); }; struct SdHyperlinkEntry { sal_uInt32 nIndex; sal_Int32 nPrivate1; sal_Int32 nPrivate2; sal_Int32 nPrivate3; sal_Int32 nInfo; String aTarget; String aSubAdress; sal_Int32 nStartPos; sal_Int32 nEndPos; String aConvSubString; ESelection aESelection; sal_Bool bSelection; }; // Hilfsklasse zum Einlesen der PPT InteractiveInfoAtom struct MSFILTER_DLLPUBLIC PptInteractiveInfoAtom { sal_uInt32 nSoundRef; sal_uInt32 nExHyperlinkId; sal_uInt8 nAction; sal_uInt8 nOleVerb; sal_uInt8 nJump; sal_uInt8 nFlags; sal_uInt8 nHyperlinkType; // unknown, da Gesamtgroesse 16 ist sal_uInt8 nUnknown1; sal_uInt8 nUnknown2; sal_uInt8 nUnknown3; public: MSFILTER_DLLPUBLIC friend SvStream& operator>>( SvStream& rIn, PptInteractiveInfoAtom& rAtom ); }; enum PptPageKind { PPT_MASTERPAGE, PPT_SLIDEPAGE, PPT_NOTEPAGE }; enum PptPageFormat { PPTPF_SCREEN, // PPTPF_USLETTER, // 8.5x11" PPTPF_A4, // 210x297mm PPTPF_35MMDIA, // DIA PPTPF_OVERHEAD, // PPTPF_CUSTOM }; // Werte fuer den sal_uLong im PPT_PST_TextHeaderAtom enum PPT_TextHeader { PPTTH_TITLE, PPTTH_BODY, PPTTH_NOTES, PPTTH_NOTUSED, PPTTH_OTHER, // Text in a Shape PPTTH_CENTERBODY, // Subtitle in Title-Slide PPTTH_CENTERTITLE, // Title in Title-Slide PPTTH_HALFBODY, // Body in two-column slide PPTTH_QUARTERBODY // Body in four-body slide }; #define TSS_TYPE_PAGETITLE (0) #define TSS_TYPE_BODY (1) #define TSS_TYPE_NOTES (2) #define TSS_TYPE_UNUSED (3) #define TSS_TYPE_TEXT_IN_SHAPE (4) #define TSS_TYPE_SUBTITLE (5) #define TSS_TYPE_TITLE (6) #define TSS_TYPE_HALFBODY (7) #define TSS_TYPE_QUARTERBODY (8) // Inventor-Id fuer PPT UserData const sal_uInt32 PPTInventor =sal_uInt32('P')*0x00000001+ sal_uInt32('P')*0x00000100+ sal_uInt32('T')*0x00010000+ sal_uInt32('0')*0x01000000; // Object-Ids fuer StarDraw UserData #define PPT_OBJECTINFO_ID (1) struct MSFILTER_DLLPUBLIC PptDocumentAtom { Size aSlidesPageSize; // Seitengroesse der Slides in 576DPI Size aNotesPageSize; // Seitengroesse der Notes in 576DPI // RatioAtom erstmal weggelassen sal_uInt32 nNotesMasterPersist; // 0=nicht vorhanden sal_uInt32 nHandoutMasterPersist; // 0=nicht vorhanden sal_uInt16 n1stPageNumber; // Seitennummer des ersten Slides PptPageFormat eSlidesPageFormat; // Seitenformat der Slides sal_Bool bEmbeddedTrueType : 1; // TrueType direkt im File? sal_Bool bTitlePlaceholdersOmitted : 1; sal_Bool bRightToLeft : 1; sal_Bool bShowComments : 1; public: Size GetPageSize( const Size& rSiz ) const; Size GetSlidesPageSize() const { return GetPageSize( aSlidesPageSize ); } Size GetNotesPageSize() const { return GetPageSize( aNotesPageSize ); } friend SvStream& operator>>( SvStream& rIn, PptDocumentAtom& rAtom ); }; struct PptSlideLayoutAtom { sal_Int32 eLayout; // 0..18 sal_uInt8 aPlaceholderId[ 8 ]; sal_uLong aPlacementId[ 8 ]; public: PptSlideLayoutAtom() { Clear(); } void Clear(); // Das SlideLayoutAtom wird ohne Header eingelesen! friend SvStream& operator>>( SvStream& rIn, PptSlideLayoutAtom& rAtom ); }; struct PptSlideAtom { PptSlideLayoutAtom aLayout; sal_uInt32 nMasterId; sal_uInt32 nNotesId; sal_uInt16 nFlags; public: PptSlideAtom() { Clear(); } void Clear(); friend SvStream& operator>>(SvStream& rIn, PptSlideAtom& rAtom); }; struct PptSlidePersistAtom { sal_uInt32 nPsrReference; sal_uInt32 nFlags; sal_uInt32 nNumberTexts; sal_uInt32 nSlideId; sal_uInt32 nReserved; // we will use nReserved temporarly to set the offset to SSSlideInfoAtom ( if possible ) public: PptSlidePersistAtom() { Clear(); } void Clear(); friend SvStream& operator>>(SvStream& rIn, PptSlidePersistAtom& rAtom); }; struct PptNotesAtom { sal_uInt32 nSlideId; sal_uInt16 nFlags; public: PptNotesAtom() { Clear(); } void Clear(); friend SvStream& operator>>(SvStream& rIn, PptNotesAtom& rAtom); }; struct PptColorSchemeAtom { sal_uInt8 aData[32]; public: PptColorSchemeAtom () { Clear(); } void Clear(); Color GetColor( sal_uInt16 nNum ) const; friend SvStream& operator>>(SvStream& rIn, PptColorSchemeAtom& rAtom); }; struct PptFontEntityAtom { String aName; double fScaling; sal_uInt8 lfClipPrecision; sal_uInt8 lfQuality; sal_uInt32 nUniqueFontId; // not used anymore CharSet eCharSet; FontFamily eFamily; FontPitch ePitch; sal_Bool bAvailable; friend SvStream& operator>>(SvStream& rIn, PptFontEntityAtom& rAtom); }; class PptFontCollection; struct PptUserEditAtom { DffRecordHeader aHd; sal_Int32 nLastSlideID; // ID of last visible slide sal_uInt32 nVersion; // This is major/minor/build which did the edit sal_uInt32 nOffsetLastEdit; // File offset of prev PptUserEditAtom sal_uInt32 nOffsetPersistDirectory; // Offset to PersistPtrs for this file version. sal_uInt32 nDocumentRef; sal_uInt32 nMaxPersistWritten; // Gesamtanzahl der Persisteintraege bis hierher. sal_Int16 eLastViewType; // enum view type public: PptUserEditAtom() : nOffsetPersistDirectory( 0 ) {} friend SvStream& operator>>( SvStream& rIn, PptUserEditAtom& rAtom ); }; struct PptOEPlaceholderAtom { sal_uInt32 nPlacementId; sal_uInt8 nPlaceholderId; sal_uInt8 nPlaceholderSize; // 0=Full size, 1=Half size, 2=Quarter of Slide public: PptOEPlaceholderAtom() { Clear(); } void Clear(); friend SvStream& operator>>( SvStream& rIn, PptOEPlaceholderAtom& rAtom ); }; struct ProcessData; struct PPTStyleSheet; struct HeaderFooterEntry; struct PptSlidePersistEntry { PptSlidePersistAtom aPersistAtom; PptSlideAtom aSlideAtom; PptNotesAtom aNotesAtom; PptColorSchemeAtom aColorScheme; // each slide includes this colorscheme atom PPTStyleSheet* pStyleSheet; // stylesheet of this page ( only in masterpages ), since XP supports more than one masterpage sal_uInt32 HeaderFooterOfs[ 4 ]; // containing the ofs to the placeholder (only masterpage) HeaderFooterEntry* pHeaderFooterEntry; SvxMSDffSolverContainer* pSolverContainer; sal_uInt32 nSlidePersistStartOffset;// is an array to the end of the SlidePersistAtom of this page, TextHeaderAtom is following sal_uInt32 nSlidePersistEndOffset; sal_uInt32 nBackgroundOffset; // fileoffset sal_uInt32 nDrawingDgId; // valid, if not -1 sal_uInt32* pPresentationObjects; // if valid, this is a pointer to an array that includes the offsets to the presentation objects // on this masterpage for each instance ( 0 - 8 ); SdrObject* pBObj; sal_Bool bBObjIsTemporary; void* pDummy2; PptPageKind ePageKind; // sal_Bool bNotesMaster : 1; // fuer NotesMaster sal_Bool bHandoutMaster : 1; // fuer HandoutMaster sal_Bool bStarDrawFiller : 1; // speziell fuer StarDraw public: PptSlidePersistEntry(); ~PptSlidePersistEntry(); sal_uInt32 GetSlideId() const { return aPersistAtom.nSlideId; } }; SV_DECL_PTRARR_DEL(_PptSlidePersistList,PptSlidePersistEntry*,16,16) #define PPTSLIDEPERSIST_ENTRY_NOTFOUND 0xFFFF class MSFILTER_DLLPUBLIC PptSlidePersistList: public _PptSlidePersistList { public: sal_uInt16 FindPage( sal_uInt32 nId ) const; }; class SfxObjectShell; struct PPTOleEntry { sal_uInt32 nId; // OleId sal_uInt32 nPersistPtr; // PersistPtr sal_uInt32 nRecHdOfs; // points to the record header: ExObjListHd SfxObjectShell* pShell; sal_uInt16 nType; // maybe PPT_PST_ExEmbed or PPT_PST_ExControl sal_uInt32 nAspect; // the aspect of the OLE object PPTOleEntry( sal_uInt32 nid, sal_uInt32 nOfs, SfxObjectShell* pSh, sal_uInt16 nT, sal_uInt32 nAsp ) : nId ( nid ), nRecHdOfs ( nOfs ), pShell ( pSh ), nType ( nT ), nAspect ( nAsp ) {} }; struct PptExOleObjAtom { sal_uInt32 nAspect; sal_uInt32 nDummy1; sal_uInt32 nId; sal_uInt32 nDummy2; sal_uInt32 nPersistPtr; sal_uInt32 nDummy4; public: friend SvStream& operator>>( SvStream& rIn, PptExOleObjAtom& rAtom ); }; class PPTExtParaProv; class MSFILTER_DLLPUBLIC SdrEscherImport : public SvxMSDffManager { protected: friend class PPTTextObj; friend class PPTPortionObj; friend struct PPTStyleTextPropReader; friend class ImplSdPPTImport; PptDocumentAtom aDocAtom; DffRecordManager aDocRecManager; // contains all first level container and atoms of the document container List aHFMasterList; List aOleObjectList; // contains PPTOleEntrys PptFontCollection* pFonts; sal_uInt32 nStreamLen; sal_uInt16 nTextStylesIndex; CharSet eCharSetSystem; sal_Bool bWingdingsChecked : 1; sal_Bool bWingdingsAvailable : 1; sal_Bool bMonotypeSortsChecked : 1; sal_Bool bMonotypeSortsAvailable : 1; sal_Bool bTimesNewRomanChecked : 1; sal_Bool bTimesNewRomanAvailable : 1; sal_Bool ReadString( String& rStr ) const; // nur fuer PowerPoint-Filter: virtual const PptSlideLayoutAtom* GetSlideLayoutAtom() const; void CheckWingdings() const; void CheckMonotypeSorts() const; void CheckTimesNewRoman() const; public: PowerPointImportParam& rImportParam; void* pSdrEscherDummy1; void* pSdrEscherDummy2; void* pSdrEscherDummy3; void* pSdrEscherDummy4; SdrEscherImport( PowerPointImportParam&, const String& rBaseURL ); virtual ~SdrEscherImport(); virtual FASTBOOL GetColorFromPalette( sal_uInt16 nNum, Color& rColor ) const; virtual sal_Bool SeekToShape( SvStream& rSt, void* pClientData, sal_uInt32 nId ) const; PptFontEntityAtom* GetFontEnityAtom( sal_uInt32 nNum ) const; CharSet GetCharSet( sal_uInt32 nNum ) const; sal_Bool IsFontAvailable( sal_uInt32 nNum ) const; void RecolorGraphic( SvStream& rSt, sal_uInt32 nRecLen, Graphic& rGraph ); using SvxMSDffManager::ReadObjText; virtual SdrObject* ReadObjText( PPTTextObj* pTextObj, SdrObject* pObj, SdPage* pPage ) const; virtual SdrObject* ProcessObj( SvStream& rSt, DffObjData& rData, void* pData, Rectangle& rTextRect, SdrObject* pObj ); virtual void ProcessClientAnchor2( SvStream& rSt, DffRecordHeader& rHd, void* pData, DffObjData& rObj ); void ImportHeaderFooterContainer( DffRecordHeader& rHeader, HeaderFooterEntry& rEntry ); }; //////////////////////////////////////////////////////////////////////////////////////////////////// #define SD_HEADERFOOTER_DATE 1 #define SD_HEADERFOOTER_TODAYDATE 2 #define SD_HEADERFOOTER_USERDATE 4 #define SD_HEADERFOOTER_SLIDENUMBER 8 #define SD_HEADERFOOTER_HEADER 16 #define SD_HEADERFOOTER_FOOTER 32 class SvxFieldItem; struct MSFILTER_DLLPUBLIC PPTFieldEntry { sal_uInt16 nPos; sal_uInt16 nTextRangeEnd; SvxFieldItem* pField1; SvxFieldItem* pField2; String* pString; PPTFieldEntry() : nPos( 0 ), nTextRangeEnd( 0 ), pField1( NULL ), pField2( NULL ), pString( NULL ) {}; ~PPTFieldEntry(); void SetDateTime( sal_uInt32 nType ); // converting PPT date time format: static void GetDateTime( const sal_uInt32 nVal, SvxDateFormat& eDateFormat, SvxTimeFormat& eTimeFormat ); }; struct MSFILTER_DLLPUBLIC HeaderFooterEntry { const PptSlidePersistEntry* pMasterPersist; String pPlaceholder[ 4 ]; sal_uInt32 nAtom; sal_uInt32 GetMaskForInstance( sal_uInt32 nInstance ); sal_uInt32 IsToDisplay( sal_uInt32 nInstance ); sal_uInt32 NeedToImportInstance( const sal_uInt32 nInstance, const PptSlidePersistEntry& rSlidePersist ); HeaderFooterEntry( const PptSlidePersistEntry* pMaster = NULL ); ~HeaderFooterEntry(); }; struct ProcessData { PptSlidePersistEntry& rPersistEntry; SdPage* pPage; List* pBackgroundColoredObjects; sal_uInt32* pTableRowProperties; ProcessData( PptSlidePersistEntry& rP, SdPage* pP ) : rPersistEntry ( rP ), pPage ( pP ), pBackgroundColoredObjects ( NULL ), pTableRowProperties ( NULL ) {}; ~ProcessData() { delete pBackgroundColoredObjects; delete[] pTableRowProperties; }; }; //////////////////////////////////////////////////////////////////////////////////////////////////// class SdrTextObj; class SfxObjectShell; class MSFILTER_DLLPUBLIC SdrPowerPointImport : public SdrEscherImport { protected: friend class PPTTextObj; friend class PPTExtParaProv; friend struct PPTStyleSheet; friend class PPTNumberFormatCreator; sal_Bool bOk; PptUserEditAtom aUserEditAtom; PptColorSchemeAtom aPageColors; List aHyperList; sal_uInt32* pPersistPtr; sal_uLong nPersistPtrAnz; const PPTStyleSheet* pPPTStyleSheet; // this is the current stylesheet; const PPTStyleSheet* pDefaultSheet; // this is a sheet we are using if no masterpage can be found, but that should // never happen just preventing a crash PptSlidePersistList* pMasterPages; PptSlidePersistList* pSlidePages; PptSlidePersistList* pNotePages; sal_uInt16 nAktPageNum; sal_uLong nDocStreamPos; sal_uInt16 nPageColorsNum; PptPageKind ePageColorsKind; PptPageKind eAktPageKind; protected: sal_Bool SeekToAktPage(DffRecordHeader* pRecHd=NULL) const; sal_Bool SeekToDocument(DffRecordHeader* pRecHd=NULL) const; sal_Bool SeekToContentOfProgTag( sal_Int32 nVersion, SvStream& rSt, const DffRecordHeader& rProgTagBinaryDataHd, DffRecordHeader& rContentHd ); virtual SdrObject* ApplyTextObj( PPTTextObj* pTextObj, SdrTextObj* pText, SdPage* pPage, SfxStyleSheet*, SfxStyleSheet** ) const; using SdrEscherImport::ReadObjText; virtual SdrObject* ReadObjText( PPTTextObj* pTextObj, SdrObject* pObj, SdPage* pPage ) const; // --> OD 2004-12-14 #i32596# - new parameter <_nCalledByGroup>, which // indicates, if the OLE object is imported inside a group object. virtual SdrObject* ImportOLE( long nOLEId, const Graphic& rGraf, const Rectangle& rBoundRect, const Rectangle& rVisArea, const int _nCalledByGroup, sal_Int64 nAspect ) const; // <-- SvMemoryStream* ImportExOleObjStg( sal_uInt32 nPersistPtr, sal_uInt32& nOleId ) const; SdrPage* MakeBlancPage(sal_Bool bMaster) const; sal_Bool ReadFontCollection(); sal_Bool ForceFontCollection() const { return pFonts!=NULL?sal_True:((SdrPowerPointImport*)this)->ReadFontCollection(); } PptSlidePersistList* GetPageList(PptPageKind ePageKind) const; sal_uInt32 GetAktPageId(); sal_uInt32 GetMasterPageId(sal_uInt16 nPageNum, PptPageKind ePageKind) const; sal_uInt32 GetNotesPageId(sal_uInt16 nPageNum ) const; SdrOutliner* GetDrawOutliner( SdrTextObj* pSdrText ) const; void SeekOle( SfxObjectShell* pShell, sal_uInt32 nFilterOptions ); void ApplyTextAnchorAttributes( PPTTextObj& rTextObj, SfxItemSet& rSet ) const; sal_Bool IsVerticalText() const; public: SdrPowerPointImport( PowerPointImportParam&, const String& rBaseURL ); virtual ~SdrPowerPointImport(); sal_uInt16 GetPageCount( PptPageKind eKind = PPT_SLIDEPAGE ) const; void SetPageNum( sal_uInt16 nPageNum, PptPageKind = PPT_SLIDEPAGE ); sal_uInt16 GetPageNum() const { return nAktPageNum; } PptPageKind GetPageKind() const { return eAktPageKind; } Size GetPageSize() const; SdrObject* ImportPageBackgroundObject( const SdrPage& rPage, sal_uInt32& nBgFileOffset, sal_Bool bForce ); sal_Bool IsNoteOrHandout( sal_uInt16 nPageNum, PptPageKind ePageKind ) const; sal_Bool HasMasterPage( sal_uInt16 nPageNum, PptPageKind ePageKind = PPT_SLIDEPAGE ) const; sal_uInt16 GetMasterPageIndex( sal_uInt16 nPageNum, PptPageKind ePageKind = PPT_SLIDEPAGE ) const; void ImportPage( SdrPage* pPage, const PptSlidePersistEntry* pMasterPersist = NULL ); virtual FASTBOOL GetColorFromPalette(sal_uInt16 nNum, Color& rColor) const; virtual sal_Bool SeekToShape( SvStream& rSt, void* pClientData, sal_uInt32 nId ) const; sal_Unicode PPTSubstitute( sal_uInt16 nFont, sal_Unicode nChar, sal_uInt32& nMappedFontId, Font& rFont, char nDefault ) const; const PptDocumentAtom& GetDocumentAtom() const { return aDocAtom; } virtual const PptSlideLayoutAtom* GetSlideLayoutAtom() const; SdrObject* CreateTable( SdrObject* pGroupObject, sal_uInt32* pTableArry, SvxMSDffSolverContainer* ); }; //////////////////////////////////////////////////////////////////////////////////////////////////// struct PPTTextCharacterStyleAtomInterpreter { sal_uInt16 nFlags1; sal_uInt16 nFlags2; sal_uInt16 nFlags3; sal_Int32 n1; sal_uInt16 nFontHeight; sal_Int32 nFontColor; PPTTextCharacterStyleAtomInterpreter(); ~PPTTextCharacterStyleAtomInterpreter(); sal_Bool Read( SvStream& rIn, const DffRecordHeader& rRecHd ); sal_uInt32 GetColor( sal_uInt32 nDefault ); }; struct PPTTextParagraphStyleAtomInterpreter { sal_Bool bValid; sal_Bool bForbiddenRules; sal_Bool bHangingPunctuation; sal_Bool bLatinTextWrap; PPTTextParagraphStyleAtomInterpreter(); ~PPTTextParagraphStyleAtomInterpreter(); sal_Bool Read( SvStream& rIn, const DffRecordHeader& rRecHd ); }; struct PPTTextSpecInfo { sal_uInt32 nCharIdx; sal_uInt16 nLanguage[ 3 ]; sal_uInt16 nDontKnow; PPTTextSpecInfo( sal_uInt32 nCharIdx ); ~PPTTextSpecInfo(); }; struct PPTTextSpecInfoAtomInterpreter { sal_Bool bValid; List aList; PPTTextSpecInfoAtomInterpreter(); ~PPTTextSpecInfoAtomInterpreter(); sal_Bool Read( SvStream& rIn, const DffRecordHeader& rRecHd, sal_uInt16 nRecordType, const PPTTextSpecInfo* pTextSpecDefault = NULL ); }; //////////////////////////////////////////////////////////////////////////////////////////////////// #define PPT_STYLESHEETENTRYS 9 struct PPTExtParaLevel { sal_uInt32 mnExtParagraphMask; sal_uInt16 mnBuBlip; sal_uInt16 mnHasAnm; sal_uInt32 mnAnmScheme; sal_uInt32 mpfPP10Ext; sal_uInt32 mnExtCharacterMask; sal_uInt32 mcfPP10Ext; sal_Bool mbSet; PPTExtParaLevel(); friend SvStream& operator>>( SvStream& rIn, PPTExtParaLevel& rL ); }; struct PPTExtParaSheet { PPTExtParaLevel aExtParaLevel[ 5 ]; }; struct PPTBuGraEntry { sal_uInt32 nInstance; Graphic aBuGra; PPTBuGraEntry( Graphic& rGraphic, sal_uInt32 nInstance ); }; class PPTExtParaProv { List aBuGraList; public : sal_Bool bStyles; sal_Bool bGraphics; DffRecordManager aExtendedPresRules; PPTExtParaSheet aExtParaSheet[ PPT_STYLESHEETENTRYS ]; sal_Bool GetGraphic( sal_uInt32 nInstance, Graphic& rGraphic ) const; PPTExtParaProv( SdrPowerPointImport& rManager, SvStream& rSt, const DffRecordHeader* pMainMasterHd ); ~PPTExtParaProv(); }; //////////////////////////////////////////////////////////////////////////////////////////////////// struct PPTCharLevel { Color mnFontColorInStyleSheet; sal_uInt32 mnFontColor; sal_uInt16 mnFlags; sal_uInt16 mnFont; sal_uInt16 mnAsianOrComplexFont; sal_uInt16 mnFontHeight; sal_uInt16 mnEscapement; }; struct PPTCharSheet { PPTCharLevel maCharLevel[ 5 ]; PPTCharSheet( sal_uInt32 nInstance ); PPTCharSheet( const PPTCharSheet& rCharSheet ); void Read( SvStream& rIn, sal_Bool bMasterStyle, sal_uInt32 nLevel, sal_Bool bFirst ); }; struct PPTParaLevel { sal_uInt16 mnBuFlags; sal_uInt16 mnBulletChar; sal_uInt16 mnBulletFont; sal_uInt16 mnBulletHeight; sal_uInt32 mnBulletColor; sal_uInt16 mnAdjust; sal_uInt16 mnLineFeed; sal_uInt16 mnUpperDist; sal_uInt16 mnLowerDist; sal_uInt16 mnTextOfs; sal_uInt16 mnBulletOfs; sal_uInt16 mnDefaultTab; sal_uInt16 mnAsianLineBreak; // bit0: use asian rules for first and last character // 1: do not wrap latin text in the middle of the word // 2: allow hanging punctuation sal_uInt16 mnBiDi; }; struct PPTParaSheet { public: PPTParaLevel maParaLevel[ 5 ]; PPTParaSheet( sal_uInt32 nInstance ); PPTParaSheet( const PPTParaSheet& rParaSheet ); void Read( SdrPowerPointImport& rMan, SvStream& rIn, sal_Bool bMasterStyle, sal_uInt32 nLevel, sal_Bool bFirst ); void UpdateBulletRelSize( sal_uInt32 nLevel, sal_uInt16 nFontHeight ); }; //////////////////////////////////////////////////////////////////////////////////////////////////// class PPTParagraphObj; class PPTNumberFormatCreator { sal_uInt32 nIsBullet; sal_uInt32 nBulletChar; sal_uInt32 nBulletFont; sal_uInt32 nBulletHeight; sal_uInt32 nBulletColor; sal_uInt32 nTextOfs; sal_uInt32 nBulletOfs; void ImplGetNumberFormat( SdrPowerPointImport& rMan, SvxNumberFormat& rNumberFormat, sal_uInt32 nLevel ); sal_Bool ImplGetExtNumberFormat( SdrPowerPointImport& rMan, SvxNumberFormat& rNumberFormat, sal_uInt32 nLevel, sal_uInt32 nInstance, sal_uInt32 nInstanceInSheet, boost::optional< sal_Int16 >& rStartNumbering, sal_uInt32 nFontHeight, PPTParagraphObj* pPara ); protected : PPTNumberFormatCreator( PPTExtParaProv* ); ~PPTNumberFormatCreator(); public : PPTExtParaProv* pExtParaProv; void GetNumberFormat( SdrPowerPointImport& rMan, SvxNumberFormat& rNumberFormat, sal_uInt32 nLevel, const PPTParaLevel& rParaLevel, const PPTCharLevel& rCharLevel, sal_uInt32 nInstance ); sal_Bool GetNumberFormat( SdrPowerPointImport& rMan, SvxNumberFormat& rNumberFormat, PPTParagraphObj* pPara, sal_uInt32 nInstanceInSheet, boost::optional< sal_Int16 >& rStartNumbering ); }; //////////////////////////////////////////////////////////////////////////////////////////////////// class SvxNumBulletItem; struct PPTStyleSheet : public PPTNumberFormatCreator { PPTTextSpecInfo maTxSI; PPTCharSheet* mpCharSheet[ PPT_STYLESHEETENTRYS ]; PPTParaSheet* mpParaSheet[ PPT_STYLESHEETENTRYS ]; SvxNumBulletItem* mpNumBulletItem[ PPT_STYLESHEETENTRYS ]; void* mpDummy; PPTStyleSheet( const DffRecordHeader& rSlideHd, SvStream& rSt, SdrPowerPointImport&, const PPTTextCharacterStyleAtomInterpreter&, const PPTTextParagraphStyleAtomInterpreter&, const PPTTextSpecInfo& ); ~PPTStyleSheet(); }; //////////////////////////////////////////////////////////////////////////////////////////////////// struct ImplPPTParaPropSet { sal_uInt32 mnRefCount; sal_uInt16 mnDepth; sal_uInt32 mnAttrSet; sal_uInt32 mnBulletColor; sal_uInt16 mpArry[ 22 ]; sal_uInt32 mnExtParagraphMask; sal_uInt32 mnAnmScheme; sal_uInt16 mnHasAnm; sal_uInt16 mnBuBlip; sal_uInt32 nDontKnow1; sal_uInt32 nDontKnow2; sal_uInt16 nDontKnow2bit06; ImplPPTParaPropSet(){ mnRefCount = 1; mnAttrSet = 0; mnExtParagraphMask = 0; mnDepth = 0; }; }; struct PPTParaPropSet { sal_uInt32 mnOriginalTextPos; ImplPPTParaPropSet* pParaSet; PPTParaPropSet(); PPTParaPropSet( PPTParaPropSet& rParaPropSet ); ~PPTParaPropSet(); PPTParaPropSet& operator=( PPTParaPropSet& rParaPropSet ); }; struct ImplPPTCharPropSet { sal_uInt32 mnRefCount; sal_uInt32 mnAttrSet; sal_uInt16 mnFlags; sal_uInt32 mnColor; sal_uInt16 mnFont; sal_uInt16 mnAsianOrComplexFont; sal_uInt16 mnANSITypeface; sal_uInt16 mnFontHeight; sal_uInt16 mnEscapement; sal_uInt16 mnSymbolFont; ImplPPTCharPropSet(){ mnRefCount = 1; mnAttrSet = 0; }; }; struct PPTCharPropSet { //when the bullet text has more than two color,next the text following with bullet has been set hyperlink. //now,the bullet color should be set original hyperlink text's color //so "mbHardHylinkOrigColor" hold the original hyperlink text's color. sal_uInt32 mnHylinkOrigColor; //the bullet text weather has a hyperlink. sal_Bool mbIsHyperlink; //the hyperlink text weather has a custom color. sal_Bool mbHardHylinkOrigColor; sal_uInt32 mnOriginalTextPos; sal_uInt32 mnParagraph; String maString; SvxFieldItem* mpFieldItem; sal_uInt16 mnLanguage[ 3 ]; ImplPPTCharPropSet* pCharSet; void SetFont( sal_uInt16 nFont ); void SetColor( sal_uInt32 nColor ); PPTCharPropSet( sal_uInt32 nParagraph ); PPTCharPropSet( PPTCharPropSet& rCharPropSet ); PPTCharPropSet( PPTCharPropSet& rCharPropSet, sal_uInt32 nParagraph ); ~PPTCharPropSet(); PPTCharPropSet& operator=( PPTCharPropSet& rCharPropSet ); private : void ImplMakeUnique(); }; //////////////////////////////////////////////////////////////////////////////////////////////////// struct PPTTabEntry { sal_uInt16 nOffset; sal_uInt16 nStyle; }; struct PPTRuler { sal_uInt32 nRefCount; sal_Int32 nFlags; sal_uInt16 nDefaultTab; sal_uInt16 nTextOfs[ 5 ]; sal_uInt16 nBulletOfs[ 5 ]; PPTTabEntry* pTab; sal_uInt16 nTabCount; PPTRuler(); ~PPTRuler(); }; struct PPTTextRulerInterpreter { PPTRuler *mpImplRuler; PPTTextRulerInterpreter(); PPTTextRulerInterpreter( PPTTextRulerInterpreter& rRuler ); PPTTextRulerInterpreter( sal_uInt32 nFileOfs, SdrPowerPointImport&, DffRecordHeader& rHd, SvStream& rIn ); ~PPTTextRulerInterpreter(); sal_uInt16 GetTabOffsetByIndex( sal_uInt16 nIndex ) const { return mpImplRuler->pTab[ nIndex ].nOffset; }; sal_uInt16 GetTabStyleByIndex( sal_uInt16 nIndex ) const { return mpImplRuler->pTab[ nIndex ].nStyle; }; sal_uInt16 GetTabCount() const { return mpImplRuler->nTabCount; }; sal_Bool GetDefaultTab( sal_uInt32 nLevel, sal_uInt16& nValue ) const; sal_Bool GetTextOfs( sal_uInt32 nLevel, sal_uInt16& nValue ) const; sal_Bool GetBulletOfs( sal_uInt32 nLevel, sal_uInt16& nValue ) const; PPTTextRulerInterpreter& operator=( PPTTextRulerInterpreter& rRuler ); }; //////////////////////////////////////////////////////////////////////////////////////////////////// #define PPT_SPEC_NEWLINE 0x10000 #define PPT_SPEC_SYMBOL 0x20000 #define PPT_SPEC_USE_STARBATS 0x40000 struct StyleTextProp9 { sal_uInt32 mnExtParagraphMask; sal_uInt16 mnBuBlip; sal_uInt16 mnHasAnm; sal_uInt32 mnAnmScheme; sal_uInt32 mpfPP10Ext; sal_uInt32 mnExtCharacterMask; sal_uInt32 mncfPP10Ext; sal_uInt32 mnSpecialInfoMask; sal_uInt32 mnPP10Ext; sal_uInt16 mfBidi; StyleTextProp9() : mnExtParagraphMask( 0 ) , mnBuBlip( 0 ) , mnHasAnm( 0 ) , mnAnmScheme( 0 ) , mpfPP10Ext( 0 ) , mnExtCharacterMask( 0 ) , mncfPP10Ext( 0 ) , mnSpecialInfoMask( 0 ) , mnPP10Ext( 0 ) , mfBidi( 0 ) { } void Read( SvStream& rSt ); }; struct PPTStyleTextPropReader { List aSpecMarkerList; // hiword -> Flags, loword -> Position List aParaPropList; List aCharPropList; PPTStyleTextPropReader( SvStream& rIn, SdrPowerPointImport&, const DffRecordHeader& rClientTextBoxHd, PPTTextRulerInterpreter& rInterpreter, const DffRecordHeader& rExtParaHd, sal_uInt32 nTextInstance ); void Init( SvStream& rIn, SdrPowerPointImport&, const DffRecordHeader& rClientTextBoxHd, PPTTextRulerInterpreter& rInterpreter, const DffRecordHeader& rExtParaHd, sal_uInt32 nTextInstance ); void ReadParaProps( SvStream& rIn, SdrPowerPointImport& rMan, const DffRecordHeader& rTextHeader, const String& aString, PPTTextRulerInterpreter& rRuler, sal_uInt32& nCharCount, sal_Bool& bTextPropAtom ); void ReadCharProps( SvStream& rIn, PPTCharPropSet& aCharPropSet, const String& aString, sal_uInt32& nCharCount, sal_uInt32 nCharAnzRead, sal_Bool& bTextPropAtom, sal_uInt32 nExtParaPos, const std::vector< StyleTextProp9 >& aStyleTextProp9, sal_uInt32& nExtParaFlags, sal_uInt16& nBuBlip, sal_uInt16& nHasAnm, sal_uInt32& nAnmScheme ); ~PPTStyleTextPropReader(); }; //////////////////////////////////////////////////////////////////////////////////////////////////// class SvxFieldItem; class MSFILTER_DLLPUBLIC PPTPortionObj : public PPTCharPropSet { friend class PPTParagraphObj; const PPTStyleSheet& mrStyleSheet; sal_uInt32 mnInstance; sal_uInt32 mnDepth; public : sal_Bool GetAttrib( sal_uInt32 nAttr, sal_uInt32& nVal, sal_uInt32 nInstanceInSheet ); SvxFieldItem* GetTextField(); PPTPortionObj( const PPTStyleSheet&, sal_uInt32 nInstance, sal_uInt32 nDepth ); PPTPortionObj( PPTCharPropSet&, const PPTStyleSheet&, sal_uInt32 nInstance, sal_uInt32 nDepth ); PPTPortionObj( PPTPortionObj& ); ~PPTPortionObj(); // the following function should be removed during next full update void ApplyTo( SfxItemSet& rSet, SdrPowerPointImport& rManager, sal_uInt32 nInstanceInSheet ); void ApplyTo( SfxItemSet& rSet, SdrPowerPointImport& rManager, sal_uInt32 nInstanceInSheet, const PPTTextObj* pTextObj ); sal_uInt32 Count() const { return ( mpFieldItem ) ? 1 : maString.Len(); }; sal_Bool HasTabulator(); }; class MSFILTER_DLLPUBLIC PPTParagraphObj : public PPTParaPropSet, public PPTNumberFormatCreator, public PPTTextRulerInterpreter { friend class PPTTextObj; friend class PPTNumberFormatCreator; const PPTStyleSheet& mrStyleSheet; sal_uInt32 mnInstance; protected : void ImplClear(); public : sal_Bool mbTab; // if true, this paragraph has tabulators in text sal_uInt32 mnCurrentObject; sal_uInt32 mnPortionCount; PPTPortionObj** mpPortionList; void UpdateBulletRelSize( sal_uInt32& nBulletRelSize ) const; sal_Bool GetAttrib( sal_uInt32 nAttr, sal_uInt32& nVal, sal_uInt32 nInstanceInSheet ); PPTParagraphObj( const PPTStyleSheet&, sal_uInt32 nInstance, sal_uInt16 nDepth ); PPTParagraphObj( PPTStyleTextPropReader&, const PPTStyleSheet&, sal_uInt32 nInstance, PPTTextRulerInterpreter& rRuler ); ~PPTParagraphObj(); sal_uInt32 GetTextSize(); PPTPortionObj* First(); PPTPortionObj* Next(); void AppendPortion( PPTPortionObj& rPortion ); void ApplyTo( SfxItemSet& rSet, boost::optional< sal_Int16 >& rStartNumbering, SdrPowerPointImport& rManager, sal_uInt32 nInstanceInSheet, const PPTParagraphObj* pPrev ); }; #define PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT 1 #define PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_CENTER 2 #define PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT 4 #define PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_BLOCK 8 #define PPT_TEXTOBJ_FLAGS_VERTICAL 16 struct ImplPPTTextObj { sal_uInt32 mnRefCount; sal_uInt32 mnShapeId; sal_uInt32 mnShapeMaster; PptOEPlaceholderAtom* mpPlaceHolderAtom; sal_uInt16 mnInstance; sal_uInt16 mnDestinationInstance; MSO_SPT meShapeType; sal_uInt32 mnCurrentObject; sal_uInt32 mnParagraphCount; PPTParagraphObj** mpParagraphList; PptSlidePersistEntry& mrPersistEntry; sal_uInt32 mnTextFlags; ImplPPTTextObj( PptSlidePersistEntry& rPersistEntry ) : mrPersistEntry ( rPersistEntry ) {}; }; class MSFILTER_DLLPUBLIC PPTTextObj { ImplPPTTextObj* mpImplTextObj; void ImplClear(); PPTTextObj(){}; public : PPTTextObj( SvStream& rSt, SdrPowerPointImport&, PptSlidePersistEntry&, DffObjData* ); PPTTextObj( PPTTextObj& rTextObj ); ~PPTTextObj(); sal_uInt32 GetCurrentIndex() const { return mpImplTextObj->mnCurrentObject; }; sal_uInt32 Count() const { return mpImplTextObj->mnParagraphCount; }; PPTParagraphObj* First(); PPTParagraphObj* Next(); MSO_SPT GetShapeType() const { return mpImplTextObj->meShapeType; }; sal_uInt32 GetInstance() const { return mpImplTextObj->mnInstance; }; void SetInstance( sal_uInt16 nInstance ) { mpImplTextObj->mnInstance = nInstance; }; sal_uInt32 GetDestinationInstance() const { return mpImplTextObj->mnDestinationInstance; }; void SetDestinationInstance( sal_uInt16 nInstance ) { mpImplTextObj->mnDestinationInstance = nInstance; }; PptOEPlaceholderAtom* GetOEPlaceHolderAtom() const { return mpImplTextObj->mpPlaceHolderAtom; }; sal_uInt32 GetTextFlags() const { return mpImplTextObj->mnTextFlags; }; void SetVertical( sal_Bool bVertical ) { if ( bVertical ) mpImplTextObj->mnTextFlags |= PPT_TEXTOBJ_FLAGS_VERTICAL; else mpImplTextObj->mnTextFlags &= ~PPT_TEXTOBJ_FLAGS_VERTICAL; } sal_Bool GetVertical() const { return ( mpImplTextObj->mnTextFlags & PPT_TEXTOBJ_FLAGS_VERTICAL ) != 0; }; const SfxItemSet* GetBackground() const; PPTTextObj& operator=( PPTTextObj& rTextObj ); }; class PPTConvertOCXControls : public SvxMSConvertOCXControls { virtual const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > & GetDrawPage(); PptPageKind ePageKind; public : PPTConvertOCXControls( SfxObjectShell* pDSh, PptPageKind ePKind ) : SvxMSConvertOCXControls ( pDSh, NULL ), ePageKind ( ePKind ){}; virtual sal_Bool InsertControl( const com::sun::star::uno::Reference< com::sun::star::form::XFormComponent > &rFComp, const com::sun::star::awt::Size& rSize, com::sun::star::uno::Reference< com::sun::star::drawing::XShape > *pShape, sal_Bool bFloatingCtrl ); }; //////////////////////////////////////////////////////////////////////////////////////////////////// // PowerPoint Recordtypen #define PPT_PST_Unknown 0 #define PPT_PST_SubContainerCompleted 1 #define PPT_PST_IRRAtom 2 #define PPT_PST_PSS 3 #define PPT_PST_SubContainerException 4 #define PPT_PST_ClientSignal1 6 #define PPT_PST_ClientSignal2 7 #define PPT_PST_PowerPointStateInfoAtom 10 #define PPT_PST_Document 1000 #define PPT_PST_DocumentAtom 1001 #define PPT_PST_EndDocument 1002 #define PPT_PST_SlidePersist 1003 #define PPT_PST_SlideBase 1004 #define PPT_PST_SlideBaseAtom 1005 #define PPT_PST_Slide 1006 #define PPT_PST_SlideAtom 1007 #define PPT_PST_Notes 1008 #define PPT_PST_NotesAtom 1009 #define PPT_PST_Environment 1010 #define PPT_PST_SlidePersistAtom 1011 #define PPT_PST_Scheme 1012 #define PPT_PST_SchemeAtom 1013 #define PPT_PST_DocViewInfo 1014 #define PPT_PST_SslideLayoutAtom 1015 #define PPT_PST_MainMaster 1016 #define PPT_PST_SSSlideInfoAtom 1017 #define PPT_PST_SlideViewInfo 1018 #define PPT_PST_GuideAtom 1019 #define PPT_PST_ViewInfo 1020 #define PPT_PST_ViewInfoAtom 1021 #define PPT_PST_SlideViewInfoAtom 1022 #define PPT_PST_VBAInfo 1023 #define PPT_PST_VBAInfoAtom 1024 #define PPT_PST_SSDocInfoAtom 1025 #define PPT_PST_Summary 1026 #define PPT_PST_Texture 1027 #define PPT_PST_VBASlideInfo 1028 #define PPT_PST_VBASlideInfoAtom 1029 #define PPT_PST_DocRoutingSlip 1030 #define PPT_PST_OutlineViewInfo 1031 #define PPT_PST_SorterViewInfo 1032 #define PPT_PST_ExObjList 1033 #define PPT_PST_ExObjListAtom 1034 #define PPT_PST_PPDrawingGroup 1035 #define PPT_PST_PPDrawing 1036 #define PPT_PST_NewlyAddedAtomByXP1037 1037 #define PPT_PST_NamedShows 1040 #define PPT_PST_NamedShow 1041 #define PPT_PST_NamedShowSlides 1042 #define PPT_PST_List 2000 #define PPT_PST_FontCollection 2005 #define PPT_PST_ListPlaceholder 2017 #define PPT_PST_BookmarkCollection 2019 #define PPT_PST_SoundCollection 2020 #define PPT_PST_SoundCollAtom 2021 #define PPT_PST_Sound 2022 #define PPT_PST_SoundData 2023 #define PPT_PST_BookmarkSeedAtom 2025 #define PPT_PST_GuideList 2026 #define PPT_PST_RunArray 2028 #define PPT_PST_RunArrayAtom 2029 #define PPT_PST_ArrayElementAtom 2030 #define PPT_PST_Int4ArrayAtom 2031 #define PPT_PST_ColorSchemeAtom 2032 // these atoms first was seen in ppt2000 in a private Tag atom #define PPT_PST_ExtendedBuGraContainer 2040 // consist of 4041 #define PPT_PST_ExtendedBuGraAtom 2041 // the instance of this atom indices the current graphic #define PPT_PST_OEShape 3008 #define PPT_PST_ExObjRefAtom 3009 #define PPT_PST_OEPlaceholderAtom 3011 #define PPT_PST_GrColor 3020 #define PPT_PST_GrectAtom 3025 #define PPT_PST_GratioAtom 3031 #define PPT_PST_Gscaling 3032 #define PPT_PST_GpointAtom 3034 #define PPT_PST_OEShapeAtom 3035 #define PPT_PST_OutlineTextRefAtom 3998 #define PPT_PST_TextHeaderAtom 3999 #define PPT_PST_TextCharsAtom 4000 #define PPT_PST_StyleTextPropAtom 4001 #define PPT_PST_BaseTextPropAtom 4002 #define PPT_PST_TxMasterStyleAtom 4003 #define PPT_PST_TxCFStyleAtom 4004 #define PPT_PST_TxPFStyleAtom 4005 #define PPT_PST_TextRulerAtom 4006 #define PPT_PST_TextBookmarkAtom 4007 #define PPT_PST_TextBytesAtom 4008 #define PPT_PST_TxSIStyleAtom 4009 #define PPT_PST_TextSpecInfoAtom 4010 #define PPT_PST_DefaultRulerAtom 4011 // these atoms first was seen in ppt2000 in a private Tag atom #define PPT_PST_ExtendedParagraphAtom 4012 #define PPT_PST_ExtendedParagraphMasterAtom 4013 #define PPT_PST_ExtendedPresRuleContainer 4014 // consist of 4012, 4015, #define PPT_PST_ExtendedParagraphHeaderAtom 4015 // the instance of this atom indices the current presobj // the first sal_uInt32 in this atom indices the current slideId #define PPT_PST_NewlyAddedAtom4016 4016 #define PPT_PST_FontEntityAtom 4023 #define PPT_PST_FontEmbedData 4024 #define PPT_PST_TypeFace 4025 #define PPT_PST_CString 4026 #define PPT_PST_ExternalObject 4027 #define PPT_PST_MetaFile 4033 #define PPT_PST_ExOleObj 4034 #define PPT_PST_ExOleObjAtom 4035 #define PPT_PST_ExPlainLinkAtom 4036 #define PPT_PST_CorePict 4037 #define PPT_PST_CorePictAtom 4038 #define PPT_PST_ExPlainAtom 4039 #define PPT_PST_SrKinsoku 4040 #define PPT_PST_Handout 4041 #define PPT_PST_ExEmbed 4044 #define PPT_PST_ExEmbedAtom 4045 #define PPT_PST_ExLink 4046 #define PPT_PST_ExLinkAtom_old 4047 #define PPT_PST_BookmarkEntityAtom 4048 #define PPT_PST_ExLinkAtom 4049 #define PPT_PST_SrKinsokuAtom 4050 #define PPT_PST_ExHyperlinkAtom 4051 #define PPT_PST_ExPlain 4053 #define PPT_PST_ExPlainLink 4054 #define PPT_PST_ExHyperlink 4055 #define PPT_PST_SlideNumberMCAtom 4056 #define PPT_PST_HeadersFooters 4057 #define PPT_PST_HeadersFootersAtom 4058 #define PPT_PST_RecolorEntryAtom 4062 #define PPT_PST_TxInteractiveInfoAtom 4063 #define PPT_PST_EmFormatAtom 4065 #define PPT_PST_CharFormatAtom 4066 #define PPT_PST_ParaFormatAtom 4067 #define PPT_PST_MasterText 4068 #define PPT_PST_RecolorInfoAtom 4071 #define PPT_PST_ExQuickTime 4073 #define PPT_PST_ExQuickTimeMovie 4074 #define PPT_PST_ExQuickTimeMovieData 4075 #define PPT_PST_ExSubscription 4076 #define PPT_PST_ExSubscriptionSection 4077 #define PPT_PST_ExControl 4078 #define PPT_PST_ExControlAtom 4091 #define PPT_PST_SlideListWithText 4080 #define PPT_PST_AnimationInfoAtom 4081 #define PPT_PST_InteractiveInfo 4082 #define PPT_PST_InteractiveInfoAtom 4083 #define PPT_PST_SlideList 4084 #define PPT_PST_UserEditAtom 4085 #define PPT_PST_CurrentUserAtom 4086 #define PPT_PST_DateTimeMCAtom 4087 #define PPT_PST_GenericDateMCAtom 4088 #define PPT_PST_HeaderMCAtom 4089 #define PPT_PST_FooterMCAtom 4090 #define PPT_PST_ExMediaAtom 4100 #define PPT_PST_ExVideo 4101 #define PPT_PST_ExAviMovie 4102 #define PPT_PST_ExMCIMovie 4103 #define PPT_PST_ExMIDIAudio 4109 #define PPT_PST_ExCDAudio 4110 #define PPT_PST_ExWAVAudioEmbedded 4111 #define PPT_PST_ExWAVAudioLink 4112 #define PPT_PST_ExOleObjStg 4113 #define PPT_PST_ExCDAudioAtom 4114 #define PPT_PST_ExWAVAudioEmbeddedAtom 4115 #define PPT_PST_AnimationInfo 4116 #define PPT_PST_RTFDateTimeMCAtom 4117 #define PPT_PST_ProgTags 5000 #define PPT_PST_ProgStringTag 5001 #define PPT_PST_ProgBinaryTag 5002 #define PPT_PST_BinaryTagData 5003 #define PPT_PST_PrintOptions 6000 #define PPT_PST_PersistPtrFullBlock 6001 #define PPT_PST_PersistPtrIncrementalBlock 6002 // these atoms first was seen in ppt2000 in a private Tag atom #define PPT_PST_NewlyAddedAtomByPPT2000_6010 6010 #define PPT_PST_NewlyAddedAtomByPPT2000_6011 6011 #define PPT_PST_RulerIndentAtom 10000 #define PPT_PST_GscalingAtom 10001 #define PPT_PST_GrColorAtom 10002 #define PPT_PST_GLPointAtom 10003 #define PPT_PST_GlineAtom 10004 #define PPT_PST_NewlyAddedAtomByXP11008 11008 #define PPT_PST_NewlyAddedAtomByXP11010 11010 #define PPT_PST_Comment10 12000 #define PPT_PST_CommentAtom10 12001 #define PPT_PST_NewlyAddedAtomByXP12004 12004 #define PPT_PST_NewlyAddedAtomByXP12010 12010 #define PPT_PST_NewlyAddedAtomByXP12011 12011 #define PPT_PST_NewlyAddedAtomByXP14001 14001 // Attribute fuer PptTextStyleSheet #define PPT_ParaAttr_BulletOn 0 //00000001 #define PPT_ParaAttr_BuHardFont 1 //00000002 #define PPT_ParaAttr_BuHardColor 2 //00000004 #define PPT_ParaAttr_BuHardHeight 3 //00000008 #define PPT_ParaAttr_BulletFont 4 //00000010 #define PPT_ParaAttr_BulletColor 5 //00000020 #define PPT_ParaAttr_BulletHeight 6 //00000040 #define PPT_ParaAttr_BulletChar 7 //00000080 #define PPT_ParaAttr_DontKnow1 8 //00000100 #define PPT_ParaAttr_DontKnow2 9 //00000200 #define PPT_ParaAttr_DontKnow3 10 //00000400 #define PPT_ParaAttr_Adjust 11 //00000800 0000=Left, 0001=Center, 0002=Right, 0003=Block #define PPT_ParaAttr_LineFeed 12 //00001000 #define PPT_ParaAttr_UpperDist 13 //00002000 ist bei Textframes default immer auf 0032 gesetzt #define PPT_ParaAttr_LowerDist 14 //00004000 #define PPT_ParaAttr_TextOfs 15 //00008000 #define PPT_ParaAttr_BulletOfs 16 //00010000 #define PPT_ParaAttr_DefaultTab 17 //00020000 #define PPT_ParaAttr_AsianLB_1 18 #define PPT_ParaAttr_AsianLB_2 19 #define PPT_ParaAttr_AsianLB_3 20 #define PPT_ParaAttr_BiDi 21 //00200000 #define PPT_CharAttr_Bold 0 //00000001 #define PPT_CharAttr_Italic 1 //00000002 #define PPT_CharAttr_Underline 2 //00000004 #define PPT_CharAttr_Shadow 4 //00000010 #define PPT_CharAttr_Strikeout 8 //00000100 #define PPT_CharAttr_Embossed 9 //00000200 #define PPT_CharAttr_ResetNumbering 10 //00000400 #define PPT_CharAttr_EnableNumbering1 11 //00000800 #define PPT_CharAttr_EnableNumbering2 12 //00001000 #define PPT_CharAttr_Font 16 //00010000 #define PPT_CharAttr_AsianOrComplexFont 21 //00200000 #define PPT_CharAttr_ANSITypeface 22 //00400000 #define PPT_CharAttr_Symbol 23 //00800000 #define PPT_CharAttr_FontHeight 17 //00020000 #define PPT_CharAttr_FontColor 18 //00040000 #define PPT_CharAttr_Escapement 19 //00080000 // Werte fuer PptSlideLayoutAtom.eLayout #define PPT_LAYOUT_TITLESLIDE 0 // The slide is a title slide #define PPT_LAYOUT_TITLEANDBODYSLIDE 1 // Title and body slide #define PPT_LAYOUT_TITLEMASTERSLIDE 2 // Title master slide #define PPT_LAYOUT_MASTERSLIDE 3 // Master slide layout #define PPT_LAYOUT_MASTERNOTES 4 // Master notes layout #define PPT_LAYOUT_NOTESTITLEBODY 5 // Notes title/body layout #define PPT_LAYOUT_HANDOUTLAYOUT 6 // Handout layout, therefore it doesn't have placeholders except header, footer, and date #define PPT_LAYOUT_ONLYTITLE 7 // Only title placeholder #define PPT_LAYOUT_2COLUMNSANDTITLE 8 // Body of the slide has 2 columns and a title #define PPT_LAYOUT_2ROWSANDTITLE 9 // Slide's body has 2 rows and a title #define PPT_LAYOUT_RIGHTCOLUMN2ROWS 10 // Body contains 2 columns, right column has 2 rows #define PPT_LAYOUT_LEFTCOLUMN2ROWS 11 // Body contains 2 columns, left column has 2 rows #define PPT_LAYOUT_BOTTOMROW2COLUMNS 12 // Body contains 2 rows, bottom row has 2 columns #define PPT_LAYOUT_TOPROW2COLUMN 13 // Body contains 2 rows, top row has 2 columns #define PPT_LAYOUT_4OBJECTS 14 // 4 objects #define PPT_LAYOUT_BIGOBJECT 15 // Big object #define PPT_LAYOUT_BLANCSLIDE 16 // Blank slide #define PPT_LAYOUT_TITLERIGHTBODYLEFT 17 // Vertical title on the right, body on the left #define PPT_LAYOUT_TITLERIGHT2BODIESLEFT 18 // Vertical title on the right, body on the left split into 2 rows // the following table describes the placeholder id's (values from reality followed by values taken from the documentation) #define PPT_PLACEHOLDER_NONE 0 // 0 None #define PPT_PLACEHOLDER_MASTERTITLE 1 // 1 Master title #define PPT_PLACEHOLDER_MASTERBODY 2 // 2 Master body #define PPT_PLACEHOLDER_MASTERCENTEREDTITLE 3 // 3 Master centered title #define PPT_PLACEHOLDER_MASTERSUBTITLE 4 // 10 Master subtitle #define PPT_PLACEHOLDER_MASTERNOTESSLIDEIMAGE 5 // 4 Master notes slide image #define PPT_PLACEHOLDER_MASTERNOTESBODYIMAGE 6 // 5 Master notes body image #define PPT_PLACEHOLDER_MASTERDATE 7 // 6 Master date #define PPT_PLACEHOLDER_MASTERSLIDENUMBER 8 // 7 Master slide number #define PPT_PLACEHOLDER_MASTERFOOTER 9 // 8 Master footer #define PPT_PLACEHOLDER_MASTERHEADER 10 // 9 Master header #define PPT_PLACEHOLDER_GENERICTEXTOBJECT // 11 Generic text object #define PPT_PLACEHOLDER_TITLE 13 // 12 Title #define PPT_PLACEHOLDER_BODY 14 // 13 Body #define PPT_PLACEHOLDER_NOTESBODY 12 // 14 Notes body #define PPT_PLACEHOLDER_CENTEREDTITLE 15 // 15 Centered title #define PPT_PLACEHOLDER_SUBTITLE 16 // 16 Subtitle #define PPT_PLACEHOLDER_VERTICALTEXTTITLE 17 // 17 Vertical text title #define PPT_PLACEHOLDER_VERTICALTEXTBODY 18 // 18 Vertical text body #define PPT_PLACEHOLDER_NOTESSLIDEIMAGE 11 // 19 Notes slide image #define PPT_PLACEHOLDER_OBJECT 19 // 20 Object (no matter the size) #define PPT_PLACEHOLDER_GRAPH 20 // 21 Graph #define PPT_PLACEHOLDER_TABLE 21 // 22 Table #define PPT_PLACEHOLDER_CLIPART 22 // 23 Clip Art #define PPT_PLACEHOLDER_ORGANISZATIONCHART 23 // 24 Organization Chart #define PPT_PLACEHOLDER_MEDIACLIP 24 // 25 Media Clip //////////////////////////////////////////////////////////////////////////////////////////////////// #endif // SVX_LIGHT #endif //_SVDFPPT_HXX