File indexing completed on 2024-05-26 04:34:09
0001 /* 0002 * SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "MyPaintCurveOptionWidget.h" 0008 #include "KisLager.h" 0009 #include "kis_paintop_option.h" 0010 #include "MyPaintCurveRangeModel.h" 0011 #include "MyPaintCurveOptionRangeControlsStrategy.h" 0012 #include "KisCurveOptionInputControlsStrategy.h" 0013 #include "MyPaintSensorPack.h" 0014 #include "kis_paintop_lod_limitations.h" 0015 0016 namespace { 0017 KisPaintopLodLimitations calcGeneralMyPaintLodLimitations(const MyPaintCurveOptionData &data) 0018 { 0019 KisPaintopLodLimitations l; 0020 0021 if (data.sensorStruct().sensorRandom.isActive) { 0022 l.limitations << KoID(QString("Random Sensor Active, %1").arg(data.id.id()), i18nc("PaintOp instant preview limitation", "Random Sensor Active in %1 option, consider disabling Instant Preview", data.id.name())); 0023 } 0024 0025 return l; 0026 } 0027 } // namespace 0028 0029 struct MyPaintCurveOptionWidget::Private 0030 { 0031 Private(lager::cursor<MyPaintCurveOptionData> optionData) 0032 : lodLimitations(optionData.map(&calcGeneralMyPaintLodLimitations)) 0033 {} 0034 0035 lager::reader<KisPaintopLodLimitations> lodLimitations; 0036 }; 0037 0038 MyPaintCurveOptionWidget::MyPaintCurveOptionWidget(lager::cursor<MyPaintCurveOptionData> optionData, 0039 qreal maxYRange, 0040 const QString &yValueSuffix) 0041 : KisCurveOptionWidget(optionData.zoom(kislager::lenses::to_base<KisCurveOptionDataCommon>), 0042 KisPaintOpOption::GENERAL, 0043 i18n("Base Value: "), yValueSuffix, 1.0, 0044 lager::make_constant(true), 0045 std::nullopt, 0046 MyPaintCurveRangeModel::factory(maxYRange, yValueSuffix), 0047 KisCurveOptionInputControlsStrategyDouble::factory(), 0048 MyPaintCurveOptionRangeControlsStrategy::factory(), 0049 UseFloatingPointStrength) 0050 , m_d(new Private(optionData)) 0051 { 0052 } 0053 0054 MyPaintCurveOptionWidget::~MyPaintCurveOptionWidget() 0055 { 0056 } 0057 0058 KisPaintOpOption::OptionalLodLimitationsReader MyPaintCurveOptionWidget::lodLimitationsReader() const 0059 { 0060 return m_d->lodLimitations; 0061 }