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_SLIDEANIMATIONS_HXX
25 #define INCLUDED_SLIDESHOW_SLIDEANIMATIONS_HXX
26 
27 #include <com/sun/star/uno/Reference.hxx>
28 #include <com/sun/star/uno/XComponentContext.hpp>
29 #include <basegfx/vector/b2dvector.hxx>
30 
31 #include "event.hxx"
32 #include "slideshowcontext.hxx"
33 #include "subsettableshapemanager.hxx"
34 #include "animationnode.hxx"
35 
36 namespace com { namespace sun { namespace star { namespace animations
37 {
38     class XAnimationNode;
39 } } } }
40 
41 
42 /* Definition of SlideAnimations class */
43 
44 namespace slideshow
45 {
46     namespace internal
47     {
48         /** This class generates and manages all animations of a slide.
49 
50         	Provided with the root animation node, this class imports
51         	the effect information and builds the event tree for all
52         	of the slide's animations.
53          */
54         class SlideAnimations
55         {
56         public:
57             /** Create an animation generator.
58 
59             	@param rContext
60                 Slide show context, passing on common parameters
61              */
62             SlideAnimations( const SlideShowContext&     rContext,
63                              const ::basegfx::B2DVector& rSlideSize );
64             ~SlideAnimations();
65 
66 			/** Import animations from a SMIL root animation node.
67 
68             	This method might take some time, depending on the
69             	complexity of the SMIL animation network to be
70             	imported.
71 
72             	@param xRootAnimationNode
73                 Root animation node for the effects to be
74                 generated. This is typically obtained from the
75                 XDrawPage's XAnimationNodeSupplier.
76 
77              */
78             bool importAnimations( const ::com::sun::star::uno::Reference<
79                                 	  ::com::sun::star::animations::XAnimationNode >&	xRootAnimationNode );
80 
81             /** Check, whether imported animations actually contain
82                 any effects.
83 
84                 @return true, if there are actual animations in the
85                 imported node tree.
86              */
87             bool isAnimated() const;
88 
89             /** Start the animations.
90 
91                 This method creates the network of events and
92                 activities for all animations. The events and
93                 activities are inserted into the constructor-provided
94                 queues. These queues are not explicitely cleared, if
95                 you rely on this object's effects to run without
96                 interference, you should clear the queues by yourself.
97 
98                 @return true, if all events have been successfully
99                 created.
100              */
101             bool start();
102 
103             /** End all animations.
104 
105             	This method force-ends all animations. If a slide end
106             	event has been registered, that is fired, too.
107              */
108             void end();
109 
110             /// Release all references. Does not notify anything.
111             void dispose();
112 
113         private:
114             SlideShowContext		 maContext;
115             const basegfx::B2DVector maSlideSize;
116             AnimationNodeSharedPtr   mpRootNode;
117 		};
118 	}
119 }
120 
121 #endif /* INCLUDED_SLIDESHOW_SLIDEANIMATIONS_HXX */
122