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 INCLUDED_OOX_PPT_SLIDEPERSIST_HXX
21 : #define INCLUDED_OOX_PPT_SLIDEPERSIST_HXX
22 :
23 : #include <boost/shared_ptr.hpp>
24 : #include <oox/drawingml/shape.hxx>
25 : #include <oox/drawingml/theme.hxx>
26 : #include <oox/drawingml/clrscheme.hxx>
27 : #include <oox/drawingml/textliststyle.hxx>
28 : #include <oox/drawingml/textparagraphproperties.hxx>
29 : #include <oox/ppt/headerfooter.hxx>
30 : #include <com/sun/star/frame/XModel.hpp>
31 : #include <com/sun/star/drawing/XDrawPage.hpp>
32 : #include <com/sun/star/animations/XAnimationNode.hpp>
33 : #include <oox/core/fragmenthandler.hxx>
34 : #include <oox/ppt/comments.hxx>
35 :
36 : #include <list>
37 :
38 : namespace oox { namespace vml { class Drawing; } }
39 :
40 : namespace oox { namespace ppt {
41 :
42 : enum ShapeLocation
43 : {
44 : Master,
45 : Layout,
46 : Slide
47 : };
48 :
49 :
50 : class TimeNode;
51 : class SlidePersist;
52 :
53 : typedef boost::shared_ptr< SlidePersist > SlidePersistPtr;
54 :
55 : class SlidePersist : public boost::enable_shared_from_this< SlidePersist >
56 : {
57 :
58 : public:
59 : SlidePersist( oox::core::XmlFilterBase& rFilter, bool bMaster, bool bNotes,
60 : const com::sun::star::uno::Reference< com::sun::star::drawing::XDrawPage >&,
61 : oox::drawingml::ShapePtr pShapesPtr, const ::oox::drawingml::TextListStylePtr & );
62 : ~SlidePersist();
63 :
64 0 : com::sun::star::uno::Reference< com::sun::star::drawing::XDrawPage > getPage() const { return mxPage; };
65 :
66 : #if OSL_DEBUG_LEVEL > 0
67 : static com::sun::star::uno::WeakReference< com::sun::star::drawing::XDrawPage > mxDebugPage;
68 : #endif
69 :
70 0 : void setMasterPersist( SlidePersistPtr pMasterPersistPtr ){ mpMasterPagePtr = pMasterPersistPtr; }
71 0 : SlidePersistPtr getMasterPersist() const { return mpMasterPagePtr; }
72 :
73 0 : void setPath( const OUString& rPath ) { maPath = rPath; }
74 0 : const OUString getPath() const { return maPath; }
75 :
76 0 : void setLayoutPath( const OUString& rLayoutPath ) { maLayoutPath = rLayoutPath; }
77 0 : const OUString getLayoutPath() const { return maLayoutPath; }
78 :
79 0 : void setTheme( const oox::drawingml::ThemePtr pThemePtr ){ mpThemePtr = pThemePtr; }
80 0 : oox::drawingml::ThemePtr getTheme() const { return mpThemePtr; }
81 :
82 : void setClrScheme( const oox::drawingml::ClrSchemePtr pClrSchemePtr ){ mpClrSchemePtr = pClrSchemePtr; }
83 0 : oox::drawingml::ClrSchemePtr getClrScheme() const { return mpClrSchemePtr; }
84 :
85 0 : void setClrMap( const oox::drawingml::ClrMapPtr pClrMapPtr ){ mpClrMapPtr = pClrMapPtr; }
86 0 : oox::drawingml::ClrMapPtr getClrMap() const { return mpClrMapPtr; }
87 :
88 0 : void setBackgroundProperties( const oox::drawingml::FillPropertiesPtr pFillPropertiesPtr ){ mpBackgroundPropertiesPtr = pFillPropertiesPtr; }
89 : oox::drawingml::FillPropertiesPtr getBackgroundProperties() const { return mpBackgroundPropertiesPtr; }
90 0 : oox::drawingml::Color& getBackgroundColor() { return maBackgroundColor; }
91 :
92 0 : bool isMasterPage() const { return mbMaster; }
93 0 : bool isNotesPage() const { return mbNotes; }
94 :
95 0 : void setLayoutValueToken( sal_Int32 nLayoutValueToken ) { mnLayoutValueToken = nLayoutValueToken; }
96 : short getLayoutFromValueToken();
97 :
98 :
99 0 : oox::drawingml::TextListStylePtr getDefaultTextStyle() const { return maDefaultTextStylePtr; }
100 0 : oox::drawingml::TextListStylePtr getTitleTextStyle() const { return maTitleTextStylePtr; }
101 0 : oox::drawingml::TextListStylePtr getBodyTextStyle() const { return maBodyTextStylePtr; }
102 0 : oox::drawingml::TextListStylePtr getNotesTextStyle() const { return maNotesTextStylePtr; }
103 0 : oox::drawingml::TextListStylePtr getOtherTextStyle() const { return maOtherTextStylePtr; }
104 :
105 0 : oox::drawingml::ShapePtr getShapes() { return maShapesPtr; }
106 : void hideShapesAsMasterShapes();
107 0 : ::std::list< boost::shared_ptr< TimeNode > >& getTimeNodeList() { return maTimeNodeList; }
108 0 : oox::ppt::HeaderFooter& getHeaderFooter(){ return maHeaderFooter; };
109 :
110 0 : oox::vml::Drawing* getDrawing() { return mpDrawingPtr.get(); }
111 :
112 : void createXShapes( oox::core::XmlFilterBase& rFilterBase );
113 : void createBackground( const oox::core::XmlFilterBase& rFilterBase );
114 : void applyTextStyles( const oox::core::XmlFilterBase& rFilterBase );
115 :
116 0 : std::map< OUString, ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode > >& getAnimNodesMap() { return maAnimNodesMap; };
117 0 : ::oox::drawingml::ShapePtr getShape( const OUString & id ) { return maShapeMap[ id ]; }
118 0 : ::oox::drawingml::ShapeIdMap& getShapeMap() { return maShapeMap; }
119 :
120 0 : CommentList& getCommentsList() { return maCommentsList; }
121 0 : CommentAuthorList& getCommentAuthors() { return maCommentAuthors; }
122 :
123 : private:
124 : OUString maPath;
125 : OUString maLayoutPath;
126 : ::boost::shared_ptr< oox::vml::Drawing > mpDrawingPtr;
127 : com::sun::star::uno::Reference< com::sun::star::drawing::XDrawPage > mxPage;
128 : oox::drawingml::ThemePtr mpThemePtr; // the theme that is used
129 : oox::drawingml::ClrSchemePtr mpClrSchemePtr; // the local color scheme (if any)
130 : oox::drawingml::ClrMapPtr mpClrMapPtr; // color mapping (if any)
131 : SlidePersistPtr mpMasterPagePtr;
132 :
133 : oox::drawingml::ShapePtr maShapesPtr;
134 : oox::drawingml::Color maBackgroundColor;
135 : oox::drawingml::FillPropertiesPtr mpBackgroundPropertiesPtr;
136 : ::std::list< boost::shared_ptr< TimeNode > > maTimeNodeList;
137 :
138 : oox::ppt::HeaderFooter maHeaderFooter;
139 : sal_Int32 mnLayoutValueToken;
140 : bool mbMaster;
141 : bool mbNotes;
142 :
143 : oox::drawingml::TextListStylePtr maDefaultTextStylePtr;
144 : oox::drawingml::TextListStylePtr maTitleTextStylePtr;
145 : oox::drawingml::TextListStylePtr maBodyTextStylePtr;
146 : oox::drawingml::TextListStylePtr maNotesTextStylePtr;
147 : oox::drawingml::TextListStylePtr maOtherTextStylePtr;
148 :
149 : std::map< OUString, ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode > > maAnimNodesMap;
150 : std::map< OUString, ::oox::drawingml::ShapePtr > maShapeMap;
151 :
152 : // slide comments
153 : CommentList maCommentsList;
154 : CommentAuthorList maCommentAuthors;
155 : };
156 :
157 : } }
158 :
159 : #endif // INCLUDED_OOX_PPT_SLIDEPERSIST_HXX
160 :
161 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|