Branch data Line data Source code
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_DISCRETEACTIVITYBASE_HXX
21 : : #define INCLUDED_SLIDESHOW_DISCRETEACTIVITYBASE_HXX
22 : :
23 : : #include "activitybase.hxx"
24 : : #include "wakeupevent.hxx"
25 : :
26 : : #include <vector>
27 : :
28 : :
29 : : namespace slideshow
30 : : {
31 : : namespace internal
32 : : {
33 : : /** Specialization of ActivityBase for discrete time activities.
34 : :
35 : : A discrete time activity is one where time proceeds in
36 : : discrete steps, i.e. at given time instants.
37 : : */
38 : 0 : class DiscreteActivityBase : public ActivityBase
39 : : {
40 : : public:
41 : : DiscreteActivityBase( const ActivityParameters& rParms );
42 : :
43 : : /** Hook for derived classes.
44 : :
45 : : This method is called for each discrete time
46 : : instant, with nFrame denoting the frame number
47 : : (starting with 0)
48 : :
49 : : @param nFrame
50 : : Current frame number.
51 : :
52 : : @param nRepeatCount
53 : : Number of full repeats already performed
54 : : */
55 : : virtual void perform( sal_uInt32 nFrame, sal_uInt32 nRepeatCount ) const = 0;
56 : : virtual void dispose();
57 : : virtual bool perform();
58 : :
59 : : protected:
60 : : virtual void startAnimation();
61 : :
62 : : sal_uInt32 calcFrameIndex( sal_uInt32 nCurrCalls,
63 : : ::std::size_t nVectorSize ) const;
64 : :
65 : : sal_uInt32 calcRepeatCount( sal_uInt32 nCurrCalls,
66 : : ::std::size_t nVectorSize ) const;
67 : :
68 : 0 : ::std::size_t getNumberOfKeyTimes() const { return maDiscreteTimes.size(); }
69 : :
70 : : private:
71 : : WakeupEventSharedPtr mpWakeupEvent;
72 : : const ::std::vector< double > maDiscreteTimes;
73 : : const double mnSimpleDuration;
74 : : sal_uInt32 mnCurrPerformCalls;
75 : : };
76 : : }
77 : : }
78 : :
79 : : #endif /* INCLUDED_SLIDESHOW_DISCRETEACTIVITYBASE_HXX */
80 : :
81 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|