Archived
1
Fork 0
This repository has been archived on 2025-04-12. You can view files and clone it, but cannot push or open issues or pull requests.
graph/tools/common/src/coloredit.cpp

64 lines
1.5 KiB
C++
Executable file

#include "coloredit.h"
#include <QHBoxLayout>
#include <QPushButton>
QColor fromVec3(glm::vec3 vec) {
int r = 0, g = 0, b = 0;
if(vec.x != 0)
r = static_cast<int>(255.0f * vec.x);
if(vec.y != 0)
g = static_cast<int>(255.0f * vec.y);
if(vec.z != 0)
b = static_cast<int>(255.0f * vec.z);
return QColor::fromRgb(r, g, b);
}
glm::vec3 fromQColor(QColor color) {
glm::vec3 vec;
int r, g, b, a;
color.getRgb(&r, &g, &b, &a);
vec.x = r / 255.0f;
vec.y = g / 255.0f;
vec.z = b / 255.0f;
return vec;
}
ColorEdit::ColorEdit(glm::vec3& ref, QWidget* parent) : QWidget(parent), reference(ref) {
QHBoxLayout* itemsLayout = new QHBoxLayout(this);
QPushButton* colorButton = new QPushButton();
colorButton->setFlat(true);
QPalette pal = colorButton->palette();
pal.setColor(QPalette::Button, fromVec3(reference));
colorButton->setAutoFillBackground(true);
colorButton->setPalette(pal);
colorButton->update();
connect(colorButton, &QPushButton::clicked, [=](bool) {
QColor oldcolor = fromVec3(reference);
QColor newcolor = QColorDialog::getColor(oldcolor);
reference = fromQColor(newcolor);
QPalette newpal = colorButton->palette();
newpal.setColor(QPalette::Button, newcolor);
colorButton->setPalette(newpal);
colorButton->update();
emit onValueChanged();
});
itemsLayout->addWidget(colorButton);
}