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

#include <KisWdgOptionsBrush.h>

+ Inheritance diagram for KisWdgOptionsBrush:

Public Slots

void slotActivateDimensionRanks ()
 
void slotEnableSelectionMethod (int value)
 
void slotRecalculateRanks (int rankDimension=0)
 

Public Member Functions

KisPropertiesConfigurationSP configuration () const override
 
 KisWdgOptionsBrush (QWidget *parent)
 
void setConfiguration (const KisPropertiesConfigurationSP cfg) override
 
void setView (KisViewManager *view) override
 
- Public Member Functions inherited from KisConfigWidget
virtual KoCanvasResourcesInterfaceSP canvasResourcesInterface () const
 
virtual void setCanvasResourcesInterface (KoCanvasResourcesInterfaceSP canvasResourcesInterface)
 
 ~KisConfigWidget () override
 

Private Attributes

int m_currentDimensions
 
int m_layersCount
 
KisViewManagerm_view
 

Additional Inherited Members

- Signals inherited from KisConfigWidget
void sigConfigurationItemChanged ()
 
void sigConfigurationUpdated ()
 
void sigDropLockedConfig (KisPropertiesConfigurationSP p)
 
void sigSaveLockedConfig (KisPropertiesConfigurationSP p)
 
- Protected Member Functions inherited from KisConfigWidget
 KisConfigWidget (QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags(), int delay=200)
 

Detailed Description

Definition at line 85 of file KisWdgOptionsBrush.h.

Constructor & Destructor Documentation

◆ KisWdgOptionsBrush()

KisWdgOptionsBrush::KisWdgOptionsBrush ( QWidget * parent)

Definition at line 15 of file KisWdgOptionsBrush.cpp.

16 : KisConfigWidget(parent)
18 , m_layersCount(0)
19 , m_view(0)
20{
21 setupUi(this);
22 connect(this->brushStyle, SIGNAL(currentIndexChanged(int)), SLOT(slotEnableSelectionMethod(int)));
23 connect(this->dimensionSpin, SIGNAL(valueChanged(int)), SLOT(slotActivateDimensionRanks()));
24
25 slotEnableSelectionMethod(brushStyle->currentIndex());
26
28 for (int i = 0; i < this->dimensionSpin->maximum(); i++) {
29 bp = new BrushPipeSelectionModeHelper(0, i);
30 connect(bp, SIGNAL(sigRankChanged(int)), SLOT(slotRecalculateRanks(int)));
31 dimRankLayout->addWidget(bp);
32 }
33
35}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
KisConfigWidget(QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags(), int delay=200)
void slotRecalculateRanks(int rankDimension=0)
void slotEnableSelectionMethod(int value)
KisViewManager * m_view

References connect(), slotActivateDimensionRanks(), slotEnableSelectionMethod(), and slotRecalculateRanks().

Member Function Documentation

◆ configuration()

KisPropertiesConfigurationSP KisWdgOptionsBrush::configuration ( ) const
overridevirtual
Returns
the configuration

Implements KisConfigWidget.

Definition at line 58 of file KisWdgOptionsBrush.cpp.

59{
61 cfg->setProperty("spacing", spacingWidget->spacing());
62 cfg->setProperty("name", nameLineEdit->text());
63 cfg->setProperty("mask", colorAsMask->isChecked());
64 cfg->setProperty("brushStyle", brushStyle->currentIndex());
65 cfg->setProperty("dimensions", dimensionSpin->value());
66
67 QLayoutItem *item;
69 for (int i = 0; i < dimensionSpin->maximum(); ++i) {
70 if ((item = dimRankLayout->itemAt(i)) != 0) {
71 bp = dynamic_cast<BrushPipeSelectionModeHelper*>(item->widget());
72 cfg->setProperty("selectionMode" + QString::number(i), bp->cmbSelectionMode.currentIndex());
73 cfg->setProperty("rank" + QString::number(i), bp->rankSpinBox.value());
74 }
75 }
76
77 return cfg;
78}

References BrushPipeSelectionModeHelper::cmbSelectionMode, and BrushPipeSelectionModeHelper::rankSpinBox.

◆ setConfiguration()

void KisWdgOptionsBrush::setConfiguration ( const KisPropertiesConfigurationSP config)
overridevirtual
Parameters
configthe configuration for this configuration widget.

Implements KisConfigWidget.

Definition at line 37 of file KisWdgOptionsBrush.cpp.

38{
39 spacingWidget->setSpacing(false, cfg->getDouble("spacing"));
40 if (!cfg->getString("name").isEmpty()) {
41 nameLineEdit->setText(cfg->getString("name"));
42 }
43 colorAsMask->setChecked(cfg->getBool("mask"));
44 brushStyle->setCurrentIndex(cfg->getInt("brushStyle"));
45 dimensionSpin->setValue(cfg->getInt("dimensions"));
46
47 QLayoutItem *item;
49 for (int i = 0; i < dimensionSpin->maximum(); ++i) {
50 if ((item = dimRankLayout->itemAt(i)) != 0) {
51 bp = dynamic_cast<BrushPipeSelectionModeHelper*>(item->widget());
52 bp->cmbSelectionMode.setCurrentIndex(cfg->getInt("selectionMode" + QString::number(i)));
53 bp->rankSpinBox.setValue(cfg->getInt("rank" + QString::number(i)));
54 }
55 }
56}

