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 "KisDynamicSensorDrawingAngle.h"
0007 
0008 #include <KisDynamicSensorIds.h>
0009 
0010 #include <kis_paint_information.h>
0011 #include <KisCurveOptionData.h>
0012 
0013 KisDynamicSensorDrawingAngle::KisDynamicSensorDrawingAngle(const KisDrawingAngleSensorData &data, std::optional<KisCubicCurve> curveOverride)
0014     : KisDynamicSensor(DrawingAngleId, data, curveOverride)
0015     , m_lockedAngleMode(data.lockedAngleMode)
0016     , m_angleOffset(data.angleOffset)
0017 {
0018 }
0019 
0020 qreal KisDynamicSensorDrawingAngle::value(const KisPaintInformation &info) const
0021 {
0022     /* so that we are in 0.0..1.0 */
0023     qreal ret = 0.5 + info.drawingAngle(m_lockedAngleMode) / (2.0 * M_PI) + m_angleOffset / 360.0;
0024 
0025     // check if m_angleOffset pushed us out of bounds
0026     if (ret > 1.0)
0027         ret -= 1.0;
0028 
0029     return ret;
0030 }
0031 
0032 bool KisDynamicSensorDrawingAngle::isAbsoluteRotation() const
0033 {
0034     return true;
0035 }