LCOV - code coverage report
Current view: top level - usr/local/src/libreoffice/include/filter/msfilter - svdfppt.hxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 59 70 84.3 %
Date: 2013-07-09 Functions: 44 52 84.6 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #ifndef _SVDFPPT_HXX
      21             : #define _SVDFPPT_HXX
      22             : 
      23             : #include <tools/solar.h>
      24             : #include <tools/string.hxx>
      25             : #include <tools/gen.hxx>
      26             : #include <tools/color.hxx>
      27             : #include <svx/svdobj.hxx>
      28             : #include <editeng/numitem.hxx>
      29             : #include <editeng/editdata.hxx>
      30             : #include <filter/msfilter/msdffimp.hxx>
      31             : #include <filter/msfilter/msocximex.hxx>
      32             : #include <editeng/eeitem.hxx>
      33             : #define ITEMID_FIELD EE_FEATURE_FIELD
      34             : #include <editeng/flditem.hxx>
      35             : #undef ITEMID_FIELD
      36             : #include "filter/msfilter/msfilterdllapi.h"
      37             : #include <vcl/font.hxx>
      38             : #include <vector>
      39             : #include <boost/optional.hpp>
      40             : #include <boost/ptr_container/ptr_vector.hpp>
      41             : 
      42             : class SdrModel;
      43             : class SdPage;
      44             : class SdrPage;
      45             : class SdrObject;
      46             : class SvStream;
      47             : class Polygon;
      48             : class PolyPolygon;
      49             : class SfxItemSet;
      50             : class Outliner;
      51             : class Graphic;
      52             : class SvxMSDffManager;
      53             : class PPTTextObj;
      54             : class DffRecordHeader;
      55             : class SvxBulletItem;
      56             : 
      57             : #define PPT_IMPORTFLAGS_NO_TEXT_ASSERT  1
      58             : 
      59           8 : struct MSFILTER_DLLPUBLIC PptCurrentUserAtom
      60             : {
      61             :     sal_uInt32  nMagic;
      62             :     sal_uInt32  nCurrentUserEdit;
      63             :     sal_uInt16  nDocFileVersion;
      64             :     sal_uInt8   nMajorVersion;
      65             :     sal_uInt8   nMinorVersion;
      66             :     OUString    aCurrentUser;
      67             : 
      68             : public:
      69             : 
      70           8 :     PptCurrentUserAtom() :  nMagic              ( 0 ),
      71             :                             nCurrentUserEdit    ( 0 ),
      72             :                             nDocFileVersion     ( 0 ),
      73             :                             nMajorVersion       ( 0 ),
      74           8 :                             nMinorVersion       ( 0 ) {}
      75             : 
      76             :     MSFILTER_DLLPUBLIC friend SvStream& operator>>( SvStream& rIn, PptCurrentUserAtom& rAtom );
      77             : };
      78             : 
      79           8 : struct MSFILTER_DLLPUBLIC PowerPointImportParam
      80             : {
      81             :     SvStream&           rDocStream;
      82             :     sal_uInt32          nImportFlags;
      83             :     PptCurrentUserAtom  aCurrentUserAtom;
      84             : 
      85             :     PowerPointImportParam( SvStream& rDocStream, sal_uInt32 nImportFlags );
      86             : };
      87             : 
      88           0 : struct SdHyperlinkEntry
      89             : {
      90             :     sal_uInt32  nIndex;
      91             :     sal_Int32   nPrivate1;
      92             :     sal_Int32   nPrivate2;
      93             :     sal_Int32   nPrivate3;
      94             :     sal_Int32   nInfo;
      95             :     OUString    aTarget;
      96             :     OUString    aSubAdress;
      97             : 
      98             :     sal_Int32   nStartPos;
      99             :     sal_Int32   nEndPos;
     100             : 
     101             :     OUString    aConvSubString;
     102             :     ESelection  aESelection;
     103             :     sal_Bool    bSelection;
     104             : };
     105             : 
     106             : // Hilfsklasse zum Einlesen der PPT InteractiveInfoAtom
     107             : struct MSFILTER_DLLPUBLIC PptInteractiveInfoAtom
     108             : {
     109             :     sal_uInt32          nSoundRef;
     110             :     sal_uInt32          nExHyperlinkId;
     111             :     sal_uInt8           nAction;
     112             :     sal_uInt8           nOleVerb;
     113             :     sal_uInt8           nJump;
     114             :     sal_uInt8           nFlags;
     115             :     sal_uInt8           nHyperlinkType;
     116             : 
     117             :     // unknown, da Gesamtgroesse 16 ist
     118             :     sal_uInt8           nUnknown1;
     119             :     sal_uInt8           nUnknown2;
     120             :     sal_uInt8           nUnknown3;
     121             : 
     122             : public:
     123             : 
     124             :     MSFILTER_DLLPUBLIC friend SvStream& operator>>( SvStream& rIn, PptInteractiveInfoAtom& rAtom );
     125             : };
     126             : 
     127             : enum PptPageKind { PPT_MASTERPAGE, PPT_SLIDEPAGE, PPT_NOTEPAGE };
     128             : 
     129             : enum PptPageFormat
     130             : {   PPTPF_SCREEN,   //
     131             :     PPTPF_USLETTER, // 8.5x11"
     132             :     PPTPF_A4,       // 210x297mm
     133             :     PPTPF_35MMDIA,  // DIA
     134             :     PPTPF_OVERHEAD, //
     135             :     PPTPF_CUSTOM
     136             : };
     137             : 
     138             : // Werte fuer den sal_uLong im PPT_PST_TextHeaderAtom
     139             : enum PPT_TextHeader
     140             : {
     141             :     PPTTH_TITLE,
     142             :     PPTTH_BODY,
     143             :     PPTTH_NOTES,
     144             :     PPTTH_NOTUSED,
     145             :     PPTTH_OTHER,       // Text in a Shape
     146             :     PPTTH_CENTERBODY,  // Subtitle in Title-Slide
     147             :     PPTTH_CENTERTITLE, // Title in Title-Slide
     148             :     PPTTH_HALFBODY,    // Body in two-column slide
     149             :     PPTTH_QUARTERBODY  // Body in four-body slide
     150             : };
     151             : 
     152             : #define TSS_TYPE_PAGETITLE      (0)
     153             : #define TSS_TYPE_BODY           (1)
     154             : #define TSS_TYPE_NOTES          (2)
     155             : #define TSS_TYPE_UNUSED         (3)
     156             : #define TSS_TYPE_TEXT_IN_SHAPE  (4)
     157             : #define TSS_TYPE_SUBTITLE       (5)
     158             : #define TSS_TYPE_TITLE          (6)
     159             : #define TSS_TYPE_HALFBODY       (7)
     160             : #define TSS_TYPE_QUARTERBODY    (8)
     161             : 
     162             : // Inventor-Id fuer PPT UserData
     163             : const sal_uInt32 PPTInventor = sal_uInt32('P') * 0x00000001
     164             :                              + sal_uInt32('P') * 0x00000100
     165             :                              + sal_uInt32('T') * 0x00010000
     166             :                              + sal_uInt32('0') * 0x01000000;
     167             : 
     168             : // Object-Ids fuer StarDraw UserData
     169             : #define PPT_OBJECTINFO_ID       (1)
     170             : 
     171           8 : struct MSFILTER_DLLPUBLIC PptDocumentAtom
     172             : {
     173             :     Size            aSlidesPageSize;                    // page size of the slides in 576DPI
     174             :     Size            aNotesPageSize;                     // page size of the notes in 576DPI
     175             :     // RatioAtom erstmal weggelassen
     176             :     sal_uInt32      nNotesMasterPersist;                // 0=non-existent
     177             :     sal_uInt32      nHandoutMasterPersist;              // 0=non-existent
     178             :     sal_uInt16      n1stPageNumber;                     // page number of the first slide
     179             :     PptPageFormat   eSlidesPageFormat;                  // page format of the slides
     180             :     sal_Bool        bEmbeddedTrueType           : 1;    // TrueType direcly within the File?
     181             :     sal_Bool        bTitlePlaceholdersOmitted   : 1;
     182             :     sal_Bool        bRightToLeft                : 1;
     183             :     sal_Bool        bShowComments               : 1;
     184             : 
     185             : public:
     186             : 
     187             :     Size    GetPageSize( const Size& rSiz ) const;
     188          50 :     Size    GetSlidesPageSize() const { return GetPageSize( aSlidesPageSize ); }
     189          57 :     Size    GetNotesPageSize() const { return GetPageSize( aNotesPageSize ); }
     190             : 
     191             :     friend SvStream& operator>>( SvStream& rIn, PptDocumentAtom& rAtom );
     192             : };
     193             : 
     194             : struct PptSlideLayoutAtom
     195             : {
     196             :     sal_Int32           eLayout;                // 0..18
     197             :     sal_uInt8           aPlaceholderId[ 8 ];
     198             : 
     199             : public:
     200          79 :                         PptSlideLayoutAtom() { Clear(); }
     201             :     void                Clear();
     202             : 
     203             :     // Das SlideLayoutAtom wird ohne Header eingelesen!
     204             :     friend SvStream& operator>>( SvStream& rIn, PptSlideLayoutAtom& rAtom );
     205             : };
     206             : 
     207             : struct PptSlideAtom
     208             : {
     209             :     PptSlideLayoutAtom  aLayout;
     210             :     sal_uInt32          nMasterId;
     211             :     sal_uInt32          nNotesId;
     212             :     sal_uInt16          nFlags;
     213             : 
     214             : public:
     215          79 :                         PptSlideAtom() { Clear(); }
     216             :     void                Clear();
     217             : 
     218             :     friend SvStream& operator>>(SvStream& rIn, PptSlideAtom& rAtom);
     219             : };
     220             : 
     221             : struct PptSlidePersistAtom
     222             : {
     223             :     sal_uInt32          nPsrReference;
     224             :     sal_uInt32          nFlags;
     225             :     sal_uInt32          nNumberTexts;
     226             :     sal_uInt32          nSlideId;
     227             :     sal_uInt32          nReserved;                  // we will use nReserved temporarly to set the offset to SSSlideInfoAtom ( if possible )
     228             : 
     229             : public:
     230          79 :                         PptSlidePersistAtom() { Clear(); }
     231             :     void                Clear();
     232             : 
     233             :     friend SvStream& operator>>(SvStream& rIn, PptSlidePersistAtom& rAtom);
     234             : };
     235             : 
     236             : struct PptNotesAtom
     237             : {
     238             :     sal_uInt32          nSlideId;
     239             :     sal_uInt16          nFlags;
     240             : 
     241             : public:
     242          79 :                         PptNotesAtom() { Clear(); }
     243             :     void                Clear();
     244             : 
     245             :     friend SvStream& operator>>(SvStream& rIn, PptNotesAtom& rAtom);
     246             : };
     247             : 
     248             : struct PptColorSchemeAtom
     249             : {
     250             :     sal_uInt8           aData[32];
     251             : 
     252             : public:
     253          87 :                         PptColorSchemeAtom () { Clear(); }
     254             :     void                Clear();
     255             :     Color               GetColor( sal_uInt16 nNum ) const;
     256             : 
     257             :     friend SvStream& operator>>(SvStream& rIn, PptColorSchemeAtom& rAtom);
     258             : };
     259             : 
     260          54 : struct PptFontEntityAtom
     261             : {
     262             :     OUString            aName;
     263             :     double              fScaling;
     264             :     sal_uInt8           lfClipPrecision;
     265             :     sal_uInt8           lfQuality;
     266             : 
     267             :     sal_uInt32          nUniqueFontId;          // not used anymore
     268             :     CharSet             eCharSet;
     269             :     FontFamily          eFamily;
     270             :     FontPitch           ePitch;
     271             :     sal_Bool            bAvailable;
     272             : 
     273             :     friend SvStream& operator>>(SvStream& rIn, PptFontEntityAtom& rAtom);
     274             : };
     275             : 
     276             : class PptFontCollection;
     277             : struct PptUserEditAtom
     278             : {
     279             :     DffRecordHeader     aHd;
     280             :     sal_Int32           nLastSlideID;            // ID of last visible slide
     281             :     sal_uInt32          nVersion;                // This is major/minor/build which did the edit
     282             :     sal_uInt32          nOffsetLastEdit;         // File offset of prev PptUserEditAtom
     283             :     sal_uInt32          nOffsetPersistDirectory; // Offset to PersistPtrs for this file version.
     284             :     sal_uInt32          nDocumentRef;
     285             :     sal_uInt32          nMaxPersistWritten;      // total number of Persist entries up to this point
     286             :     sal_Int16           eLastViewType;           // enum view type
     287             : 
     288             : public:
     289           8 :     PptUserEditAtom() : nOffsetPersistDirectory( 0 ) {}
     290             : 
     291             :     friend SvStream& operator>>( SvStream& rIn, PptUserEditAtom& rAtom );
     292             : };
     293             : 
     294             : struct PptOEPlaceholderAtom
     295             : {
     296             :     sal_uInt32          nPlacementId;
     297             :     sal_uInt8           nPlaceholderId;
     298             :     sal_uInt8           nPlaceholderSize; // 0=Full size, 1=Half size, 2=Quarter of Slide
     299             : 
     300             : public:
     301        1397 :                         PptOEPlaceholderAtom() { Clear(); }
     302             :     void                Clear();
     303             : 
     304             :     friend SvStream& operator>>( SvStream& rIn, PptOEPlaceholderAtom& rAtom );
     305             : };
     306             : 
     307             : struct ProcessData;
     308             : struct PPTStyleSheet;
     309             : struct HeaderFooterEntry;
     310             : struct PptSlidePersistEntry
     311             : {
     312             :     PptSlidePersistAtom aPersistAtom;
     313             :     PptSlideAtom        aSlideAtom;
     314             :     PptNotesAtom        aNotesAtom;
     315             :     PptColorSchemeAtom  aColorScheme;           // each slide includes this colorscheme atom
     316             :     PPTStyleSheet*      pStyleSheet;            // stylesheet of this page ( only in masterpages ), since XP supports more than one masterpage
     317             : 
     318             :     sal_uInt32          HeaderFooterOfs[ 4 ];   // containing the ofs to the placeholder (only masterpage)
     319             :     HeaderFooterEntry*  pHeaderFooterEntry;
     320             :     SvxMSDffSolverContainer* pSolverContainer;
     321             :     sal_uInt32          nSlidePersistStartOffset;// is an array to the end of the SlidePersistAtom of this page, TextHeaderAtom is following
     322             :     sal_uInt32          nSlidePersistEndOffset;
     323             :     sal_uInt32          nBackgroundOffset;      // fileoffset
     324             :     sal_uInt32          nDrawingDgId;           // valid, if not -1
     325             :     sal_uInt32*         pPresentationObjects;   // if valid, this is a pointer to an array that includes the offsets to the presentation objects
     326             :                                                 // on this masterpage for each instance ( 0 - 8 );
     327             :     SdrObject*          pBObj;
     328             :     sal_Bool            bBObjIsTemporary;
     329             : 
     330             :     PptPageKind         ePageKind;              //
     331             : 
     332             :     sal_Bool            bNotesMaster    : 1;    // for NotesMaster
     333             :     sal_Bool            bHandoutMaster  : 1;    // for HandoutMaster
     334             :     sal_Bool            bStarDrawFiller : 1;    // special for StarDraw
     335             : public:
     336             :                         PptSlidePersistEntry();
     337             :                         ~PptSlidePersistEntry();
     338         643 :     sal_uInt32          GetSlideId() const { return aPersistAtom.nSlideId; }
     339             : };
     340             : 
     341          21 : class _PptSlidePersistList : public std::vector<PptSlidePersistEntry*>
     342             : {
     343             : public:
     344          21 :     ~_PptSlidePersistList()
     345          21 :     {
     346         100 :         for( const_iterator it = begin(); it != end(); ++it )
     347          79 :             delete *it;
     348          21 :     }
     349             : };
     350             : 
     351             : #define PPTSLIDEPERSIST_ENTRY_NOTFOUND 0xFFFF
     352             : 
     353          42 : class MSFILTER_DLLPUBLIC PptSlidePersistList: public _PptSlidePersistList
     354             : {
     355             : public:
     356             :     sal_uInt16          FindPage( sal_uInt32 nId ) const;
     357             : };
     358             : 
     359             : class  SfxObjectShell;
     360             : struct PPTOleEntry
     361             : {
     362             :     sal_uInt32          nId;                        // OleId
     363             :     sal_uInt32          nPersistPtr;                // PersistPtr
     364             :     sal_uInt32          nRecHdOfs;                  // points to the record header: ExObjListHd
     365             :     SfxObjectShell*     pShell;
     366             :     sal_uInt16          nType;                      // maybe PPT_PST_ExEmbed or PPT_PST_ExControl
     367             :     sal_uInt32          nAspect;                    // the aspect of the OLE object
     368             : 
     369           3 :     PPTOleEntry( sal_uInt32 nid, sal_uInt32 nOfs, SfxObjectShell* pSh, sal_uInt16 nT, sal_uInt32 nAsp ) :
     370             :         nId             ( nid ),
     371             :         nRecHdOfs       ( nOfs ),
     372             :         pShell          ( pSh ),
     373             :         nType           ( nT ),
     374           3 :         nAspect         ( nAsp ) {}
     375             : };
     376             : 
     377             : struct PptExOleObjAtom
     378             : {
     379             :     sal_uInt32  nAspect;
     380             :     sal_uInt32  nId;
     381             :     sal_uInt32  nPersistPtr;
     382             : 
     383             : public:
     384             : 
     385             :     friend SvStream& operator>>( SvStream& rIn, PptExOleObjAtom& rAtom );
     386             : };
     387             : 
     388             : typedef ::std::vector< PPTOleEntry* > PPTOleEntryList;
     389             : class PPTExtParaProv;
     390             : class MSFILTER_DLLPUBLIC SdrEscherImport : public SvxMSDffManager
     391             : {
     392             : protected:
     393             : 
     394             :     friend class PPTTextObj;
     395             :     friend class PPTPortionObj;
     396             :     friend struct PPTStyleTextPropReader;
     397             :     friend class ImplSdPPTImport;
     398             : 
     399             :     PptDocumentAtom     aDocAtom;
     400             :     DffRecordManager    aDocRecManager;             // contains all first level container and atoms of the document container
     401             : 
     402             :     PPTOleEntryList     aOleObjectList;             // contains PPTOleEntrys
     403             : 
     404             :     PptFontCollection*  pFonts;
     405             : 
     406             :     sal_uInt32          nStreamLen;
     407             :     sal_uInt16          nTextStylesIndex;
     408             : 
     409             :     CharSet             eCharSetSystem;
     410             : 
     411             :     sal_Bool            bWingdingsChecked       : 1;
     412             :     sal_Bool            bWingdingsAvailable     : 1;
     413             :     sal_Bool            bMonotypeSortsChecked   : 1;
     414             :     sal_Bool            bMonotypeSortsAvailable : 1;
     415             :     sal_Bool            bTimesNewRomanChecked   : 1;
     416             :     sal_Bool            bTimesNewRomanAvailable : 1;
     417             : 
     418             :     sal_Bool            ReadString( OUString& rStr ) const;
     419             :     // nur fuer PowerPoint-Filter:
     420             :     virtual const PptSlideLayoutAtom* GetSlideLayoutAtom() const;
     421             : 
     422             : public:
     423             :     using SvxMSDffManager::ReadObjText;
     424             : 
     425             :     PowerPointImportParam& rImportParam;
     426             : 
     427             :                         SdrEscherImport( PowerPointImportParam&, const OUString& rBaseURL );
     428             :     virtual             ~SdrEscherImport();
     429             :     virtual bool        GetColorFromPalette( sal_uInt16 nNum, Color& rColor ) const;
     430             :     virtual sal_Bool    SeekToShape( SvStream& rSt, void* pClientData, sal_uInt32 nId ) const;
     431             :     PptFontEntityAtom*  GetFontEnityAtom( sal_uInt32 nNum ) const;
     432             :     void                RecolorGraphic( SvStream& rSt, sal_uInt32 nRecLen, Graphic& rGraph );
     433             :     virtual SdrObject*  ReadObjText( PPTTextObj* pTextObj, SdrObject* pObj, SdPage* pPage ) const;
     434             :     virtual SdrObject*  ProcessObj( SvStream& rSt, DffObjData& rData, void* pData, Rectangle& rTextRect, SdrObject* pObj );
     435             :     virtual void        ProcessClientAnchor2( SvStream& rSt, DffRecordHeader& rHd, void* pData, DffObjData& rObj );
     436             :     void                ImportHeaderFooterContainer( DffRecordHeader& rHeader, HeaderFooterEntry& rEntry );
     437             : };
     438             : 
     439             : ////////////////////////////////////////////////////////////////////////////////////////////////////
     440             : 
     441             : #define SD_HEADERFOOTER_DATE        1
     442             : #define SD_HEADERFOOTER_TODAYDATE   2
     443             : #define SD_HEADERFOOTER_USERDATE    4
     444             : #define SD_HEADERFOOTER_SLIDENUMBER 8
     445             : #define SD_HEADERFOOTER_HEADER      16
     446             : #define SD_HEADERFOOTER_FOOTER      32
     447             : 
     448             : class SvxFieldItem;
     449             : struct MSFILTER_DLLPUBLIC PPTFieldEntry
     450             : {
     451             :     sal_uInt16          nPos;
     452             :     sal_uInt16          nTextRangeEnd;
     453             :     SvxFieldItem*       pField1;
     454             :     SvxFieldItem*       pField2;
     455             :     OUString*           pString;
     456             : 
     457          46 :     PPTFieldEntry() : nPos( 0 ), nTextRangeEnd( 0 ), pField1( NULL ), pField2( NULL ), pString( NULL ) {};
     458             :     ~PPTFieldEntry();
     459             : 
     460             :     void                SetDateTime( sal_uInt32 nType );
     461             : 
     462             :                         // converting PPT date time format:
     463             :     static void         GetDateTime(
     464             :                             const sal_uInt32 nVal,
     465             :                             SvxDateFormat& eDateFormat,
     466             :                             SvxTimeFormat& eTimeFormat
     467             :                         );
     468             : };
     469             : 
     470          23 : struct MSFILTER_DLLPUBLIC HeaderFooterEntry
     471             : {
     472             :     const PptSlidePersistEntry* pMasterPersist;
     473             :     OUString            pPlaceholder[ 4 ];
     474             :     sal_uInt32          nAtom;
     475             : 
     476             :     sal_uInt32          GetMaskForInstance( sal_uInt32 nInstance );
     477             :     sal_uInt32          IsToDisplay( sal_uInt32 nInstance );
     478             :     sal_uInt32          NeedToImportInstance(
     479             :                             const sal_uInt32 nInstance,
     480             :                             const PptSlidePersistEntry& rSlidePersist
     481             :                         );
     482             : 
     483             :                         explicit HeaderFooterEntry( const PptSlidePersistEntry* pMaster = NULL );
     484             :                         ~HeaderFooterEntry();
     485             : };
     486             : 
     487             : struct ProcessData
     488             : {
     489             :     PptSlidePersistEntry&       rPersistEntry;
     490             :     SdPage*                     pPage;
     491             :     ::std::vector< SdrObject* > aBackgroundColoredObjects;
     492             :     sal_uInt32*                 pTableRowProperties;
     493             : 
     494          75 :     ProcessData( PptSlidePersistEntry& rP, SdPage* pP ) :
     495             :         rPersistEntry               ( rP ),
     496             :         pPage                       ( pP ),
     497          75 :         pTableRowProperties         ( NULL ) {};
     498          75 :     ~ProcessData() { delete[] pTableRowProperties; };
     499             : };
     500             : 
     501             : ////////////////////////////////////////////////////////////////////////////////////////////////////
     502             : 
     503             : typedef ::std::vector< SdHyperlinkEntry* > SdHyperlinkEntryList;
     504             : class SdrTextObj;
     505             : class SfxObjectShell;
     506             : 
     507             : class MSFILTER_DLLPUBLIC SdrPowerPointImport : public SdrEscherImport
     508             : {
     509             : protected:
     510             : 
     511             :     friend class PPTTextObj;
     512             :     friend class PPTExtParaProv;
     513             :     friend struct PPTStyleSheet;
     514             :     friend class PPTNumberFormatCreator;
     515             : 
     516             :     sal_Bool                bOk;
     517             :     PptUserEditAtom         aUserEditAtom;
     518             :     PptColorSchemeAtom      aPageColors;
     519             :     SdHyperlinkEntryList    aHyperList;
     520             :     sal_uInt32*             pPersistPtr;
     521             :     sal_uLong               nPersistPtrAnz;
     522             : 
     523             :     const PPTStyleSheet*    pPPTStyleSheet; // this is the current stylesheet;
     524             :     const PPTStyleSheet*    pDefaultSheet;  // this is a sheet we are using if no masterpage can be found, but that should
     525             :                                             // never happen just preventing a crash
     526             :     PptSlidePersistList*    pMasterPages;
     527             :     PptSlidePersistList*    pSlidePages;
     528             :     PptSlidePersistList*    pNotePages;
     529             :     sal_uInt16              nAktPageNum;
     530             :     sal_uLong               nDocStreamPos;
     531             :     sal_uInt16              nPageColorsNum;
     532             :     PptPageKind             ePageColorsKind;
     533             :     PptPageKind             eAktPageKind;
     534             : 
     535             : protected:
     536             :     using SdrEscherImport::ReadObjText;
     537             : 
     538             :     sal_Bool                SeekToAktPage(DffRecordHeader* pRecHd=NULL) const;
     539             :     sal_Bool                SeekToDocument(DffRecordHeader* pRecHd=NULL) const;
     540             :     sal_Bool                SeekToContentOfProgTag(
     541             :                                 sal_Int32 nVersion,
     542             :                                 SvStream& rSt,
     543             :                                 const DffRecordHeader& rProgTagBinaryDataHd,
     544             :                                 DffRecordHeader& rContentHd
     545             :                             );
     546             :     virtual SdrObject*      ApplyTextObj(
     547             :                                 PPTTextObj* pTextObj,
     548             :                                 SdrTextObj* pText,
     549             :                                 SdPage* pPage,
     550             :                                 SfxStyleSheet*,
     551             :                                 SfxStyleSheet** )
     552             :                              const;
     553             :     virtual SdrObject*      ReadObjText( PPTTextObj* pTextObj, SdrObject* pObj, SdPage* pPage ) const;
     554             :     // #i32596# - new parameter <_nCalledByGroup>, which
     555             :     // indicates, if the OLE object is imported inside a group object.
     556             :     virtual SdrObject*      ImportOLE(
     557             :                                 long nOLEId,
     558             :                                 const Graphic& rGraf,
     559             :                                 const Rectangle& rBoundRect,
     560             :                                 const Rectangle& rVisArea,
     561             :                                 const int _nCalledByGroup,
     562             :                                 sal_Int64 nAspect
     563             :                             ) const;
     564             :     SvMemoryStream*         ImportExOleObjStg( sal_uInt32 nPersistPtr, sal_uInt32& nOleId ) const;
     565             :     SdrPage*                MakeBlancPage(sal_Bool bMaster) const;
     566             :     sal_Bool                ReadFontCollection();
     567             :     sal_Bool                ForceFontCollection() const
     568             :                             { return pFonts!=NULL?sal_True:((SdrPowerPointImport*)this)->ReadFontCollection(); }
     569             :     PptSlidePersistList*    GetPageList(PptPageKind ePageKind) const;
     570             :     sal_uInt32              GetAktPageId();
     571             :     sal_uInt32              GetMasterPageId(sal_uInt16 nPageNum, PptPageKind ePageKind) const;
     572             :     sal_uInt32              GetNotesPageId(sal_uInt16 nPageNum ) const;
     573             :     SdrOutliner*            GetDrawOutliner( SdrTextObj* pSdrText ) const;
     574             :     void                    SeekOle( SfxObjectShell* pShell, sal_uInt32 nFilterOptions );
     575             : 
     576             :     void        ApplyTextAnchorAttributes( PPTTextObj& rTextObj, SfxItemSet& rSet ) const;
     577             :     sal_Bool    IsVerticalText() const;
     578             : 
     579             : public:
     580             :                             SdrPowerPointImport( PowerPointImportParam&, const OUString& rBaseURL );
     581             :     virtual                 ~SdrPowerPointImport();
     582             :     sal_uInt16              GetPageCount( PptPageKind eKind = PPT_SLIDEPAGE ) const;
     583             :     void                    SetPageNum( sal_uInt16 nPageNum, PptPageKind = PPT_SLIDEPAGE );
     584             :     sal_uInt16              GetPageNum() const { return nAktPageNum; }
     585             :     PptPageKind             GetPageKind() const { return eAktPageKind; }
     586             :     Size                    GetPageSize() const;
     587             :     SdrObject*              ImportPageBackgroundObject(
     588             :                                 const SdrPage& rPage,
     589             :                                 sal_uInt32& nBgFileOffset,
     590             :                                 sal_Bool bForce
     591             :                             );
     592             :     sal_Bool                IsNoteOrHandout( sal_uInt16 nPageNum, PptPageKind ePageKind ) const;
     593             :     sal_Bool                HasMasterPage(
     594             :                                 sal_uInt16 nPageNum,
     595             :                                 PptPageKind ePageKind = PPT_SLIDEPAGE
     596             :                             ) const;
     597             :     sal_uInt16              GetMasterPageIndex(
     598             :                                 sal_uInt16 nPageNum,
     599             :                                 PptPageKind ePageKind = PPT_SLIDEPAGE
     600             :                             ) const;
     601             : 
     602             :     void                    ImportPage( SdrPage* pPage, const PptSlidePersistEntry* pMasterPersist = NULL );
     603             :     virtual bool            GetColorFromPalette(sal_uInt16 nNum, Color& rColor) const;
     604             :     virtual sal_Bool        SeekToShape( SvStream& rSt, void* pClientData, sal_uInt32 nId ) const;
     605             :     sal_Unicode             PPTSubstitute(
     606             :                                 sal_uInt16 nFont,
     607             :                                 sal_Unicode nChar,
     608             :                                 sal_uInt32& nMappedFontId,
     609             :                                 Font& rFont,
     610             :                                 char nDefault
     611             :                             ) const;
     612             :     const PptDocumentAtom&  GetDocumentAtom() const { return aDocAtom; }
     613             :     virtual const PptSlideLayoutAtom*   GetSlideLayoutAtom() const;
     614             :     SdrObject*              CreateTable(
     615             :                                 SdrObject* pGroupObject,
     616             :                                 sal_uInt32* pTableArry,
     617             :                                 SvxMSDffSolverContainer*
     618             :                             );
     619             :     virtual bool ReadFormControl( SotStorageRef& rSrc1, com::sun::star::uno::Reference< com::sun::star::form::XFormComponent > & rFormComp ) const = 0;
     620             : };
     621             : 
     622             : struct PPTTextCharacterStyleAtomInterpreter
     623             : {
     624             :     sal_uInt16      nFlags1;
     625             :     sal_uInt16      nFlags2;
     626             :     sal_uInt16      nFlags3;
     627             :     sal_Int32       n1;
     628             :     sal_uInt16      nFontHeight;
     629             :     sal_Int32       nFontColor;
     630             : 
     631             :                     PPTTextCharacterStyleAtomInterpreter();
     632             :                     ~PPTTextCharacterStyleAtomInterpreter();
     633             : 
     634             :     sal_Bool        Read( SvStream& rIn, const DffRecordHeader& rRecHd );
     635             : 
     636             :     sal_uInt32      GetColor( sal_uInt32 nDefault );
     637             : };
     638             : 
     639             : struct PPTTextParagraphStyleAtomInterpreter
     640             : {
     641             :     sal_Bool        bValid;
     642             :     sal_Bool        bForbiddenRules;
     643             :     sal_Bool        bHangingPunctuation;
     644             :     sal_Bool        bLatinTextWrap;
     645             : 
     646             :                     PPTTextParagraphStyleAtomInterpreter();
     647             :                     ~PPTTextParagraphStyleAtomInterpreter();
     648             : 
     649             :     sal_Bool        Read( SvStream& rIn, const DffRecordHeader& rRecHd );
     650             : };
     651             : 
     652             : struct PPTTextSpecInfo
     653             : {
     654             :     sal_uInt32      nCharIdx;
     655             :     sal_uInt16      nLanguage[ 3 ];
     656             :     sal_uInt16      nDontKnow;
     657             : 
     658             :     explicit PPTTextSpecInfo( sal_uInt32 nCharIdx );
     659             :     ~PPTTextSpecInfo();
     660             : };
     661             : 
     662             : typedef ::std::vector< PPTTextSpecInfo* > PPTTextSpecInfoList;
     663             : struct  PPTTextSpecInfoAtomInterpreter
     664             : {
     665             :     sal_Bool            bValid;
     666             :     PPTTextSpecInfoList aList;
     667             : 
     668             :                     PPTTextSpecInfoAtomInterpreter();
     669             :                     ~PPTTextSpecInfoAtomInterpreter();
     670             : 
     671             :     sal_Bool        Read(
     672             :                         SvStream& rIn,
     673             :                         const DffRecordHeader& rRecHd,
     674             :                         sal_uInt16 nRecordType,
     675             :                         const PPTTextSpecInfo* pTextSpecDefault = NULL
     676             :                     );
     677             : 
     678             : };
     679             : 
     680             : #define PPT_STYLESHEETENTRYS    9
     681             : 
     682             : struct PPTExtParaLevel
     683             : {
     684             :     sal_uInt32  mnExtParagraphMask;
     685             :     sal_uInt16  mnBuBlip;
     686             :     sal_uInt16  mnHasAnm;
     687             :     sal_uInt32  mnAnmScheme;
     688             :     sal_uInt32  mpfPP10Ext;
     689             :     sal_uInt32  mnExtCharacterMask;
     690             :     sal_uInt32  mcfPP10Ext;
     691             :     sal_Bool    mbSet;
     692             : 
     693             :     PPTExtParaLevel();
     694             :     friend SvStream& operator>>( SvStream& rIn, PPTExtParaLevel& rL );
     695             : };
     696             : 
     697          90 : struct PPTExtParaSheet
     698             : {
     699             :     PPTExtParaLevel aExtParaLevel[ 5 ];
     700             : };
     701             : 
     702           0 : struct PPTBuGraEntry
     703             : {
     704             :     sal_uInt32  nInstance;
     705             :     Graphic     aBuGra;
     706             : 
     707             :                 PPTBuGraEntry( Graphic& rGraphic, sal_uInt32 nInstance );
     708             : };
     709             : 
     710             : typedef ::std::vector< PPTBuGraEntry* > PPTBuGraEntryList;
     711             : 
     712             : class PPTExtParaProv
     713             : {
     714             :     PPTBuGraEntryList   aBuGraList;
     715             : 
     716             : public :
     717             :     sal_Bool            bStyles;
     718             :     sal_Bool            bGraphics;
     719             :     DffRecordManager    aExtendedPresRules;
     720             : 
     721             :     PPTExtParaSheet     aExtParaSheet[ PPT_STYLESHEETENTRYS ];
     722             : 
     723             :     sal_Bool            GetGraphic( sal_uInt32 nInstance, Graphic& rGraphic ) const;
     724             : 
     725             :                         PPTExtParaProv(
     726             :                             SdrPowerPointImport& rManager,
     727             :                             SvStream& rSt,
     728             :                             const DffRecordHeader* pMainMasterHd
     729             :                         );
     730             :                         ~PPTExtParaProv();
     731             : };
     732             : 
     733         450 : struct PPTCharLevel
     734             : {
     735             :     Color       mnFontColorInStyleSheet;
     736             :     sal_uInt32  mnFontColor;
     737             :     sal_uInt16  mnFlags;
     738             :     sal_uInt16  mnFont;
     739             :     sal_uInt16  mnAsianOrComplexFont;
     740             :     sal_uInt16  mnFontHeight;
     741             :     sal_uInt16  mnEscapement;
     742             : };
     743             : 
     744             : struct PPTCharSheet
     745             : {
     746             :     PPTCharLevel    maCharLevel[ 5 ];
     747             : 
     748             :                     explicit PPTCharSheet( sal_uInt32 nInstance );
     749             :                     PPTCharSheet( const PPTCharSheet& rCharSheet );
     750             : 
     751             :     void            Read( SvStream& rIn, sal_Bool bMasterStyle, sal_uInt32 nLevel, sal_Bool bFirst );
     752             : };
     753             : 
     754             : struct PPTParaLevel
     755             : {
     756             :     sal_uInt16  mnBuFlags;
     757             :     sal_uInt16  mnBulletChar;
     758             :     sal_uInt16  mnBulletFont;
     759             :     sal_uInt16  mnBulletHeight;
     760             :     sal_uInt32  mnBulletColor;
     761             : 
     762             :     sal_uInt16  mnAdjust;
     763             :     sal_uInt16  mnLineFeed;
     764             :     sal_uInt16  mnUpperDist;
     765             :     sal_uInt16  mnLowerDist;
     766             :     sal_uInt16  mnTextOfs;
     767             :     sal_uInt16  mnBulletOfs;
     768             :     sal_uInt16  mnDefaultTab;
     769             :     sal_uInt16  mnAsianLineBreak;   // bit0:    use asian rules for first and last character
     770             :                                     //    1:    do not wrap latin text in the middle of the word
     771             :                                     //    2:    allow hanging punctuation
     772             :     sal_uInt16  mnBiDi;
     773             : };
     774             : 
     775             : struct PPTParaSheet
     776             : {
     777             : public:
     778             : 
     779             :     PPTParaLevel    maParaLevel[ 5 ];
     780             : 
     781             :                     explicit PPTParaSheet( sal_uInt32 nInstance );
     782             :                     PPTParaSheet( const PPTParaSheet& rParaSheet );
     783             : 
     784             :     void            Read(
     785             :                         SdrPowerPointImport& rMan,
     786             :                         SvStream& rIn,
     787             :                         sal_Bool bMasterStyle,
     788             :                         sal_uInt32 nLevel,
     789             :                         sal_Bool bFirst
     790             :                     );
     791             :     void        UpdateBulletRelSize(  sal_uInt32 nLevel, sal_uInt16 nFontHeight );
     792             : };
     793             : 
     794             : class PPTParagraphObj;
     795             : class PPTNumberFormatCreator
     796             : {
     797             :     sal_uInt32 nIsBullet;
     798             :     sal_uInt32 nBulletChar;
     799             :     sal_uInt32 nBulletFont;
     800             :     sal_uInt32 nBulletHeight;
     801             :     sal_uInt32 nBulletColor;
     802             :     sal_uInt32 nTextOfs;
     803             :     sal_uInt32 nBulletOfs;
     804             : 
     805             :     void        ImplGetNumberFormat(
     806             :                     SdrPowerPointImport& rMan,
     807             :                     SvxNumberFormat& rNumberFormat,
     808             :                     sal_uInt32 nLevel
     809             :                 );
     810             :     sal_Bool    ImplGetExtNumberFormat(
     811             :                     SdrPowerPointImport& rMan,
     812             :                     SvxNumberFormat& rNumberFormat,
     813             :                     sal_uInt32 nLevel,
     814             :                     sal_uInt32 nInstance,
     815             :                     sal_uInt32 nInstanceInSheet,
     816             :                     boost::optional< sal_Int16 >& rStartNumbering,
     817             :                     sal_uInt32 nFontHeight,
     818             :                     PPTParagraphObj* pPara
     819             :                 );
     820             : 
     821             : protected:
     822             : 
     823             :     PPTNumberFormatCreator( PPTExtParaProv* );
     824             :     ~PPTNumberFormatCreator();
     825             : 
     826             : public:
     827             : 
     828             :     PPTExtParaProv*  pExtParaProv;
     829             : 
     830             :     void        GetNumberFormat(
     831             :                     SdrPowerPointImport& rMan,
     832             :                     SvxNumberFormat& rNumberFormat,
     833             :                     sal_uInt32 nLevel,
     834             :                     const PPTParaLevel& rParaLevel,
     835             :                     const PPTCharLevel& rCharLevel,
     836             :                     sal_uInt32 nInstance
     837             :                 );
     838             : 
     839             :     sal_Bool    GetNumberFormat(
     840             :                     SdrPowerPointImport& rMan,
     841             :                     SvxNumberFormat& rNumberFormat,
     842             :                     PPTParagraphObj* pPara,
     843             :                     sal_uInt32 nInstanceInSheet,
     844             :                     boost::optional< sal_Int16 >& rStartNumbering
     845             :                 );
     846             : };
     847             : 
     848             : class SvxNumBulletItem;
     849             : struct PPTStyleSheet : public PPTNumberFormatCreator
     850             : {
     851             :     PPTTextSpecInfo     maTxSI;
     852             :     PPTCharSheet*       mpCharSheet[ PPT_STYLESHEETENTRYS ];
     853             :     PPTParaSheet*       mpParaSheet[ PPT_STYLESHEETENTRYS ];
     854             :     SvxNumBulletItem*   mpNumBulletItem[ PPT_STYLESHEETENTRYS ];
     855             : 
     856             :                         PPTStyleSheet(
     857             :                             const DffRecordHeader& rSlideHd,
     858             :                             SvStream& rSt, SdrPowerPointImport&,
     859             :                             const PPTTextCharacterStyleAtomInterpreter&,
     860             :                             const PPTTextParagraphStyleAtomInterpreter&,
     861             :                             const PPTTextSpecInfo&
     862             :                         );
     863             :                         ~PPTStyleSheet();
     864             : };
     865             : 
     866             : struct ImplPPTParaPropSet
     867             : {
     868             :     sal_uInt32  mnRefCount;
     869             : 
     870             :     sal_uInt16  mnDepth;
     871             :     sal_uInt32  mnAttrSet;
     872             :     sal_uInt32  mnBulletColor;
     873             :     sal_uInt16  mpArry[ 22 ];
     874             : 
     875             :     sal_uInt32  mnExtParagraphMask;
     876             :     sal_uInt32  mnAnmScheme;
     877             :     sal_uInt16  mnHasAnm;
     878             :     sal_uInt16  mnBuBlip;
     879             : 
     880             :     sal_uInt32  nDontKnow1;
     881             :     sal_uInt32  nDontKnow2;
     882             :     sal_uInt16  nDontKnow2bit06;
     883             : 
     884         801 :                 ImplPPTParaPropSet()
     885         801 :                 { mnRefCount = 1; mnAttrSet = 0; mnExtParagraphMask = 0; mnDepth = 0; };
     886             : };
     887             : 
     888             : struct PPTParaPropSet
     889             : {
     890             :     sal_uInt32          mnOriginalTextPos;
     891             :     ImplPPTParaPropSet* pParaSet;
     892             : 
     893             :                         PPTParaPropSet();
     894             :                         PPTParaPropSet( PPTParaPropSet& rParaPropSet );
     895             :                         ~PPTParaPropSet();
     896             : 
     897             :     PPTParaPropSet&     operator=( PPTParaPropSet& rParaPropSet );
     898             : };
     899             : 
     900             : struct ImplPPTCharPropSet
     901             : {
     902             :     sal_uInt32  mnRefCount;
     903             : 
     904             :     sal_uInt32  mnAttrSet;
     905             :     sal_uInt16  mnFlags;
     906             :     sal_uInt32  mnColor;
     907             :     sal_uInt16  mnFont;
     908             :     sal_uInt16  mnAsianOrComplexFont;
     909             :     sal_uInt16  mnANSITypeface;
     910             :     sal_uInt16  mnFontHeight;
     911             :     sal_uInt16  mnEscapement;
     912             :     sal_uInt16  mnSymbolFont;
     913             : 
     914        1177 :     ImplPPTCharPropSet(){ mnRefCount = 1; mnAttrSet = 0; };
     915             : };
     916             : 
     917             : struct PPTCharPropSet
     918             : {
     919             :     //when the bullet text has more than two color,next the text following with bullet has been set hyperlink.
     920             :     //now,the bullet color should be set original hyperlink text's color
     921             :     //so  "mbHardHylinkOrigColor" hold the original hyperlink text's color.
     922             :     sal_uInt32  mnHylinkOrigColor;
     923             :     //the bullet text weather has a hyperlink.
     924             :     sal_Bool    mbIsHyperlink;
     925             :     //the hyperlink text weather has a custom color.
     926             :     sal_Bool    mbHardHylinkOrigColor;
     927             : 
     928             :     sal_uInt32          mnOriginalTextPos;
     929             :     sal_uInt32          mnParagraph;
     930             :     OUString            maString;
     931             :     SvxFieldItem*       mpFieldItem;
     932             :     sal_uInt16          mnLanguage[ 3 ];
     933             : 
     934             :     ImplPPTCharPropSet* pCharSet;
     935             : 
     936             :     void                SetFont( sal_uInt16 nFont );
     937             :     void                SetColor( sal_uInt32 nColor );
     938             : 
     939             :                         explicit PPTCharPropSet( sal_uInt32 nParagraph );
     940             :                         PPTCharPropSet( const PPTCharPropSet& rCharPropSet );
     941             :                         PPTCharPropSet( const PPTCharPropSet& rCharPropSet, sal_uInt32 nParagraph );
     942             :                         ~PPTCharPropSet();
     943             : 
     944             :     PPTCharPropSet&     operator=( const PPTCharPropSet& rCharPropSet );
     945             : 
     946             : private:
     947             :     void                ImplMakeUnique();
     948             : };
     949             : 
     950             : struct PPTTabEntry
     951             : {
     952             :     sal_uInt16  nOffset;
     953             :     sal_uInt16  nStyle;
     954             : };
     955             : 
     956             : struct PPTRuler
     957             : {
     958             :         sal_uInt32          nRefCount;
     959             : 
     960             :         sal_Int32           nFlags;
     961             :         sal_uInt16          nDefaultTab;
     962             :         sal_uInt16          nTextOfs[ 5 ];
     963             :         sal_uInt16          nBulletOfs[ 5 ];
     964             :         PPTTabEntry*        pTab;
     965             :         sal_uInt16          nTabCount;
     966             : 
     967             :         PPTRuler();
     968             :         ~PPTRuler();
     969             : };
     970             : 
     971             : struct PPTTextRulerInterpreter
     972             : {
     973             :         PPTRuler    *mpImplRuler;
     974             : 
     975             :                     PPTTextRulerInterpreter();
     976             :                     PPTTextRulerInterpreter( PPTTextRulerInterpreter& rRuler );
     977             :                     PPTTextRulerInterpreter(
     978             :                         sal_uInt32 nFileOfs,
     979             :                         SdrPowerPointImport&,
     980             :                         DffRecordHeader& rHd,
     981             :                         SvStream& rIn
     982             :                     );
     983             :                     ~PPTTextRulerInterpreter();
     984             : 
     985           0 :         sal_uInt16  GetTabOffsetByIndex( sal_uInt16 nIndex ) const
     986           0 :                     { return mpImplRuler->pTab[ nIndex ].nOffset; };
     987             : 
     988           0 :         sal_uInt16  GetTabStyleByIndex( sal_uInt16 nIndex ) const
     989           0 :                     { return mpImplRuler->pTab[ nIndex ].nStyle; };
     990             : 
     991         128 :         sal_uInt16  GetTabCount() const { return mpImplRuler->nTabCount; };
     992             :         sal_Bool    GetDefaultTab( sal_uInt32 nLevel, sal_uInt16& nValue ) const;
     993             :         sal_Bool    GetTextOfs( sal_uInt32 nLevel, sal_uInt16& nValue ) const;
     994             :         sal_Bool    GetBulletOfs( sal_uInt32 nLevel, sal_uInt16& nValue ) const;
     995             : 
     996             :         PPTTextRulerInterpreter& operator=( PPTTextRulerInterpreter& rRuler );
     997             : };
     998             : 
     999             : #define PPT_SPEC_NEWLINE            0x10000
    1000             : #define PPT_SPEC_SYMBOL             0x20000
    1001             : #define PPT_SPEC_USE_STARBATS       0x40000
    1002             : 
    1003             : struct StyleTextProp9
    1004             : {
    1005             :     sal_uInt32  mnExtParagraphMask;
    1006             :     sal_uInt16  mnBuBlip;
    1007             :     sal_uInt16  mnHasAnm;
    1008             :     sal_uInt32  mnAnmScheme;
    1009             :     sal_uInt32  mpfPP10Ext;
    1010             :     sal_uInt32  mnExtCharacterMask;
    1011             :     sal_uInt32  mncfPP10Ext;
    1012             :     sal_uInt32  mnSpecialInfoMask;
    1013             :     sal_uInt32  mnPP10Ext;
    1014             :     sal_uInt16  mfBidi;
    1015             : 
    1016           4 :     StyleTextProp9()
    1017             :         : mnExtParagraphMask( 0 )
    1018             :         , mnBuBlip( 0 )
    1019             :         , mnHasAnm( 0 )
    1020             :         , mnAnmScheme( 0 )
    1021             :         , mpfPP10Ext( 0 )
    1022             :         , mnExtCharacterMask( 0 )
    1023             :         , mncfPP10Ext( 0 )
    1024             :         , mnSpecialInfoMask( 0 )
    1025             :         , mnPP10Ext( 0 )
    1026           4 :         , mfBidi( 0 )
    1027             :     {
    1028           4 :     }
    1029             :     void Read( SvStream& rSt );
    1030             : };
    1031             : 
    1032             : typedef std::vector<PPTParaPropSet*> PPTParaPropSetList;
    1033             : typedef std::vector<PPTCharPropSet*> PPTCharPropSetList;
    1034             : 
    1035             : struct PPTStyleTextPropReader
    1036             : {
    1037             :     std::vector< sal_uInt32 >  aSpecMarkerList;    // hiword -> Flags, loword -> Position
    1038             :     PPTParaPropSetList         aParaPropList;
    1039             :     PPTCharPropSetList         aCharPropList;
    1040             : 
    1041             :             PPTStyleTextPropReader(
    1042             :                 SvStream& rIn,
    1043             :                 SdrPowerPointImport&,
    1044             :                 const DffRecordHeader& rClientTextBoxHd,
    1045             :                 PPTTextRulerInterpreter& rInterpreter,
    1046             :                 const DffRecordHeader& rExtParaHd,
    1047             :                 sal_uInt32 nTextInstance
    1048             :             );
    1049             :             ~PPTStyleTextPropReader();
    1050             : 
    1051             :     void    Init(
    1052             :                 SvStream& rIn,
    1053             :                 SdrPowerPointImport&,
    1054             :                 const DffRecordHeader& rClientTextBoxHd,
    1055             :                 PPTTextRulerInterpreter& rInterpreter,
    1056             :                 const DffRecordHeader& rExtParaHd,
    1057             :                 sal_uInt32 nTextInstance
    1058             :             );
    1059             :     void    ReadParaProps(
    1060             :                 SvStream& rIn,
    1061             :                 SdrPowerPointImport& rMan,
    1062             :                 const DffRecordHeader& rTextHeader,
    1063             :                 const OUString& aString,
    1064             :                 PPTTextRulerInterpreter& rRuler,
    1065             :                 sal_uInt32& nCharCount,
    1066             :                 sal_Bool& bTextPropAtom
    1067             :             );
    1068             :     void    ReadCharProps(
    1069             :                 SvStream& rIn,
    1070             :                 PPTCharPropSet& aCharPropSet,
    1071             :                 const OUString& aString,
    1072             :                 sal_uInt32& nCharCount,
    1073             :                 sal_uInt32 nCharAnzRead,
    1074             :                 sal_Bool& bTextPropAtom,
    1075             :                 sal_uInt32 nExtParaPos,
    1076             :                 const std::vector< StyleTextProp9 >& aStyleTextProp9,
    1077             :                 sal_uInt32& nExtParaFlags,
    1078             :                 sal_uInt16& nBuBlip,
    1079             :                 sal_uInt16& nHasAnm,
    1080             :                 sal_uInt32& nAnmScheme
    1081             :             );
    1082             : };
    1083             : 
    1084             : class SvxFieldItem;
    1085             : class MSFILTER_DLLPUBLIC PPTPortionObj : public PPTCharPropSet
    1086             : {
    1087             : 
    1088             :     friend class PPTParagraphObj;
    1089             : 
    1090             :     const PPTStyleSheet&    mrStyleSheet;
    1091             :     sal_uInt32              mnInstance;
    1092             :     sal_uInt32              mnDepth;
    1093             : 
    1094             : public:
    1095             : 
    1096             :     sal_Bool        GetAttrib( sal_uInt32 nAttr, sal_uInt32& nVal, sal_uInt32 nInstanceInSheet ) const;
    1097             :     SvxFieldItem*   GetTextField();
    1098             : 
    1099             :                     PPTPortionObj( const PPTStyleSheet&, sal_uInt32 nInstance, sal_uInt32 nDepth );
    1100             :                     PPTPortionObj(
    1101             :                         const PPTCharPropSet&,
    1102             :                         const PPTStyleSheet&,
    1103             :                         sal_uInt32 nInstance,
    1104             :                         sal_uInt32 nDepth
    1105             :                     );
    1106             :                     PPTPortionObj( const PPTPortionObj& );
    1107             :                     ~PPTPortionObj();
    1108             : 
    1109             :     // the following function should be removed during next full update
    1110             :     void            ApplyTo(
    1111             :                         SfxItemSet& rSet,
    1112             :                         SdrPowerPointImport& rManager,
    1113             :                         sal_uInt32 nInstanceInSheet
    1114             :                     );
    1115             :     void            ApplyTo(
    1116             :                         SfxItemSet& rSet,
    1117             :                         SdrPowerPointImport& rManager,
    1118             :                         sal_uInt32 nInstanceInSheet,
    1119             :                         const PPTTextObj* pTextObj
    1120             :                     );
    1121        2464 :     sal_uInt32      Count() const { return ( mpFieldItem ) ? 1 : maString.getLength(); };
    1122             :     sal_Bool        HasTabulator();
    1123             : };
    1124             : 
    1125             : class MSFILTER_DLLPUBLIC PPTParagraphObj
    1126             :     :   public PPTParaPropSet,
    1127             :         public PPTNumberFormatCreator,
    1128             :         public PPTTextRulerInterpreter
    1129             : {
    1130             :     friend class PPTTextObj;
    1131             :     friend class PPTNumberFormatCreator;
    1132             : 
    1133             :     const PPTStyleSheet&    mrStyleSheet;
    1134             :     sal_uInt32              mnInstance;
    1135             : 
    1136             : protected:
    1137             : 
    1138             :     void                    ImplClear();
    1139             : 
    1140             : public:
    1141             : 
    1142             :     sal_Bool                mbTab;          // if true, this paragraph has tabulators in text
    1143             : 
    1144             :     sal_uInt32              mnCurrentObject;
    1145             :     ::boost::ptr_vector<PPTPortionObj> m_PortionList;
    1146             : 
    1147             :     void                    UpdateBulletRelSize( sal_uInt32& nBulletRelSize ) const;
    1148             :     sal_Bool                GetAttrib( sal_uInt32 nAttr, sal_uInt32& nVal, sal_uInt32 nInstanceInSheet );
    1149             : 
    1150             :                             PPTParagraphObj(
    1151             :                                 const PPTStyleSheet&,
    1152             :                                 sal_uInt32 nInstance,
    1153             :                                 sal_uInt16 nDepth
    1154             :                             );
    1155             :                             PPTParagraphObj(
    1156             :                                 PPTStyleTextPropReader&,
    1157             :                                 size_t nCurParaPos,
    1158             :                                 size_t& rnCurCharPos,
    1159             :                                 const PPTStyleSheet&,
    1160             :                                 sal_uInt32 nInstance,
    1161             :                                 PPTTextRulerInterpreter& rRuler
    1162             :                             );
    1163             :                             ~PPTParagraphObj();
    1164             : 
    1165             :     sal_uInt32              GetTextSize();
    1166             :     PPTPortionObj*          First();
    1167             :     PPTPortionObj*          Next();
    1168             : 
    1169             :     void                    AppendPortion( PPTPortionObj& rPortion );
    1170             :     void                    ApplyTo(
    1171             :                                 SfxItemSet& rSet,
    1172             :                                 boost::optional< sal_Int16 >& rStartNumbering,
    1173             :                                 SdrPowerPointImport& rManager,
    1174             :                                 sal_uInt32 nInstanceInSheet,
    1175             :                                 const PPTParagraphObj* pPrev
    1176             :                             );
    1177             : };
    1178             : 
    1179             : #define PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_LEFT      1
    1180             : #define PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_CENTER    2
    1181             : #define PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_RIGHT     4
    1182             : #define PPT_TEXTOBJ_FLAGS_PARA_ALIGNMENT_USED_BLOCK     8
    1183             : #define PPT_TEXTOBJ_FLAGS_VERTICAL                      16
    1184             : 
    1185             : struct ImplPPTTextObj
    1186             : {
    1187             :     sal_uInt32                  mnRefCount;
    1188             :     sal_uInt32                  mnShapeId;
    1189             :     sal_uInt32                  mnShapeMaster;
    1190             :     PptOEPlaceholderAtom*       mpPlaceHolderAtom;
    1191             :     sal_uInt16                  mnInstance;
    1192             :     sal_uInt16                  mnDestinationInstance;
    1193             :     MSO_SPT                     meShapeType;
    1194             : 
    1195             :     sal_uInt32                  mnCurrentObject;
    1196             :     sal_uInt32                  mnParagraphCount;
    1197             :     PPTParagraphObj**           mpParagraphList;
    1198             :     PptSlidePersistEntry&       mrPersistEntry;
    1199             : 
    1200             :     sal_uInt32                  mnTextFlags;
    1201             : 
    1202        1218 :     explicit ImplPPTTextObj( PptSlidePersistEntry& rPersistEntry ) : mrPersistEntry ( rPersistEntry ) {};
    1203             : };
    1204             : 
    1205             : class MSFILTER_DLLPUBLIC PPTTextObj
    1206             : {
    1207             :     ImplPPTTextObj*         mpImplTextObj;
    1208             :     void                    ImplClear();
    1209             : 
    1210             :                             PPTTextObj(){};
    1211             : public:
    1212             :                             PPTTextObj(
    1213             :                                 SvStream& rSt,
    1214             :                                 SdrPowerPointImport&,
    1215             :                                 PptSlidePersistEntry&,
    1216             :                                 DffObjData*
    1217             :                             );
    1218             :                             PPTTextObj( PPTTextObj& rTextObj );
    1219             :                             ~PPTTextObj();
    1220             : 
    1221         814 :     sal_uInt32              GetCurrentIndex() const { return mpImplTextObj->mnCurrentObject; };
    1222        1986 :     sal_uInt32              Count() const { return mpImplTextObj->mnParagraphCount; };
    1223             :     PPTParagraphObj*        First();
    1224             :     PPTParagraphObj*        Next();
    1225          71 :     MSO_SPT                 GetShapeType() const { return mpImplTextObj->meShapeType; };
    1226        3544 :     sal_uInt32              GetInstance() const { return mpImplTextObj->mnInstance; };
    1227          30 :     void                    SetInstance( sal_uInt16 nInstance )
    1228          30 :                             { mpImplTextObj->mnInstance = nInstance; }
    1229             : 
    1230        1885 :     sal_uInt32              GetDestinationInstance() const
    1231        1885 :                             { return mpImplTextObj->mnDestinationInstance; }
    1232             : 
    1233        1038 :     void                    SetDestinationInstance( sal_uInt16 nInstance )
    1234        1038 :                             { mpImplTextObj->mnDestinationInstance = nInstance; }
    1235             : 
    1236        3718 :     PptOEPlaceholderAtom*   GetOEPlaceHolderAtom() const { return mpImplTextObj->mpPlaceHolderAtom; }
    1237         644 :     sal_uInt32              GetTextFlags() const { return mpImplTextObj->mnTextFlags; }
    1238         634 :     void                    SetVertical( sal_Bool bVertical )
    1239             :                             {
    1240         634 :                                 if ( bVertical )
    1241           0 :                                     mpImplTextObj->mnTextFlags |= PPT_TEXTOBJ_FLAGS_VERTICAL;
    1242             :                                 else
    1243         634 :                                     mpImplTextObj->mnTextFlags &= ~PPT_TEXTOBJ_FLAGS_VERTICAL;
    1244         634 :                             }
    1245         613 :     sal_Bool                GetVertical() const
    1246         613 :                             { return ( mpImplTextObj->mnTextFlags & PPT_TEXTOBJ_FLAGS_VERTICAL ) != 0; }
    1247             : 
    1248             :     const SfxItemSet*       GetBackground() const;
    1249             : 
    1250             :     PPTTextObj&             operator=( PPTTextObj& rTextObj );
    1251             : };
    1252             : 
    1253           0 : class PPTConvertOCXControls : public SvxMSConvertOCXControls
    1254             : {
    1255             :     virtual const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > & GetDrawPage();
    1256             :     PptPageKind     ePageKind;
    1257             :     const SdrPowerPointImport* mpPPTImporter;
    1258             :     com::sun::star::uno::Reference< com::sun::star::io::XInputStream > mxInStrm;
    1259             : public :
    1260             : 
    1261           0 :     PPTConvertOCXControls( const SdrPowerPointImport* pPPTImporter, com::sun::star::uno::Reference< com::sun::star::io::XInputStream >& rxInStrm, const com::sun::star::uno::Reference< com::sun::star::frame::XModel >& rxModel, PptPageKind ePKind ) :
    1262             :         SvxMSConvertOCXControls ( rxModel ),
    1263             :         ePageKind               ( ePKind ),
    1264             :         mpPPTImporter           ( pPPTImporter ),
    1265           0 :         mxInStrm                ( rxInStrm )
    1266           0 :     {};
    1267             :     virtual sal_Bool ReadOCXStream( SotStorageRef& rSrc1,
    1268             :         com::sun::star::uno::Reference<
    1269             :         com::sun::star::drawing::XShape > *pShapeRef=0,
    1270             :         sal_Bool bFloatingCtrl=sal_False );
    1271             :     virtual sal_Bool InsertControl(
    1272             :         const com::sun::star::uno::Reference< com::sun::star::form::XFormComponent > &rFComp,
    1273             :         const com::sun::star::awt::Size& rSize,
    1274             :         com::sun::star::uno::Reference< com::sun::star::drawing::XShape > *pShape,
    1275             :         sal_Bool bFloatingCtrl
    1276             :     );
    1277             : };
    1278             : 
    1279             : // Powerpoint Recordtypen
    1280             : #define PPT_PST_Unknown                         0
    1281             : #define PPT_PST_SubContainerCompleted           1
    1282             : #define PPT_PST_IRRAtom                         2
    1283             : #define PPT_PST_PSS                             3
    1284             : #define PPT_PST_SubContainerException           4
    1285             : #define PPT_PST_ClientSignal1                   6
    1286             : #define PPT_PST_ClientSignal2                   7
    1287             : #define PPT_PST_PowerPointStateInfoAtom         10
    1288             : #define PPT_PST_Document                        1000
    1289             : #define PPT_PST_DocumentAtom                    1001
    1290             : #define PPT_PST_EndDocument                     1002
    1291             : #define PPT_PST_SlidePersist                    1003
    1292             : #define PPT_PST_SlideBase                       1004
    1293             : #define PPT_PST_SlideBaseAtom                   1005
    1294             : #define PPT_PST_Slide                           1006
    1295             : #define PPT_PST_SlideAtom                       1007
    1296             : #define PPT_PST_Notes                           1008
    1297             : #define PPT_PST_NotesAtom                       1009
    1298             : #define PPT_PST_Environment                     1010
    1299             : #define PPT_PST_SlidePersistAtom                1011
    1300             : #define PPT_PST_Scheme                          1012
    1301             : #define PPT_PST_SchemeAtom                      1013
    1302             : #define PPT_PST_DocViewInfo                     1014
    1303             : #define PPT_PST_SslideLayoutAtom                1015
    1304             : #define PPT_PST_MainMaster                      1016
    1305             : #define PPT_PST_SSSlideInfoAtom                 1017
    1306             : #define PPT_PST_SlideViewInfo                   1018
    1307             : #define PPT_PST_GuideAtom                       1019
    1308             : #define PPT_PST_ViewInfo                        1020
    1309             : #define PPT_PST_ViewInfoAtom                    1021
    1310             : #define PPT_PST_SlideViewInfoAtom               1022
    1311             : #define PPT_PST_VBAInfo                         1023
    1312             : #define PPT_PST_VBAInfoAtom                     1024
    1313             : #define PPT_PST_SSDocInfoAtom                   1025
    1314             : #define PPT_PST_Summary                         1026
    1315             : #define PPT_PST_Texture                         1027
    1316             : #define PPT_PST_VBASlideInfo                    1028
    1317             : #define PPT_PST_VBASlideInfoAtom                1029
    1318             : #define PPT_PST_DocRoutingSlip                  1030
    1319             : #define PPT_PST_OutlineViewInfo                 1031
    1320             : #define PPT_PST_SorterViewInfo                  1032
    1321             : #define PPT_PST_ExObjList                       1033
    1322             : #define PPT_PST_ExObjListAtom                   1034
    1323             : #define PPT_PST_PPDrawingGroup                  1035
    1324             : #define PPT_PST_PPDrawing                       1036
    1325             : #define PPT_PST_NewlyAddedAtomByXP1037          1037
    1326             : #define PPT_PST_NamedShows                      1040
    1327             : #define PPT_PST_NamedShow                       1041
    1328             : #define PPT_PST_NamedShowSlides                 1042
    1329             : #define PPT_PST_List                            2000
    1330             : #define PPT_PST_FontCollection                  2005
    1331             : #define PPT_PST_ListPlaceholder                 2017
    1332             : #define PPT_PST_BookmarkCollection              2019
    1333             : #define PPT_PST_SoundCollection                 2020
    1334             : #define PPT_PST_SoundCollAtom                   2021
    1335             : #define PPT_PST_Sound                           2022
    1336             : #define PPT_PST_SoundData                       2023
    1337             : #define PPT_PST_BookmarkSeedAtom                2025
    1338             : #define PPT_PST_GuideList                       2026
    1339             : #define PPT_PST_RunArray                        2028
    1340             : #define PPT_PST_RunArrayAtom                    2029
    1341             : #define PPT_PST_ArrayElementAtom                2030
    1342             : #define PPT_PST_Int4ArrayAtom                   2031
    1343             : #define PPT_PST_ColorSchemeAtom                 2032
    1344             : 
    1345             : // these atoms first was seen in ppt2000 in a private Tag atom
    1346             : #define PPT_PST_ExtendedBuGraContainer          2040    // consist of 4041
    1347             : #define PPT_PST_ExtendedBuGraAtom               2041    // the instance of this atom indices the current graphic
    1348             : 
    1349             : #define PPT_PST_OEShape                         3008
    1350             : #define PPT_PST_ExObjRefAtom                    3009
    1351             : #define PPT_PST_OEPlaceholderAtom               3011
    1352             : #define PPT_PST_GrColor                         3020
    1353             : #define PPT_PST_GrectAtom                       3025
    1354             : #define PPT_PST_GratioAtom                      3031
    1355             : #define PPT_PST_Gscaling                        3032
    1356             : #define PPT_PST_GpointAtom                      3034
    1357             : #define PPT_PST_OEShapeAtom                     3035
    1358             : #define PPT_PST_OutlineTextRefAtom              3998
    1359             : #define PPT_PST_TextHeaderAtom                  3999
    1360             : #define PPT_PST_TextCharsAtom                   4000
    1361             : #define PPT_PST_StyleTextPropAtom               4001
    1362             : #define PPT_PST_BaseTextPropAtom                4002
    1363             : #define PPT_PST_TxMasterStyleAtom               4003
    1364             : #define PPT_PST_TxCFStyleAtom                   4004
    1365             : #define PPT_PST_TxPFStyleAtom                   4005
    1366             : #define PPT_PST_TextRulerAtom                   4006
    1367             : #define PPT_PST_TextBookmarkAtom                4007
    1368             : #define PPT_PST_TextBytesAtom                   4008
    1369             : #define PPT_PST_TxSIStyleAtom                   4009
    1370             : #define PPT_PST_TextSpecInfoAtom                4010
    1371             : #define PPT_PST_DefaultRulerAtom                4011
    1372             : 
    1373             : // these atoms first was seen in ppt2000 in a private Tag atom
    1374             : #define PPT_PST_ExtendedParagraphAtom           4012
    1375             : #define PPT_PST_ExtendedParagraphMasterAtom     4013
    1376             : #define PPT_PST_ExtendedPresRuleContainer       4014    // consist of 4012, 4015,
    1377             : #define PPT_PST_ExtendedParagraphHeaderAtom     4015    // the instance of this atom indices the current presobj
    1378             :                                                         // the first sal_uInt32 in this atom indices the current slideId
    1379             : #define PPT_PST_NewlyAddedAtom4016              4016
    1380             : 
    1381             : #define PPT_PST_FontEntityAtom                  4023
    1382             : #define PPT_PST_FontEmbedData                   4024
    1383             : #define PPT_PST_TypeFace                        4025
    1384             : #define PPT_PST_CString                         4026
    1385             : #define PPT_PST_ExternalObject                  4027
    1386             : #define PPT_PST_MetaFile                        4033
    1387             : #define PPT_PST_ExOleObj                        4034
    1388             : #define PPT_PST_ExOleObjAtom                    4035
    1389             : #define PPT_PST_ExPlainLinkAtom                 4036
    1390             : #define PPT_PST_CorePict                        4037
    1391             : #define PPT_PST_CorePictAtom                    4038
    1392             : #define PPT_PST_ExPlainAtom                     4039
    1393             : #define PPT_PST_SrKinsoku                       4040
    1394             : #define PPT_PST_Handout                         4041
    1395             : #define PPT_PST_ExEmbed                         4044
    1396             : #define PPT_PST_ExEmbedAtom                     4045
    1397             : #define PPT_PST_ExLink                          4046
    1398             : #define PPT_PST_ExLinkAtom_old                  4047
    1399             : #define PPT_PST_BookmarkEntityAtom              4048
    1400             : #define PPT_PST_ExLinkAtom                      4049
    1401             : #define PPT_PST_SrKinsokuAtom                   4050
    1402             : #define PPT_PST_ExHyperlinkAtom                 4051
    1403             : #define PPT_PST_ExPlain                         4053
    1404             : #define PPT_PST_ExPlainLink                     4054
    1405             : #define PPT_PST_ExHyperlink                     4055
    1406             : #define PPT_PST_SlideNumberMCAtom               4056
    1407             : #define PPT_PST_HeadersFooters                  4057
    1408             : #define PPT_PST_HeadersFootersAtom              4058
    1409             : #define PPT_PST_RecolorEntryAtom                4062
    1410             : #define PPT_PST_TxInteractiveInfoAtom           4063
    1411             : #define PPT_PST_EmFormatAtom                    4065
    1412             : #define PPT_PST_CharFormatAtom                  4066
    1413             : #define PPT_PST_ParaFormatAtom                  4067
    1414             : #define PPT_PST_MasterText                      4068
    1415             : #define PPT_PST_RecolorInfoAtom                 4071
    1416             : #define PPT_PST_ExQuickTime                     4073
    1417             : #define PPT_PST_ExQuickTimeMovie                4074
    1418             : #define PPT_PST_ExQuickTimeMovieData            4075
    1419             : #define PPT_PST_ExSubscription                  4076
    1420             : #define PPT_PST_ExSubscriptionSection           4077
    1421             : #define PPT_PST_ExControl                       4078
    1422             : #define PPT_PST_ExControlAtom                   4091
    1423             : #define PPT_PST_SlideListWithText               4080
    1424             : #define PPT_PST_AnimationInfoAtom               4081
    1425             : #define PPT_PST_InteractiveInfo                 4082
    1426             : #define PPT_PST_InteractiveInfoAtom             4083
    1427             : #define PPT_PST_SlideList                       4084
    1428             : #define PPT_PST_UserEditAtom                    4085
    1429             : #define PPT_PST_CurrentUserAtom                 4086
    1430             : #define PPT_PST_DateTimeMCAtom                  4087
    1431             : #define PPT_PST_GenericDateMCAtom               4088
    1432             : #define PPT_PST_HeaderMCAtom                    4089
    1433             : #define PPT_PST_FooterMCAtom                    4090
    1434             : #define PPT_PST_ExMediaAtom                     4100
    1435             : #define PPT_PST_ExVideo                         4101
    1436             : #define PPT_PST_ExAviMovie                      4102
    1437             : #define PPT_PST_ExMCIMovie                      4103
    1438             : #define PPT_PST_ExMIDIAudio                     4109
    1439             : #define PPT_PST_ExCDAudio                       4110
    1440             : #define PPT_PST_ExWAVAudioEmbedded              4111
    1441             : #define PPT_PST_ExWAVAudioLink                  4112
    1442             : #define PPT_PST_ExOleObjStg                     4113
    1443             : #define PPT_PST_ExCDAudioAtom                   4114
    1444             : #define PPT_PST_ExWAVAudioEmbeddedAtom          4115
    1445             : #define PPT_PST_AnimationInfo                   4116
    1446             : #define PPT_PST_RTFDateTimeMCAtom               4117
    1447             : #define PPT_PST_ProgTags                        5000
    1448             : #define PPT_PST_ProgStringTag                   5001
    1449             : #define PPT_PST_ProgBinaryTag                   5002
    1450             : #define PPT_PST_BinaryTagData                   5003
    1451             : #define PPT_PST_PrintOptions                    6000
    1452             : #define PPT_PST_PersistPtrFullBlock             6001
    1453             : #define PPT_PST_PersistPtrIncrementalBlock      6002
    1454             : 
    1455             : // these atoms first was seen in ppt2000 in a private Tag atom
    1456             : #define PPT_PST_NewlyAddedAtomByPPT2000_6010    6010
    1457             : #define PPT_PST_NewlyAddedAtomByPPT2000_6011    6011
    1458             : 
    1459             : #define PPT_PST_RulerIndentAtom                 10000
    1460             : #define PPT_PST_GscalingAtom                    10001
    1461             : #define PPT_PST_GrColorAtom                     10002
    1462             : #define PPT_PST_GLPointAtom                     10003
    1463             : #define PPT_PST_GlineAtom                       10004
    1464             : 
    1465             : #define PPT_PST_NewlyAddedAtomByXP11008         11008
    1466             : #define PPT_PST_NewlyAddedAtomByXP11010         11010
    1467             : #define PPT_PST_Comment10                       12000
    1468             : #define PPT_PST_CommentAtom10                   12001
    1469             : #define PPT_PST_NewlyAddedAtomByXP12004         12004
    1470             : #define PPT_PST_NewlyAddedAtomByXP12010         12010
    1471             : #define PPT_PST_NewlyAddedAtomByXP12011         12011
    1472             : #define PPT_PST_NewlyAddedAtomByXP14001         14001
    1473             : 
    1474             : // Attribute fuer PptTextStyleSheet
    1475             : #define PPT_ParaAttr_BulletOn       0   //00000001
    1476             : #define PPT_ParaAttr_BuHardFont     1   //00000002
    1477             : #define PPT_ParaAttr_BuHardColor    2   //00000004
    1478             : #define PPT_ParaAttr_BuHardHeight   3   //00000008
    1479             : #define PPT_ParaAttr_BulletFont     4   //00000010
    1480             : #define PPT_ParaAttr_BulletColor    5   //00000020
    1481             : #define PPT_ParaAttr_BulletHeight   6   //00000040
    1482             : #define PPT_ParaAttr_BulletChar     7   //00000080
    1483             : #define PPT_ParaAttr_DontKnow1      8   //00000100
    1484             : #define PPT_ParaAttr_DontKnow2      9   //00000200
    1485             : #define PPT_ParaAttr_DontKnow3      10  //00000400
    1486             : #define PPT_ParaAttr_Adjust         11  //00000800 0000=Left, 0001=Center, 0002=Right, 0003=Block
    1487             : #define PPT_ParaAttr_LineFeed       12  //00001000
    1488             : #define PPT_ParaAttr_UpperDist      13  //00002000 ist bei Textframes default immer auf 0032 gesetzt
    1489             : #define PPT_ParaAttr_LowerDist      14  //00004000
    1490             : #define PPT_ParaAttr_TextOfs        15  //00008000
    1491             : #define PPT_ParaAttr_BulletOfs      16  //00010000
    1492             : #define PPT_ParaAttr_DefaultTab     17  //00020000
    1493             : #define PPT_ParaAttr_AsianLB_1      18
    1494             : #define PPT_ParaAttr_AsianLB_2      19
    1495             : #define PPT_ParaAttr_AsianLB_3      20
    1496             : #define PPT_ParaAttr_BiDi           21  //00200000
    1497             : 
    1498             : #define PPT_CharAttr_Bold               0   //00000001
    1499             : #define PPT_CharAttr_Italic             1   //00000002
    1500             : #define PPT_CharAttr_Underline          2   //00000004
    1501             : #define PPT_CharAttr_Shadow             4   //00000010
    1502             : #define PPT_CharAttr_Strikeout          8   //00000100
    1503             : #define PPT_CharAttr_Embossed           9   //00000200
    1504             : #define PPT_CharAttr_ResetNumbering     10  //00000400
    1505             : #define PPT_CharAttr_EnableNumbering1   11  //00000800
    1506             : #define PPT_CharAttr_EnableNumbering2   12  //00001000
    1507             : #define PPT_CharAttr_Font               16  //00010000
    1508             : #define PPT_CharAttr_AsianOrComplexFont 21  //00200000
    1509             : #define PPT_CharAttr_ANSITypeface       22  //00400000
    1510             : #define PPT_CharAttr_Symbol             23  //00800000
    1511             : #define PPT_CharAttr_FontHeight         17  //00020000
    1512             : #define PPT_CharAttr_FontColor          18  //00040000
    1513             : #define PPT_CharAttr_Escapement         19  //00080000
    1514             : 
    1515             : // Werte fuer PptSlideLayoutAtom.eLayout
    1516             : #define PPT_LAYOUT_TITLESLIDE               0   // The slide is a title slide
    1517             : #define PPT_LAYOUT_TITLEANDBODYSLIDE        1   // Title and body slide
    1518             : #define PPT_LAYOUT_TITLEMASTERSLIDE         2   // Title master slide
    1519             : #define PPT_LAYOUT_MASTERSLIDE              3   // Master slide layout
    1520             : #define PPT_LAYOUT_MASTERNOTES              4   // Master notes layout
    1521             : #define PPT_LAYOUT_NOTESTITLEBODY           5   // Notes title/body layout
    1522             : #define PPT_LAYOUT_HANDOUTLAYOUT            6   // Handout layout, therefore it doesn't have placeholders except header, footer, and date
    1523             : #define PPT_LAYOUT_ONLYTITLE                7   // Only title placeholder
    1524             : #define PPT_LAYOUT_2COLUMNSANDTITLE         8   // Body of the slide has 2 columns and a title
    1525             : #define PPT_LAYOUT_2ROWSANDTITLE            9   // Slide's body has 2 rows and a title
    1526             : #define PPT_LAYOUT_RIGHTCOLUMN2ROWS         10  // Body contains 2 columns, right column has 2 rows
    1527             : #define PPT_LAYOUT_LEFTCOLUMN2ROWS          11  // Body contains 2 columns, left column has 2 rows
    1528             : #define PPT_LAYOUT_BOTTOMROW2COLUMNS        12  // Body contains 2 rows, bottom row has 2 columns
    1529             : #define PPT_LAYOUT_TOPROW2COLUMN            13  // Body contains 2 rows, top row has 2 columns
    1530             : #define PPT_LAYOUT_4OBJECTS                 14  // 4 objects
    1531             : #define PPT_LAYOUT_BIGOBJECT                15  // Big object
    1532             : #define PPT_LAYOUT_BLANCSLIDE               16  // Blank slide
    1533             : #define PPT_LAYOUT_TITLERIGHTBODYLEFT       17  // Vertical title on the right, body on the left
    1534             : #define PPT_LAYOUT_TITLERIGHT2BODIESLEFT    18  // Vertical title on the right, body on the left split into 2 rows
    1535             : 
    1536             : // the following table describes the placeholder id's (values from reality followed by values taken from the documentation)
    1537             : #define PPT_PLACEHOLDER_NONE                    0   //  0 None
    1538             : #define PPT_PLACEHOLDER_MASTERTITLE             1   //  1 Master title
    1539             : #define PPT_PLACEHOLDER_MASTERBODY              2   //  2 Master body
    1540             : #define PPT_PLACEHOLDER_MASTERCENTEREDTITLE     3   //  3 Master centered title
    1541             : #define PPT_PLACEHOLDER_MASTERSUBTITLE          4   // 10 Master subtitle
    1542             : #define PPT_PLACEHOLDER_MASTERNOTESSLIDEIMAGE   5   //  4 Master notes slide image
    1543             : #define PPT_PLACEHOLDER_MASTERNOTESBODYIMAGE    6   //  5 Master notes body image
    1544             : #define PPT_PLACEHOLDER_MASTERDATE              7   //  6 Master date
    1545             : #define PPT_PLACEHOLDER_MASTERSLIDENUMBER       8   //  7 Master slide number
    1546             : #define PPT_PLACEHOLDER_MASTERFOOTER            9   //  8 Master footer
    1547             : #define PPT_PLACEHOLDER_MASTERHEADER            10  //  9 Master header
    1548             : #define PPT_PLACEHOLDER_GENERICTEXTOBJECT           // 11 Generic text object
    1549             : #define PPT_PLACEHOLDER_TITLE                   13  // 12 Title
    1550             : #define PPT_PLACEHOLDER_BODY                    14  // 13 Body
    1551             : #define PPT_PLACEHOLDER_NOTESBODY               12  // 14 Notes body
    1552             : #define PPT_PLACEHOLDER_CENTEREDTITLE           15  // 15 Centered title
    1553             : #define PPT_PLACEHOLDER_SUBTITLE                16  // 16 Subtitle
    1554             : #define PPT_PLACEHOLDER_VERTICALTEXTTITLE       17  // 17 Vertical text title
    1555             : #define PPT_PLACEHOLDER_VERTICALTEXTBODY        18  // 18 Vertical text body
    1556             : #define PPT_PLACEHOLDER_NOTESSLIDEIMAGE         11  // 19 Notes slide image
    1557             : #define PPT_PLACEHOLDER_OBJECT                  19  // 20 Object (no matter the size)
    1558             : #define PPT_PLACEHOLDER_GRAPH                   20  // 21 Graph
    1559             : #define PPT_PLACEHOLDER_TABLE                   21  // 22 Table
    1560             : #define PPT_PLACEHOLDER_CLIPART                 22  // 23 Clip Art
    1561             : #define PPT_PLACEHOLDER_ORGANISZATIONCHART      23  // 24 Organization Chart
    1562             : #define PPT_PLACEHOLDER_MEDIACLIP               24  // 25 Media Clip
    1563             : 
    1564             : #endif //_SVDFPPT_HXX
    1565             : 
    1566             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10