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 "KisDynamicSensorFuzzy.h" 0007 0008 #include <KisDynamicSensorIds.h> 0009 0010 #include <kis_paint_information.h> 0011 #include <KisCurveOptionData.h> 0012 0013 KisDynamicSensorFuzzyBase::KisDynamicSensorFuzzyBase(const KoID &id, bool fuzzyPerStroke, const QString &perStrokeRandomSourceKey, const KisSensorData &data, std::optional<KisCubicCurve> curveOverride) 0014 : KisDynamicSensor(id, data, curveOverride) 0015 , m_fuzzyPerStroke(fuzzyPerStroke) 0016 , m_perStrokeRandomSourceKey(perStrokeRandomSourceKey) 0017 { 0018 } 0019 0020 bool KisDynamicSensorFuzzyBase::isAdditive() const 0021 { 0022 return true; 0023 } 0024 0025 qreal KisDynamicSensorFuzzyBase::value(const KisPaintInformation &info) const 0026 { 0027 qreal result = 0.0; 0028 0029 if (!info.isHoveringMode()) { 0030 result = m_fuzzyPerStroke ? 0031 info.perStrokeRandomSource()->generateNormalized(m_perStrokeRandomSourceKey) : 0032 info.randomSource()->generateNormalized(); 0033 result = 2.0 * result - 1.0; 0034 } 0035 0036 return result; 0037 } 0038 0039 KisDynamicSensorFuzzyPerDab::KisDynamicSensorFuzzyPerDab(const KisSensorData &data, std::optional<KisCubicCurve> curveOverride) 0040 : KisDynamicSensorFuzzyBase(FuzzyPerDabId, false, "", data, curveOverride) 0041 { 0042 0043 } 0044 0045 KisDynamicSensorFuzzyPerStroke::KisDynamicSensorFuzzyPerStroke(const KisSensorData &data, std::optional<KisCubicCurve> curveOverride, const QString &parentOptionName) 0046 : KisDynamicSensorFuzzyBase(FuzzyPerStrokeId, true, parentOptionName + "FuzzyStroke", data, curveOverride) 0047 { 0048 }