10#include <QDoubleSpinBox>
18qreal
io2sp(
int x,
int min,
int max)
21 return unitConverter.
io2sp(x, min, max);
24int sp2io(qreal x,
int min,
int max)
27 return unitConverter.
sp2io(x, min, max);
30qreal
io2sp(qreal x, qreal min, qreal max)
32 const qreal rangeLen = max - min;
33 return !
qFuzzyIsNull(rangeLen) ? (x - min) / rangeLen : 0.0;
36qreal
sp2io(qreal x, qreal min, qreal max)
38 const qreal rangeLen = max - min;
39 return x * rangeLen + min;
42void setupStep(QSpinBox *spinBox,
int min,
int max) {
45 spinBox->setSingleStep(1);
48void setupStep(QDoubleSpinBox *spinBox, qreal min, qreal max) {
49 if (qAbs(max - min) > 10) {
50 spinBox->setSingleStep(1.0);
52 spinBox->setSingleStep(0.1);
58 return spinBox->value() != newValue;
63 return qRound(spinBox->value() * spinBox->decimals()) !=
64 qRound(newValue * spinBox->decimals());
70 : QObject(curveWidget)
71 , m_curveWidget(curveWidget)
82template <
typename SpinBox>
90template <
typename SpinBox>
93 SpinBox *in, SpinBox *out,
101template <
typename SpinBox>
107template <
typename SpinBox>
118 if (!m_intIn || !m_intOut)
126 ValueType realInMin = qMin(inMin, inMax);
127 ValueType realInMax = qMax(inMin, inMax);
129 m_intIn->setRange(realInMin, realInMax);
130 m_intOut->setRange(m_outMin, m_outMax);
141template <
typename SpinBox>
145 if (!m_intIn || !m_intOut)
151 m_intIn = m_intOut =
nullptr;
155template <
typename SpinBox>
164 pt.setY(
detail::io2sp(m_intOut->value(), m_outMin, m_outMax));
166 if (m_curveWidget->setCurrentPointPosition(pt)) {
171template <
typename SpinBox>
175 if (!m_intIn || !m_intOut)
178 std::optional<QPointF> currentPointPosition = m_curveWidget->currentPointPosition();
180 m_intIn->setEnabled(currentPointPosition.has_value());
181 m_intOut->setEnabled(currentPointPosition.has_value());
183 if (currentPointPosition) {
190 m_intIn->setValue(inValue);
194 m_intOut->setValue(outValue);
201template <
typename SpinBox>
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
double io2sp(int x, int min, int max)
int sp2io(double x, int min, int max)
static bool qFuzzyIsNull(half h)
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
#define KRITAUI_EXPORT_INSTANCE
void setupStep(QSpinBox *spinBox, int min, int max)
qreal io2sp(int x, int min, int max)
bool willChangeSpinBox(const QSpinBox *spinBox, int newValue)
int sp2io(qreal x, int min, int max)