Krita Source Code Documentation
Loading...
Searching...
No Matches
KisCurveOptionInputControlsStrategy.cpp
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
8
9#include <QHBoxLayout>
10#include <QFont>
11
12#include <QSpinBox>
13#include <QDoubleSpinBox>
14
15#include <kis_algebra_2d.h>
16#include <KisMpl.h>
17
18#include <kis_curve_widget.h>
21
22
23
24template<typename SpinBox>
27 KisCurveWidget *curveWidget,
28 QWidget *inPlaceholder, QWidget *outPlaceholder)
30 this->curveWidget = curveWidget;
32 inSpinBox = new SpinBox(inPlaceholder);
33 outSpinBox = new SpinBox(outPlaceholder);
35 QSizePolicy sizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
36 sizePolicy.setHorizontalStretch(0);
37 sizePolicy.setVerticalStretch(0);
38 sizePolicy.setHeightForWidth(inSpinBox->sizePolicy().hasHeightForWidth());
39 inSpinBox->setSizePolicy(sizePolicy);
40 outSpinBox->setSizePolicy(sizePolicy);
41
42 inSpinBox->setMinimumSize(QSize(0, 0));
43 outSpinBox->setMinimumSize(QSize(0, 0));
44
45 QFont font;
46 font.setPointSize(9);
47 inSpinBox->setFont(font);
48 outSpinBox->setFont(font);
49
50 QHBoxLayout *inLayout = new QHBoxLayout(inPlaceholder);
51 inLayout->addWidget(inSpinBox);
52 inLayout->setContentsMargins(0, 0, 0, 0);
53
54 QHBoxLayout *outLayout = new QHBoxLayout(outPlaceholder);
55 outLayout->addWidget(outSpinBox);
56 outLayout->setContentsMargins(0, 0, 0, 0);
57
58 xValueSuffix = rangeInterface->xValueSuffix();
59 yValueSuffix = rangeInterface->yValueSuffix();
60 rangeValues = lager::with(rangeInterface->xMinValue(), rangeInterface->xMaxValue(),
61 rangeInterface->yMinValue(), rangeInterface->yMaxValue());
62
63 xValueSuffix.bind(std::bind(&SpinBox::setSuffix, inSpinBox, std::placeholders::_1));
64 yValueSuffix.bind(std::bind(&SpinBox::setSuffix, outSpinBox, std::placeholders::_1));
65 rangeValues.bind(
67 std::placeholders::_1, std::placeholders::_2,
68 std::placeholders::_3, std::placeholders::_4)));
69
70}
71
72template<typename SpinBox>
76
77template<typename SpinBox>
79{
80 return
81 [] (KisCurveRangeModelInterface *rangeInterface,
82 KisCurveWidget *curveWidget,
83 QWidget *inPlaceholder, QWidget *outPlaceholder) {
84 return new KisCurveOptionInputControlsStrategy<SpinBox>(rangeInterface,
85 curveWidget,
86 inPlaceholder,
87 outPlaceholder);
88
89 };
90}
91
92template<typename SpinBox>
93void KisCurveOptionInputControlsStrategy<SpinBox>::updateCurveLabels(qreal xMin, qreal xMax, qreal yMin, qreal yMax)
94{
96
97 curveControlsManager.reset(
99 curveWidget,
100 inSpinBox, outSpinBox,
101 KisAlgebra2D::lazyRound<ValueType>(xMin),
102 KisAlgebra2D::lazyRound<ValueType>(xMax),
103 KisAlgebra2D::lazyRound<ValueType>(yMin),
104 KisAlgebra2D::lazyRound<ValueType>(yMax)));
105}
106
std::function< KisCurveOptionInputControlsStrategyInterface *( KisCurveRangeModelInterface *, KisCurveWidget *, QWidget *, QWidget *)> KisCurveOptionInputControlsStrategyFactory
void updateCurveLabels(qreal xMin, qreal xMax, qreal yMin, qreal yMax)
static KisCurveOptionInputControlsStrategyFactory factory()
KisCurveOptionInputControlsStrategy(KisCurveRangeModelInterface *rangeInterface, KisCurveWidget *curveWidget, QWidget *inPlaceholder, QWidget *outPlaceholder)
virtual lager::reader< qreal > xMinValue()=0
virtual lager::reader< qreal > xMaxValue()=0
virtual lager::reader< QString > xValueSuffix()=0
virtual lager::reader< qreal > yMinValue()=0
virtual lager::reader< QString > yValueSuffix()=0
virtual lager::reader< qreal > yMaxValue()=0
detail::value_of_spin_box_t< SpinBox > ValueType
#define PAINTOP_EXPORT_INSTANCE
constexpr auto unzip_wrapper
Definition KisMpl.h:70