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
 
KisViewManager * m_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 95 of file KisWdgOptionsBrush.h.

Constructor & Destructor Documentation

◆ KisWdgOptionsBrush()

KisWdgOptionsBrush::KisWdgOptionsBrush ( QWidget * parent)

Definition at line 20 of file KisWdgOptionsBrush.cpp.

21 : KisConfigWidget(parent)
23 , m_layersCount(0)
24 , m_view(0)
25{
26 setupUi(this);
27 connect(this->brushStyle, SIGNAL(currentIndexChanged(int)), SLOT(slotEnableSelectionMethod(int)));
28 connect(this->dimensionSpin, SIGNAL(valueChanged(int)), SLOT(slotActivateDimensionRanks()));
29 connect(this->colorAsMask, SIGNAL(toggled(bool)), this->preserveAlpha, SLOT(setEnabled(bool)));
30
31 connect(this->spacingWidget, SIGNAL(sigSpacingChanged()), this, SIGNAL(sigConfigurationUpdated()));
32 connect(this->nameLineEdit, SIGNAL(textChanged(QString)), this, SIGNAL(sigConfigurationUpdated()));
33 connect(this->colorAsMask, SIGNAL(toggled(bool)), this, SIGNAL(sigConfigurationUpdated()));
34 connect(this->preserveAlpha, SIGNAL(toggled(bool)), this, SIGNAL(sigConfigurationUpdated()));
35 connect(this->brushStyle, SIGNAL(currentIndexChanged(int)), this, SIGNAL(sigConfigurationUpdated()));
36 connect(this->dimensionSpin, SIGNAL(valueChanged(int)), this, SIGNAL(sigConfigurationUpdated()));
37 //todo: connect ranks to sigConfigurationUpdated?
38
39 slotEnableSelectionMethod(brushStyle->currentIndex());
40
42 for (int i = 0; i < this->dimensionSpin->maximum(); i++) {
43 bp = new BrushPipeSelectionModeHelper(0, i);
44 connect(bp, SIGNAL(sigRankChanged(int)), SLOT(slotRecalculateRanks(int)));
45 dimRankLayout->addWidget(bp);
46 }
47
49}
KisConfigWidget(QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags(), int delay=200)
void sigConfigurationUpdated()
void slotRecalculateRanks(int rankDimension=0)
void slotEnableSelectionMethod(int value)
KisViewManager * m_view

References KisConfigWidget::sigConfigurationUpdated(), slotActivateDimensionRanks(), slotEnableSelectionMethod(), and slotRecalculateRanks().

Member Function Documentation

◆ configuration()

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

Implements KisConfigWidget.

Definition at line 73 of file KisWdgOptionsBrush.cpp.

74{
76 cfg->setProperty(KEY_SPACING, spacingWidget->spacing());
77 cfg->setProperty(KEY_NAME, nameLineEdit->text());
78 cfg->setProperty(KEY_MASK, colorAsMask->isChecked());
79 cfg->setProperty(KEY_PRESERVE_ALPHA, preserveAlpha->isChecked());
80 cfg->setProperty(KEY_BRUSH_STYLE, brushStyle->currentIndex());
81 cfg->setProperty(KEY_DIMENSIONS, dimensionSpin->value());
82
83 QLayoutItem *item;
85 for (int i = 0; i < dimensionSpin->maximum(); ++i) {
86 if ((item = dimRankLayout->itemAt(i)) != 0) {
87 bp = dynamic_cast<BrushPipeSelectionModeHelper*>(item->widget());
88 cfg->setProperty(KEY_SELECTION_MODE + QString::number(i), bp->cmbSelectionMode.currentData());
89 cfg->setProperty(KEY_RANK + QString::number(i), bp->rankSpinBox.value());
90 }
91 }
92
93 return cfg;
94}
const QString KEY_MASK
const QString KEY_RANK
const QString KEY_DIMENSIONS
const QString KEY_SELECTION_MODE
const QString KEY_BRUSH_STYLE
const QString KEY_PRESERVE_ALPHA
const QString KEY_NAME
const QString KEY_SPACING

