quick switch Pen/Erase with E

This commit is contained in:
2018-07-27 12:23:28 +02:00
parent b06453bd7b
commit 9b5094f510
6 changed files with 21 additions and 9 deletions

View File

@@ -182,7 +182,12 @@
</node>
</node>
<node height="20" pad="1" width="100%"><slider-h id="tip-mix"/></node>
<node height="20" pad="1" width="100%"><slider-h id="tip-stencil"/></node>
<node height="20" pad="1" width="100%" dir="row">
<slider-h id="tip-stencil" width="1" grow="1"/>
<node width="20" pad="0" margin="0 0 0 2">
<button text="..." height="20"></button>
</node>
</node>
<node height="20" pad="1" width="100%"><slider-h id="tip-wet"/></node>
<node height="20" pad="1" width="100%"><slider-h id="tip-noise"/></node>
</border>

View File

@@ -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<NodeButton>("btn-pick")->set_color(
mode->m_picking ? color_button_hlight : color_button_normal);
layout[main_id]->find<NodeButton>("btn-pen")->set_color(
canvas->m_canvas->m_current_mode == Canvas::kCanvasMode::Draw ? color_button_hlight : color_button_normal);
layout[main_id]->find<NodeButton>("btn-erase")->set_color(
canvas->m_canvas->m_current_mode == Canvas::kCanvasMode::Erase ? color_button_hlight : color_button_normal);
layout[main_id]->find<NodeButton>("btn-touchlock")->set_color(
canvas->m_canvas->m_touch_lock ? color_button_hlight : color_button_normal);

View File

@@ -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));

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;