File indexing completed on 2024-06-16 04:17:28
0001 /* 0002 * SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef KISCURVEOPTIONMODEL_H 0008 #define KISCURVEOPTIONMODEL_H 0009 0010 #include "kritapaintop_export.h" 0011 #include "KisCurveOptionData.h" 0012 #include "KisCurveRangeModelInterface.h" 0013 0014 #include <lager/state.hpp> 0015 #include <lager/constant.hpp> 0016 #include <lager/extra/qt.hpp> 0017 0018 using RangeState = std::tuple<qreal, qreal>; 0019 using StrengthState = std::tuple<qreal, qreal, qreal>; 0020 using LabelsState = std::tuple<QString, int>; 0021 0022 0023 class PAINTOP_EXPORT KisCurveOptionModel : public QObject 0024 { 0025 Q_OBJECT 0026 public: 0027 KisCurveOptionModel(lager::cursor<KisCurveOptionDataCommon> optionData, 0028 lager::reader<bool> externallyEnabled, 0029 std::optional<lager::reader<RangeState>> strengthRangeOverride, 0030 qreal strengthDisplayMultiplier, 0031 KisCurveRangeModelFactory rangeModelFactory); 0032 ~KisCurveOptionModel(); 0033 0034 // the state must be declared **before** any cursors or readers 0035 lager::cursor<KisCurveOptionDataCommon> optionData; 0036 lager::reader<RangeState> strengthRangeNorm; 0037 lager::state<QString, lager::automatic_tag> activeSensorIdData; 0038 LAGER_QT_READER(bool, isCheckable); 0039 LAGER_QT_CURSOR(bool, isChecked); 0040 LAGER_QT_READER(bool, effectiveIsChecked); 0041 LAGER_QT_READER(qreal, effectiveStrengthValueNorm); 0042 LAGER_QT_CURSOR(qreal, strengthValueDenorm); 0043 LAGER_QT_READER(StrengthState, effectiveStrengthStateDenorm); 0044 LAGER_QT_CURSOR(bool, useCurve); 0045 LAGER_QT_CURSOR(bool, useSameCurve); 0046 LAGER_QT_CURSOR(int, curveMode); 0047 LAGER_QT_CURSOR(QString, activeSensorId); 0048 LAGER_QT_READER(int, activeSensorLength); 0049 LAGER_QT_READER(LabelsState, labelsState); 0050 LAGER_QT_CURSOR(QString, activeCurve); 0051 std::unique_ptr<KisCurveRangeModelInterface> rangeModel; 0052 LAGER_QT_CURSOR(QString, displayedCurve); 0053 LAGER_QT_READER(QString, curveXMinLabel); 0054 LAGER_QT_READER(QString, curveXMaxLabel); 0055 LAGER_QT_READER(QString, curveYMinLabel); 0056 LAGER_QT_READER(QString, curveYMaxLabel); 0057 0058 KisCurveOptionDataCommon bakedOptionData() const; 0059 }; 0060 0061 #endif // KISCURVEOPTIONMODEL_H