References BrushPipeSelectionModeHelper::cmbSelectionMode, KEY_BRUSH_STYLE, KEY_DIMENSIONS, KEY_MASK, KEY_NAME, KEY_PRESERVE_ALPHA, KEY_RANK, KEY_SELECTION_MODE, KEY_SPACING, and BrushPipeSelectionModeHelper::rankSpinBox.

◆ setConfiguration()

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

Implements KisConfigWidget.

Definition at line 51 of file KisWdgOptionsBrush.cpp.

52{
53 spacingWidget->setSpacing(false, cfg->getDouble(KEY_SPACING));
54 if (!cfg->getString(KEY_NAME).isEmpty()) {
55 nameLineEdit->setText(cfg->getString(KEY_NAME));
56 }
57 colorAsMask->setChecked(cfg->getBool(KEY_MASK));
58 preserveAlpha->setChecked(cfg->getBool(KEY_PRESERVE_ALPHA));
59 brushStyle->setCurrentIndex(cfg->getInt(KEY_BRUSH_STYLE));
60 dimensionSpin->setValue(cfg->getInt(KEY_DIMENSIONS));
61
62 QLayoutItem *item;
64 for (int i = 0; i < dimensionSpin->maximum(); ++i) {
65 if ((item = dimRankLayout->itemAt(i)) != 0) {
66 bp = dynamic_cast<BrushPipeSelectionModeHelper*>(item->widget());
67 bp->cmbSelectionMode.setCurrentIndex(bp->cmbSelectionMode.findData(cfg->getInt(KEY_SELECTION_MODE + QString::number(i))));
68 bp->rankSpinBox.setValue(cfg->getInt(KEY_RANK + QString::number(i)));
69 }
70 }
71}

References BrushPipeSelectionModeHelper::cmbSelectionMode, KEY_BRUSH_STYLE, KEY_DIMENSIONS, KEY_MASK, KEY_NAME, KEY_PRESERVE_ALPHA, KEY_RANK, KEY_SELECTION_MODE, KEY_SPACING, 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 96 of file KisWdgOptionsBrush.cpp.

97{
98 if (view) {
99 m_view = view;
100 if (m_view->image()) {
101 KoProperties properties;
102 properties.setProperty("visible", true);
103 m_layersCount = m_view->image()->root()->childNodes(QStringList("KisLayer"), properties).count();
104 } else {
105 m_layersCount = 0;
106 }
107 framesNumLbl->setText(i18nc("@label %1 number of animation frames", "Frames: %1", m_layersCount));
108
110 }
111}
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 118 of file KisWdgOptionsBrush.cpp.

119{
120 QLayoutItem *item;
122 int dim = this->dimensionSpin->value();
123
124 for (int i = 0; i < qMax(dim, m_currentDimensions); i++) {
125 bool enabled = i < dim;
126 if ((item = dimRankLayout->itemAt(i))) {
127 bp = dynamic_cast<BrushPipeSelectionModeHelper*>(item->widget());
128 bp->setEnabled(enabled);
129 bp->setVisible(enabled);
130 }
131 }
132
134}

References m_currentDimensions.

◆ slotEnableSelectionMethod

void KisWdgOptionsBrush::slotEnableSelectionMethod ( int value)
slot

Definition at line 113 of file KisWdgOptionsBrush.cpp.

114{
115 animStyleGroup->setEnabled(value == BrushStyle::Animated);
116}
float value(const T *src, size_t ch)

References Animated, and value().

◆ slotRecalculateRanks

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

Definition at line 136 of file KisWdgOptionsBrush.cpp.

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

References m_layersCount, and BrushPipeSelectionModeHelper::rankSpinBox.

Member Data Documentation

◆ m_currentDimensions

int KisWdgOptionsBrush::m_currentDimensions
private

Definition at line 114 of file KisWdgOptionsBrush.h.

◆ m_layersCount

int KisWdgOptionsBrush::m_layersCount
private

Definition at line 115 of file KisWdgOptionsBrush.h.

◆ m_view

KisViewManager* KisWdgOptionsBrush::m_view
private

Definition at line 116 of file KisWdgOptionsBrush.h.


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