16 #include "colorinspector.h"
17 #include "ui_colorinspector.h"
22 #include "colorslider.h"
23 #include "pencildef.h"
25 #include "colormanager.h"
29 ColorInspector::ColorInspector(
QWidget *parent) :
35 ui =
new Ui::ColorInspector;
36 ui->setupUi(innerWidget);
40 ColorInspector::~ColorInspector()
45 void ColorInspector::initUI()
47 mCurrentColor = editor()->color()->frontColor();
50 isRgbColors = settings.value(
"isRgb").toBool();
53 ui->colorSpecTabWidget->setCurrentWidget(ui->rgbTab);
55 ui->colorSpecTabWidget->setCurrentWidget(ui->hsvTab);
59 ui->redSlider->init(ColorSlider::ColorSpecType::RGB, ColorSlider::ColorType::RED, mCurrentColor, 0.0, 255.0);
60 ui->greenSlider->init(ColorSlider::ColorSpecType::RGB, ColorSlider::ColorType::GREEN, mCurrentColor, 0.0, 255.0);
61 ui->blueSlider->init(ColorSlider::ColorSpecType::RGB, ColorSlider::ColorType::BLUE, mCurrentColor, 0.0, 255.0);
62 ui->rgbAlphaSlider->init(ColorSlider::ColorSpecType::RGB, ColorSlider::ColorType::ALPHA, mCurrentColor, 0.0, 255.0);
64 ui->hueSlider->init(ColorSlider::ColorSpecType::HSV, ColorSlider::ColorType::HUE, mCurrentColor, 0.0, 359.0);
65 ui->saturationSlider->init(ColorSlider::ColorSpecType::HSV, ColorSlider::ColorType::SAT, mCurrentColor, 0.0, 255.0);
66 ui->valueSlider->init(ColorSlider::ColorSpecType::HSV, ColorSlider::ColorType::VAL, mCurrentColor, 0.0, 255.0);
67 ui->hsvAlphaSlider->init(ColorSlider::ColorSpecType::HSV, ColorSlider::ColorType::ALPHA, mCurrentColor, 0.0, 255.0);
69 QPalette p1 = ui->colorWrapper->palette();
71 ui->colorWrapper->setPalette(p1);
75 ui->color->setPalette(p2);
79 auto onColorChangedSlider =
static_cast<void(
ColorInspector::*)(
const QColor&)
>(&ColorInspector::onColorChanged);
80 connect(ui->redSlider, &ColorSlider::valueChanged,
this, onColorChangedSlider);
81 connect(ui->greenSlider, &ColorSlider::valueChanged,
this, onColorChangedSlider);
82 connect(ui->blueSlider, &ColorSlider::valueChanged,
this, onColorChangedSlider);
83 connect(ui->rgbAlphaSlider, &ColorSlider::valueChanged,
this, onColorChangedSlider);
84 connect(ui->hueSlider, &ColorSlider::valueChanged,
this, onColorChangedSlider);
85 connect(ui->saturationSlider, &ColorSlider::valueChanged,
this, onColorChangedSlider);
86 connect(ui->valueSlider, &ColorSlider::valueChanged,
this, onColorChangedSlider);
87 connect(ui->hsvAlphaSlider, &ColorSlider::valueChanged,
this, onColorChangedSlider);
90 auto onColorChangedSpinBox =
static_cast<void(
ColorInspector::*)()
>(&ColorInspector::onColorChanged);
91 connect(ui->redSpinBox, spinBoxChanged,
this, onColorChangedSpinBox);
92 clearFocusOnFinished(ui->redSpinBox);
93 connect(ui->greenSpinBox, spinBoxChanged,
this, onColorChangedSpinBox);
94 clearFocusOnFinished(ui->greenSpinBox);
95 connect(ui->blueSpinBox, spinBoxChanged,
this, onColorChangedSpinBox);
96 clearFocusOnFinished(ui->blueSpinBox);
97 connect(ui->rgbAlphaSpinBox, spinBoxChanged,
this, onColorChangedSpinBox);
98 clearFocusOnFinished(ui->rgbAlphaSpinBox);
99 connect(ui->hueSpinBox, spinBoxChanged,
this, onColorChangedSpinBox);
100 clearFocusOnFinished(ui->hueSpinBox);
101 connect(ui->saturationSpinBox, spinBoxChanged,
this, onColorChangedSpinBox);
102 clearFocusOnFinished(ui->saturationSpinBox);
103 connect(ui->valueSpinBox, spinBoxChanged,
this, onColorChangedSpinBox);
104 clearFocusOnFinished(ui->valueSpinBox);
105 connect(ui->hsvAlphaSpinBox, spinBoxChanged,
this, onColorChangedSpinBox);
106 clearFocusOnFinished(ui->hsvAlphaSpinBox);
108 connect(editor(), &Editor::objectLoaded,
this, &ColorInspector::updateUI);
111 void ColorInspector::updateUI()
113 QColor newColor = editor()->color()->frontColor();
117 void ColorInspector::setColor(
QColor newColor)
120 newColor = (isRgbColors) ? newColor.
toRgb() : newColor.
toHsv();
122 if (newColor == mCurrentColor)
127 mCurrentColor = newColor;
132 QColor ColorInspector::color()
134 return mCurrentColor;
137 void ColorInspector::updateControls()
147 ui->redSlider->setRgb(mCurrentColor);
148 ui->greenSlider->setRgb(mCurrentColor);
149 ui->blueSlider->setRgb(mCurrentColor);
150 ui->rgbAlphaSlider->setRgb(mCurrentColor);
157 ui->redSpinBox->setValue(mCurrentColor.
red());
158 ui->greenSpinBox->setValue(mCurrentColor.
green());
159 ui->blueSpinBox->setValue(mCurrentColor.
blue());
160 ui->rgbAlphaSpinBox->setValue(mCurrentColor.
alpha());
167 ui->hueSlider->setHsv(mCurrentColor);
168 ui->saturationSlider->setHsv(mCurrentColor);
169 ui->valueSlider->setHsv(mCurrentColor);
170 ui->hsvAlphaSlider->setHsv(mCurrentColor);
177 ui->hueSpinBox->setValue(mCurrentColor.
hue());
178 ui->saturationSpinBox->setValue(qRound(mCurrentColor.
saturation() / 2.55));
179 ui->valueSpinBox->setValue(qRound(mCurrentColor.
value() / 2.55));
180 ui->hsvAlphaSpinBox->setValue(qRound(mCurrentColor.
alpha() / 2.55));
184 ui->color->setPalette(p);
189 void ColorInspector::onColorSpecChanged()
192 isRgbColors = ui->colorSpecTabWidget->currentWidget() == ui->rgbTab;
195 settings.setValue(
"isRgb", isRgbColors);
199 mCurrentColor = mCurrentColor.
toRgb();
203 mCurrentColor = mCurrentColor.
toHsv();
208 emit colorSpecChanged(isRgbColors);
211 void ColorInspector::onColorChanged()
215 ui->redSpinBox->value(),
216 ui->greenSpinBox->value(),
217 ui->blueSpinBox->value(),
218 ui->rgbAlphaSpinBox->value());
221 ui->hueSpinBox->value(),
222 static_cast<int>(ui->saturationSpinBox->value() * 2.55),
223 static_cast<int>(ui->valueSpinBox->value() * 2.55),
224 static_cast<int>(ui->hsvAlphaSpinBox->value() * 2.55));
229 emit colorChanged(mCurrentColor);
232 void ColorInspector::onColorChanged(
const QColor& color)
234 mCurrentColor = color;
238 emit colorChanged(color);
void setBrush(QPalette::ColorRole role, const QBrush &brush)
void setColor(QPalette::ColorGroup group, QPalette::ColorRole role, const QColor &color)
void setRgb(int r, int g, int b, int a)
QString tr(const char *sourceText, const char *disambiguation, int n)
QColor toHsv() const const
QColor toRgb() const const
void setHsv(int h, int s, int v, int a)
int saturation() const const
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)