#include "pch.h" #include "log.h" #include "util.h" #include "canvas.h" #include "node_dialog_picker.h" Node* NodeColorPicker::clone_instantiate() const { return new NodeColorPicker; } void NodeColorPicker::clone_finalize(Node* dest) const { auto n = static_cast(dest); n->init_controls(); } void NodeColorPicker::init() { auto n = (NodeColorPicker*)init_template("color-picker"); n->clone_copy(this); init_controls(); } void NodeColorPicker::draw() { NodeBorder::draw(); glm::vec3 rgb = glm::vec3(ui::Canvas::I->m_current_brush.m_tip_color); glm::vec3 hsv = convert_rgb2hsv(rgb); m_slider_h->set_value(hsv.x); m_slider_s->set_value(hsv.y); m_slider_v->set_value(hsv.z); m_slider_r->set_value(rgb.x); m_slider_g->set_value(rgb.y); m_slider_b->set_value(rgb.z); } void NodeColorPicker::init_controls() { m_slider_h = find("hsv-h"); m_slider_s = find("hsv-s"); m_slider_v = find("hsv-v"); m_slider_r = find("rgb-r"); m_slider_g = find("rgb-g"); m_slider_b = find("rgb-b"); m_wheel = find("wheel"); } glm::vec4 NodeColorPicker::get_hsv() const { float h = m_slider_h->get_value(); float s = m_slider_s->get_value(); float v = m_slider_v->get_value(); return glm::vec4(h, s, v, 1.f); }