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 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sdext.hxx"
26 
27 #include "PresenterAnimation.hxx"
28 
29 #include <osl/time.h>
30 
31 namespace sdext { namespace presenter {
32 
GetCurrentTime(void)33 sal_uInt64 GetCurrentTime (void)
34 {
35     TimeValue aTimeValue;
36     if (osl_getSystemTime(&aTimeValue))
37         return sal_uInt64(aTimeValue.Seconds * 1000.0 + aTimeValue.Nanosec / 1000000.0);
38     else
39         return 0;
40 }
41 
42 
43 
44 
PresenterAnimation(const sal_uInt64 nStartDelay,const sal_uInt64 nTotalDuration,const sal_uInt64 nStepDuration)45 PresenterAnimation::PresenterAnimation (
46     const sal_uInt64 nStartDelay,
47     const sal_uInt64 nTotalDuration,
48     const sal_uInt64 nStepDuration)
49     : mnStartTime(GetCurrentTime()+nStartDelay),
50       mnTotalDuration(nTotalDuration),
51       mnStepDuration(nStepDuration),
52       mpStartCallbacks(),
53       mpEndCallbacks()
54 {
55 }
56 
57 
58 
59 
~PresenterAnimation(void)60 PresenterAnimation::~PresenterAnimation (void)
61 {
62 }
63 
64 
65 
66 
GetStartTime(void)67 sal_uInt64 PresenterAnimation::GetStartTime (void)
68 {
69     return mnStartTime;
70 }
71 
72 
73 
74 
GetEndTime(void)75 sal_uInt64 PresenterAnimation::GetEndTime (void)
76 {
77     return mnStartTime + mnTotalDuration;
78 }
79 
80 
81 
82 
GetStepDuration(void)83 sal_uInt64 PresenterAnimation::GetStepDuration (void)
84 {
85     return mnStepDuration;
86 }
87 
88 
89 
90 
AddStartCallback(const Callback & rCallback)91 void PresenterAnimation::AddStartCallback (const Callback& rCallback)
92 {
93     if (mpStartCallbacks.get() == NULL)
94         mpStartCallbacks.reset(new ::std::vector<Callback>());
95     mpStartCallbacks->push_back(rCallback);
96 }
97 
98 
99 
100 
AddEndCallback(const Callback & rCallback)101 void PresenterAnimation::AddEndCallback (const Callback& rCallback)
102 {
103     if (mpEndCallbacks.get() == NULL)
104         mpEndCallbacks.reset(new ::std::vector<Callback>());
105     mpEndCallbacks->push_back(rCallback);
106 }
107 
108 
109 
RunStartCallbacks(void)110 void PresenterAnimation::RunStartCallbacks (void)
111 {
112     if (mpStartCallbacks.get() != NULL)
113     {
114         ::std::vector<Callback>::const_iterator iCallback;
115         for (iCallback=mpStartCallbacks->begin(); iCallback!=mpStartCallbacks->end(); ++iCallback)
116             (*iCallback)();
117     }
118 }
119 
120 
121 
122 
RunEndCallbacks(void)123 void PresenterAnimation::RunEndCallbacks (void)
124 {
125     if (mpEndCallbacks.get() != NULL)
126     {
127         ::std::vector<Callback>::const_iterator iCallback;
128         for (iCallback=mpEndCallbacks->begin(); iCallback!=mpEndCallbacks->end(); ++iCallback)
129             (*iCallback)();
130     }
131 }
132 
133 
134 
135 
136 } } // end of namespace ::sdext::presenter
137