Krita Source Code Documentation
Loading...
Searching...
No Matches
KisCurveOptionModel.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef KISCURVEOPTIONMODEL_H
8#define KISCURVEOPTIONMODEL_H
9
10#include "kritapaintop_export.h"
11#include "KisCurveOptionData.h"
13
14#include <lager/state.hpp>
15#include <lager/constant.hpp>
16#include <lager/extra/qt.hpp>
17
18#include <QObject>
19
20using RangeState = std::tuple<qreal, qreal>;
21using StrengthState = std::tuple<qreal, qreal, qreal>;
22using LabelsState = std::tuple<QString, int>;
23
24
25class PAINTOP_EXPORT KisCurveOptionModel : public QObject
26{
27 Q_OBJECT
28public:
29 KisCurveOptionModel(lager::cursor<KisCurveOptionDataCommon> optionData,
30 lager::reader<bool> externallyEnabled,
31 std::optional<lager::reader<RangeState>> strengthRangeOverride,
32 qreal strengthDisplayMultiplier,
33 KisCurveRangeModelFactory rangeModelFactory);
35
36 // the state must be declared **before** any cursors or readers
37 lager::cursor<KisCurveOptionDataCommon> optionData;
38 lager::reader<RangeState> strengthRangeNorm;
39 lager::state<QString, lager::automatic_tag> activeSensorIdData;
40 LAGER_QT_READER(bool, isCheckable);
41 LAGER_QT_CURSOR(bool, isChecked);
42 LAGER_QT_READER(bool, effectiveIsChecked);
43 LAGER_QT_READER(qreal, effectiveStrengthValueNorm);
44 LAGER_QT_CURSOR(qreal, strengthValueDenorm);
45 LAGER_QT_READER(StrengthState, effectiveStrengthStateDenorm);
46 LAGER_QT_CURSOR(bool, useCurve);
47 LAGER_QT_CURSOR(bool, useSameCurve);
48 LAGER_QT_CURSOR(int, curveMode);
49 LAGER_QT_CURSOR(QString, activeSensorId);
50 LAGER_QT_READER(int, activeSensorLength);
52 LAGER_QT_CURSOR(QString, activeCurve);
53 std::unique_ptr<KisCurveRangeModelInterface> rangeModel;
54 LAGER_QT_CURSOR(QString, displayedCurve);
55 LAGER_QT_READER(QString, curveXMinLabel);
56 LAGER_QT_READER(QString, curveXMaxLabel);
57 LAGER_QT_READER(QString, curveYMinLabel);
58 LAGER_QT_READER(QString, curveYMaxLabel);
59
61};
62
63#endif // KISCURVEOPTIONMODEL_H
std::tuple< qreal, qreal, qreal > StrengthState
std::tuple< QString, int > LabelsState
std::tuple< qreal, qreal > RangeState
std::function< KisCurveRangeModelInterface *(lager::cursor< QString >, lager::cursor< QRectF >, lager::reader< QString >, lager::reader< int >)> KisCurveRangeModelFactory
LAGER_QT_CURSOR(qreal, strengthValueDenorm)
LAGER_QT_READER(bool, isCheckable)
LAGER_QT_READER(bool, effectiveIsChecked)
KisCurveOptionDataCommon bakedOptionData() const
LAGER_QT_READER(int, activeSensorLength)
lager::reader< RangeState > strengthRangeNorm
LAGER_QT_READER(QString, curveYMinLabel)
LAGER_QT_READER(LabelsState, labelsState)
std::unique_ptr< KisCurveRangeModelInterface > rangeModel
lager::state< QString, lager::automatic_tag > activeSensorIdData
LAGER_QT_CURSOR(bool, useCurve)
LAGER_QT_CURSOR(bool, isChecked)
LAGER_QT_READER(QString, curveYMaxLabel)
LAGER_QT_CURSOR(QString, activeSensorId)
LAGER_QT_READER(StrengthState, effectiveStrengthStateDenorm)
LAGER_QT_CURSOR(QString, activeCurve)
LAGER_QT_CURSOR(int, curveMode)
LAGER_QT_CURSOR(bool, useSameCurve)
LAGER_QT_READER(QString, curveXMinLabel)
LAGER_QT_CURSOR(QString, displayedCurve)
LAGER_QT_READER(qreal, effectiveStrengthValueNorm)
lager::cursor< KisCurveOptionDataCommon > optionData
LAGER_QT_READER(QString, curveXMaxLabel)