Krita Source Code Documentation
Loading...
Searching...
No Matches
KisCurveWidgetControlsManager< SpinBox > Class Template Reference

#include <KisCurveWidgetControlsManager.h>

+ Inheritance diagram for KisCurveWidgetControlsManager< SpinBox >:

Public Types

using ValueType = detail::value_of_spin_box_t<SpinBox>
 

Public Member Functions

void dropInOutControls ()
 
 KisCurveWidgetControlsManager (KisCurveWidget *curveWidget)
 
 KisCurveWidgetControlsManager (KisCurveWidget *curveWidget, SpinBox *in, SpinBox *out, ValueType inMin, ValueType inMax, ValueType outMin, ValueType outMax)
 
void setupInOutControls (SpinBox *in, SpinBox *out, ValueType inMin, ValueType inMax, ValueType outMin, ValueType outMax)
 
 ~KisCurveWidgetControlsManager ()
 
- Public Member Functions inherited from KisCurveWidgetControlsManagerBase
 KisCurveWidgetControlsManagerBase (KisCurveWidget *curveWidget)
 
 ~KisCurveWidgetControlsManagerBase ()
 

Protected Member Functions

void focusIOControls () override
 
void inOutChanged () override
 
void syncIOControls () override
 

Private Attributes

ValueType m_inMax {0}
 
ValueType m_inMin {0}
 
SpinBox * m_intIn {nullptr}
 
SpinBox * m_intOut {nullptr}
 
ValueType m_outMax {0}
 
ValueType m_outMin {0}
 

Additional Inherited Members

- Protected Slots inherited from KisCurveWidgetControlsManagerBase
- Protected Attributes inherited from KisCurveWidgetControlsManagerBase
KisCurveWidgetm_curveWidget {nullptr}
 

Detailed Description

template<typename SpinBox>
class KisCurveWidgetControlsManager< SpinBox >

Definition at line 64 of file KisCurveWidgetControlsManager.h.

Member Typedef Documentation

◆ ValueType

template<typename SpinBox >
using KisCurveWidgetControlsManager< SpinBox >::ValueType = detail::value_of_spin_box_t<SpinBox>

Definition at line 67 of file KisCurveWidgetControlsManager.h.

Constructor & Destructor Documentation

◆ KisCurveWidgetControlsManager() [1/2]

template<typename SpinBox >
KisCurveWidgetControlsManager< SpinBox >::KisCurveWidgetControlsManager ( KisCurveWidget * curveWidget)

Definition at line 83 of file KisCurveWidgetControlsManager.cpp.

86{
87
88}
KisCurveWidgetControlsManagerBase(KisCurveWidget *curveWidget)

◆ KisCurveWidgetControlsManager() [2/2]

template<typename SpinBox >
KisCurveWidgetControlsManager< SpinBox >::KisCurveWidgetControlsManager ( KisCurveWidget * curveWidget,
SpinBox * in,
SpinBox * out,
ValueType inMin,
ValueType inMax,
ValueType outMin,
ValueType outMax )

Definition at line 91 of file KisCurveWidgetControlsManager.cpp.

97{
98 setupInOutControls(in, out, inMin, inMax, outMin, outMax);
99}
void setupInOutControls(SpinBox *in, SpinBox *out, ValueType inMin, ValueType inMax, ValueType outMin, ValueType outMax)
KisCurveWidgetControlsManager(KisCurveWidget *curveWidget)

References KisCurveWidgetControlsManager< SpinBox >::setupInOutControls().

◆ ~KisCurveWidgetControlsManager()

template<typename SpinBox >
KisCurveWidgetControlsManager< SpinBox >::~KisCurveWidgetControlsManager ( )

Definition at line 102 of file KisCurveWidgetControlsManager.cpp.

104{
105}

Member Function Documentation

◆ dropInOutControls()

template<typename SpinBox >
void KisCurveWidgetControlsManager< SpinBox >::dropInOutControls ( )

Definition at line 142 of file KisCurveWidgetControlsManager.cpp.

144{
145 if (!m_intIn || !m_intOut)
146 return;
147
148 disconnect(m_intIn, qOverload<ValueType>(&SpinBox::valueChanged), this, &KisCurveWidgetControlsManager::inOutChanged);
149 disconnect(m_intOut, qOverload<ValueType>(&SpinBox::valueChanged), this, &KisCurveWidgetControlsManager::inOutChanged);
150
151 m_intIn = m_intOut = nullptr;
152
153}

References KisCurveWidgetControlsManager< SpinBox >::inOutChanged().

◆ focusIOControls()

template<typename SpinBox >
void KisCurveWidgetControlsManager< SpinBox >::focusIOControls ( )
overrideprotectedvirtual

Implements KisCurveWidgetControlsManagerBase.

Definition at line 202 of file KisCurveWidgetControlsManager.cpp.

204{
205 if (m_intIn) {
206 m_intIn->setFocus();
207 }
208}

◆ inOutChanged()

template<typename SpinBox >
void KisCurveWidgetControlsManager< SpinBox >::inOutChanged ( )
overrideprotectedvirtual

Implements KisCurveWidgetControlsManagerBase.

