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;