integrate quick brushes, simulate pressed keys on windows active
This commit is contained in:
@@ -84,9 +84,9 @@
|
|||||||
</layout>
|
</layout>
|
||||||
<layout id="tpl-brush-preset">
|
<layout id="tpl-brush-preset">
|
||||||
<button-custom width="300" height="70" margin="1" pad="5" align="center" justify="center" dir="row">
|
<button-custom width="300" height="70" margin="1" pad="5" align="center" justify="center" dir="row">
|
||||||
<node width="30" align="center">
|
<!--<node width="30" align="center">
|
||||||
<checkbox icon="data/ui/check-lock-transparency.png" width="20" height="20" pad="0"/>
|
<checkbox icon="data/ui/check-lock-transparency.png" width="20" height="20" pad="0"/>
|
||||||
</node>
|
</node>-->
|
||||||
<border color="1" width="40" height="60" align="center" justify="center" dir="col">
|
<border color="1" width="40" height="60" align="center" justify="center" dir="col">
|
||||||
<image id="thumb" width="40" height="40"/>
|
<image id="thumb" width="40" height="40"/>
|
||||||
<text id="caption-size" text="000" color="0" margin="3 0 0 0"/>
|
<text id="caption-size" text="000" color="0" margin="3 0 0 0"/>
|
||||||
@@ -1471,7 +1471,7 @@ Here's a list of what's available in this release.
|
|||||||
|
|
||||||
<!-- PANEL QUICK -->
|
<!-- PANEL QUICK -->
|
||||||
<layout id="tpl-panel-quick">
|
<layout id="tpl-panel-quick">
|
||||||
<border color="0 0 0 0.3" width="80" dir="col" pad="5" align="center" mouse-capture="true" shrink="1">
|
<border color="0 0 0 0.6" width="80" dir="col" pad="5" align="center" mouse-capture="true" shrink="1">
|
||||||
<node dir="row" pad="5">
|
<node dir="row" pad="5">
|
||||||
<!--size-->
|
<!--size-->
|
||||||
<node dir="col" margin="0 4 0 0" align="center">
|
<node dir="col" margin="0 4 0 0" align="center">
|
||||||
@@ -1541,7 +1541,7 @@ Here's a list of what's available in this release.
|
|||||||
</node>
|
</node>
|
||||||
</border>
|
</border>
|
||||||
<!-- toolbar -->
|
<!-- toolbar -->
|
||||||
<border id="toolbar" height="60" width="100%" pad="5" dir="row" color=".2 .2 .2 .6" mouse-capture="true">
|
<border id="toolbar" height="60" width="100%" pad="5" dir="row" color="0 0 0 0.6" mouse-capture="true">
|
||||||
<!--
|
<!--
|
||||||
<button id="btn-open" width="50" height="100%" margin="0 5 0 0" text="Open"/>
|
<button id="btn-open" width="50" height="100%" margin="0 5 0 0" text="Open"/>
|
||||||
<button id="btn-save" width="50" height="100%" margin="0 5 0 0" text="Save"/>
|
<button id="btn-save" width="50" height="100%" margin="0 5 0 0" text="Save"/>
|
||||||
@@ -1566,7 +1566,7 @@ Here's a list of what's available in this release.
|
|||||||
<text text="About"/>
|
<text text="About"/>
|
||||||
</button-custom>
|
</button-custom>
|
||||||
<!--<button id="btn-anim" width="70" height="100%" margin="1 0 0 10" text="Animate"/>-->
|
<!--<button id="btn-anim" width="70" height="100%" margin="1 0 0 10" text="Animate"/>-->
|
||||||
<node dir="row" margin="0 0 0 30">
|
<node dir="row" margin="0 0 0 50">
|
||||||
<!--panel togglers-->
|
<!--panel togglers-->
|
||||||
<button-custom id="btn-stroke" width="50" height="50" margin="0 5 0 0" thickness="1" border-color=".1" pad="2">
|
<button-custom id="btn-stroke" width="50" height="50" margin="0 5 0 0" thickness="1" border-color=".1" pad="2">
|
||||||
<image path="data/ui/stroke.png" width="100%" height="100%" align="center" justify="flex-end"/>
|
<image path="data/ui/stroke.png" width="100%" height="100%" align="center" justify="flex-end"/>
|
||||||
@@ -1596,8 +1596,8 @@ Here's a list of what's available in this release.
|
|||||||
</border>
|
</border>
|
||||||
<!-- central row -->
|
<!-- central row -->
|
||||||
<node grow="1" dir="row" wrap="1" height="0" id="central-row">
|
<node grow="1" dir="row" wrap="1" height="0" id="central-row">
|
||||||
<border color=".2 .2 .2 .6" pad="0 5 0 0" justify="center" dir="col" flood-events="1" mouse-capture="true">
|
<border color="0 0 0 0.6" pad="0 5 0 0" justify="center" dir="col" flood-events="1" mouse-capture="true">
|
||||||
<node margin="0 0 40 0" wrap="1" >
|
<node margin="0 0 50 0" wrap="1" >
|
||||||
<button-custom id="btn-pen" width="40" height="40" margin="2 0 2 5" thickness="1" border-color="0 0 0 1" pad="2">
|
<button-custom id="btn-pen" width="40" height="40" margin="2 0 2 5" thickness="1" border-color="0 0 0 1" pad="2">
|
||||||
<image path="data/ui/pen.png" width="100%" height="100%" align="center" justify="flex-end"/>
|
<image path="data/ui/pen.png" width="100%" height="100%" align="center" justify="flex-end"/>
|
||||||
</button-custom>
|
</button-custom>
|
||||||
|
|||||||
22
src/app.cpp
22
src/app.cpp
@@ -619,23 +619,23 @@ void App::update(float dt)
|
|||||||
#else
|
#else
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||||
#endif
|
#endif
|
||||||
//canvas->watch(observer);
|
|
||||||
glEnable(GL_SCISSOR_TEST);
|
glEnable(GL_SCISSOR_TEST);
|
||||||
for (int i = 0; i < layout[main_id]->m_children.size(); i++)
|
for (int i = 0; i < layout[main_id]->m_children.size(); i++)
|
||||||
layout[main_id]->m_children[i]->watch(observer);
|
layout[main_id]->m_children[i]->watch(observer);
|
||||||
//msgbox->watch(observer);
|
//msgbox->watch(observer);
|
||||||
glDisable(GL_SCISSOR_TEST);
|
glDisable(GL_SCISSOR_TEST);
|
||||||
|
|
||||||
// glEnable(GL_BLEND);
|
//canvas->watch(observer);
|
||||||
// sampler.bind(0);
|
//glEnable(GL_BLEND);
|
||||||
// ShaderManager::use(kShader::Texture);
|
//sampler.bind(0);
|
||||||
// ShaderManager::u_int(kShaderUniform::Tex, 0);
|
//ShaderManager::use(kShader::Texture);
|
||||||
// ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-1.f, 1.f, -1.f, 1.f));
|
//ShaderManager::u_int(kShaderUniform::Tex, 0);
|
||||||
// glActiveTexture(GL_TEXTURE0);
|
//ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-1.f, 1.f, -1.f, 1.f));
|
||||||
// uirtt.bindTexture();
|
//glActiveTexture(GL_TEXTURE0);
|
||||||
// m_face_plane.draw_fill();
|
//uirtt.bindTexture();
|
||||||
// uirtt.unbindTexture();
|
//m_face_plane.draw_fill();
|
||||||
// glDisable(GL_BLEND);
|
//uirtt.unbindTexture();
|
||||||
|
//glDisable(GL_BLEND);
|
||||||
|
|
||||||
if (rec_running)
|
if (rec_running)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -116,6 +116,7 @@ void App::init_sidebar()
|
|||||||
//presets = find_or_create_panel<NodePanelBrushPreset>(panels);
|
//presets = find_or_create_panel<NodePanelBrushPreset>(panels);
|
||||||
|
|
||||||
canvas->m_canvas->on_mode_changed = [this](kCanvasMode prev, kCanvasMode mode) {
|
canvas->m_canvas->on_mode_changed = [this](kCanvasMode prev, kCanvasMode mode) {
|
||||||
|
brush_update();
|
||||||
};
|
};
|
||||||
color->on_color_changed = [this](Node* target, glm::vec4 color) {
|
color->on_color_changed = [this](Node* target, glm::vec4 color) {
|
||||||
Canvas::I->m_current_brush->m_tip_color = color;
|
Canvas::I->m_current_brush->m_tip_color = color;
|
||||||
@@ -124,19 +125,18 @@ void App::init_sidebar()
|
|||||||
|
|
||||||
stroke->on_brush_changed = [this](Node* target, const std::string& path, const std::string& thumb) {
|
stroke->on_brush_changed = [this](Node* target, const std::string& path, const std::string& thumb) {
|
||||||
Canvas::I->m_current_brush->load_tip(path, thumb);
|
Canvas::I->m_current_brush->load_tip(path, thumb);
|
||||||
stroke->m_preview->draw_stroke();
|
brush_update();
|
||||||
};
|
};
|
||||||
stroke->on_pattern_changed = [this](Node*target, const std::string& path, const std::string& thumb) {
|
stroke->on_pattern_changed = [this](Node*target, const std::string& path, const std::string& thumb) {
|
||||||
Canvas::I->m_current_brush->load_pattern(path, thumb);
|
Canvas::I->m_current_brush->load_pattern(path, thumb);
|
||||||
stroke->m_preview->draw_stroke();
|
brush_update();
|
||||||
};
|
};
|
||||||
stroke->on_dual_changed = [this](Node*target, const std::string& path, const std::string& thumb) {
|
stroke->on_dual_changed = [this](Node*target, const std::string& path, const std::string& thumb) {
|
||||||
Canvas::I->m_current_brush->load_dual(path, thumb);
|
Canvas::I->m_current_brush->load_dual(path, thumb);
|
||||||
stroke->m_preview->draw_stroke();
|
brush_update();
|
||||||
};
|
};
|
||||||
stroke->on_stroke_change = [this](Node*) {
|
stroke->on_stroke_change = [this](Node*) {
|
||||||
quick->m_slider_flow->set_value(stroke->m_tip_flow->get_value());
|
brush_update();
|
||||||
quick->m_slider_size->set_value(stroke->m_tip_size->get_value());
|
|
||||||
};
|
};
|
||||||
|
|
||||||
quick->on_color_change = [this](Node*, glm::vec3 c) {
|
quick->on_color_change = [this](Node*, glm::vec3 c) {
|
||||||
@@ -150,9 +150,8 @@ void App::init_sidebar()
|
|||||||
stroke->set_size(value, true, true);
|
stroke->set_size(value, true, true);
|
||||||
};
|
};
|
||||||
quick->on_brush_change = [this](Node*, std::shared_ptr<Brush> b) {
|
quick->on_brush_change = [this](Node*, std::shared_ptr<Brush> b) {
|
||||||
Canvas::I->m_current_brush = b;
|
*Canvas::I->m_current_brush = *b;
|
||||||
stroke->m_preview->m_brush = b;
|
brush_update();
|
||||||
stroke->m_preview->draw_stroke();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
layers->on_layer_add = [this](Node*) {
|
layers->on_layer_add = [this](Node*) {
|
||||||
@@ -807,6 +806,8 @@ void App::brush_update()
|
|||||||
stroke->update_controls();
|
stroke->update_controls();
|
||||||
quick->m_slider_flow->set_value(stroke->m_tip_flow->get_value());
|
quick->m_slider_flow->set_value(stroke->m_tip_flow->get_value());
|
||||||
quick->m_slider_size->set_value(stroke->m_tip_size->get_value());
|
quick->m_slider_size->set_value(stroke->m_tip_size->get_value());
|
||||||
|
*quick->m_button_brush_current_preview->m_brush = *Canvas::I->m_current_brush;
|
||||||
|
quick->m_button_brush_current_preview->draw_stroke();
|
||||||
}
|
}
|
||||||
|
|
||||||
void App::init_menu_layer()
|
void App::init_menu_layer()
|
||||||
@@ -968,7 +969,7 @@ void App::initLayout()
|
|||||||
butt->set_color({ 0, 0, 0, 0 });
|
butt->set_color({ 0, 0, 0, 0 });
|
||||||
//n->SetPosition(100, 100);
|
//n->SetPosition(100, 100);
|
||||||
YGNodeStyleSetPosition(butt->y_node, YGEdgeBottom, 8);
|
YGNodeStyleSetPosition(butt->y_node, YGEdgeBottom, 8);
|
||||||
YGNodeStyleSetPosition(butt->y_node, YGEdgeLeft, 15);
|
YGNodeStyleSetPosition(butt->y_node, YGEdgeLeft, 10);
|
||||||
//butt->SetSize(30, 45);
|
//butt->SetSize(30, 45);
|
||||||
layout[main_id]->add_child(butt);
|
layout[main_id]->add_child(butt);
|
||||||
|
|
||||||
|
|||||||
@@ -265,16 +265,14 @@ void CanvasModePen::leave()
|
|||||||
void CanvasModePen::enter(kCanvasMode prev)
|
void CanvasModePen::enter(kCanvasMode prev)
|
||||||
{
|
{
|
||||||
m_cur_pos = Canvas::I->m_cur_pos;
|
m_cur_pos = Canvas::I->m_cur_pos;
|
||||||
if (m_brush)
|
if (!m_brush)
|
||||||
{
|
|
||||||
*Canvas::I->m_current_brush = *m_brush;
|
|
||||||
Canvas::I->m_current_brush->load();
|
|
||||||
App::I.brush_update();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
m_brush = std::make_shared<Brush>(*Canvas::I->m_current_brush);
|
m_brush = std::make_shared<Brush>(*Canvas::I->m_current_brush);
|
||||||
|
m_brush->load_tip("data/brushes/Round-Hard.png", "data/brushes/thumbs/Round-Hard.png");
|
||||||
}
|
}
|
||||||
|
*Canvas::I->m_current_brush = *m_brush;
|
||||||
|
Canvas::I->m_current_brush->load();
|
||||||
|
App::I.brush_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
@@ -337,6 +335,23 @@ void CanvasModeLine::init()
|
|||||||
m_line.create();
|
m_line.create();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CanvasModeLine::enter(kCanvasMode prev)
|
||||||
|
{
|
||||||
|
if (!m_brush)
|
||||||
|
{
|
||||||
|
m_brush = std::make_shared<Brush>();
|
||||||
|
m_brush->load_tip("data/brushes/Round-Hard.png", "data/brushes/thumbs/Round-Hard.png");
|
||||||
|
}
|
||||||
|
*Canvas::I->m_current_brush = *m_brush;
|
||||||
|
Canvas::I->m_current_brush->load();
|
||||||
|
App::I.brush_update();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CanvasModeLine::leave()
|
||||||
|
{
|
||||||
|
*m_brush = *Canvas::I->m_current_brush;
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void CanvasModeCamera::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
void CanvasModeCamera::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||||
|
|||||||
@@ -70,7 +70,6 @@ class CanvasModePen : public CanvasMode
|
|||||||
bool m_draw_tip = false;
|
bool m_draw_tip = false;
|
||||||
bool m_dragging = false;
|
bool m_dragging = false;
|
||||||
glm::vec2 m_pan_start;
|
glm::vec2 m_pan_start;
|
||||||
glm::vec2 m_cur_pos;
|
|
||||||
glm::vec2 m_size_pos_start;
|
glm::vec2 m_size_pos_start;
|
||||||
float m_size_value_start;
|
float m_size_value_start;
|
||||||
float m_camera_fov;
|
float m_camera_fov;
|
||||||
@@ -88,6 +87,7 @@ public:
|
|||||||
virtual void enter(kCanvasMode prev) override;
|
virtual void enter(kCanvasMode prev) override;
|
||||||
virtual void leave() override;
|
virtual void leave() override;
|
||||||
bool m_picking = false;
|
bool m_picking = false;
|
||||||
|
glm::vec2 m_cur_pos;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CanvasModeLine : public CanvasMode
|
class CanvasModeLine : public CanvasMode
|
||||||
@@ -96,10 +96,13 @@ class CanvasModeLine : public CanvasMode
|
|||||||
bool m_dragging = false;
|
bool m_dragging = false;
|
||||||
glm::vec2 m_drag_start;
|
glm::vec2 m_drag_start;
|
||||||
glm::vec2 m_drag_pos;
|
glm::vec2 m_drag_pos;
|
||||||
|
std::shared_ptr<Brush> m_brush;
|
||||||
public:
|
public:
|
||||||
virtual void on_MouseEvent(MouseEvent* me, glm::vec2& loc) override;
|
virtual void on_MouseEvent(MouseEvent* me, glm::vec2& loc) override;
|
||||||
virtual void on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const glm::mat4& camera) override;
|
virtual void on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const glm::mat4& camera) override;
|
||||||
virtual void init() override;
|
virtual void init() override;
|
||||||
|
virtual void enter(kCanvasMode prev) override;
|
||||||
|
virtual void leave() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CanvasModeGrid : public CanvasMode
|
class CanvasModeGrid : public CanvasMode
|
||||||
|
|||||||
14
src/main.cpp
14
src/main.cpp
@@ -877,6 +877,18 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 256; i++)
|
||||||
|
{
|
||||||
|
if ((int)convert_key(i) == k)
|
||||||
|
{
|
||||||
|
bool down = GetKeyState(i) & 0x8000;
|
||||||
|
if (down)
|
||||||
|
App::I.key_down((kKey)k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
@@ -901,7 +913,9 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
|
|||||||
}
|
}
|
||||||
case WM_SYSKEYDOWN:
|
case WM_SYSKEYDOWN:
|
||||||
case WM_KEYDOWN:
|
case WM_KEYDOWN:
|
||||||
|
if ((lp >> 30 & 1) == 0) // ignore repeated
|
||||||
{
|
{
|
||||||
|
|
||||||
std::lock_guard<std::mutex> lock(task_mutex);
|
std::lock_guard<std::mutex> lock(task_mutex);
|
||||||
tasklist.emplace_back([wp] {
|
tasklist.emplace_back([wp] {
|
||||||
App::I.key_down(convert_key((int)wp));
|
App::I.key_down(convert_key((int)wp));
|
||||||
|
|||||||
@@ -30,12 +30,6 @@ void NodePanelQuick::set_color(glm::vec3 color)
|
|||||||
|
|
||||||
void NodePanelQuick::init_controls()
|
void NodePanelQuick::init_controls()
|
||||||
{
|
{
|
||||||
//auto s = find<NodeStrokePreview>("quick-brush1");
|
|
||||||
//s->m_brush = std::make_shared<Brush>();
|
|
||||||
//s->m_max_size = 10;
|
|
||||||
//s->m_brush->load_tip("data/brushes/Round-Hard.png", "data/brushes/thumbs/Round-Hard.png");
|
|
||||||
//s->draw_stroke();
|
|
||||||
|
|
||||||
m_picker = std::make_shared<NodeColorPicker>();
|
m_picker = std::make_shared<NodeColorPicker>();
|
||||||
m_picker->m_manager = m_manager;
|
m_picker->m_manager = m_manager;
|
||||||
m_picker->init();
|
m_picker->init();
|
||||||
@@ -47,13 +41,17 @@ void NodePanelQuick::init_controls()
|
|||||||
|
|
||||||
m_slider_size = find<NodeSliderV>("quick-size");
|
m_slider_size = find<NodeSliderV>("quick-size");
|
||||||
m_slider_size->on_value_changed = [this](Node* target, float value) {
|
m_slider_size->on_value_changed = [this](Node* target, float value) {
|
||||||
static_cast<NodeStrokePreview*>(m_button_brush_current->m_children[0].get())->draw_stroke();
|
auto m = static_cast<CanvasModePen*>(Canvas::I->modes[(int)kCanvasMode::Draw][0]);
|
||||||
|
m->m_cur_pos = m_pos + glm::vec2(m_size.x / 2.f, -50.f);
|
||||||
|
m_button_brush_current_preview->draw_stroke();
|
||||||
if (on_size_change)
|
if (on_size_change)
|
||||||
on_size_change(target, value);
|
on_size_change(target, value);
|
||||||
};
|
};
|
||||||
m_slider_flow = find<NodeSliderV>("quick-flow");
|
m_slider_flow = find<NodeSliderV>("quick-flow");
|
||||||
m_slider_flow->on_value_changed = [this](Node* target, float value) {
|
m_slider_flow->on_value_changed = [this](Node* target, float value) {
|
||||||
static_cast<NodeStrokePreview*>(m_button_brush_current->m_children[0].get())->draw_stroke();
|
auto m = static_cast<CanvasModePen*>(Canvas::I->modes[(int)kCanvasMode::Draw][0]);
|
||||||
|
m->m_cur_pos = m_pos + glm::vec2(m_size.x / 2.f, -50.f);
|
||||||
|
m_button_brush_current_preview->draw_stroke();
|
||||||
if (on_flow_change)
|
if (on_flow_change)
|
||||||
on_flow_change(target, value);
|
on_flow_change(target, value);
|
||||||
};
|
};
|
||||||
@@ -78,6 +76,7 @@ void NodePanelQuick::init_controls()
|
|||||||
m_button_brush3 = init_button_brush("quick-brush3");
|
m_button_brush3 = init_button_brush("quick-brush3");
|
||||||
m_button_brush_current = m_button_brush1;
|
m_button_brush_current = m_button_brush1;
|
||||||
m_button_brush_current->set_active(true);
|
m_button_brush_current->set_active(true);
|
||||||
|
m_button_brush_current_preview = static_cast<NodeStrokePreview*>(m_button_brush_current->m_children[0].get());
|
||||||
}
|
}
|
||||||
|
|
||||||
NodeButtonCustom* NodePanelQuick::init_button_brush(const std::string& name)
|
NodeButtonCustom* NodePanelQuick::init_button_brush(const std::string& name)
|
||||||
@@ -103,8 +102,9 @@ void NodePanelQuick::handle_button_brush_click(Node* button)
|
|||||||
b->set_active(true);
|
b->set_active(true);
|
||||||
m_button_brush_current->set_active(false);
|
m_button_brush_current->set_active(false);
|
||||||
m_button_brush_current = b;
|
m_button_brush_current = b;
|
||||||
|
m_button_brush_current_preview = static_cast<NodeStrokePreview*>(button->m_children[0].get());
|
||||||
if (on_brush_change)
|
if (on_brush_change)
|
||||||
on_brush_change(this, static_cast<NodeStrokePreview*>(button->m_children[0].get())->m_brush);
|
on_brush_change(this, m_button_brush_current_preview->m_brush);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
#include "node_border.h"
|
#include "node_border.h"
|
||||||
#include "node_dialog_picker.h"
|
#include "node_dialog_picker.h"
|
||||||
#include "brush.h"
|
#include "brush.h"
|
||||||
|
#include "node_stroke_preview.h"
|
||||||
|
|
||||||
class NodePanelQuick : public NodeBorder
|
class NodePanelQuick : public NodeBorder
|
||||||
{
|
{
|
||||||
@@ -25,6 +26,7 @@ public:
|
|||||||
NodeButtonCustom* m_button_brush2;
|
NodeButtonCustom* m_button_brush2;
|
||||||
NodeButtonCustom* m_button_brush3;
|
NodeButtonCustom* m_button_brush3;
|
||||||
NodeButtonCustom* m_button_brush_current;
|
NodeButtonCustom* m_button_brush_current;
|
||||||
|
NodeStrokePreview* m_button_brush_current_preview;
|
||||||
std::shared_ptr<NodeColorPicker> m_picker;
|
std::shared_ptr<NodeColorPicker> m_picker;
|
||||||
virtual Node* clone_instantiate() const override;
|
virtual Node* clone_instantiate() const override;
|
||||||
virtual void clone_finalize(Node* dest) const override;
|
virtual void clone_finalize(Node* dest) const override;
|
||||||
|
|||||||
Reference in New Issue
Block a user