refactor to have a single global current brush on Canvas::m_current_brush and make panels read from it for drawing instead of relying on their own copy
This commit is contained in:
@@ -128,47 +128,34 @@ void App::init_sidebar()
|
||||
presets->create();
|
||||
presets->loaded();
|
||||
|
||||
if (canvas)
|
||||
{
|
||||
stroke->m_canvas->m_brush.m_tip_color = color->m_color;
|
||||
stroke->m_canvas->draw_stroke();
|
||||
canvas->m_brush = stroke->m_canvas->m_brush;
|
||||
}
|
||||
// if (canvas)
|
||||
// {
|
||||
// ui::Canvas::I->m_current_brush.m_tip_color = color->m_color;
|
||||
// stroke->m_canvas->draw_stroke();
|
||||
// }
|
||||
|
||||
brushes->on_brush_changed = [this](Node* target, int index) {
|
||||
stroke->m_canvas->m_brush.m_tex_id = brushes->get_texture_id(index);
|
||||
stroke->m_canvas->m_brush.id = brushes->get_brush_id(index);
|
||||
stroke->m_canvas->draw_stroke();
|
||||
canvas->m_brush = stroke->m_canvas->m_brush;
|
||||
if (on_brush_select)
|
||||
on_brush_select(index);
|
||||
};
|
||||
// brushes->on_brush_changed = [this](Node* target, int index) {
|
||||
// ui::Canvas::I->m_current_brush.m_tex_id = brushes->get_texture_id(index);
|
||||
// ui::Canvas::I->m_current_brush.id = brushes->get_brush_id(index);
|
||||
// stroke->m_canvas->draw_stroke();
|
||||
// };
|
||||
presets->on_brush_changed = [this](Node* target, int index) {
|
||||
auto b = presets->get_brush(index);
|
||||
// don't change some params
|
||||
b.m_tip_size = stroke->m_canvas->m_brush.m_tip_size;
|
||||
b.m_tip_color = stroke->m_canvas->m_brush.m_tip_color;
|
||||
stroke->set_params(b);
|
||||
canvas->m_brush = stroke->m_canvas->m_brush;
|
||||
if (on_brush_select)
|
||||
on_brush_select(index);
|
||||
b.m_tip_size = ui::Canvas::I->m_current_brush.m_tip_size;
|
||||
b.m_tip_color = ui::Canvas::I->m_current_brush.m_tip_color;
|
||||
ui::Canvas::I->m_current_brush = b;
|
||||
};
|
||||
|
||||
color->on_color_changed = [this](Node* target, glm::vec4 color) {
|
||||
stroke->m_canvas->m_brush.m_tip_color = color;
|
||||
// stroke->m_canvas->draw_stroke();
|
||||
if (canvas)
|
||||
canvas->m_brush = stroke->m_canvas->m_brush;
|
||||
if (on_color_change)
|
||||
on_color_change(color);
|
||||
};
|
||||
|
||||
stroke->on_stroke_change = [this](Node*target) {
|
||||
if (canvas)
|
||||
canvas->m_brush = stroke->m_canvas->m_brush;
|
||||
if (on_stroke_change)
|
||||
on_stroke_change();
|
||||
};
|
||||
// color->on_color_changed = [this](Node* target, glm::vec4 color) {
|
||||
// ui::Canvas::I->m_current_brush.m_tip_color = color;
|
||||
// // stroke->m_canvas->draw_stroke();
|
||||
// };
|
||||
//
|
||||
// stroke->on_stroke_change = [this](Node*target) {
|
||||
// if (canvas)
|
||||
// canvas->m_brush = stroke->m_canvas->m_brush;
|
||||
// };
|
||||
|
||||
layers->on_layer_add = [this](Node*) {
|
||||
canvas->m_canvas->layer_add(layers->m_layers.back()->m_label_text.c_str());
|
||||
@@ -329,7 +316,7 @@ void App::init_toolbar_draw()
|
||||
if (auto* button = layout[main_id]->find<NodeButtonCustom>("btn-bucket"))
|
||||
{
|
||||
button->on_click = [this](Node*) {
|
||||
canvas->m_canvas->clear(canvas->m_brush.m_tip_color);
|
||||
canvas->m_canvas->clear(ui::Canvas::I->m_current_brush.m_tip_color);
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -427,8 +414,8 @@ void App::init_menu_edit()
|
||||
|
||||
void App::brush_update()
|
||||
{
|
||||
brushes->select_brush(canvas->m_brush.id);
|
||||
stroke->set_params(canvas->m_brush);
|
||||
// brushes->select_brush(canvas->m_brush.id);
|
||||
// stroke->set_params(canvas->m_brush);
|
||||
}
|
||||
|
||||
void App::init_menu_layer()
|
||||
@@ -552,8 +539,7 @@ void App::initLayout()
|
||||
b.m_tip_flow = .5f;
|
||||
b.m_tip_spacing = .1f;
|
||||
b.m_tip_opacity = 1.f;
|
||||
stroke->m_canvas->m_brush = b;
|
||||
canvas->m_brush = b;
|
||||
ui::Canvas::I->m_current_brush = b;
|
||||
|
||||
brush_update();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user