xref: /trunk/main/slideshow/source/inc/slide.hxx (revision c47da6ea)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef INCLUDED_SLIDESHOW_SLIDE_HXX
25 #define INCLUDED_SLIDESHOW_SLIDE_HXX
26 
27 #include "shapemanager.hxx"
28 #include "subsettableshapemanager.hxx"
29 #include "unoviewcontainer.hxx"
30 #include "slidebitmap.hxx"
31 #include "shapemaps.hxx"
32 
33 #include <boost/shared_ptr.hpp>
34 
35 namespace com {  namespace sun { namespace star {
36     namespace drawing {
37         class XDrawPage;
38         class XDrawPagesSupplier;
39     }
40     namespace uno {
41         class XComponentContext;
42     }
43     namespace animations {
44         class XAnimationNode;
45 } } } }
46 
47 namespace basegfx
48 {
49     class B2IVector;
50 }
51 
52 /* Definition of Slide interface */
53 
54 namespace slideshow
55 {
56     namespace internal
57     {
58         class RGBColor;
59         class ScreenUpdater;
60         typedef ::std::vector< ::cppcanvas::PolyPolygonSharedPtr> PolyPolygonVector;
61         class Slide
62         {
63         public:
64             // Showing
65             // -------------------------------------------------------------------
66 
67             /** Prepares to show slide.
68 
69             	Call this method to reduce the timeout show(), and
70             	getInitialSlideBitmap() need to complete. If
71             	prefetch() is not called explicitly, the named
72             	methods will call it implicitly.
73              */
74             virtual bool prefetch() = 0;
75 
76             /** Shows the slide on all registered views
77 
78                 After this call, the slide will render itself to the
79                 views, and start its animations.
80 
81                 @param bSlideBackgoundPainted
82                 When true, the initial slide content on the background
83                 layer is already rendered (e.g. from a previous slide
84                 transition). When false, Slide renders initial content of
85                 slide.
86              */
87             virtual bool show( bool bSlideBackgoundPainted ) = 0;
88 
89             /** Force-ends the slide
90 
91                 After this call, the slide has stopped all animations,
92                 and ceased rendering/visualization on all views.
93              */
94             virtual void hide() = 0;
95 
96 
97             // Queries
98             // -------------------------------------------------------------------
99 
100             /** Query the size of this slide in user coordinates
101 
102                 This value is retrieved from the XDrawPage properties.
103              */
104             virtual basegfx::B2IVector getSlideSize() const = 0;
105 
106             /// Gets the underlying API page
107             virtual ::com::sun::star::uno::Reference<
108                 ::com::sun::star::drawing::XDrawPage > getXDrawPage() const = 0;
109 
110             /// Gets the animation node.
111             virtual ::com::sun::star::uno::Reference<
112                 ::com::sun::star::animations::XAnimationNode > getXAnimationNode() const = 0;
113 
114             ///Gets the slide Polygons
115             virtual PolyPolygonVector getPolygons() = 0;
116 
117             ///Draw the slide Polygons
118             virtual void drawPolygons() const = 0;
119 
120             ///Check if paint overlay is already active
121             virtual bool isPaintOverlayActive() const = 0;
122 
123 			virtual void enablePaintOverlay() = 0;
124 			virtual void disablePaintOverlay() = 0;
125 
126 			virtual void update_settings( bool bUserPaintEnabled, RGBColor const& aUserPaintColor, double dUserPaintStrokeWidth ) = 0;
127 
128             // Slide bitmaps
129             // -------------------------------------------------------------------
130 
131             /** Request bitmap for current slide appearance.
132 
133             	The bitmap returned by this method depends on the
134             	current state of the slide and the contained
135             	animations. A newly generated slide will return the
136             	initial slide content here (e.g. with all 'appear'
137             	effect shapes invisible), a slide whose effects are
138             	currently running will return a bitmap corresponding
139             	to the current position on the animation timeline, and
140             	a slide whose effects have all been run will generate
141             	a bitmap with the final slide appearance (e.g. with
142             	all 'hide' effect shapes invisible).
143 
144             	@param rView
145                 View to retrieve bitmap for (note that the bitmap will
146                 have device-pixel equivalence to the content that
147                 would have been rendered onto the given view). Note
148                 that the view must have been added to this slide
149                 before via viewAdded().
150              */
151             virtual SlideBitmapSharedPtr
152                 getCurrentSlideBitmap( const UnoViewSharedPtr& rView ) const = 0;
153         };
154 
155         typedef ::boost::shared_ptr< Slide > SlideSharedPtr;
156 
157         class EventQueue;
158         class CursorManager;
159         class EventMultiplexer;
160         class ActivitiesQueue;
161         class UserEventQueue;
162         class RGBColor;
163 
164         /** Construct from XDrawPage
165 
166             The Slide object generally works in XDrawPage model
167             coordinates, that is, the page will have the width and
168             height as specified in the XDrawPage's property
169             set. The top, left corner of the page will be rendered
170             at (0,0) in the given canvas' view coordinate system.
171 
172             Does not render anything initially
173 
174             @param xDrawPage
175             Page to display on this slide
176 
177             @param xRootNode
178             Root of the SMIL animation tree. Used to animate the slide.
179 
180             @param rEventQueue
181             EventQueue. Used to post events.
182 
183             @param rActivitiesQueue
184             ActivitiesQueue. Used to run animations.
185 
186             @param rEventMultiplexer
187             Event source
188 
189             @param rUserEventQueue
190             UserEeventQueue
191         */
192         SlideSharedPtr createSlide( const ::com::sun::star::uno::Reference<
193                                        ::com::sun::star::drawing::XDrawPage >& 		    xDrawPage,
194                                    const ::com::sun::star::uno::Reference<
195                                        ::com::sun::star::drawing::XDrawPagesSupplier >& xDrawPages,
196                                     const ::com::sun::star::uno::Reference<
197                                        ::com::sun::star::animations::XAnimationNode >&  xRootNode,
198                                     EventQueue&									        rEventQueue,
199                                     EventMultiplexer&								    rEventMultiplexer,
200                                     ScreenUpdater&                                      rScreenUpdater,
201                                     ActivitiesQueue&								    rActivitiesQueue,
202                                     UserEventQueue&									    rUserEventQueue,
203                                     CursorManager&                                      rCursorManager,
204                                     const UnoViewContainer&                             rViewContainer,
205                                     const ::com::sun::star::uno::Reference<
206                                        ::com::sun::star::uno::XComponentContext >&      xContext,
207                                     const ShapeEventListenerMap&                        rShapeListenerMap,
208                                     const ShapeCursorMap&                               rShapeCursorMap,
209                                     const PolyPolygonVector&                            rPolyPolygonVector,
210                                     RGBColor const&                                     aUserPaintColor,
211                                     double                                              dUserPaintStrokeWidth,
212                                     bool                                                bUserPaintEnabled,
213                                     bool                                                bIntrinsicAnimationsAllowed,
214                                     bool                                                bDisableAnimationZOrder );
215     }
216 }
217 
218 #endif /* INCLUDED_SLIDESHOW_SLIDE_HXX */
219