Definition at line 156 of file KisCurveWidgetControlsManager.cpp.

158{
159 QPointF pt;
160
162
163 pt.setX(detail::io2sp(m_intIn->value(), m_inMin, m_inMax));
164 pt.setY(detail::io2sp(m_intOut->value(), m_outMin, m_outMax));
165
168 }
169}
bool setCurrentPointPosition(const QPointF &position)
std::optional< KisCubicCurvePoint > currentPoint() const
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128
qreal io2sp(int x, int min, int max)

References detail::io2sp(), and KIS_SAFE_ASSERT_RECOVER_RETURN.

◆ setupInOutControls()

template<typename SpinBox >
void KisCurveWidgetControlsManager< SpinBox >::setupInOutControls ( SpinBox * in,
SpinBox * out,
ValueType inMin,
ValueType inMax,
ValueType outMin,
ValueType outMax )

Definition at line 108 of file KisCurveWidgetControlsManager.cpp.

112{
114
115 m_intIn = in;
116 m_intOut = out;
117
118 if (!m_intIn || !m_intOut)
119 return;
120
121 m_inMin = inMin;
122 m_inMax = inMax;
123 m_outMin = outMin;
124 m_outMax = outMax;
125
126 ValueType realInMin = qMin(inMin, inMax); // tilt elevation has range (90, 0), which QSpinBox can't handle
127 ValueType realInMax = qMax(inMin, inMax);
128
129 m_intIn->setRange(realInMin, realInMax);
130 m_intOut->setRange(m_outMin, m_outMax);
131
132 detail::setupStep(m_intIn, realInMin, realInMax);
134
135 connect(m_intIn, qOverload<ValueType>(&SpinBox::valueChanged), this, &KisCurveWidgetControlsManager::inOutChanged, Qt::UniqueConnection);
136 connect(m_intOut, qOverload<ValueType>(&SpinBox::valueChanged), this, &KisCurveWidgetControlsManager::inOutChanged, Qt::UniqueConnection);
137
139}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
detail::value_of_spin_box_t< SpinBox > ValueType
void setupStep(QSpinBox *spinBox, int min, int max)

References connect(), KisCurveWidgetControlsManager< SpinBox >::inOutChanged(), and detail::setupStep().

◆ syncIOControls()

template<typename SpinBox >
void KisCurveWidgetControlsManager< SpinBox >::syncIOControls ( )
overrideprotectedvirtual

Implements KisCurveWidgetControlsManagerBase.

Definition at line 172 of file KisCurveWidgetControlsManager.cpp.

174{
175 if (!m_intIn || !m_intOut)
176 return;
177
178 std::optional<QPointF> currentPointPosition = m_curveWidget->currentPointPosition();
179
180 m_intIn->setEnabled(currentPointPosition.has_value());
181 m_intOut->setEnabled(currentPointPosition.has_value());
182
183 if (currentPointPosition) {
185
186 const ValueType inValue = detail::sp2io(currentPointPosition->x(), m_inMin, m_inMax);
187 const ValueType outValue = detail::sp2io(currentPointPosition->y(), m_outMin, m_outMax);
188
189 if (detail::willChangeSpinBox(m_intIn, inValue)) {
190 m_intIn->setValue(inValue);
191 }
192
193 if (detail::willChangeSpinBox(m_intOut, outValue)) {
194 m_intOut->setValue(outValue);
195 }
196 } else {
197 /*FIXME: Ideally, these controls should hide away now */
198 }
199}
std::optional< QPointF > currentPointPosition() const
bool willChangeSpinBox(const QSpinBox *spinBox, int newValue)
int sp2io(qreal x, int min, int max)

References detail::sp2io(), and detail::willChangeSpinBox().

Member Data Documentation

◆ m_inMax

template<typename SpinBox >
ValueType KisCurveWidgetControlsManager< SpinBox >::m_inMax {0}
private

Definition at line 93 of file KisCurveWidgetControlsManager.h.

93{0};

◆ m_inMin

template<typename SpinBox >
ValueType KisCurveWidgetControlsManager< SpinBox >::m_inMin {0}
private

Definition at line 92 of file KisCurveWidgetControlsManager.h.

92{0};

◆ m_intIn

template<typename SpinBox >
SpinBox* KisCurveWidgetControlsManager< SpinBox >::m_intIn {nullptr}
private

Definition at line 88 of file KisCurveWidgetControlsManager.h.

88{nullptr};

◆ m_intOut

template<typename SpinBox >
SpinBox* KisCurveWidgetControlsManager< SpinBox >::m_intOut {nullptr}
private

Definition at line 89 of file KisCurveWidgetControlsManager.h.

89{nullptr};

◆ m_outMax

template<typename SpinBox >
ValueType KisCurveWidgetControlsManager< SpinBox >::m_outMax {0}
private

Definition at line 95 of file KisCurveWidgetControlsManager.h.

95{0};

◆ m_outMin

template<typename SpinBox >
ValueType KisCurveWidgetControlsManager< SpinBox >::m_outMin {0}
private

Definition at line 94 of file KisCurveWidgetControlsManager.h.

94{0};

The documentation for this class was generated from the following files: