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

#include <dlg_shrink_selection.h>

+ Inheritance diagram for WdgShrinkSelection:

Public Member Functions

void getConfiguration (KisOperationConfigurationSP config) override
 
 WdgShrinkSelection (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 slotShrinkFromImageBorderChanged (bool value)
 
void slotShrinkValueChanged (double value)
 
void slotShrinkValueChanged (int value)
 
void slotUnitChanged (int index)
 

Private Member Functions

void updateShrinkUIValue (double value)
 

Private Attributes

double m_resolution
 
bool m_shrinkFromImageBorder
 
int m_shrinkValue
 

Additional Inherited Members

- Public Attributes inherited from KisOperationUIWidget
QString caption
 

Detailed Description

Definition at line 16 of file dlg_shrink_selection.h.

Constructor & Destructor Documentation

◆ WdgShrinkSelection()

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

Definition at line 18 of file dlg_shrink_selection.cc.

19 : KisOperationUIWidget(i18n("Shrink Selection"), parent)
20 , m_shrinkValue(config->getInt("x-radius", 1))
21 , m_shrinkFromImageBorder(!config->getBool("edgeLock", false))
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 spbShrinkValue->setValue(m_shrinkValue);
31 spbShrinkValue->setFocus();
32 spbShrinkValue->setVisible(true);
33 spbShrinkValueDouble->setVisible(false);
34
35 cmbUnit->addItems(KoUnit::listOfUnitNameForUi());
36 cmbUnit->setCurrentIndex(KoUnit(KoUnit::Pixel).indexInListForUi());
37 ckbShrinkFromImageBorder->setChecked(m_shrinkFromImageBorder);
38
39 // ensure that both spinboxes request the same horizontal size
40 KisSizeGroup *spbGroup = new KisSizeGroup(this);
41 spbGroup->addWidget(spbShrinkValue);
42 spbGroup->addWidget(spbShrinkValueDouble);
43
44 connect(spbShrinkValue, SIGNAL(valueChanged(int)), this, SLOT(slotShrinkValueChanged(int)));
45 connect(spbShrinkValueDouble, SIGNAL(valueChanged(double)), this, SLOT(slotShrinkValueChanged(double)));
46 connect(cmbUnit, SIGNAL(currentIndexChanged(int)), this, SLOT(slotUnitChanged(int)));
47 connect(ckbShrinkFromImageBorder, SIGNAL(toggled(bool)), this, SLOT(slotShrinkFromImageBorderChanged(bool)));
48}
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 slotUnitChanged(int index)
void slotShrinkFromImageBorderChanged(bool value)
void slotShrinkValueChanged(int value)

References KisSizeGroup::addWidget(), connect(), KisViewManager::image(), KoUnit::listOfUnitNameForUi(), m_resolution, m_shrinkFromImageBorder, m_shrinkValue, KoUnit::Pixel, slotShrinkFromImageBorderChanged(), slotShrinkValueChanged(), slotUnitChanged(), and KisImage::yRes().

Member Function Documentation

◆ getConfiguration()

void WdgShrinkSelection::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 95 of file dlg_shrink_selection.cc.

96{
97 config->setProperty("x-radius", m_shrinkValue);
98 config->setProperty("y-radius", m_shrinkValue);
99 config->setProperty("edgeLock", !m_shrinkFromImageBorder);
100}

References m_shrinkFromImageBorder, and m_shrinkValue.

◆ slotShrinkFromImageBorderChanged

void WdgShrinkSelection::slotShrinkFromImageBorderChanged ( bool value)
privateslot

Definition at line 90 of file dlg_shrink_selection.cc.

91{
93}
float value(const T *src, size_t ch)

References m_shrinkFromImageBorder, and value().

◆ slotShrinkValueChanged [1/2]

void WdgShrinkSelection::slotShrinkValueChanged ( double value)
privateslot

Definition at line 55 of file dlg_shrink_selection.cc.

56{
57 const KoUnit selectedUnit = KoUnit::fromListForUi(cmbUnit->currentIndex());
58 const double resValue = (selectedUnit == KoUnit(KoUnit::Pixel)) ? value : (value * m_resolution);
59 m_shrinkValue = qRound(selectedUnit.fromUserValue(resValue));
60}
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_resolution, m_shrinkValue, KoUnit::Pixel, and value().

◆ slotShrinkValueChanged [2/2]

void WdgShrinkSelection::slotShrinkValueChanged ( int value)
privateslot

Definition at line 50 of file dlg_shrink_selection.cc.

51{
53}

References slotShrinkValueChanged(), and value().

◆ slotUnitChanged

void WdgShrinkSelection::slotUnitChanged ( int index)
privateslot

Definition at line 62 of file dlg_shrink_selection.cc.

63{
65
66 const KoUnit selectedUnit = KoUnit::fromListForUi(index);
67 if (selectedUnit != KoUnit(KoUnit::Pixel)) {
68 spbShrinkValue->setVisible(false);
69 spbShrinkValueDouble->setVisible(true);
70 } else {
71 spbShrinkValue->setVisible(true);
72 spbShrinkValueDouble->setVisible(false);
73 }
74}
void updateShrinkUIValue(double value)

References KoUnit::fromListForUi(), m_shrinkValue, KoUnit::Pixel, and updateShrinkUIValue().

◆ updateShrinkUIValue()

void WdgShrinkSelection::updateShrinkUIValue ( double value)
private

Definition at line 76 of file dlg_shrink_selection.cc.

77{
78 const KoUnit selectedUnit = KoUnit::fromListForUi(cmbUnit->currentIndex());
79 if (selectedUnit != KoUnit(KoUnit::Pixel)) {
80 spbShrinkValueDouble->blockSignals(true);
81 spbShrinkValueDouble->setValue(selectedUnit.toUserValue(value / m_resolution));
82 spbShrinkValueDouble->blockSignals(false);
83 } else {
84 const int finalValue = (selectedUnit == KoUnit(KoUnit::Point)) ? qRound(value / m_resolution) : value;
85 spbShrinkValue->blockSignals(true);
86 spbShrinkValue->setValue(selectedUnit.toUserValue(finalValue));
87 spbShrinkValue->blockSignals(false);
88 }
89}
@ 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_resolution

double WdgShrinkSelection::m_resolution
private

Definition at line 34 of file dlg_shrink_selection.h.

◆ m_shrinkFromImageBorder

bool WdgShrinkSelection::m_shrinkFromImageBorder
private

Definition at line 36 of file dlg_shrink_selection.h.

◆ m_shrinkValue

int WdgShrinkSelection::m_shrinkValue
private

Definition at line 35 of file dlg_shrink_selection.h.


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