integrate quick panel and new color picker
This commit is contained in:
@@ -48,6 +48,12 @@ kEventResult NodeColorPicker::handle_event(Event* e)
|
||||
case kEventType::MouseUpL:
|
||||
if (!m_mouse_inside)
|
||||
{
|
||||
if (m_color_cur->m_color != m_color_old->m_color)
|
||||
{
|
||||
m_color_old2->m_color = m_color_old1->m_color;
|
||||
m_color_old1->m_color = m_color_old->m_color;
|
||||
m_color_old->m_color = m_color_cur->m_color;
|
||||
}
|
||||
mouse_release();
|
||||
parent->remove_child(this);
|
||||
if (on_popup_close)
|
||||
@@ -74,34 +80,65 @@ void NodeColorPicker::init_controls()
|
||||
m_color_old = find<NodeBorder>("color-old");
|
||||
m_color_old1 = find<NodeBorder>("color-old1");
|
||||
m_color_old2 = find<NodeBorder>("color-old2");
|
||||
m_button_select = find<NodeButton>("btn-select");
|
||||
|
||||
m_button_select->on_click = [this](Node*)
|
||||
{
|
||||
m_color_old2->m_color = m_color_old1->m_color;
|
||||
m_color_old1->m_color = m_color_old->m_color;
|
||||
m_color_old->m_color = m_color_cur->m_color;
|
||||
};
|
||||
|
||||
m_wheel->on_value_changed = [this](Node*, glm::vec3 hsv)
|
||||
{
|
||||
m_slider_h->m_value.x = hsv.x;
|
||||
m_slider_s->m_value.x = hsv.y;
|
||||
m_slider_v->m_value.x = hsv.z;
|
||||
glm::vec3 rgb = convert_hsv2rgb(hsv);
|
||||
m_slider_r->m_value.x = rgb.x;
|
||||
m_slider_g->m_value.x = rgb.y;
|
||||
m_slider_b->m_value.x = rgb.z;
|
||||
m_color_cur->m_color = {rgb,1};
|
||||
m_slider_h->set_value(hsv.x);
|
||||
m_slider_s->set_value(hsv.y);
|
||||
m_slider_v->set_value(hsv.z);
|
||||
m_color_cur->m_color = { rgb, 1 };
|
||||
if (on_color_change)
|
||||
on_color_change(this, rgb);
|
||||
};
|
||||
auto hsv_setter = [this](Node* target, float v)
|
||||
{
|
||||
m_wheel->m_hsv = get_hsv();
|
||||
glm::vec3 rgb = convert_hsv2rgb(get_hsv());
|
||||
m_color_cur->m_color = {rgb,1};
|
||||
auto hsv = get_hsv();
|
||||
m_wheel->m_hsv = hsv;
|
||||
glm::vec3 rgb = convert_hsv2rgb(hsv);
|
||||
m_color_cur->m_color = { rgb, 1 };
|
||||
m_slider_r->m_value.x = rgb.x;
|
||||
m_slider_g->m_value.x = rgb.y;
|
||||
m_slider_b->m_value.x = rgb.z;
|
||||
if (on_color_change)
|
||||
on_color_change(this, rgb);
|
||||
};
|
||||
m_slider_h->on_value_changed = hsv_setter;
|
||||
m_slider_s->on_value_changed = hsv_setter;
|
||||
m_slider_v->on_value_changed = hsv_setter;
|
||||
|
||||
auto rgb_setter = [this](Node* target, float v)
|
||||
{
|
||||
glm::vec3 rgb = get_rgb();
|
||||
glm::vec3 hsv = convert_rgb2hsv(rgb);
|
||||
m_wheel->m_hsv = hsv;
|
||||
m_color_cur->m_color = { rgb, 1 };
|
||||
m_slider_h->set_value(hsv.x);
|
||||
m_slider_s->set_value(hsv.y);
|
||||
m_slider_v->set_value(hsv.z);
|
||||
if (on_color_change)
|
||||
on_color_change(this, rgb);
|
||||
};
|
||||
m_slider_r->on_value_changed = rgb_setter;
|
||||
m_slider_g->on_value_changed = rgb_setter;
|
||||
m_slider_b->on_value_changed = rgb_setter;
|
||||
}
|
||||
|
||||
void NodeColorPicker::set_color(glm::vec3 rgb)
|
||||
{
|
||||
auto 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);
|
||||
m_wheel->m_hsv = hsv;
|
||||
m_color_cur->m_color = { rgb, 1 };
|
||||
m_color_old->m_color = { rgb, 1 };
|
||||
}
|
||||
|
||||
glm::vec3 NodeColorPicker::get_hsv() const
|
||||
@@ -111,3 +148,11 @@ glm::vec3 NodeColorPicker::get_hsv() const
|
||||
float v = m_slider_v->get_value();
|
||||
return glm::vec3(h, s, v);
|
||||
}
|
||||
|
||||
glm::vec3 NodeColorPicker::get_rgb() const
|
||||
{
|
||||
float r = m_slider_r->get_value();
|
||||
float g = m_slider_g->get_value();
|
||||
float b = m_slider_b->get_value();
|
||||
return glm::vec3(r, g, b);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user