1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_SLIDESHOW_SOURCE_INC_ANIMATABLESHAPE_HXX
21 #define INCLUDED_SLIDESHOW_SOURCE_INC_ANIMATABLESHAPE_HXX
28 namespace slideshow::internal
30 /** Represents an animatable shape.
32 This interface adds animation handling methods to a
33 shape. It allows transparent switching between
34 sprite-based viewing and static painting, depending on
35 whether animations are currently running.
37 class AnimatableShape
: public Shape
43 /** Notify the Shape that an animation starts now
45 This method enters animation mode on all registered
48 @attention This method is supposed to be called only
49 from the LayerManager, since it might involve shifting
50 shapes between different layers (and removing this
51 shape from the background layer in the first place)
53 virtual void enterAnimationMode() = 0;
55 /** Notify the Shape that it is no longer animated
57 This methods requests the Shape to end animation mode
58 on all registered views, if called more or equal the
59 times enterAnimationMode() was called. That is, the
60 Shape only leaves animation mode, if all requested
61 enterAnimationMode() call sites have issued their
62 matching leaveAnimationMode().
64 @attention This method is supposed to be called only
65 from the LayerManager, since it might involve shifting
66 shapes between different layers (and adding this
67 shape to the background layer again)
69 virtual void leaveAnimationMode() = 0;
73 typedef ::std::shared_ptr
< AnimatableShape
> AnimatableShapeSharedPtr
;
77 #endif // INCLUDED_SLIDESHOW_SOURCE_INC_ANIMATABLESHAPE_HXX
79 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */