• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • krita API Reference
  • KDE Home
  • Contact Us
 

KritaWidgets

  • sources
  • kfour-appscomplete
  • krita
  • libs
  • widgets
KisSpinboxHSXSelector.cpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2020 Mathias Wein <[email protected]>
3  *
4  * SPDX-License-Identifier: GPL-2.0-or-later
5  */
6 
7 #include "KisSpinboxHSXSelector.h"
8 
9 #include <QFormLayout>
10 #include <QLabel>
11 #include <QList>
12 #include <QSignalBlocker>
13 #include "kis_double_parse_spin_box.h"
14 #include "KisVisualColorSelector.h"
15 
16 struct KisSpinboxHSXSelector::Private
17 {
18  QList <QLabel*> labels;
19  QList <KisDoubleParseSpinBox*> spinBoxes;
20  QFormLayout *layout {0};
21 };
22 
23 KisSpinboxHSXSelector::KisSpinboxHSXSelector(QWidget *parent)
24  : QWidget(parent)
25  , m_d(new Private)
26 {
27  m_d->layout = new QFormLayout(this);
28  for (int i = 0; i < 3; i++){
29  m_d->labels.push_back(new QLabel(this));
30  m_d->spinBoxes.push_back(new KisDoubleParseSpinBox(this));
31  m_d->layout->addRow(m_d->labels[i], m_d->spinBoxes[i]);
32  connect(m_d->spinBoxes.back(), SIGNAL(valueChanged(double)), this, SLOT(slotSpinBoxChanged()));
33  }
34  m_d->labels[0]->setText(i18n("Hue:"));
35  m_d->labels[1]->setText(i18n("Saturation:"));
36  m_d->labels[2]->setText("<x>:");
37  m_d->spinBoxes[0]->setMaximum(360.0);
38  m_d->spinBoxes[1]->setMaximum(100.0);
39  m_d->spinBoxes[2]->setMaximum(100.0);
40  m_d->spinBoxes[0]->setSuffix(" °");
41  m_d->spinBoxes[1]->setSuffix(" %");
42  m_d->spinBoxes[2]->setSuffix(" %");
43 }
44 
45 KisSpinboxHSXSelector::~KisSpinboxHSXSelector()
46 {
47 }
48 
49 void KisSpinboxHSXSelector::attachToSelector(KisVisualColorSelector *selector)
50 {
51  connect(selector, SIGNAL(sigColorModelChanged()), this, SLOT(slotColorModelChanged()));
52  connect(selector, SIGNAL(sigHSXChanged(QVector3D)), this, SLOT(slotHSXChanged(QVector3D)));
53  connect(this, SIGNAL(sigHSXChanged(QVector3D)), selector, SLOT(slotSetHSX(QVector3D)));
54 }
55 
56 void KisSpinboxHSXSelector::slotColorModelChanged()
57 {
58  const KisVisualColorSelector *selector = qobject_cast<KisVisualColorSelector *>(sender());
59  if (!selector) {
60  return;
61  }
62 
63  switch (selector->getColorModel()) {
64  case KisVisualColorSelector::HSV:
65  m_d->labels[2]->setText(i18n("Value:"));
66  break;
67  case KisVisualColorSelector::HSL:
68  m_d->labels[2]->setText(i18n("Lightness:"));
69  break;
70  case KisVisualColorSelector::HSI:
71  m_d->labels[2]->setText(i18n("Intensity:"));
72  break;
73  case KisVisualColorSelector::HSY:
74  m_d->labels[2]->setText(i18n("Luma:"));
75  break;
76  default:
77  break;
78  }
79 }
80 
81 void KisSpinboxHSXSelector::slotHSXChanged(const QVector3D &hsx)
82 {
83  const QSignalBlocker s1(m_d->spinBoxes[0]), s2(m_d->spinBoxes[1]), s3(m_d->spinBoxes[2]);
84  m_d->spinBoxes[0]->setValue(hsx[0] * 360.0);
85  m_d->spinBoxes[1]->setValue(hsx[1] * 100.0);
86  m_d->spinBoxes[2]->setValue(hsx[2] * 100.0);
87 }
88 
89 void KisSpinboxHSXSelector::slotSpinBoxChanged()
90 {
91  QVector3D hsx(m_d->spinBoxes[0]->value() / 360.0,
92  m_d->spinBoxes[1]->value() / 100.0,
93  m_d->spinBoxes[2]->value() / 100.0);
94  emit sigHSXChanged(hsx);
95 }
KisVisualColorSelector::HSI
Definition: KisVisualColorSelector.h:33
KisDoubleParseSpinBox
QWidget::layout
QLayout * layout() const
QWidget
KisVisualColorSelector::HSY
Definition: KisVisualColorSelector.h:33
QObject::sender
QObject * sender() const
KisVisualColorSelector::HSL
Definition: KisVisualColorSelector.h:33
KisSpinboxHSXSelector::sigHSXChanged
void sigHSXChanged(const QVector3D &hsx)
KisSpinboxHSXSelector::attachToSelector
void attachToSelector(KisVisualColorSelector *selector)
connect signals and slots with given selector to synchronize value and color model changes.
Definition: KisSpinboxHSXSelector.cpp:49
QList< QLabel * >
QVector3D
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
KisVisualColorSelector::HSV
Definition: KisVisualColorSelector.h:33
QLabel
KisSpinboxHSXSelector::KisSpinboxHSXSelector
KisSpinboxHSXSelector(QWidget *parent=nullptr)
Definition: KisSpinboxHSXSelector.cpp:23
KisVisualColorSelector::getColorModel
ColorModel getColorModel() const
Definition: KisVisualColorSelector.cpp:149
KisVisualColorSelector.h
KisVisualColorSelector
The KisVisualColorSelector class.
Definition: KisVisualColorSelector.h:29
KisSpinboxHSXSelector::slotHSXChanged
void slotHSXChanged(const QVector3D &hsx)
Definition: KisSpinboxHSXSelector.cpp:81
QFormLayout
KisSpinboxHSXSelector::~KisSpinboxHSXSelector
~KisSpinboxHSXSelector() override
Definition: KisSpinboxHSXSelector.cpp:45
KisSpinboxHSXSelector.h
KisSpinboxHSXSelector::slotColorModelChanged
void slotColorModelChanged()
Definition: KisSpinboxHSXSelector.cpp:56
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Sat Jan 23 2021 11:48:22 by doxygen 1.8.16 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KritaWidgets

Skip menu "KritaWidgets"
  • Main Page
  • Namespace List
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

krita API Reference

Skip menu "krita API Reference"
  • libs
  •   KritaBasicFlakes
  •   brush
  •   KritaUndo2
  •   KritaFlake
  •   image
  •   KritaPlugin
  •   Krita
  •   KritaPigment
  •   KritaResources
  •   KritaStore
  •   ui
  •   KritaWidgets
  •   KritaWidgetUtils
  • plugins
  •   Assitants
  •   Extensions
  •   Filters
  •   Generators
  •   Formats
  •           src
  •   PaintOps
  •     libpaintop

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal