xref: /AOO41X/main/slideshow/source/inc/animatableshape.hxx (revision 83137a03adbb58b5b3bdafefefa1e93de35e0011)
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_ANIMATABLESHAPE_HXX
25 #define INCLUDED_SLIDESHOW_ANIMATABLESHAPE_HXX
26 
27 #include <boost/shared_ptr.hpp>
28 
29 #include "shape.hxx"
30 
31 
32 namespace slideshow
33 {
34     namespace internal
35     {
36         /** Represents an animatable shape.
37 
38             This interface adds animation handling methods to a
39             shape. It allows transparent switching between
40             sprite-based viewing and static painting, depending on
41             whether animations are currently running.
42          */
43         class AnimatableShape : public Shape
44         {
45         public:
46             // Animation methods
47             //------------------------------------------------------------------
48 
49             /** Notify the Shape that an animation starts now
50 
51                 This method enters animation mode on all registered
52                 views.
53 
54                 @attention This method is supposed to be called only
55                 from the LayerManager, since it might involve shifting
56                 shapes between different layers (and removing this
57                 shape from the background layer in the first place)
58              */
59             virtual void enterAnimationMode() = 0;
60 
61             /** Notify the Shape that it is no longer animated
62 
63                 This methods requests the Shape to end animation mode
64                 on all registered views, if called more or equal the
65                 times enterAnimationMode() was called. That is, the
66                 Shape only leaves animation mode, if all requested
67                 enterAnimationMode() call sites have issued their
68                 matching leaveAnimationMode().
69 
70                 @attention This method is supposed to be called only
71                 from the LayerManager, since it might involve shifting
72                 shapes between different layers (and adding this
73                 shape to the background layer again)
74              */
75             virtual void leaveAnimationMode() = 0;
76 
77         };
78 
79         typedef ::boost::shared_ptr< AnimatableShape > AnimatableShapeSharedPtr;
80 
81     }
82 }
83 
84 #endif /* INCLUDED_SLIDESHOW_ANIMATABLESHAPE_HXX */
85