improve update_brush performance
This commit is contained in:
@@ -128,27 +128,28 @@ void App::init_sidebar()
|
||||
quick->set_state(quick_mode_state[mode], true);
|
||||
else
|
||||
quick->reset_state(true);
|
||||
brush_update();
|
||||
brush_update(true, true);
|
||||
};
|
||||
color->on_color_changed = [this](Node* target, glm::vec4 color) {
|
||||
Canvas::I->m_current_brush->m_tip_color = color;
|
||||
quick->set_color(color);
|
||||
brush_update(true, false);
|
||||
};
|
||||
|
||||
stroke->on_brush_changed = [this](Node* target, const std::string& path, const std::string& thumb) {
|
||||
Canvas::I->m_current_brush->load_tip(path, thumb);
|
||||
brush_update();
|
||||
brush_update(true, true);
|
||||
};
|
||||
stroke->on_pattern_changed = [this](Node*target, const std::string& path, const std::string& thumb) {
|
||||
Canvas::I->m_current_brush->load_pattern(path, thumb);
|
||||
brush_update();
|
||||
brush_update(true, true);
|
||||
};
|
||||
stroke->on_dual_changed = [this](Node*target, const std::string& path, const std::string& thumb) {
|
||||
Canvas::I->m_current_brush->load_dual(path, thumb);
|
||||
brush_update();
|
||||
brush_update(true, true);
|
||||
};
|
||||
stroke->on_stroke_change = [this](Node*) {
|
||||
brush_update();
|
||||
brush_update(true, true);
|
||||
};
|
||||
|
||||
quick->on_color_change = [this](Node*, glm::vec3 c) {
|
||||
@@ -165,7 +166,7 @@ void App::init_sidebar()
|
||||
auto c = Canvas::I->m_current_brush->m_tip_color;
|
||||
*Canvas::I->m_current_brush = *b;
|
||||
Canvas::I->m_current_brush->m_tip_color = c;
|
||||
brush_update();
|
||||
brush_update(true, true);
|
||||
};
|
||||
|
||||
layers->on_layer_add = [this](Node*, std::shared_ptr<class Layer> layer, int index) {
|
||||
@@ -816,7 +817,7 @@ void App::init_menu_tools()
|
||||
*Canvas::I->m_current_brush = *b;
|
||||
Canvas::I->m_current_brush->m_tip_color = c;
|
||||
Canvas::I->m_current_brush->load();
|
||||
brush_update();
|
||||
brush_update(true, true);
|
||||
};
|
||||
}
|
||||
else
|
||||
@@ -842,7 +843,7 @@ void App::init_menu_tools()
|
||||
floating_color->find("title")->destroy();
|
||||
floating_color->on_color_changed = [this](Node* target, glm::vec4 color) {
|
||||
Canvas::I->m_current_brush->m_tip_color = color;
|
||||
brush_update();
|
||||
brush_update(true, false);
|
||||
};
|
||||
}
|
||||
else
|
||||
@@ -867,7 +868,7 @@ void App::init_menu_tools()
|
||||
floating_picker->m_autohide = false;
|
||||
floating_picker->on_color_change = [this](Node* target, glm::vec3 color) {
|
||||
Canvas::I->m_current_brush->m_tip_color = glm::vec4(color, 1.f);
|
||||
brush_update();
|
||||
brush_update(true, false);
|
||||
};
|
||||
}
|
||||
else
|
||||
@@ -1127,22 +1128,28 @@ void App::init_menu_about()
|
||||
}
|
||||
}
|
||||
|
||||
void App::brush_update()
|
||||
void App::brush_update(bool update_color, bool update_brush)
|
||||
{
|
||||
// brushes->select_brush(canvas->m_brush->id);
|
||||
// stroke->set_params(canvas->m_brush);
|
||||
render_task_async([this]
|
||||
render_task_async([this, update_color, update_brush]
|
||||
{
|
||||
stroke->update_controls();
|
||||
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_button_brush_current_preview->m_brush = *Canvas::I->m_current_brush;
|
||||
quick->m_button_brush_current_preview->draw_stroke();
|
||||
quick->m_button_color_current_inner->m_color = Canvas::I->m_current_brush->m_tip_color;
|
||||
if (floating_picker)
|
||||
floating_picker->set_color(Canvas::I->m_current_brush->m_tip_color);
|
||||
if (floating_color)
|
||||
floating_color->set_color(Canvas::I->m_current_brush->m_tip_color);
|
||||
if (update_brush)
|
||||
{
|
||||
stroke->update_controls();
|
||||
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_button_brush_current_preview->m_brush = *Canvas::I->m_current_brush;
|
||||
quick->m_button_brush_current_preview->draw_stroke();
|
||||
}
|
||||
if (update_color)
|
||||
{
|
||||
quick->m_button_color_current_inner->m_color = Canvas::I->m_current_brush->m_tip_color;
|
||||
if (floating_picker)
|
||||
floating_picker->set_color(Canvas::I->m_current_brush->m_tip_color);
|
||||
if (floating_color)
|
||||
floating_color->set_color(Canvas::I->m_current_brush->m_tip_color);
|
||||
}
|
||||
}, true);
|
||||
}
|
||||
|
||||
@@ -1299,7 +1306,7 @@ void App::initLayout()
|
||||
}
|
||||
}
|
||||
|
||||
brush_update();
|
||||
brush_update(true, true);
|
||||
|
||||
// hacky thing to make the toolbar buttons not steal events when moving cursor fast
|
||||
if (auto* toolbar = layout[main_id]->find<Node>("toolbar"))
|
||||
@@ -1526,7 +1533,7 @@ void App::ui_restore()
|
||||
*Canvas::I->m_current_brush = *b;
|
||||
Canvas::I->m_current_brush->m_tip_color = c;
|
||||
Canvas::I->m_current_brush->load();
|
||||
brush_update();
|
||||
brush_update(true, true);
|
||||
};
|
||||
break;
|
||||
}
|
||||
@@ -1537,7 +1544,7 @@ void App::ui_restore()
|
||||
floating_color->find("title")->destroy();
|
||||
floating_color->on_color_changed = [this](Node* target, glm::vec4 color) {
|
||||
Canvas::I->m_current_brush->m_tip_color = color;
|
||||
brush_update();
|
||||
brush_update(true, false);
|
||||
};
|
||||
break;
|
||||
}
|
||||
@@ -1547,7 +1554,7 @@ void App::ui_restore()
|
||||
floating_picker->m_autohide = false;
|
||||
floating_picker->on_color_change = [this](Node* target, glm::vec3 color) {
|
||||
Canvas::I->m_current_brush->m_tip_color = glm::vec4(color, 1.f);
|
||||
brush_update();
|
||||
brush_update(true, false);
|
||||
};
|
||||
break;
|
||||
}
|
||||
@@ -1604,7 +1611,7 @@ void App::ui_restore()
|
||||
*Canvas::I->m_current_brush = *b;
|
||||
Canvas::I->m_current_brush->m_tip_color = c;
|
||||
Canvas::I->m_current_brush->load();
|
||||
brush_update();
|
||||
brush_update(true, true);
|
||||
};
|
||||
break;
|
||||
}
|
||||
@@ -1615,7 +1622,7 @@ void App::ui_restore()
|
||||
floating_color->find("title")->destroy();
|
||||
floating_color->on_color_changed = [this](Node* target, glm::vec4 color) {
|
||||
Canvas::I->m_current_brush->m_tip_color = color;
|
||||
brush_update();
|
||||
brush_update(true, false);
|
||||
};
|
||||
break;
|
||||
}
|
||||
@@ -1625,7 +1632,7 @@ void App::ui_restore()
|
||||
floating_picker->m_autohide = false;
|
||||
floating_picker->on_color_change = [this](Node* target, glm::vec3 color) {
|
||||
Canvas::I->m_current_brush->m_tip_color = glm::vec4(color, 1.f);
|
||||
brush_update();
|
||||
brush_update(true, false);
|
||||
};
|
||||
break;
|
||||
}
|
||||
@@ -1681,7 +1688,7 @@ void App::ui_restore()
|
||||
*Canvas::I->m_current_brush = *b;
|
||||
Canvas::I->m_current_brush->m_tip_color = c;
|
||||
Canvas::I->m_current_brush->load();
|
||||
brush_update();
|
||||
brush_update(true, true);
|
||||
};
|
||||
break;
|
||||
}
|
||||
@@ -1692,7 +1699,7 @@ void App::ui_restore()
|
||||
floating_color->find("title")->destroy();
|
||||
floating_color->on_color_changed = [this](Node* target, glm::vec4 color) {
|
||||
Canvas::I->m_current_brush->m_tip_color = color;
|
||||
brush_update();
|
||||
brush_update(true, false);
|
||||
};
|
||||
break;
|
||||
}
|
||||
@@ -1702,7 +1709,7 @@ void App::ui_restore()
|
||||
floating_picker->m_autohide = false;
|
||||
floating_picker->on_color_change = [this](Node* target, glm::vec3 color) {
|
||||
Canvas::I->m_current_brush->m_tip_color = glm::vec4(color, 1.f);
|
||||
brush_update();
|
||||
brush_update(true, false);
|
||||
};
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user