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

#include <kis_hsv_adjustment_filter.h>

+ Inheritance diagram for KisHSVConfigWidget:

Public Member Functions

KisPropertiesConfigurationSP configuration () const override
 
 KisHSVConfigWidget (QWidget *parent, Qt::WindowFlags f=Qt::WindowFlags())
 
void setConfiguration (const KisPropertiesConfigurationSP config) override
 
 ~KisHSVConfigWidget () override
 
- Public Member Functions inherited from KisConfigWidget
virtual KoCanvasResourcesInterfaceSP canvasResourcesInterface () const
 
virtual void setCanvasResourcesInterface (KoCanvasResourcesInterfaceSP canvasResourcesInterface)
 
virtual void setView (KisViewManager *view)
 
 ~KisConfigWidget () override
 

Public Attributes

Ui_WdgHSVAdjustment * m_page
 

Private Slots

void configureSliderLimitsAndLabels ()
 
void recolorSliders ()
 
void resetFilter ()
 

Private Attributes

bool m_prevColorize
 

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 45 of file kis_hsv_adjustment_filter.h.

Constructor & Destructor Documentation

◆ KisHSVConfigWidget()

KisHSVConfigWidget::KisHSVConfigWidget ( QWidget * parent,
Qt::WindowFlags f = Qt::WindowFlags() )
explicit

Definition at line 302 of file kis_hsv_adjustment_filter.cpp.

303 : KisConfigWidget(parent, f)
304 , m_prevColorize(false)
305{
306 m_page = new Ui_WdgHSVAdjustment();
307 m_page->setupUi(this);
308
309 connect(m_page->cmbType, SIGNAL(activated(int)), this, SLOT(configureSliderLimitsAndLabels()));
310 connect(m_page->chkColorize, SIGNAL(toggled(bool)), this, SLOT(configureSliderLimitsAndLabels()));
311 connect(m_page->chkCompatibilityMode, SIGNAL(toggled(bool)), SIGNAL(sigConfigurationItemChanged()));
312 connect(m_page->reset, SIGNAL(clicked(bool)), this, SLOT(resetFilter()));
313
314 // connect horizontal sliders
315 connect(m_page->hSlider, SIGNAL(valueChanged(int)), SIGNAL(sigConfigurationItemChanged()));
316 connect(m_page->sSlider, SIGNAL(valueChanged(int)), SIGNAL(sigConfigurationItemChanged()));
317 connect(m_page->vSlider, SIGNAL(valueChanged(int)), SIGNAL(sigConfigurationItemChanged()));
318
319 connect(m_page->hSpinBox, SIGNAL(valueChanged(int)), m_page->hSlider, SLOT(setValue(int)));
320 connect(m_page->sSpinBox, SIGNAL(valueChanged(int)), m_page->sSlider, SLOT(setValue(int)));
321 connect(m_page->vSpinBox, SIGNAL(valueChanged(int)), m_page->vSlider, SLOT(setValue(int)));
322
323 connect(m_page->hSlider, SIGNAL(valueChanged(int)), m_page->hSpinBox, SLOT(setValue(int)));
324 connect(m_page->sSlider, SIGNAL(valueChanged(int)), m_page->sSpinBox, SLOT(setValue(int)));
325 connect(m_page->vSlider, SIGNAL(valueChanged(int)), m_page->vSpinBox, SLOT(setValue(int)));
326
327 connect(m_page->hSlider, SIGNAL(valueChanged(int)), this, SLOT(recolorSliders()));
328 connect(m_page->sSlider, SIGNAL(valueChanged(int)), this, SLOT(recolorSliders()));
329 connect(m_page->vSlider, SIGNAL(valueChanged(int)), this, SLOT(recolorSliders()));
330}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void sigConfigurationItemChanged()
KisConfigWidget(QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags(), int delay=200)
Ui_WdgHSVAdjustment * m_page

References configureSliderLimitsAndLabels(), connect(), m_page, recolorSliders(), resetFilter(), and KisConfigWidget::sigConfigurationItemChanged().

◆ ~KisHSVConfigWidget()

KisHSVConfigWidget::~KisHSVConfigWidget ( )
override

Definition at line 332 of file kis_hsv_adjustment_filter.cpp.

333{
334 delete m_page;
335}

References m_page.

Member Function Documentation

◆ configuration()

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

Implements KisConfigWidget.

Definition at line 337 of file kis_hsv_adjustment_filter.cpp.

338{
340 c->setProperty("h", m_page->hSlider->value());
341 c->setProperty("s", m_page->sSlider->value());
342 c->setProperty("v", m_page->vSlider->value());
343 c->setProperty("type", m_page->cmbType->currentIndex());
344 c->setProperty("colorize", m_page->chkColorize->isChecked());
345 c->setProperty("compatibilityMode", m_page->chkCompatibilityMode->isChecked());
346 return c;
347}
static KisResourcesInterfaceSP instance()

