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 SDEXT_PRESENTER_PRESENTER_PANE_ANIMATOR_HXXs
25 #define SDEXT_PRESENTER_PRESENTER_PANE_ANIMATOR_HXX
26 
27 #include <com/sun/star/awt/Point.hpp>
28 #include <com/sun/star/awt/Rectangle.hpp>
29 #include <com/sun/star/awt/XWindow.hpp>
30 #include <com/sun/star/drawing/framework/XResourceId.hpp>
31 #include <com/sun/star/geometry/RealPoint2D.hpp>
32 #include <com/sun/star/rendering/XBitmap.hpp>
33 #include <com/sun/star/rendering/XSprite.hpp>
34 #include <com/sun/star/rendering/XSpriteCanvas.hpp>
35 #include <com/sun/star/uno/XComponentContext.hpp>
36 #include <rtl/ref.hxx>
37 #include <vector>
38 #include <boost/function.hpp>
39 #include <boost/noncopyable.hpp>
40 #include <boost/shared_ptr.hpp>
41 
42 namespace css = ::com::sun::star;
43 
44 namespace sdext { namespace presenter {
45 
46 class PresenterController;
47 class PresenterPaneContainer;
48 class PresenterWindowManager;
49 
50 /** Base class for different types of pane animations.  Each of these
51     animations either shows or hides a single pane.
52 */
53 class PresenterPaneAnimator
54     : private ::boost::noncopyable
55 {
56 public:
57     virtual void ShowPane (void) = 0;
58     virtual void HidePane (void) = 0;
59 
60 protected:
~PresenterPaneAnimator(void)61     virtual ~PresenterPaneAnimator (void) {};
62 };
63 
64 
65 typedef ::std::vector< ::boost::function<void()> > EndActions;
66 
67 ::boost::shared_ptr<PresenterPaneAnimator> CreateUnfoldInCenterAnimator (
68         const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
69         const ::rtl::Reference<PresenterController>& rpPresenterController,
70         const bool bAnimate,
71         const EndActions& rShowEndActions,
72         const EndActions& rEndEndActions);
73 
74 ::boost::shared_ptr<PresenterPaneAnimator> CreateMoveInFromBottomAnimator (
75         const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
76         const ::rtl::Reference<PresenterController>& rpPresenterController,
77         const bool bAnimate,
78         const EndActions& rShowEndActions,
79         const EndActions& rEndEndActions);
80 
81 ::boost::shared_ptr<PresenterPaneAnimator> CreateTransparentOverlay (
82         const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
83         const ::rtl::Reference<PresenterController>& rpPresenterController,
84         const bool bAnimate,
85         const EndActions& rShowEndActions,
86         const EndActions& rEndEndActions);
87 
88 } }
89 
90 #endif
91