From 9b5094f51083252b293b76e1b6a6a204c4f93448 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Fri, 27 Jul 2018 12:23:28 +0200 Subject: [PATCH] quick switch Pen/Erase with E --- data/layout.xml | 7 ++++++- engine/app.cpp | 4 ++++ engine/canvas.cpp | 2 +- engine/canvas.h | 1 + engine/canvas_modes.cpp | 1 + engine/node_canvas.cpp | 15 ++++++++------- 6 files changed, 21 insertions(+), 9 deletions(-) diff --git a/data/layout.xml b/data/layout.xml index 2c087af..99e13d4 100644 --- a/data/layout.xml +++ b/data/layout.xml @@ -182,7 +182,12 @@ - + + + + + + diff --git a/engine/app.cpp b/engine/app.cpp index 6505b1f..6ebc4c8 100644 --- a/engine/app.cpp +++ b/engine/app.cpp @@ -335,6 +335,10 @@ void App::update(float dt) CanvasModePen* mode = (CanvasModePen*)canvas->m_canvas->modes[(int)Canvas::kCanvasMode::Draw][0]; layout[main_id]->find("btn-pick")->set_color( mode->m_picking ? color_button_hlight : color_button_normal); + layout[main_id]->find("btn-pen")->set_color( + canvas->m_canvas->m_current_mode == Canvas::kCanvasMode::Draw ? color_button_hlight : color_button_normal); + layout[main_id]->find("btn-erase")->set_color( + canvas->m_canvas->m_current_mode == Canvas::kCanvasMode::Erase ? color_button_hlight : color_button_normal); layout[main_id]->find("btn-touchlock")->set_color( canvas->m_canvas->m_touch_lock ? color_button_hlight : color_button_normal); diff --git a/engine/canvas.cpp b/engine/canvas.cpp index b7b4492..183bd1e 100644 --- a/engine/canvas.cpp +++ b/engine/canvas.cpp @@ -522,7 +522,7 @@ void ui::Canvas::stroke_commit() ui::ShaderManager::use(kShader::CompErase); ui::ShaderManager::u_int(kShaderUniform::Tex, 0); ui::ShaderManager::u_int(kShaderUniform::TexStroke, 1); - ui::ShaderManager::u_int(kShaderUniform::TexMask, 2); + //ui::ShaderManager::u_int(kShaderUniform::TexMask, 2); ui::ShaderManager::u_float(kShaderUniform::Alpha, m_current_stroke->m_brush.m_tip_opacity); ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f)); diff --git a/engine/canvas.h b/engine/canvas.h index f12e9f8..61b69cc 100644 --- a/engine/canvas.h +++ b/engine/canvas.h @@ -90,6 +90,7 @@ public: glm::vec2 m_cam_rot{ 0 }; glm::vec3 m_cam_pos{ 0 }; float m_cam_fov = 85; + glm::vec2 m_cur_pos; Brush m_current_brush; diff --git a/engine/canvas_modes.cpp b/engine/canvas_modes.cpp index c20ba1f..3f0a076 100644 --- a/engine/canvas_modes.cpp +++ b/engine/canvas_modes.cpp @@ -194,6 +194,7 @@ void CanvasModePen::leave() void CanvasModePen::enter() { + m_cur_pos = ui::Canvas::I->m_cur_pos; if (m_valid_brush) { canvas->m_current_brush = m_brush; diff --git a/engine/node_canvas.cpp b/engine/node_canvas.cpp index 6dd5ae3..9ac1d80 100644 --- a/engine/node_canvas.cpp +++ b/engine/node_canvas.cpp @@ -123,10 +123,10 @@ void NodeCanvas::draw() ui::ShaderManager::use(kShader::CompErase); ui::ShaderManager::u_int(kShaderUniform::Tex, 0); ui::ShaderManager::u_int(kShaderUniform::TexStroke, 1); - ui::ShaderManager::u_int(kShaderUniform::TexMask, 2); + //ui::ShaderManager::u_int(kShaderUniform::TexMask, 2); ui::ShaderManager::u_float(kShaderUniform::Alpha, m_canvas->m_current_stroke->m_brush.m_tip_opacity); - ui::ShaderManager::u_int(kShaderUniform::Lock, m_canvas->m_layers[layer_index].m_alpha_locked); - ui::ShaderManager::u_int(kShaderUniform::Mask, m_canvas->m_smask_active); + //ui::ShaderManager::u_int(kShaderUniform::Lock, m_canvas->m_layers[layer_index].m_alpha_locked); + //ui::ShaderManager::u_int(kShaderUniform::Mask, m_canvas->m_smask_active); ui::ShaderManager::u_mat4(kShaderUniform::MVP, plane_mvp_z); glActiveTexture(GL_TEXTURE0); m_canvas->m_layers[layer_index].m_rtt[plane_index].bindTexture(); @@ -288,13 +288,14 @@ kEventResult NodeCanvas::handle_event(Event* e) case kEventType::MouseUpR: case kEventType::MouseMove: case kEventType::MouseCancel: + m_canvas->m_cur_pos = loc; if (!(m_canvas->m_touch_lock && me->m_source == kEventSource::Touch)) for (auto& mode : *m_canvas->m_mode) mode->on_MouseEvent(me, loc); break; case kEventType::KeyDown: - // if (ke->m_key == kKey::KeyE) - // m_canvas->m_state = ui::Canvas::kPenState::Erase; + if (ke->m_key == kKey::KeyE) + ui::Canvas::set_mode(ui::Canvas::kCanvasMode::Erase); // if (ke->m_key == kKey::KeySpacebar) // m_canvas->m_alpha_lock = true; // if (ke->m_key == kKey::AndroidVolumeUp) @@ -307,8 +308,8 @@ kEventResult NodeCanvas::handle_event(Event* e) break; case kEventType::KeyUp: - // if (ke->m_key == kKey::KeyE) - // m_canvas->m_state = ui::Canvas::kPenState::Draw; + if (ke->m_key == kKey::KeyE) + ui::Canvas::set_mode(ui::Canvas::kCanvasMode::Draw); // if (ke->m_key == kKey::KeySpacebar) // m_canvas->m_alpha_lock = false; break;