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

#include <dlg_border_selection.h>

+ Inheritance diagram for WdgBorderSelection:

Public Member Functions

void getConfiguration (KisOperationConfigurationSP config) override
 
 WdgBorderSelection (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 slotAntialiasingChanged (bool value)
 
void slotUnitChanged (int index)
 
void slotUpdateAntialiasingAvailability ()
 
void slotWidthChanged (double width)
 
void slotWidthChanged (int width)
 

Private Member Functions

void updateWidthUIValue (double value)
 

Private Attributes

bool m_antialiasing = false
 
double m_resolution
 
int m_width
 

Additional Inherited Members

- Public Attributes inherited from KisOperationUIWidget
QString caption
 

Detailed Description

Definition at line 16 of file dlg_border_selection.h.

Constructor & Destructor Documentation

◆ WdgBorderSelection()

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

Definition at line 19 of file dlg_border_selection.cc.

20 : KisOperationUIWidget(i18n("Border Selection"), parent)
21 , m_width(config->getInt("x-radius", 1))
22 , m_antialiasing(config->getBool("antialiasing", false))
23{
24 Q_ASSERT(view);
25 KisImageWSP image = view->image();
26 Q_ASSERT(image);
27 m_resolution = image->yRes();
28
29 setupUi(this);
30
31 spbWidth->setValue(m_width);
32 spbWidth->setFocus();
33 spbWidth->setVisible(true);
34 spbWidthDouble->setVisible(false);
35
36 cmbUnit->addItems(KoUnit::listOfUnitNameForUi());
37 cmbUnit->setCurrentIndex(KoUnit(KoUnit::Pixel).indexInListForUi());
38
39 // ensure that both spinboxes request the same horizontal size
40 KisSizeGroup *spbGroup = new KisSizeGroup(this);
41 spbGroup->addWidget(spbWidth);
42 spbGroup->addWidget(spbWidthDouble);
43
44 connect(spbWidth, SIGNAL(valueChanged(int)), this, SLOT(slotWidthChanged(int)));
45 connect(spbWidthDouble, SIGNAL(valueChanged(double)), this, SLOT(slotWidthChanged(double)));
46 connect(cmbUnit, SIGNAL(currentIndexChanged(int)), this, SLOT(slotUnitChanged(int)));
47 connect(chkAntialiasing, SIGNAL(toggled(bool)), this, SLOT(slotAntialiasingChanged(bool)));
49}
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 slotWidthChanged(int width)
void slotAntialiasingChanged(bool value)
void slotUnitChanged(int index)

References KisSizeGroup::addWidget(), connect(), KisViewManager::image(), KoUnit::listOfUnitNameForUi(), m_resolution, m_width, KoUnit::Pixel, slotAntialiasingChanged(), slotUnitChanged(), slotUpdateAntialiasingAvailability(), slotWidthChanged(), and KisImage::yRes().

Member Function Documentation

◆ getConfiguration()

void WdgBorderSelection::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 113 of file dlg_border_selection.cc.

114{
115 config->setProperty("x-radius", m_width);
116 config->setProperty("y-radius", m_width);
117 config->setProperty("antialiasing", m_antialiasing);
118}

References m_antialiasing, and m_width.

◆ slotAntialiasingChanged

void WdgBorderSelection::slotAntialiasingChanged ( bool value)
privateslot

Definition at line 78 of file dlg_border_selection.cc.

79{
81}
float value(const T *src, size_t ch)

References m_antialiasing, and value().

◆ slotUnitChanged

void WdgBorderSelection::slotUnitChanged ( int index)
privateslot

Definition at line 64 of file dlg_border_selection.cc.

65{
67
68 const KoUnit selectedUnit = KoUnit::fromListForUi(index);
69 if (selectedUnit != KoUnit(KoUnit::Pixel)) {
70 spbWidth->setVisible(false);
71 spbWidthDouble->setVisible(true);
72 } else {
73 spbWidth->setVisible(true);
74 spbWidthDouble->setVisible(false);
75 }
76}
static KoUnit fromListForUi(int index, ListOptions listOptions=ListAll, qreal factor=1.0)
Definition KoUnit.cpp:80
void updateWidthUIValue(double value)

References KoUnit::fromListForUi(), m_width, KoUnit::Pixel, and updateWidthUIValue().

◆ slotUpdateAntialiasingAvailability

void WdgBorderSelection::slotUpdateAntialiasingAvailability ( )
privateslot

Definition at line 83 of file dlg_border_selection.cc.

84{
85 const bool antialiasingEnabled = m_width > 1;
86
87 if (antialiasingEnabled) {
88 chkAntialiasing->setChecked(m_antialiasing);
89 } else {
90 bool tmp_antialiasing = m_antialiasing;
91 chkAntialiasing->setChecked(false);
92 m_antialiasing = tmp_antialiasing;
93 }
94
95 chkAntialiasing->setEnabled(antialiasingEnabled);
96}

References m_antialiasing, and m_width.

◆ slotWidthChanged [1/2]

void WdgBorderSelection::slotWidthChanged ( double width)
privateslot

Definition at line 56 of file dlg_border_selection.cc.

57{
58 const KoUnit selectedUnit = KoUnit::fromListForUi(cmbUnit->currentIndex());
59 const double resWidth = (selectedUnit == KoUnit(KoUnit::Pixel)) ? width : (width * m_resolution);
60 m_width = qRound(selectedUnit.fromUserValue(resWidth));
62}
qreal fromUserValue(qreal value) const
Definition KoUnit.cpp:201

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

◆ slotWidthChanged [2/2]

void WdgBorderSelection::slotWidthChanged ( int width)
privateslot

Definition at line 51 of file dlg_border_selection.cc.

52{
53 slotWidthChanged((double) width);
54}

References slotWidthChanged().

◆ updateWidthUIValue()

void WdgBorderSelection::updateWidthUIValue ( double value)
private

Definition at line 98 of file dlg_border_selection.cc.

99{
100 const KoUnit selectedUnit = KoUnit::fromListForUi(cmbUnit->currentIndex());
101 if (selectedUnit != KoUnit(KoUnit::Pixel)) {
102 spbWidthDouble->blockSignals(true);
103 spbWidthDouble->setValue(selectedUnit.toUserValue(value / m_resolution));
104 spbWidthDouble->blockSignals(false);
105 } else {
106 const int finalValue = (selectedUnit == KoUnit(KoUnit::Point)) ? qRound(value / m_resolution) : value;
107 spbWidth->blockSignals(true);
108 spbWidth->setValue(selectedUnit.toUserValue(finalValue));
109 spbWidth->blockSignals(false);
110 }
111}
@ 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_antialiasing

bool WdgBorderSelection::m_antialiasing = false
private

Definition at line 37 of file dlg_border_selection.h.

◆ m_resolution

double WdgBorderSelection::m_resolution
private

Definition at line 35 of file dlg_border_selection.h.

◆ m_width

int WdgBorderSelection::m_width
private

Definition at line 36 of file dlg_border_selection.h.


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