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

#include <dlg_feather_selection.h>

+ Inheritance diagram for WdgFeatherSelection:

Public Member Functions

void getConfiguration (KisOperationConfigurationSP config) override
 
 WdgFeatherSelection (QWidget *parent, KisViewManager *view, KisOperationConfigurationSP config)
 
- Public Member Functions inherited from KisOperationUIWidget
QString caption () const
 
 KisOperationUIWidget (const QString &caption, QWidget *parent=0)
 
 Private ()
 
 ~KisOperationUIWidget () override
 

Private Slots

void slotRadiusChanged (double radius)
 
void slotRadiusChanged (int radius)
 
void slotUnitChanged (int index)
 

Private Member Functions

void updateRadiusUIValue (double value)
 

Private Attributes

int m_radius
 
double m_resolution
 

Additional Inherited Members

- Public Attributes inherited from KisOperationUIWidget
QString caption
 

Detailed Description

Definition at line 16 of file dlg_feather_selection.h.

Constructor & Destructor Documentation

◆ WdgFeatherSelection()

WdgFeatherSelection::WdgFeatherSelection ( QWidget * parent,
KisViewManager * view,
KisOperationConfigurationSP config )

Definition at line 19 of file dlg_feather_selection.cc.

20 : KisOperationUIWidget(i18n("Feather Selection"), parent)
21 , m_radius(config->getInt("radius", 5))
22{
23 Q_ASSERT(view);
24 KisImageWSP image = view->image();
25 Q_ASSERT(image);
26 m_resolution = image->yRes();
27
28 setupUi(this);
29
30 spbRadius->setValue(m_radius);
31 spbRadius->setFocus();
32 spbRadius->setVisible(true);
33 spbRadiusDouble->setVisible(false);
34
35 cmbUnit->addItems(KoUnit::listOfUnitNameForUi());
36 cmbUnit->setCurrentIndex(KoUnit(KoUnit::Pixel).indexInListForUi());
37
38 // ensure that both spinboxes request the same horizontal size
39 KisSizeGroup *spbGroup = new KisSizeGroup(this);
40 spbGroup->addWidget(spbRadius);
41 spbGroup->addWidget(spbRadiusDouble);
42
43 connect(spbRadius, SIGNAL(valueChanged(int)), this, SLOT(slotRadiusChanged(int)));
44 connect(spbRadiusDouble, SIGNAL(valueChanged(double)), this, SLOT(slotRadiusChanged(double)));
45 connect(cmbUnit, SIGNAL(currentIndexChanged(int)), this, SLOT(slotUnitChanged(int)));
46}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
double yRes() const
KisOperationUIWidget(const QString &caption, QWidget *parent=0)
void addWidget(QWidget *widget)
KisImageWSP image() const
Return the image this view is displaying.
@ Pixel
Definition KoUnit.h:82
static QStringList listOfUnitNameForUi(ListOptions listOptions=ListAll)
Returns the list of unit types for the UI, controlled with the given listOptions.
Definition KoUnit.cpp:69
void slotRadiusChanged(int radius)
void slotUnitChanged(int index)

References KisSizeGroup::addWidget(), connect(), KisViewManager::image(), KoUnit::listOfUnitNameForUi(), m_radius, m_resolution, KoUnit::Pixel, slotRadiusChanged(), slotUnitChanged(), and KisImage::yRes().

Member Function Documentation

◆ getConfiguration()

void WdgFeatherSelection::getConfiguration ( KisOperationConfigurationSP config)
overridevirtual

Fetch the setting from the config widget

Parameters
configconfiguration to which the setting will be written

Implements KisOperationUIWidget.

Definition at line 89 of file dlg_feather_selection.cc.

90{
91 config->setProperty("radius", m_radius);
92}

References m_radius.

◆ slotRadiusChanged [1/2]

void WdgFeatherSelection::slotRadiusChanged ( double radius)
privateslot

Definition at line 53 of file dlg_feather_selection.cc.

54{
55 const KoUnit selectedUnit = KoUnit::fromListForUi(cmbUnit->currentIndex());
56 const double resRadius = (selectedUnit == KoUnit(KoUnit::Pixel)) ? radius : (radius * m_resolution);
57 m_radius = qRound(selectedUnit.fromUserValue(resRadius));
58}
qreal fromUserValue(qreal value) const
Definition KoUnit.cpp:201
static KoUnit fromListForUi(int index, ListOptions listOptions=ListAll, qreal factor=1.0)
Definition KoUnit.cpp:80

References KoUnit::fromListForUi(), KoUnit::fromUserValue(), m_radius, m_resolution, and KoUnit::Pixel.

◆ slotRadiusChanged [2/2]

void WdgFeatherSelection::slotRadiusChanged ( int radius)
privateslot

Definition at line 48 of file dlg_feather_selection.cc.

49{
50 slotRadiusChanged((double) radius);
51}

References slotRadiusChanged().

◆ slotUnitChanged

void WdgFeatherSelection::slotUnitChanged ( int index)
privateslot

Definition at line 60 of file dlg_feather_selection.cc.

61{
63
64 const KoUnit selectedUnit = KoUnit::fromListForUi(index);
65 if (selectedUnit != KoUnit(KoUnit::Pixel)) {
66 spbRadius->setVisible(false);
67 spbRadiusDouble->setVisible(true);
68 } else {
69 spbRadius->setVisible(true);
70 spbRadiusDouble->setVisible(false);
71 }
72}
void updateRadiusUIValue(double value)

References KoUnit::fromListForUi(), m_radius, KoUnit::Pixel, and updateRadiusUIValue().

◆ updateRadiusUIValue()

void WdgFeatherSelection::updateRadiusUIValue ( double value)
private

Definition at line 74 of file dlg_feather_selection.cc.

75{
76 const KoUnit selectedUnit = KoUnit::fromListForUi(cmbUnit->currentIndex());
77 if (selectedUnit != KoUnit(KoUnit::Pixel)) {
78 spbRadiusDouble->blockSignals(true);
79 spbRadiusDouble->setValue(selectedUnit.toUserValue(value / m_resolution));
80 spbRadiusDouble->blockSignals(false);
81 } else {
82 const int finalValue = (selectedUnit == KoUnit(KoUnit::Point)) ? qRound(value / m_resolution) : value;
83 spbRadius->blockSignals(true);
84 spbRadius->setValue(selectedUnit.toUserValue(finalValue));
85 spbRadius->blockSignals(false);
86 }
87}
float value(const T *src, size_t ch)
@ Point
Postscript point, 1/72th of an Inco.
Definition KoUnit.h:76
qreal toUserValue(qreal ptValue, bool rounding=true) const
Definition KoUnit.cpp:186

References KoUnit::fromListForUi(), m_resolution, KoUnit::Pixel, KoUnit::Point, KoUnit::toUserValue(), and value().

Member Data Documentation

◆ m_radius

int WdgFeatherSelection::m_radius
private

Definition at line 34 of file dlg_feather_selection.h.

◆ m_resolution

double WdgFeatherSelection::m_resolution
private

Definition at line 33 of file dlg_feather_selection.h.


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