summaryrefslogtreecommitdiff
path: root/sd/source/filter/eppt/epptbase.hxx
diff options
context:
space:
mode:
authorTor Lillqvist <tlillqvist@novell.com>2010-11-01 14:47:36 +0200
committerTor Lillqvist <tml@hemulen.(none)>2010-11-05 23:52:14 +0200
commita76f993702df0164af9e2366142e9a6c379ae34d (patch)
treeb5103a43bd61ad1d2ea3dc7aea67d4d01d6ff04d /sd/source/filter/eppt/epptbase.hxx
parent134fa007942b86b2dc50b7aeb63b465ab28568cc (diff)
From hg changeset 0d3461509c7b601f0084eb3560fde9b6941c42ab in ooxml11
ooxml11: add added files
Diffstat (limited to 'sd/source/filter/eppt/epptbase.hxx')
-rw-r--r--sd/source/filter/eppt/epptbase.hxx443
1 files changed, 443 insertions, 0 deletions
diff --git a/sd/source/filter/eppt/epptbase.hxx b/sd/source/filter/eppt/epptbase.hxx
new file mode 100644
index 000000000000..b0576eeeee6c
--- /dev/null
+++ b/sd/source/filter/eppt/epptbase.hxx
@@ -0,0 +1,443 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef EPPT_EPPTBASE_HXX
+#define EPPT_EPPTBASE_HXX
+
+#include "grouptable.hxx"
+#include <vector>
+#include <vcl/mapmod.hxx>
+#include <tools/list.hxx>
+#include <tools/string.hxx>
+#include <tools/stream.hxx>
+#include <tools/gen.hxx>
+#include <com/sun/star/beans/XPropertySet.hpp>
+#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
+#include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
+#include <com/sun/star/drawing/XMasterPageTarget.hpp>
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/presentation/XPresentationSupplier.hpp>
+#include <com/sun/star/presentation/FadeEffect.hpp>
+#include <com/sun/star/task/XStatusIndicatorSupplier.hpp>
+
+// PLACEMENT_ID
+#define EPP_LAYOUT_TITLESLIDE 0 /* The slide is a title slide */
+#define EPP_LAYOUT_TITLEANDBODYSLIDE 1 /* Title and body slide */
+#define EPP_LAYOUT_TITLEMASTERSLIDE 2 /* Title master slide */
+#define EPP_LAYOUT_MASTERSLIDE 3 /* Master slide layout */
+#define EPP_LAYOUT_MASTERNOTES 4 /* Master notes layout */
+#define EPP_LAYOUT_NOTESTITLEBODY 5 /* Notes title/body layout */
+#define EPP_LAYOUT_HANDOUTLAYOUT 6 /* Handout layout, therefore it doesn't have placeholders except header, footer, and date */
+#define EPP_LAYOUT_ONLYTITLE 7 /* Only title placeholder */
+#define EPP_LAYOUT_2COLUMNSANDTITLE 8 /* Body of the slide has 2 columns and a title */
+#define EPP_LAYOUT_2ROWSANDTITLE 9 /* Slide's body has 2 rows and a title */
+#define EPP_LAYOUT_RIGHTCOLUMN2ROWS 10 /* Body contains 2 columns, right column has 2 rows */
+#define EPP_LAYOUT_LEFTCOLUMN2ROWS 11 /* Body contains 2 columns, left column has 2 rows */
+#define EPP_LAYOUT_BOTTOMROW2COLUMNS 12 /* Body contains 2 rows, bottom row has 2 columns */
+#define EPP_LAYOUT_TOPROW2COLUMN 13 /* Body contains 2 rows, top row has 2 columns */
+#define EPP_LAYOUT_4OBJECTS 14 /* 4 objects */
+#define EPP_LAYOUT_BIGOBJECT 15 /* Big object */
+#define EPP_LAYOUT_BLANCSLIDE 16 /* Blank slide */
+#define EPP_LAYOUT_TITLERIGHTBODYLEFT 17 /* Vertical title on the right, body on the left */
+#define EPP_LAYOUT_TITLERIGHT2BODIESLEFT 18 /* Vertical title on the right, body on the left split into 2 rows */
+
+#define EPP_LAYOUT_SIZE 25
+
+class Polygon;
+class PptEscherEx;
+class XStatusIndicatorRef;
+
+struct PHLayout
+{
+ sal_Int32 nLayout;
+ sal_uInt8 nPlaceHolder[ 8 ];
+
+ sal_uInt8 nUsedObjectPlaceHolder;
+ sal_uInt8 nTypeOfTitle;
+ sal_uInt8 nTypeOfOutliner;
+
+ BOOL bTitlePossible;
+ BOOL bOutlinerPossible;
+ BOOL bSecOutlinerPossible;
+};
+
+enum PageType { NORMAL = 0, MASTER = 1, NOTICE = 2, UNDEFINED = 3 };
+
+class PropValue
+{
+ protected :
+
+ ::com::sun::star::uno::Any mAny;
+
+ ::com::sun::star::uno::Reference
+ < ::com::sun::star::beans::XPropertySet > mXPropSet;
+
+ sal_Bool ImplGetPropertyValue( const String& rString );
+ sal_Bool ImplGetPropertyValue( const ::com::sun::star::uno::Reference
+ < ::com::sun::star::beans::XPropertySet > &, const String& );
+
+ public :
+
+ PropValue() {}
+
+ PropValue( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet )
+ : mXPropSet( rXPropSet )
+ {}
+
+ ::com::sun::star::uno::Any GetAny() { return mAny; }
+
+ static sal_Bool GetPropertyValue(
+ ::com::sun::star::uno::Any& rAny,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &,
+ const String& rPropertyName,
+ sal_Bool bTestPropertyAvailability = sal_False );
+
+ static ::com::sun::star::beans::PropertyState GetPropertyState(
+ const ::com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySet > &,
+ const String& rPropertyName );
+};
+
+class EscherGraphicProvider;
+class PPTExBulletProvider
+{
+ friend struct PPTExParaSheet;
+
+ protected :
+
+ SvMemoryStream aBuExPictureStream;
+ SvMemoryStream aBuExOutlineStream;
+ SvMemoryStream aBuExMasterStream;
+
+ EscherGraphicProvider* pGraphicProv;
+
+ public :
+
+ sal_uInt16 GetId( const ByteString& rUniqueId, Size& rGraphicSize );
+
+ PPTExBulletProvider();
+ ~PPTExBulletProvider();
+};
+
+struct FontCollectionEntry
+{
+ String Name;
+ double Scaling;
+ sal_Int16 Family;
+ sal_Int16 Pitch;
+ sal_Int16 CharSet;
+
+ String Original;
+ sal_Bool bIsConverted;
+
+ FontCollectionEntry( const String& rName, sal_Int16 nFamily, sal_Int16 nPitch, sal_Int16 nCharSet ) :
+ Scaling ( 1.0 ),
+ Family ( nFamily ),
+ Pitch ( nPitch ),
+ CharSet ( nCharSet ),
+ Original( rName )
+ {
+ ImplInit( rName );
+ };
+
+ FontCollectionEntry( const String& rName ) :
+ Scaling ( 1.0 ),
+ Original( rName )
+ {
+ ImplInit( rName );
+ };
+ ~FontCollectionEntry();
+
+ private :
+
+ FontCollectionEntry() {};
+
+ void ImplInit( const String& rName );
+};
+
+class VirtualDevice;
+class FontCollection : private List
+{
+ VirtualDevice* pVDev;
+ public :
+ FontCollection();
+ ~FontCollection();
+
+ short GetScriptDirection( const String& rText ) const;
+ sal_uInt32 GetId( FontCollectionEntry& rFontDescriptor );
+ sal_uInt32 GetCount() const { return List::Count(); };
+ const FontCollectionEntry* GetById( sal_uInt32 nId );
+ FontCollectionEntry& GetLast() { return *(FontCollectionEntry*)List::Last(); };
+};
+
+// ------------------------------------------------------------------------
+
+#define PPTEX_STYLESHEETENTRYS 9
+
+enum PPTExTextAttr
+{
+ ParaAttr_BulletOn,
+ ParaAttr_BuHardFont,
+ ParaAttr_BuHardColor,
+ ParaAttr_BuHardHeight,
+ ParaAttr_BulletChar,
+ ParaAttr_BulletFont,
+ ParaAttr_BulletHeight,
+ ParaAttr_BulletColor,
+ ParaAttr_Adjust,
+ ParaAttr_LineFeed,
+ ParaAttr_UpperDist,
+ ParaAttr_LowerDist,
+ ParaAttr_TextOfs,
+ ParaAttr_BulletOfs,
+ ParaAttr_DefaultTab,
+ ParaAttr_AsianLB_1,
+ ParaAttr_AsianLB_2,
+ ParaAttr_AsianLB_3,
+ ParaAttr_BiDi,
+ CharAttr_Bold,
+ CharAttr_Italic,
+ CharAttr_Underline,
+ CharAttr_Shadow,
+ CharAttr_Strikeout,
+ CharAttr_Embossed,
+ CharAttr_Font,
+ CharAttr_AsianOrComplexFont,
+ CharAttr_Symbol,
+ CharAttr_FontHeight,
+ CharAttr_FontColor,
+ CharAttr_Escapement
+};
+
+struct PPTExCharLevel
+{
+ sal_uInt16 mnFlags;
+ sal_uInt16 mnFont;
+ sal_uInt16 mnAsianOrComplexFont;
+ sal_uInt16 mnFontHeight;
+ sal_uInt16 mnEscapement;
+ sal_uInt32 mnFontColor;
+};
+
+struct PPTExCharSheet
+{
+ PPTExCharLevel maCharLevel[ 5 ];
+
+ PPTExCharSheet( int nInstance );
+
+ void SetStyleSheet( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &,
+ FontCollection& rFontCollection, int nLevel );
+ void Write( SvStream& rSt, PptEscherEx* pEx, sal_uInt16 nLev, sal_Bool bFirst, sal_Bool bSimpleText,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rPagePropSet );
+
+};
+
+struct PPTExParaLevel
+{
+ sal_Bool mbIsBullet;
+ sal_uInt16 mnBulletChar;
+ sal_uInt16 mnBulletFont;
+ sal_uInt16 mnBulletHeight;
+ sal_uInt32 mnBulletColor;
+
+ sal_uInt16 mnAdjust;
+ sal_Int16 mnOOAdjust;
+ sal_uInt16 mnLineFeed;
+ sal_uInt16 mnUpperDist;
+ sal_uInt16 mnLowerDist;
+ sal_uInt16 mnTextOfs;
+ sal_uInt16 mnBulletOfs;
+ sal_uInt16 mnDefaultTab;
+
+ sal_Bool mbExtendedBulletsUsed;
+ sal_uInt16 mnBulletId;
+ sal_uInt16 mnBulletStart;
+ sal_uInt32 mnMappedNumType;
+ sal_uInt32 mnNumberingType;
+ sal_uInt16 mnAsianSettings;
+ sal_uInt16 mnBiDi;
+};
+
+struct PPTExParaSheet
+{
+ PPTExBulletProvider& rBuProv;
+
+ sal_uInt32 mnInstance;
+
+ PPTExParaLevel maParaLevel[ 5 ];
+ PPTExParaSheet( int nInstance, sal_uInt16 nDefaultTab, PPTExBulletProvider& rProv );
+
+ void SetStyleSheet( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &,
+ FontCollection& rFontCollection, int nLevel, const PPTExCharLevel& rCharLevel );
+ void Write( SvStream& rSt, PptEscherEx* pEx, sal_uInt16 nLev, sal_Bool bFirst, sal_Bool bSimpleText,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rPagePropSet );
+};
+
+class PPTExStyleSheet
+{
+
+ public :
+
+ PPTExCharSheet* mpCharSheet[ PPTEX_STYLESHEETENTRYS ];
+ PPTExParaSheet* mpParaSheet[ PPTEX_STYLESHEETENTRYS ];
+
+ PPTExStyleSheet( sal_uInt16 nDefaultTab, PPTExBulletProvider& rBuProv );
+ ~PPTExStyleSheet();
+
+ PPTExParaSheet& GetParaSheet( int nInstance ) { return *mpParaSheet[ nInstance ]; };
+ PPTExCharSheet& GetCharSheet( int nInstance ) { return *mpCharSheet[ nInstance ]; };
+
+ void SetStyleSheet( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > &,
+ FontCollection& rFontCollection, int nInstance, int nLevel );
+ sal_Bool IsHardAttribute( sal_uInt32 nInstance, sal_uInt32 nLevel, PPTExTextAttr eAttr, sal_uInt32 nValue );
+
+ sal_uInt32 SizeOfTxCFStyleAtom() const;
+ void WriteTxCFStyleAtom( SvStream& rSt );
+};
+
+// ------------------------------------------------------------------------
+
+class PPTWriterBase : public PropValue, public GroupTable
+{
+protected:
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > mXModel;
+ ::com::sun::star::uno::Reference< ::com::sun::star::task::XStatusIndicator > mXStatusIndicator;
+
+ sal_Bool mbStatusIndicator;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPagesSupplier > mXDrawPagesSupplier;
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XMasterPagesSupplier > mXMasterPagesSupplier;
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPages > mXDrawPages;
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > mXDrawPage;
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > mXPagePropSet;
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > mXBackgroundPropSet;
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > mXShapes;
+ ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > mXShape;
+ ::com::sun::star::awt::Size maSize;
+ ::com::sun::star::awt::Point maPosition;
+ Rectangle maRect;
+ ByteString mType;
+ sal_Bool mbPresObj;
+ sal_Bool mbEmptyPresObj;
+ sal_Int32 mnAngle;
+
+ sal_uInt32 mnPages; // number of Slides ( w/o master pages & notes & handout )
+ sal_uInt32 mnMasterPages;
+
+ Fraction maFraction;
+ MapMode maMapModeSrc;
+ MapMode maMapModeDest;
+ ::com::sun::star::awt::Size maDestPageSize;
+ ::com::sun::star::awt::Size maNotesPageSize;
+
+ PageType meLatestPageType;
+ std::vector< PPTExStyleSheet* > maStyleSheetList;
+ PPTExStyleSheet* mpStyleSheet;
+
+ FontCollection maFontCollection;
+
+ List maTextRuleList; // TextRuleEntry's
+
+ virtual void ImplWriteSlide( sal_uInt32 /* nPageNum */, sal_uInt32 /* nMasterNum */, sal_uInt16 /* nMode */,
+ sal_Bool /* bHasBackground */, ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > /* aXBackgroundPropSet */ ) {}
+ virtual void ImplWriteNotes( sal_uInt32 nPageNum ) = 0;
+ virtual void ImplWriteSlideMaster( sal_uInt32 /* nPageNum */, ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > /* aXBackgroundPropSet */ ) {}
+ virtual void ImplWriteLayout( sal_Int32 /* nOffset */, sal_uInt32 /* nMasterNum */ ) {}
+
+ virtual void exportPPTPre() {}
+ virtual void exportPPTPost() {}
+
+ virtual sal_Bool ImplCreateDocument()=0;
+ virtual sal_Bool ImplCreateMainNotes()=0;
+
+ sal_Bool GetStyleSheets();
+ sal_Bool GetShapeByIndex( sal_uInt32 nIndex, sal_Bool bGroup = FALSE );
+
+ sal_Bool CreateMainNotes();
+
+ ::com::sun::star::awt::Size MapSize( const ::com::sun::star::awt::Size& );
+ ::com::sun::star::awt::Point MapPoint( const ::com::sun::star::awt::Point& );
+ Rectangle MapRectangle( const ::com::sun::star::awt::Rectangle& );
+
+ sal_Bool ContainsOtherShapeThanPlaceholders( sal_Bool bForOOMLX );
+
+public:
+ PPTWriterBase();
+ PPTWriterBase( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > & rModel,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::task::XStatusIndicator > & rStatInd );
+
+ ~PPTWriterBase();
+
+ void exportPPT();
+
+ sal_Bool InitSOIface();
+ sal_Bool GetPageByIndex( sal_uInt32 nIndex, PageType );
+ sal_uInt32 GetMasterIndex( PageType ePageType );
+ sal_Bool SetCurrentStyleSheet( sal_uInt32 nPageNum );
+
+ sal_Bool GetPresObj() { return mbPresObj; }
+
+ PHLayout& GetLayout( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& rXPropSet ) const;
+ PHLayout& GetLayout( sal_Int32 nOffset ) const;
+ sal_Int32 GetLayoutOffset( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& rXPropSet ) const;
+
+ sal_Bool CreateSlide( sal_uInt32 nPageNum );
+ sal_Bool CreateSlideMaster( sal_uInt32 nPageNum );
+ sal_Bool CreateNotes( sal_uInt32 nPageNum );
+
+ static sal_Int8 GetTransition( sal_Int16 nTransitionType, sal_Int16 nTransitionSubtype, ::com::sun::star::presentation::FadeEffect eEffect, sal_uInt8& nDirection );
+ static sal_Int8 GetTransition( ::com::sun::star::presentation::FadeEffect eEffect, sal_uInt8& nDirection );
+};
+
+#define PPT_TRANSITION_TYPE_NONE 0
+#define PPT_TRANSITION_TYPE_RANDOM 1
+#define PPT_TRANSITION_TYPE_BLINDS 2
+#define PPT_TRANSITION_TYPE_CHECKER 3
+#define PPT_TRANSITION_TYPE_COVER 4
+#define PPT_TRANSITION_TYPE_DISSOLVE 5
+#define PPT_TRANSITION_TYPE_FADE 6
+#define PPT_TRANSITION_TYPE_PULL 7
+#define PPT_TRANSITION_TYPE_RANDOM_BARS 8
+#define PPT_TRANSITION_TYPE_STRIPS 9
+#define PPT_TRANSITION_TYPE_WIPE 10
+#define PPT_TRANSITION_TYPE_ZOOM 11
+#define PPT_TRANSITION_TYPE_SPLIT 13
+
+// effects, new in xp
+#define PPT_TRANSITION_TYPE_DIAMOND 17
+#define PPT_TRANSITION_TYPE_PLUS 18
+#define PPT_TRANSITION_TYPE_WEDGE 19
+#define PPT_TRANSITION_TYPE_PUSH 20
+#define PPT_TRANSITION_TYPE_COMB 21
+#define PPT_TRANSITION_TYPE_NEWSFLASH 22
+#define PPT_TRANSITION_TYPE_SMOOTHFADE 23
+#define PPT_TRANSITION_TYPE_WHEEL 26
+#define PPT_TRANSITION_TYPE_CIRCLE 27
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */