diff options
Diffstat (limited to 'src/system/Qt3DSTimer.cpp')
-rw-r--r-- | src/system/Qt3DSTimer.cpp | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/src/system/Qt3DSTimer.cpp b/src/system/Qt3DSTimer.cpp new file mode 100644 index 0000000..d9e82eb --- /dev/null +++ b/src/system/Qt3DSTimer.cpp @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 1993-2009 NVIDIA Corporation. +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt 3D Studio. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "SystemPrefix.h" + +//============================================================================== +// Includes +//============================================================================== +#include "Qt3DSTimer.h" + +//============================================================================== +// Namespace +//============================================================================== +namespace Q3DStudio { + +//============================================================================== +/** + * Constructor + */ +CTimer::CTimer(ITimeProvider &inProvider) + : m_TimeProvider(inProvider) + , m_IsRunning(false) +{ + Start(); +} + +//============================================================================== +/** + * Start the timer + */ +void CTimer::Start() +{ + if (!m_IsRunning) + m_StartTime = m_TimeProvider.GetCurrentTimeMicroSeconds(); + m_IsRunning = true; +} + +//============================================================================== +/** + * Stop the timer + */ +void CTimer::Stop() +{ + if (m_IsRunning) + m_StartTime = m_TimeProvider.GetCurrentTimeMicroSeconds() - m_StartTime; + + m_IsRunning = false; +} + +//============================================================================== +/** + * Reset the timer + */ +void CTimer::Reset() +{ + if (m_IsRunning) + m_StartTime = m_TimeProvider.GetCurrentTimeMicroSeconds(); + else + m_StartTime = 0; +} + +//============================================================================== +/** + * Gets the current time in milliseconds. + * @return the current time since timer was started(in miliseconds), + * or time when it was stopped + */ +TTimeUnit CTimer::GetTimeMilliSecs() +{ + return GetTimeMicroSecs() / 1000; +} + +//============================================================================= +/** + * Get the number of usecs elapsed since start was called. + * If the timer is running then this will return the time from when start was + * called. If the timer is stopped then this will return the amount of time + * between the start and last stop. + * @return returns the elasped micro second. + */ +TMicroSeconds CTimer::GetTimeMicroSecs() +{ + if (m_IsRunning) + return m_TimeProvider.GetCurrentTimeMicroSeconds() - m_StartTime; + else + return m_StartTime; +} + +} // namespace Q3DStudio |