Color picker updates on data change

This commit is contained in:
Yousef Khadadeh 2026-05-19 19:45:16 +03:00
parent 5f2dec8eeb
commit 54b7aa73a3
2 changed files with 8 additions and 0 deletions

View file

@ -84,6 +84,7 @@ struct ColorPickerData {
template <typename T> class ColorPicker : public Element {
public:
ColorPicker(GUIManager& gui);
virtual void update() override;
void layout(const Clay_ElementId& id, T* data, bool selectAlpha, const ColorPickerData& conf = {});
private:
void set_rgb_from_hsv(const Vector3f& hsv);

View file

@ -128,6 +128,13 @@ template <typename T> void ColorPicker<T>::layout(const Clay_ElementId& id, T* d
}
}
template <typename T> void ColorPicker<T>::update() {
if(!oldData.has_value() || oldData.value() != *data) {
savedHsv = rgb_to_hsv<Vector3f, T>(*data);
oldData = *data;
}
}
template <typename T> void ColorPicker<T>::set_rgb_from_hsv(const Vector3f& hsv) {
Vector3f a = hsv_to_rgb<Vector3f>(hsv);
(*data)[0] = a.x();