Krita Source Code Documentation
Loading...
Searching...
No Matches
WGShadeSelector Class Reference

#include <WGShadeSelector.h>

+ Inheritance diagram for WGShadeSelector:

Public Slots

void slotChannelValuesChanged (const QVector4D &values)
 

Public Member Functions

void setModel (KisVisualColorModelSP colorModel) override
 
void updateSettings () override
 
 WGShadeSelector (WGSelectorDisplayConfigSP displayConfig, KisVisualColorModelSP colorModel, QWidget *parent=nullptr)
 
- Public Member Functions inherited from WGSelectorWidgetBase
WGSelectorDisplayConfigSP displayConfiguration () const
 
const KisDisplayColorConverterdisplayConverter () const
 
virtual QPoint popupOffset () const
 The position, relative to the top left corner, where the cursor of the cursor shall be when showing the popup.
 
void setUiMode (UiMode mode)
 
UiMode uiMode () const
 
 WGSelectorWidgetBase (WGSelectorDisplayConfigSP displayConfig, QWidget *parent=nullptr, UiMode uiMode=UiMode::DockerMode)
 

Protected Member Functions

void connectToModel ()
 
void mousePressEvent (QMouseEvent *event) override
 

Private Slots

void slotReset ()
 
void slotSliderInteraction (bool active)
 
void slotSliderValuesChanged (const QVector4D &values)
 

Private Attributes

bool m_allowUpdates {true}
 
bool m_initialized {false}
 
int m_lineHeight {10}
 
KisVisualColorModelSP m_model
 
bool m_resetOnExternalUpdate {true}
 
bool m_resetOnInteractions {false}
 
bool m_resetOnRightClick {true}
 
QVector< WGShadeSlider * > m_sliders
 

Additional Inherited Members

- Public Types inherited from WGSelectorWidgetBase
enum  UiMode { DockerMode , PopupMode }
 
- Signals inherited from WGSelectorWidgetBase
void sigChannelValuesChanged (const QVector4D &values)
 
void sigColorInteraction (bool active)
 

Detailed Description

Definition at line 19 of file WGShadeSelector.h.

Constructor & Destructor Documentation

◆ WGShadeSelector()

WGShadeSelector::WGShadeSelector ( WGSelectorDisplayConfigSP displayConfig,
KisVisualColorModelSP colorModel,
QWidget * parent = nullptr )

Definition at line 15 of file WGShadeSelector.cpp.

16 : WGSelectorWidgetBase(displayConfig, parent)
17 , m_model(colorModel)
18{
19 QVBoxLayout* l = new QVBoxLayout(this);
20 l->setSpacing(1);
21 l->setContentsMargins(0, 0, 0, 0);
22 setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed));
23
25}
WGSelectorWidgetBase(WGSelectorDisplayConfigSP displayConfig, QWidget *parent=nullptr, UiMode uiMode=UiMode::DockerMode)
KisVisualColorModelSP m_model

References connectToModel().

Member Function Documentation

◆ connectToModel()

void WGShadeSelector::connectToModel ( )
protected

Definition at line 85 of file WGShadeSelector.cpp.

86{
87 connect(m_model.data(), SIGNAL(sigColorModelChanged()), SLOT(slotReset()));
88 connect(m_model.data(), SIGNAL(sigColorSpaceChanged()), SLOT(slotReset()));
89 connect(m_model.data(), SIGNAL(sigChannelValuesChanged(QVector4D,quint32)),
90 SLOT(slotChannelValuesChanged(QVector4D)));
91 connect(this, SIGNAL(sigChannelValuesChanged(QVector4D)),
92 m_model.data(), SLOT(slotSetChannelValues(QVector4D)));
93}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void sigChannelValuesChanged(const QVector4D &values)
void slotChannelValuesChanged(const QVector4D &values)

References connect(), m_model, WGSelectorWidgetBase::sigChannelValuesChanged(), slotChannelValuesChanged(), and slotReset().

