refactor canvas modes
This commit is contained in:
@@ -6,9 +6,6 @@
|
||||
#include "node_progress_bar.h"
|
||||
#include "node_dialog_picker.h"
|
||||
|
||||
static glm::vec4 color_button_normal{ .1, .1, .1, 1 };
|
||||
static glm::vec4 color_button_hlight{ 1, .0, .0, 1 };
|
||||
|
||||
void App::title_update()
|
||||
{
|
||||
static char str[256];
|
||||
@@ -126,21 +123,8 @@ void App::init_sidebar()
|
||||
grid = find_or_create_panel<NodePanelGrid>(panels);
|
||||
//presets = find_or_create_panel<NodePanelBrushPreset>(panels);
|
||||
|
||||
// if (canvas)
|
||||
// {
|
||||
// Canvas::I->m_current_brush->m_tip_color = color->m_color;
|
||||
// stroke->m_canvas->draw_stroke();
|
||||
// }
|
||||
|
||||
//presets->on_brush_changed = [this](Node* target, std::shared_ptr<Brush>& b) {
|
||||
// // don't change some params
|
||||
// b->m_tip_size = Canvas::I->m_current_brush->m_tip_size;
|
||||
// b->m_tip_color = Canvas::I->m_current_brush->m_tip_color;
|
||||
// *Canvas::I->m_current_brush = *b;
|
||||
// stroke->m_preview->draw_stroke();
|
||||
// stroke->m_brush_thumb->set_image(b->m_brush_thumb_path);
|
||||
// stroke->update_controls();
|
||||
//};
|
||||
canvas->m_canvas->on_mode_changed = [this](kCanvasMode prev, kCanvasMode mode) {
|
||||
};
|
||||
color->on_color_changed = [this](Node* target, glm::vec4 color) {
|
||||
Canvas::I->m_current_brush->m_tip_color = color;
|
||||
};
|
||||
@@ -226,7 +210,7 @@ void App::init_sidebar()
|
||||
button->on_click = [this, button](Node*) {
|
||||
panels->get_child_index(stroke.get()) == -1 ? panels->add_child(stroke) : panels->remove_child(stroke.get());
|
||||
panels->fix_scroll();
|
||||
button->set_color(panels->get_child_index(stroke.get()) == -1 ? color_button_normal : color_button_hlight);
|
||||
button->set_active(panels->get_child_index(stroke.get()) == -1);
|
||||
};
|
||||
}
|
||||
//if (auto* button = layout[main_id]->find<NodeButtonCustom>("btn-brush"))
|
||||
@@ -250,7 +234,7 @@ void App::init_sidebar()
|
||||
button->on_click = [this, button](Node*) {
|
||||
panels->get_child_index(color.get()) == -1 ? panels->add_child(color) : panels->remove_child(color.get());
|
||||
panels->fix_scroll();
|
||||
button->set_color(panels->get_child_index(color.get()) == -1 ? color_button_normal : color_button_hlight);
|
||||
button->set_active(panels->get_child_index(color.get()) == -1);
|
||||
// auto pick = layout[main_id]->add_child<NodeColorPicker>();
|
||||
// pick->m_color_cur->m_color = Canvas::I->m_current_brush->m_tip_color;
|
||||
};
|
||||
@@ -260,7 +244,7 @@ void App::init_sidebar()
|
||||
button->on_click = [this, button](Node*) {
|
||||
panels->get_child_index(layers.get()) == -1 ? panels->add_child(layers) : panels->remove_child(layers.get());
|
||||
panels->fix_scroll();
|
||||
button->set_color(panels->get_child_index(layers.get()) == -1 ? color_button_normal : color_button_hlight);
|
||||
button->set_active(panels->get_child_index(layers.get()) == -1);
|
||||
};
|
||||
}
|
||||
if (auto* button = layout[main_id]->find<NodeButtonCustom>("btn-grids-panel"))
|
||||
@@ -268,23 +252,23 @@ void App::init_sidebar()
|
||||
button->on_click = [this, button](Node*) {
|
||||
panels->get_child_index(grid.get()) == -1 ? panels->add_child(grid) : panels->remove_child(grid.get());
|
||||
panels->fix_scroll();
|
||||
button->set_color(panels->get_child_index(grid.get()) == -1 ? color_button_normal : color_button_hlight);
|
||||
button->set_active(panels->get_child_index(grid.get()) == -1);
|
||||
};
|
||||
}
|
||||
}
|
||||
template<class T>
|
||||
void select_button(Node* main, T* button) {
|
||||
main->find<NodeButtonCustom>("btn-pen")->set_color(color_button_normal);
|
||||
main->find<NodeButtonCustom>("btn-erase")->set_color(color_button_normal);
|
||||
main->find<NodeButtonCustom>("btn-line")->set_color(color_button_normal);
|
||||
main->find<NodeButton>("btn-cam")->set_color(color_button_normal);
|
||||
main->find<NodeButton>("btn-grid")->set_color(color_button_normal);
|
||||
main->find<NodeButton>("btn-copy")->set_color(color_button_normal);
|
||||
main->find<NodeButton>("btn-cut")->set_color(color_button_normal);
|
||||
main->find<NodeButtonCustom>("btn-pen")->set_active(false);
|
||||
main->find<NodeButtonCustom>("btn-erase")->set_active(false);
|
||||
main->find<NodeButtonCustom>("btn-line")->set_active(false);
|
||||
main->find<NodeButton>("btn-cam")->set_active(false);
|
||||
main->find<NodeButton>("btn-grid")->set_active(false);
|
||||
main->find<NodeButton>("btn-copy")->set_active(false);
|
||||
main->find<NodeButton>("btn-cut")->set_active(false);
|
||||
//main->find<NodeButton>("btn-fill")->set_color(color_button_normal);
|
||||
main->find<NodeButtonCustom>("btn-mask-free")->set_color(color_button_normal);
|
||||
main->find<NodeButtonCustom>("btn-mask-line")->set_color(color_button_normal);
|
||||
button->set_color(color_button_hlight);
|
||||
main->find<NodeButtonCustom>("btn-mask-free")->set_active(false);
|
||||
main->find<NodeButtonCustom>("btn-mask-line")->set_active(false);
|
||||
button->set_active(false);
|
||||
};
|
||||
|
||||
void App::init_toolbar_draw()
|
||||
@@ -293,16 +277,16 @@ void App::init_toolbar_draw()
|
||||
{
|
||||
button->on_click = [this, button](Node*) {
|
||||
select_button(layout[main_id], button);
|
||||
Canvas::set_mode(Canvas::kCanvasMode::Draw);
|
||||
Canvas::set_mode(kCanvasMode::Draw);
|
||||
};
|
||||
button->set_color(color_button_hlight);
|
||||
Canvas::set_mode(Canvas::kCanvasMode::Draw);
|
||||
//button->set_active(true);
|
||||
Canvas::set_mode(kCanvasMode::Draw);
|
||||
}
|
||||
if (auto* button = layout[main_id]->find<NodeButtonCustom>("btn-pick"))
|
||||
{
|
||||
button->on_click = [this](Node*) {
|
||||
CanvasModePen* mode = (CanvasModePen*)canvas->m_canvas->modes[(int)Canvas::kCanvasMode::Draw][0];
|
||||
if (mode && canvas->m_canvas->m_current_mode == Canvas::kCanvasMode::Draw)
|
||||
CanvasModePen* mode = (CanvasModePen*)canvas->m_canvas->modes[(int)kCanvasMode::Draw][0];
|
||||
if (mode && canvas->m_canvas->m_current_mode == kCanvasMode::Draw)
|
||||
{
|
||||
mode->m_picking = !mode->m_picking;
|
||||
}
|
||||
@@ -318,67 +302,67 @@ void App::init_toolbar_draw()
|
||||
{
|
||||
button->on_click = [this, button](Node*) {
|
||||
select_button(layout[main_id], button);
|
||||
Canvas::set_mode(Canvas::kCanvasMode::Erase);
|
||||
Canvas::set_mode(kCanvasMode::Erase);
|
||||
};
|
||||
}
|
||||
if (auto* button = layout[main_id]->find<NodeButtonCustom>("btn-line"))
|
||||
{
|
||||
button->on_click = [this, button](Node*) {
|
||||
select_button(layout[main_id], button);
|
||||
Canvas::set_mode(Canvas::kCanvasMode::Line);
|
||||
Canvas::set_mode(kCanvasMode::Line);
|
||||
};
|
||||
}
|
||||
if (auto* button = layout[main_id]->find<NodeButton>("btn-cam"))
|
||||
{
|
||||
button->on_click = [this, button](Node*) {
|
||||
select_button(layout[main_id], button);
|
||||
Canvas::set_mode(Canvas::kCanvasMode::Camera);
|
||||
Canvas::set_mode(kCanvasMode::Camera);
|
||||
};
|
||||
}
|
||||
if (auto* button = layout[main_id]->find<NodeButton>("btn-grid"))
|
||||
{
|
||||
button->on_click = [this, button](Node*) {
|
||||
select_button(layout[main_id], button);
|
||||
Canvas::set_mode(Canvas::kCanvasMode::Grid);
|
||||
Canvas::set_mode(kCanvasMode::Grid);
|
||||
};
|
||||
}
|
||||
if (auto* button = layout[main_id]->find<NodeButton>("btn-copy"))
|
||||
{
|
||||
button->on_click = [this, button](Node*) {
|
||||
select_button(layout[main_id], button);
|
||||
auto m = static_cast<CanvasModeTransform*>(canvas->m_canvas->modes[(int)Canvas::kCanvasMode::Transform][0]);
|
||||
auto m = static_cast<CanvasModeTransform*>(canvas->m_canvas->modes[(int)kCanvasMode::Copy][0]);
|
||||
m->m_action = CanvasModeTransform::ActionType::Copy;
|
||||
Canvas::set_mode(Canvas::kCanvasMode::Transform);
|
||||
Canvas::set_mode(kCanvasMode::Copy);
|
||||
};
|
||||
}
|
||||
if (auto* button = layout[main_id]->find<NodeButton>("btn-cut"))
|
||||
{
|
||||
button->on_click = [this, button](Node*) {
|
||||
select_button(layout[main_id], button);
|
||||
auto m = static_cast<CanvasModeTransform*>(canvas->m_canvas->modes[(int)Canvas::kCanvasMode::Transform][0]);
|
||||
auto m = static_cast<CanvasModeTransform*>(canvas->m_canvas->modes[(int)kCanvasMode::Cut][0]);
|
||||
m->m_action = CanvasModeTransform::ActionType::Cut;
|
||||
Canvas::set_mode(Canvas::kCanvasMode::Transform);
|
||||
Canvas::set_mode(kCanvasMode::Cut);
|
||||
};
|
||||
}
|
||||
if (auto* button = layout[main_id]->find<NodeButton>("btn-fill"))
|
||||
{
|
||||
button->on_click = [this, button](Node*) {
|
||||
select_button(layout[main_id], button);
|
||||
Canvas::set_mode(Canvas::kCanvasMode::Fill);
|
||||
Canvas::set_mode(kCanvasMode::Fill);
|
||||
};
|
||||
}
|
||||
if (auto* button = layout[main_id]->find<NodeButtonCustom>("btn-mask-free"))
|
||||
{
|
||||
button->on_click = [this, button](Node*) {
|
||||
select_button(layout[main_id], button);
|
||||
Canvas::set_mode(Canvas::kCanvasMode::MaskFree);
|
||||
Canvas::set_mode(kCanvasMode::MaskFree);
|
||||
};
|
||||
}
|
||||
if (auto* button = layout[main_id]->find<NodeButtonCustom>("btn-mask-line"))
|
||||
{
|
||||
button->on_click = [this, button](Node*) {
|
||||
select_button(layout[main_id], button);
|
||||
Canvas::set_mode(Canvas::kCanvasMode::MaskLine);
|
||||
Canvas::set_mode(kCanvasMode::MaskLine);
|
||||
};
|
||||
}
|
||||
if (auto* button = layout[main_id]->find<NodeButtonCustom>("btn-bucket"))
|
||||
@@ -426,10 +410,10 @@ void App::init_menu_file()
|
||||
}
|
||||
else
|
||||
{
|
||||
auto m = static_cast<CanvasModeTransform*>(canvas->m_canvas->modes[(int)Canvas::kCanvasMode::Transform][0]);
|
||||
auto m = static_cast<CanvasModeTransform*>(canvas->m_canvas->modes[(int)kCanvasMode::Import][0]);
|
||||
m->m_action = CanvasModeTransform::ActionType::Import;
|
||||
m->m_source_image = std::move(img);
|
||||
Canvas::set_mode(Canvas::kCanvasMode::Transform);
|
||||
Canvas::set_mode(kCanvasMode::Import);
|
||||
}
|
||||
async_redraw();
|
||||
async_end();
|
||||
@@ -701,7 +685,7 @@ void App::init_menu_layer()
|
||||
popup->m_flood_events = true;
|
||||
popup->m_capture_children = false;
|
||||
popup->find<NodeButtonCustom>("clear-grids")->on_click = [this](Node*) {
|
||||
CanvasModeGrid* mode = (CanvasModeGrid*)Canvas::modes[(int)Canvas::kCanvasMode::Grid][0];
|
||||
CanvasModeGrid* mode = (CanvasModeGrid*)Canvas::modes[(int)kCanvasMode::Grid][0];
|
||||
mode->clear();
|
||||
popup->mouse_release();
|
||||
popup->destroy();
|
||||
|
||||
Reference in New Issue
Block a user