9#include <lager/lenses/tuple.hpp>
14 [](
const std::tuple<KisCurveOptionDataCommon, QString> &data) -> QString {
16 const bool useSameCurve = std::get<0>(data).useSameCurve;
19 activeCurve = std::get<0>(data).commonCurve;
21 const QString activeSensorId = std::get<1>(data);
23 std::vector<const KisSensorData*> srcSensors = std::get<0>(data).sensors();
25 std::find_if(srcSensors.begin(), srcSensors.end(),
27 return sensor->id.id() == activeSensorId;
32 if (it != srcSensors.end()) {
33 activeCurve = (*it)->curve;
39 [](std::tuple<KisCurveOptionDataCommon, QString> data, QString curve) {
40 const bool useSameCurve = std::get<0>(data).useSameCurve;
43 std::get<0>(data).commonCurve = curve;
45 const QString activeSensorId = std::get<1>(data);
47 std::vector<KisSensorData*> srcSensors = std::get<0>(data).sensors();
49 std::find_if(srcSensors.begin(), srcSensors.end(),
51 return sensor->id.id() == activeSensorId;
56 if (it != srcSensors.end()) {
65 [](
const std::tuple<KisCurveOptionDataCommon, QString> &data) -> QRectF {
66 QRectF activeCurveRange(0.0, 0.0, 1.0, 1.0);
68 const QString activeSensorId = std::get<1>(data);
70 std::vector<const KisSensorData*> srcSensors = std::get<0>(data).sensors();
72 std::find_if(srcSensors.begin(), srcSensors.end(),
74 return sensor->id.id() == activeSensorId;
79 if (it != srcSensors.end()) {
80 activeCurveRange = (*it)->baseCurveRange();
83 return activeCurveRange;
85 [](std::tuple<KisCurveOptionDataCommon, QString> data,
const QRectF curveRange) {
86 const QString activeSensorId = std::get<1>(data);
88 std::vector<KisSensorData*> srcSensors = std::get<0>(data).sensors();
90 std::find_if(srcSensors.begin(), srcSensors.end(),
92 return sensor->id.id() == activeSensorId;
97 if (it != srcSensors.end()) {
98 (*it)->setBaseCurveRange(curveRange);
105 return data.
sensorData->calcActiveSensorLength(activeSensorId);
109 lager::reader<bool> externallyEnabled,
110 std::optional<lager::reader<RangeState>> strengthRangeOverride,
111 qreal strengthDisplayMultiplier,
113 : optionData(_optionData)
114 , strengthRangeNorm(strengthRangeOverride ? *strengthRangeOverride :
117 , activeSensorIdData(optionData->sensors().front()->id.id())
120 ,
LAGER_QT(effectiveIsChecked) {lager::with(
LAGER_QT(isChecked), externallyEnabled).map(std::logical_and{})}
122 lager::with(strengthRangeNorm.zoom(lager::lenses::first),
124 strengthRangeNorm.zoom(lager::lenses::second))
125 .map(&qBound<qreal>)}
128 .zoom(kislager::lenses::scale<qreal>(strengthDisplayMultiplier))}
130 lager::with(
LAGER_QT(effectiveStrengthValueNorm),
131 strengthRangeNorm.zoom(lager::lenses::first),
132 strengthRangeNorm.zoom(lager::lenses::second))
144 lager::with(optionData,
auto activeCurveRangeLens
rangeModel(rangeModelFactory(LAGER_QT(activeCurve), lager::with(optionData, LAGER_QT(activeSensorId)) .zoom(activeCurveRangeLens), LAGER_QT(activeSensorId), LAGER_QT(activeSensorLength)))
int calcActiveSensorLength(const KisCurveOptionDataCommon &data, const QString &activeSensorId)
std::function< KisCurveRangeModelInterface *(lager::cursor< QString >, lager::cursor< QRectF >, lager::reader< QString >, lager::reader< int >)> KisCurveRangeModelFactory
KisCurveOptionDataCommon bakedOptionData() const
lager::reader< RangeState > strengthRangeNorm
KisCurveOptionModel(lager::cursor< KisCurveOptionDataCommon > optionData, lager::reader< bool > externallyEnabled, std::optional< lager::reader< RangeState > > strengthRangeOverride, qreal strengthDisplayMultiplier, KisCurveRangeModelFactory rangeModelFactory)
lager::cursor< KisCurveOptionDataCommon > optionData
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
constexpr auto foreach_arg
QSharedDataPointer< KisSensorPackInterface > sensorData