◆ mousePressEvent()

void WGShadeSelector::mousePressEvent ( QMouseEvent * event)
overrideprotected

Definition at line 76 of file WGShadeSelector.cpp.

77{
78 if (m_resetOnRightClick && event->button() == Qt::RightButton) {
79 for (WGShadeSlider* slider : std::as_const(m_sliders)) {
80 slider->slotSetChannelValues(m_model->channelValues());
81 }
82 }
83}
QVector< WGShadeSlider * > m_sliders

References m_model, m_resetOnRightClick, and m_sliders.

◆ setModel()

void WGShadeSelector::setModel ( KisVisualColorModelSP colorModel)
overridevirtual

Reimplemented from WGSelectorWidgetBase.

Definition at line 27 of file WGShadeSelector.cpp.

28{
29 if (m_model) {
30 m_model->disconnect(this);
31 disconnect(m_model.data());
32 }
33 m_model = colorModel;
34 for (WGShadeSlider *slider : std::as_const(m_sliders)) {
35 slider->setModel(m_model);
36 }
38 if (m_model->colorModel() != KisVisualColorModel::None) {
39 slotChannelValuesChanged(m_model->channelValues());
40 }
41}

References connectToModel(), m_model, m_sliders, KisVisualColorModel::None, and slotChannelValuesChanged().

◆ slotChannelValuesChanged

void WGShadeSelector::slotChannelValuesChanged ( const QVector4D & values)
slot

Definition at line 95 of file WGShadeSelector.cpp.

96{
98 for (WGShadeSlider* slider : std::as_const(m_sliders)) {
99 slider->slotSetChannelValues(values);
100 }
101 m_initialized = true;
102 }
103}

References m_allowUpdates, m_initialized, m_resetOnExternalUpdate, and m_sliders.

◆ slotReset

void WGShadeSelector::slotReset ( )
privateslot

Definition at line 140 of file WGShadeSelector.cpp.

141{
142 m_initialized = false;
143}

References m_initialized.

◆ slotSliderInteraction

void WGShadeSelector::slotSliderInteraction ( bool active)
privateslot

Definition at line 112 of file WGShadeSelector.cpp.

113{
114 if (active) {
115 const WGShadeSlider* activeLine = qobject_cast<WGShadeSlider*>(sender());
116 for (WGShadeSlider* slider : std::as_const(m_sliders)) {
117 if (slider != activeLine) {
118 slider->resetHandle();
119 }
120 }
121 Q_EMIT sigColorInteraction(active);
122 if (activeLine) {
123 // the line may have different channel values at any position than the last used one
124 m_allowUpdates = false;
125 Q_EMIT sigChannelValuesChanged(activeLine->channelValues());
126 m_allowUpdates = true;
127 }
128 }
129 else {
130 // reset slider base values if configured for automatic reset
132 for (WGShadeSlider* slider : std::as_const(m_sliders)) {
133 slider->slotSetChannelValues(m_model->channelValues());
134 }
135 }
136 Q_EMIT sigColorInteraction(active);
137 }
138}
void sigColorInteraction(bool active)
QVector4D channelValues() const

References WGShadeSlider::channelValues(), m_allowUpdates, m_model, m_resetOnInteractions, m_sliders, WGSelectorWidgetBase::sigChannelValuesChanged(), and WGSelectorWidgetBase::sigColorInteraction().

◆ slotSliderValuesChanged

void WGShadeSelector::slotSliderValuesChanged ( const QVector4D & values)
privateslot

Definition at line 105 of file WGShadeSelector.cpp.

106{
107 m_allowUpdates = false;
108 Q_EMIT sigChannelValuesChanged(values);
109 m_allowUpdates = true;
110}

References m_allowUpdates, and WGSelectorWidgetBase::sigChannelValuesChanged().

◆ updateSettings()

void WGShadeSelector::updateSettings ( )
overridevirtual

