implement pen and erase as strategy pattern introducing the CanvasMode classes

This commit is contained in:
2017-05-04 23:32:02 +01:00
parent 773ff61f92
commit 484bf6fab4
6 changed files with 162 additions and 68 deletions

View File

@@ -3,6 +3,10 @@
#include "canvas.h"
ui::Canvas* ui::Canvas::I;
CanvasMode* ui::Canvas::modes[] = {
new CanvasModePen,
new CanvasModePen,
};
glm::vec3 ui::Canvas::m_plane_origin[6] = {
{ 0, 0,-1}, // front
{ 1, 0, 0}, // right
@@ -88,7 +92,7 @@ void ui::Canvas::stroke_draw()
else
{
glDisable(GL_BLEND);
if (m_state == kPenState::Erase)
if (m_state == kCanvasMode::Erase)
{
ShaderManager::use(ui::kShader::StrokeErase);
//ShaderManager::u_vec4(kShaderUniform::Col, m_brush.m_tip_color);
@@ -275,7 +279,7 @@ void ui::Canvas::stroke_commit()
m_tex2[i].bind();
m_sampler.bind(0);
m_sampler_bg.bind(1);
if (m_state == kPenState::Erase)
if (m_state == kCanvasMode::Erase)
{
ShaderManager::use(ui::kShader::Texture);
}
@@ -324,7 +328,7 @@ void ui::Canvas::stroke_start(glm::vec2 point, float pressure, const ui::Brush&
m_dirty_box[i] = glm::vec4(m_width, m_height, 0, 0); // reset bounding box
m_dirty_face[i] = false;
if (m_state == kPenState::Erase)
if (m_state == kCanvasMode::Erase)
{
m_layers[m_current_layer_idx].m_rtt[i].bindFramebuffer();
m_tmp[i].bindTexture();