1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* 3 * This file is part of the LibreOffice project. 4 * 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/. 8 * 9 * This file incorporates work covered by the following license notice: 10 * 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 . 18 */ 19 20 #ifndef INCLUDED_SLIDESHOW_SOURCE_ENGINE_ACTIVITIES_ACTIVITYPARAMETERS_HXX 21 #define INCLUDED_SLIDESHOW_SOURCE_ENGINE_ACTIVITIES_ACTIVITYPARAMETERS_HXX 22 23 #include <event.hxx> 24 #include <eventqueue.hxx> 25 #include <expressionnode.hxx> 26 #include <wakeupevent.hxx> 27 28 #include <boost/optional.hpp> 29 #include <vector> 30 31 namespace slideshow { 32 namespace internal { 33 34 /** Parameter struct for animation activities 35 36 This struct contains all common parameters needed to 37 initialize the activities generated by the ActivityFactory. 38 */ 39 struct ActivityParameters 40 { 41 /** Create 42 43 @param rEndEvent 44 Event to be fired, when the activity ends. 45 46 @param rEventQueue 47 Queue to add end event to 48 49 @param nMinDuration 50 Minimal duration of the activity (might actually be 51 longer because of nMinNumberOfFrames). Note that this 52 duration must always be the <em>simple</em> duration, 53 i.e. without any repeat. 54 55 @param rRepeats 56 Number of repeats. If this parameter is invalid, 57 infinite repeat is assumed. 58 59 @param nAccelerationFraction 60 Value between 0 and 1, denoting the fraction of the 61 total simple duration, which the animation should 62 accelerate. 63 64 @param nDecelerationFraction 65 Value between 0 and 1, denoting the fraction of the 66 total simple duration, which the animation should 67 decelerate. Note that the ranges 68 [0,nAccelerationFraction] and 69 [nDecelerationFraction,1] must be non-overlapping! 70 71 @param bAutoReverse 72 When true, at the end of the simple duration, the 73 animation plays reversed to the start value. Note that 74 nMinDuration still specifies the simple duration, 75 i.e. when bAutoReverse is true, the implicit duration 76 doubles. 77 */ ActivityParametersslideshow::internal::ActivityParameters78 ActivityParameters( 79 const EventSharedPtr& rEndEvent, 80 EventQueue& rEventQueue, 81 ActivitiesQueue& rActivitiesQueue, 82 double nMinDuration, 83 ::boost::optional<double> const& rRepeats, 84 double nAccelerationFraction, 85 double nDecelerationFraction, 86 sal_uInt32 nMinNumberOfFrames, 87 bool bAutoReverse ) 88 : mrEndEvent( rEndEvent ), 89 mpWakeupEvent(), 90 mrEventQueue( rEventQueue ), 91 mrActivitiesQueue( rActivitiesQueue ), 92 mpFormula(), 93 maDiscreteTimes(), 94 mnMinDuration( nMinDuration ), 95 mrRepeats( rRepeats ), 96 mnAccelerationFraction( nAccelerationFraction ), 97 mnDecelerationFraction( nDecelerationFraction ), 98 mnMinNumberOfFrames( nMinNumberOfFrames ), 99 mbAutoReverse( bAutoReverse ) {} 100 101 /// End event to fire, when activity is over 102 const EventSharedPtr& mrEndEvent; 103 /// Wakeup event to use for discrete activities 104 WakeupEventSharedPtr mpWakeupEvent; 105 106 /// EventQueue to add events to 107 EventQueue& mrEventQueue; 108 109 /// ActivitiesQueue to add events to 110 ActivitiesQueue& mrActivitiesQueue; 111 112 /// Optional formula 113 std::shared_ptr<ExpressionNode> mpFormula; 114 115 /// Key times, for discrete and key time activities 116 ::std::vector< double > maDiscreteTimes; 117 118 /// Total duration of activity (including all repeats) 119 const double mnMinDuration; 120 ::boost::optional<double> const& mrRepeats; 121 const double mnAccelerationFraction; 122 const double mnDecelerationFraction; 123 124 /// Minimal number of frames this activity must render 125 const sal_uInt32 mnMinNumberOfFrames; 126 127 /// When true, activity is played reversed after mnDuration. 128 const bool mbAutoReverse; 129 }; 130 131 } // namespace internal 132 } // namespace presentation 133 134 #endif // INCLUDED_SLIDESHOW_SOURCE_ENGINE_ACTIVITIES_ACTIVITYPARAMETERS_HXX 135 136 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 137