1*aaef562fSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*aaef562fSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*aaef562fSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*aaef562fSAndrew Rist  * distributed with this work for additional information
6*aaef562fSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*aaef562fSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*aaef562fSAndrew Rist  * "License"); you may not use this file except in compliance
9*aaef562fSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*aaef562fSAndrew Rist  *
11*aaef562fSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*aaef562fSAndrew Rist  *
13*aaef562fSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*aaef562fSAndrew Rist  * software distributed under the License is distributed on an
15*aaef562fSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*aaef562fSAndrew Rist  * KIND, either express or implied.  See the License for the
17*aaef562fSAndrew Rist  * specific language governing permissions and limitations
18*aaef562fSAndrew Rist  * under the License.
19*aaef562fSAndrew Rist  *
20*aaef562fSAndrew Rist  *************************************************************/
21*aaef562fSAndrew Rist 
22*aaef562fSAndrew Rist 
23cdf0e10cSrcweir #ifndef INCLUDED_SLIDESHOW_ANIMATIONBASENODE_HXX
24cdf0e10cSrcweir #define INCLUDED_SLIDESHOW_ANIMATIONBASENODE_HXX
25cdf0e10cSrcweir 
26cdf0e10cSrcweir #include <com/sun/star/animations/XAnimate.hpp>
27cdf0e10cSrcweir 
28cdf0e10cSrcweir #include "basecontainernode.hxx"
29cdf0e10cSrcweir #include "activitiesfactory.hxx"
30cdf0e10cSrcweir #include "shapeattributelayer.hxx"
31cdf0e10cSrcweir #include "shapeattributelayerholder.hxx"
32cdf0e10cSrcweir #include "attributableshape.hxx"
33cdf0e10cSrcweir #include "shapesubset.hxx"
34cdf0e10cSrcweir 
35cdf0e10cSrcweir namespace slideshow {
36cdf0e10cSrcweir namespace internal {
37cdf0e10cSrcweir 
38cdf0e10cSrcweir /** Common base class for all leaf animation nodes.
39cdf0e10cSrcweir 
40cdf0e10cSrcweir     This class basically holds the target shape
41cdf0e10cSrcweir */
42cdf0e10cSrcweir class AnimationBaseNode : public BaseNode
43cdf0e10cSrcweir {
44cdf0e10cSrcweir public:
45cdf0e10cSrcweir     AnimationBaseNode(
46cdf0e10cSrcweir         ::com::sun::star::uno::Reference<
47cdf0e10cSrcweir         ::com::sun::star::animations::XAnimationNode> const& xNode,
48cdf0e10cSrcweir         ::boost::shared_ptr<BaseContainerNode> const& pParent,
49cdf0e10cSrcweir         NodeContext const& rContext );
50cdf0e10cSrcweir 
51cdf0e10cSrcweir #if defined(VERBOSE) && defined(DBG_UTIL)
52cdf0e10cSrcweir     virtual void showState() const;
53cdf0e10cSrcweir #endif
54cdf0e10cSrcweir 
55cdf0e10cSrcweir protected:
56cdf0e10cSrcweir     virtual void dispose();
57cdf0e10cSrcweir 
58cdf0e10cSrcweir     ::com::sun::star::uno::Reference<
getXAnimateNode() const59cdf0e10cSrcweir         ::com::sun::star::animations::XAnimate> const& getXAnimateNode() const
60cdf0e10cSrcweir         { return mxAnimateNode; }
61cdf0e10cSrcweir 
62cdf0e10cSrcweir     /// Create parameter struct for ActivitiesFactory
63cdf0e10cSrcweir     ActivitiesFactory::CommonParameters fillCommonParameters() const;
getSlideSize() const64cdf0e10cSrcweir     ::basegfx::B2DVector const&         getSlideSize() const { return maSlideSize; }
65cdf0e10cSrcweir     AttributableShapeSharedPtr          getShape() const;
66cdf0e10cSrcweir 
67cdf0e10cSrcweir private:
68cdf0e10cSrcweir     virtual bool hasPendingAnimation() const;
69cdf0e10cSrcweir 
70cdf0e10cSrcweir private: // state transition callbacks
71cdf0e10cSrcweir     virtual bool init_st();
72cdf0e10cSrcweir     virtual bool resolve_st();
73cdf0e10cSrcweir     virtual void activate_st();
74cdf0e10cSrcweir     virtual void deactivate_st( NodeState eDestState );
75cdf0e10cSrcweir     virtual AnimationActivitySharedPtr createActivity() const = 0;
76cdf0e10cSrcweir 
77cdf0e10cSrcweir private:
78cdf0e10cSrcweir     /** Returns true, if this is a subset animation, and
79cdf0e10cSrcweir         the subset is autogenerated (e.g. from an
80cdf0e10cSrcweir         iteration)
81cdf0e10cSrcweir     */
isDependentSubsettedShape() const82cdf0e10cSrcweir     bool isDependentSubsettedShape() const
83cdf0e10cSrcweir         { return mpShapeSubset && !mbIsIndependentSubset; }
84cdf0e10cSrcweir 
getAttributeLayerHolder() const85cdf0e10cSrcweir     ShapeAttributeLayerHolder const & getAttributeLayerHolder() const
86cdf0e10cSrcweir         { return maAttributeLayerHolder; }
87cdf0e10cSrcweir 
88cdf0e10cSrcweir private:
89cdf0e10cSrcweir     ::com::sun::star::uno::Reference<
90cdf0e10cSrcweir         ::com::sun::star::animations::XAnimate>     mxAnimateNode;
91cdf0e10cSrcweir     ShapeAttributeLayerHolder                       maAttributeLayerHolder;
92cdf0e10cSrcweir     ::basegfx::B2DVector                            maSlideSize;
93cdf0e10cSrcweir     AnimationActivitySharedPtr                      mpActivity;
94cdf0e10cSrcweir 
95cdf0e10cSrcweir     /// When valid, this node has a plain target shape
96cdf0e10cSrcweir     AttributableShapeSharedPtr                      mpShape;
97cdf0e10cSrcweir     /// When valid, this is a subsetted target shape
98cdf0e10cSrcweir     ShapeSubsetSharedPtr                            mpShapeSubset;
99cdf0e10cSrcweir     SubsettableShapeManagerSharedPtr                mpSubsetManager;
100cdf0e10cSrcweir     bool                                            mbIsIndependentSubset;
101cdf0e10cSrcweir };
102cdf0e10cSrcweir 
103cdf0e10cSrcweir } // namespace internal
104cdf0e10cSrcweir } // namespace presentation
105cdf0e10cSrcweir 
106cdf0e10cSrcweir #endif /* INCLUDED_SLIDESHOW_ANIMATIONBASENODE_HXX */
107cdf0e10cSrcweir 
108