Reimplemented from WGSelectorWidgetBase.

Definition at line 43 of file WGShadeSelector.cpp.

44{
47 QVector<WGConfig::ShadeLine> config = cfg.shadeSelectorLines();
48
49 while (config.size() > m_sliders.size()) {
51 m_sliders.append(line);
52 layout()->addWidget(m_sliders.last());
53 connect(line, SIGNAL(sigChannelValuesChanged(QVector4D)), SLOT(slotSliderValuesChanged(QVector4D)));
54 connect(line, SIGNAL(sigInteraction(bool)), SLOT(slotSliderInteraction(bool)));
55 }
56 while (config.size() < m_sliders.size()) {
57 layout()->removeWidget(m_sliders.last());
58 delete m_sliders.takeLast();
59 }
60
61 for (int i=0; i < config.size(); i++) {
62 m_sliders[i]->setGradient(config[i].gradient, config[i].offset);
63 m_sliders[i]->setDisplayMode(config[i].patchCount < 0, config[i].patchCount);
64 m_sliders[i]->setFixedHeight(m_lineHeight);
65 }
69
70 if (m_model->colorModel() != KisVisualColorModel::None) {
71 slotReset();
72 slotChannelValuesChanged(m_model->channelValues());
73 }
74}
WGSelectorDisplayConfigSP displayConfiguration() const
void slotSliderValuesChanged(const QVector4D &values)
void slotSliderInteraction(bool active)
const NumericSetting< int > shadeSelectorLineHeight
Definition WGConfig.cpp:247
class WGConfig Accessor
const GenericSetting< bool > shadeSelectorUpdateOnExternalChanges
Definition WGConfig.cpp:248
const GenericSetting< bool > shadeSelectorUpdateOnInteractionEnd
Definition WGConfig.cpp:249
const GenericSetting< bool > shadeSelectorUpdateOnRightClick
Definition WGConfig.cpp:250

References connect(), WGSelectorWidgetBase::displayConfiguration(), m_lineHeight, m_model, m_resetOnExternalUpdate, m_resetOnInteractions, m_resetOnRightClick, m_sliders, KisVisualColorModel::None, WGConfig::shadeSelectorLineHeight, WGConfig::shadeSelectorUpdateOnExternalChanges, WGConfig::shadeSelectorUpdateOnInteractionEnd, WGConfig::shadeSelectorUpdateOnRightClick, WGSelectorWidgetBase::sigChannelValuesChanged(), slotChannelValuesChanged(), slotReset(), slotSliderInteraction(), and slotSliderValuesChanged().

Member Data Documentation

◆ m_allowUpdates

bool WGShadeSelector::m_allowUpdates {true}
private

Definition at line 47 of file WGShadeSelector.h.

47{true};

◆ m_initialized

bool WGShadeSelector::m_initialized {false}
private

Definition at line 48 of file WGShadeSelector.h.

48{false};

◆ m_lineHeight

int WGShadeSelector::m_lineHeight {10}
private

Definition at line 43 of file WGShadeSelector.h.

43{10};

◆ m_model

KisVisualColorModelSP WGShadeSelector::m_model
private

Definition at line 41 of file WGShadeSelector.h.

◆ m_resetOnExternalUpdate

bool WGShadeSelector::m_resetOnExternalUpdate {true}
private

Definition at line 44 of file WGShadeSelector.h.

44{true};

◆ m_resetOnInteractions

bool WGShadeSelector::m_resetOnInteractions {false}
private

Definition at line 45 of file WGShadeSelector.h.

45{false};

◆ m_resetOnRightClick

bool WGShadeSelector::m_resetOnRightClick {true}
private

Definition at line 46 of file WGShadeSelector.h.

46{true};

◆ m_sliders

QVector<WGShadeSlider *> WGShadeSelector::m_sliders
private

Definition at line 42 of file WGShadeSelector.h.


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