Color picker updates on data change
This commit is contained in:
parent
5f2dec8eeb
commit
54b7aa73a3
2 changed files with 8 additions and 0 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue