implementing color wheel and new color picker
This commit is contained in:
55
engine/node_dialog_picker.cpp
Normal file
55
engine/node_dialog_picker.cpp
Normal file
@@ -0,0 +1,55 @@
|
||||
#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<NodeColorPicker*>(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<NodeSliderH>("hsv-h");
|
||||
m_slider_s = find<NodeSliderH>("hsv-s");
|
||||
m_slider_v = find<NodeSliderH>("hsv-v");
|
||||
m_slider_r = find<NodeSliderH>("rgb-r");
|
||||
m_slider_g = find<NodeSliderH>("rgb-g");
|
||||
m_slider_b = find<NodeSliderH>("rgb-b");
|
||||
m_wheel = find<NodeColorWheel>("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);
|
||||
}
|
||||
Reference in New Issue
Block a user