References BrushPipeSelectionModeHelper::cmbSelectionMode, and BrushPipeSelectionModeHelper::rankSpinBox.

◆ setView()

void KisWdgOptionsBrush::setView ( KisViewManager * view)
overridevirtual

Sets the view object that can be used by the configuration widget for richer functionality

TODO: remove this method from KisConfigWidget, since KisViewManager is from kritaui, but we are in kritaimage

Reimplemented from KisConfigWidget.

Definition at line 80 of file KisWdgOptionsBrush.cpp.

81{
82 if (view) {
83 m_view = view;
84 KoProperties properties;
85 properties.setProperty("visible", true);
86 m_layersCount = m_view->image()->root()->childNodes(QStringList("KisLayer"), properties).count();
87
89 }
90}
QList< QString > QStringList
KisImageWSP image() const
Return the image this view is displaying.
void setProperty(const QString &name, const QVariant &value)
QList< KisNodeSP > childNodes(const QStringList &nodeTypes, const KoProperties &properties) const
Definition kis_node.cpp:439

References KisNode::childNodes(), KisViewManager::image(), m_layersCount, m_view, KisNodeFacade::root, KoProperties::setProperty(), and slotRecalculateRanks().

◆ slotActivateDimensionRanks

void KisWdgOptionsBrush::slotActivateDimensionRanks ( )
slot

Definition at line 101 of file KisWdgOptionsBrush.cpp.

102{
103 QLayoutItem *item;
105 int dim = this->dimensionSpin->value();
106 if (dim >= m_currentDimensions) {
107 for (int i = m_currentDimensions; i < dim; ++i) {
108 if ((item = dimRankLayout->itemAt(i)) != 0) {
109 bp = dynamic_cast<BrushPipeSelectionModeHelper*>(item->widget());
110 bp->setEnabled(true);
111 bp->show();
112 }
113 }
114 }
115 else {
116 for (int i = m_currentDimensions -1; i >= dim; --i) {
117 if ((item = dimRankLayout->itemAt(i)) != 0) {
118 bp = dynamic_cast<BrushPipeSelectionModeHelper*>(item->widget());
119 bp->setEnabled(false);
120 bp->hide();
121 }
122 }
123 }
125}

References m_currentDimensions.

◆ slotEnableSelectionMethod

void KisWdgOptionsBrush::slotEnableSelectionMethod ( int value)
slot

Definition at line 92 of file KisWdgOptionsBrush.cpp.

93{
94 if (value == 0) {
95 animStyleGroup->setEnabled(false);
96 } else {
97 animStyleGroup->setEnabled(true);
98 }
99}
float value(const T *src, size_t ch)

References value().

◆ slotRecalculateRanks

void KisWdgOptionsBrush::slotRecalculateRanks ( int rankDimension = 0)
slot

Definition at line 127 of file KisWdgOptionsBrush.cpp.

128{
129 int rankSum = 0;
130 int maxDim = this->dimensionSpin->maximum();
131
133 QLayoutItem *item;
134
135 for (int i = 0; i < maxDim; ++i) {
136 if ((item = dimRankLayout->itemAt(i)) != 0) {
137 bp.push_back(dynamic_cast<BrushPipeSelectionModeHelper*>(item->widget()));
138 rankSum += bp.at(i)->rankSpinBox.value();
139 }
140 }
141
142 BrushPipeSelectionModeHelper *currentBrushHelper;
143 BrushPipeSelectionModeHelper *callerBrushHelper = bp.at(rankDimension);
144 QVectorIterator<BrushPipeSelectionModeHelper*> bpIterator(bp);
145
146 while (rankSum > m_layersCount && bpIterator.hasNext()) {
147 currentBrushHelper = bpIterator.next();
148
149 if (currentBrushHelper != callerBrushHelper) {
150 int currentValue = currentBrushHelper->rankSpinBox.value();
151 currentBrushHelper->rankSpinBox.setValue(currentValue -1);
152 rankSum -= currentValue;
153 }
154 }
155
156 if (rankSum > m_layersCount) {
157 callerBrushHelper->rankSpinBox.setValue(m_layersCount);
158 }
159
160 if (rankSum == 0) {
161 bp.at(0)->rankSpinBox.setValue(m_layersCount);
162 return;
163 }
164}

References m_layersCount, and BrushPipeSelectionModeHelper::rankSpinBox.

Member Data Documentation

◆ m_currentDimensions

int KisWdgOptionsBrush::m_currentDimensions
private

Definition at line 104 of file KisWdgOptionsBrush.h.

◆ m_layersCount

int KisWdgOptionsBrush::m_layersCount
private

Definition at line 105 of file KisWdgOptionsBrush.h.

◆ m_view

KisViewManager* KisWdgOptionsBrush::m_view
private

Definition at line 106 of file KisWdgOptionsBrush.h.


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