get/set clipboard, color hex value
This commit is contained in:
@@ -84,6 +84,30 @@ 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_btn_copy = find<NodeButton>("btn-hex-copy");
|
||||
m_btn_paste = find<NodeButton>("btn-hex-paste");
|
||||
m_txt_hex = find<NodeText>("txt-hex");
|
||||
|
||||
m_btn_paste->on_click = [this](Node*)
|
||||
{
|
||||
std::string s = clipboard_get_text();
|
||||
std::regex r("#([\\dabcdefABCDEF]{6})");
|
||||
std::smatch m;
|
||||
if (std::regex_search(s, m, r))
|
||||
{
|
||||
unsigned long ul = std::stoul(m[1].str(), nullptr, 16);
|
||||
uint8_t b = (ul >> 0) & 0xFF;
|
||||
uint8_t g = (ul >> 8) & 0xFF;
|
||||
uint8_t r = (ul >> 16) & 0xFF;
|
||||
auto rgb = glm::vec3(r, g, b) / 255.f;
|
||||
set_color(rgb);
|
||||
}
|
||||
};
|
||||
|
||||
m_btn_copy->on_click = [this](Node*)
|
||||
{
|
||||
clipboard_set_text(m_txt_hex->m_text);
|
||||
};
|
||||
|
||||
m_wheel->on_value_changed = [this](Node*, glm::vec3 hsv)
|
||||
{
|
||||
@@ -98,6 +122,7 @@ void NodeColorPicker::init_controls()
|
||||
if (on_color_change)
|
||||
on_color_change(this, rgb);
|
||||
m_interacted = true;
|
||||
update_hex(rgb);
|
||||
};
|
||||
auto hsv_setter = [this](Node* target, float v)
|
||||
{
|
||||
@@ -111,6 +136,7 @@ void NodeColorPicker::init_controls()
|
||||
if (on_color_change)
|
||||
on_color_change(this, rgb);
|
||||
m_interacted = true;
|
||||
update_hex(rgb);
|
||||
};
|
||||
m_slider_h->on_value_changed = hsv_setter;
|
||||
m_slider_s->on_value_changed = hsv_setter;
|
||||
@@ -128,12 +154,20 @@ void NodeColorPicker::init_controls()
|
||||
if (on_color_change)
|
||||
on_color_change(this, rgb);
|
||||
m_interacted = true;
|
||||
update_hex(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::update_hex(glm::vec3 rgb)
|
||||
{
|
||||
char tmp[32];
|
||||
ultoa(convert_rgb_long(rgb), tmp, 16);
|
||||
m_txt_hex->set_text_format("#%s", tmp);
|
||||
}
|
||||
|
||||
void NodeColorPicker::set_color(glm::vec3 rgb)
|
||||
{
|
||||
auto hsv = convert_rgb2hsv(rgb);
|
||||
@@ -146,6 +180,7 @@ void NodeColorPicker::set_color(glm::vec3 rgb)
|
||||
m_wheel->m_hsv = hsv;
|
||||
m_color_cur->m_color = { rgb, 1 };
|
||||
m_color_old->m_color = { rgb, 1 };
|
||||
update_hex(rgb);
|
||||
}
|
||||
|
||||
glm::vec3 NodeColorPicker::get_hsv() const
|
||||
|
||||
Reference in New Issue
Block a user