References KisHSVAdjustmentFilter::id(), KisGlobalResourcesInterface::instance(), and m_page.

◆ configureSliderLimitsAndLabels

void KisHSVConfigWidget::configureSliderLimitsAndLabels ( )
privateslot

Definition at line 362 of file kis_hsv_adjustment_filter.cpp.

363{
364 KIS_SAFE_ASSERT_RECOVER_RETURN(m_page->cmbType->currentIndex() >= 0);
365
366 const std::array<SLIDER_TYPE, 3> sliderSet = SLIDER_SETS[m_page->cmbType->currentIndex()];
367 const bool colorize = m_page->chkColorize->isChecked();
368
369 // Prevent the sliders from recoloring when setValue is triggered in apply()
370 // Since some values will be invalid while inside this function if colorize is changed
371 KisSignalsBlocker blocker(m_page->hSlider, m_page->sSlider, m_page->vSlider);
372
373 sliderSetting(sliderSet[0]).apply(m_page->hLabel, m_page->hSlider, m_page->hSpinBox, m_prevColorize, colorize);
374 sliderSetting(sliderSet[1]).apply(m_page->sLabel, m_page->sSlider, m_page->sSpinBox, m_prevColorize, colorize);
375 sliderSetting(sliderSet[2]).apply(m_page->vLabel, m_page->vSlider, m_page->vSpinBox, m_prevColorize, colorize);
376
378
379 const bool compat = !m_page->chkColorize->isChecked() && m_page->cmbType->currentIndex() <= 3;
380
381 m_page->chkCompatibilityMode->setEnabled(compat);
382 m_prevColorize = colorize;
383
385}
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
Definition kis_assert.h:128

References KIS_SAFE_ASSERT_RECOVER_RETURN, m_page, m_prevColorize, recolorSliders(), and KisConfigWidget::sigConfigurationItemChanged().

◆ recolorSliders

void KisHSVConfigWidget::recolorSliders ( )
privateslot

Definition at line 387 of file kis_hsv_adjustment_filter.cpp.

388{
389 const SLIDER_SET set = static_cast<SLIDER_SET>(m_page->cmbType->currentIndex());
390 const std::array<SLIDER_TYPE, 3> sliderSet = SLIDER_SETS[m_page->cmbType->currentIndex()];
391 const bool colorize = m_page->chkColorize->isChecked();
392
393 const double nh = sliderSetting(sliderSet[0]).normalize(colorize, m_page->hSlider->value());
394 const double ns = sliderSetting(sliderSet[1]).normalize(colorize, m_page->sSlider->value());
395 const double nv = sliderSetting(sliderSet[2]).normalize(colorize, m_page->vSlider->value());
396
397 sliderSetting(sliderSet[0]).recolor(m_page->hSlider, set, colorize, nh, ns, nv);
398 sliderSetting(sliderSet[1]).recolor(m_page->sSlider, set, colorize, nh, ns, nv);
399 sliderSetting(sliderSet[2]).recolor(m_page->vSlider, set, colorize, nh, ns, nv);
400}

References m_page.

◆ resetFilter

void KisHSVConfigWidget::resetFilter ( )
privateslot

Definition at line 402 of file kis_hsv_adjustment_filter.cpp.

403{
404 const std::array<SLIDER_TYPE, 3> sliderSet = SLIDER_SETS[m_page->cmbType->currentIndex()];
405
406 sliderSetting(sliderSet[0]).reset(m_page->hSlider);
407 sliderSetting(sliderSet[1]).reset(m_page->sSlider);
408 sliderSetting(sliderSet[2]).reset(m_page->vSlider);
409}

References m_page.

◆ setConfiguration()

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

Implements KisConfigWidget.

Definition at line 349 of file kis_hsv_adjustment_filter.cpp.

350{
351 const int type = config->getInt("type", 1);
352 m_page->cmbType->setCurrentIndex(type);
353 m_page->chkColorize->setChecked(config->getBool("colorize", false));
354 m_page->hSlider->setValue(config->getInt("h", 0));
355 m_page->sSlider->setValue(config->getInt("s", 0));
356 m_page->vSlider->setValue(config->getInt("v", 0));
357 m_page->chkCompatibilityMode->setChecked(config->getInt("compatibilityMode", true));
358
360}

References configureSliderLimitsAndLabels(), and m_page.

Member Data Documentation

◆ m_page

Ui_WdgHSVAdjustment* KisHSVConfigWidget::m_page

Definition at line 56 of file kis_hsv_adjustment_filter.h.

◆ m_prevColorize

bool KisHSVConfigWidget::m_prevColorize
private

Definition at line 66 of file kis_hsv_adjustment_filter.h.


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