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