| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef INCLUDED_SLIDESHOW_SHAPEMANAGER_HXX |
| #define INCLUDED_SLIDESHOW_SHAPEMANAGER_HXX |
| |
| #include "disposable.hxx" |
| #include <com/sun/star/uno/Reference.hxx> |
| #include <boost/shared_ptr.hpp> |
| |
| namespace com { namespace sun { namespace star { namespace drawing { |
| class XShape; |
| } } } } |
| |
| /* Definition of ShapeManager interface */ |
| |
| namespace slideshow |
| { |
| namespace internal |
| { |
| class HyperlinkArea; |
| class AnimatableShape; |
| class Shape; |
| |
| /** ShapeManager interface |
| |
| Implementers of this interface manage appearance and |
| animation of slideshow shapes. |
| */ |
| class ShapeManager : public Disposable |
| { |
| public: |
| /** Notify the ShapeManager that the given Shape starts an |
| animation now. |
| |
| This method enters animation mode for the Shape. If |
| the shape is already in animation mode, the call is |
| counted, and the shape only leaves animation mode |
| after a corresponding number of leaveAnimationMode() |
| calls. |
| */ |
| virtual void enterAnimationMode( const boost::shared_ptr<AnimatableShape>& rShape ) = 0; |
| |
| /** Notify the ShapeManager that the given Shape is no |
| longer animated. |
| |
| When called a corresponding number of times as |
| enterAnimationMode() for a given shape, this methods |
| ends animation mode for the given Shape. It is illegal |
| to call this method more often than |
| enterAnimationMode(). |
| */ |
| virtual void leaveAnimationMode( const boost::shared_ptr<AnimatableShape>& rShape ) = 0; |
| |
| /** Notify that a shape needs an update |
| |
| This method notifies the ShapeManager that a shape |
| update is necessary. Use this if e.g. a running |
| animation changed the shape appearance. |
| |
| @param rShape |
| Shape which needs an update |
| */ |
| virtual void notifyShapeUpdate( const boost::shared_ptr<Shape>& rShape ) = 0; |
| |
| /** Lookup a Shape from an XShape model object |
| |
| This method looks up the internal shape map for one |
| representing the given XShape. |
| |
| @param xShape |
| The XShape object, for which the representing Shape |
| should be looked up. |
| */ |
| virtual boost::shared_ptr<Shape> lookupShape( |
| ::com::sun::star::uno::Reference< |
| ::com::sun::star::drawing::XShape > const & xShape ) const = 0; |
| |
| /** Register given shape as a hyperlink target |
| |
| @param rArea |
| Hyperlink sensitive area. Will participate in |
| hyperlink region lookup. Must be in absolute user |
| space coordinates. |
| */ |
| virtual void addHyperlinkArea( const boost::shared_ptr<HyperlinkArea>& rArea ) = 0; |
| |
| /** Unregister given shape as a hyperlink target |
| |
| @param rArea |
| Hyperlink sensitive area. Will cease to participate in |
| hyperlink region lookup. |
| */ |
| virtual void removeHyperlinkArea( const boost::shared_ptr<HyperlinkArea>& rArea ) = 0; |
| }; |
| |
| typedef ::boost::shared_ptr< ShapeManager > ShapeManagerSharedPtr; |
| } |
| } |
| |
| #endif /* INCLUDED_SLIDESHOW_SHAPEMANAGER_HXX */ |