File indexing completed on 2024-09-22 04:08:31

0001 /*
0002  *  SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 #include "KisDynamicSensorTime.h"
0007 
0008 #include <KisDynamicSensorIds.h>
0009 
0010 #include <kis_paint_information.h>
0011 #include <KisCurveOptionData.h>
0012 
0013 
0014 KisDynamicSensorTime::KisDynamicSensorTime(const KisSensorWithLengthData &data, std::optional<KisCubicCurve> curveOverride)
0015     : KisDynamicSensor(TimeId, data, curveOverride)
0016     , m_periodic(data.isPeriodic)
0017     , m_length(data.length)
0018 {
0019 }
0020 
0021 qreal KisDynamicSensorTime::value(const KisPaintInformation &pi) const
0022 {
0023     if (pi.isHoveringMode()) return 1.0;
0024 
0025     const qreal currentTime =
0026         m_periodic ?
0027         std::fmod(pi.currentTime(), m_length) :
0028         qMin(pi.currentTime(), qreal(m_length));
0029 
0030     return currentTime / qreal(m_length);
0031 }