refactor Brush to be used in shared_ptr
This commit is contained in:
@@ -120,7 +120,7 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
m_picking = true;
|
||||
canvas->pick_start();
|
||||
glm::vec4 pix = canvas->pick_get(loc);
|
||||
canvas->m_current_brush.m_tip_color = pix;
|
||||
canvas->m_current_brush->m_tip_color = pix;
|
||||
App::I.color->set_color(pix);
|
||||
}
|
||||
else
|
||||
@@ -140,7 +140,7 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
{
|
||||
node->mouse_release();
|
||||
glm::vec4 pix = canvas->pick_get(loc);
|
||||
canvas->m_current_brush.m_tip_color = pix;
|
||||
canvas->m_current_brush->m_tip_color = pix;
|
||||
App::I.color->set_color(pix);
|
||||
canvas->pick_end();
|
||||
}
|
||||
@@ -153,7 +153,7 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
m_resizing = true;
|
||||
m_dragging = true;
|
||||
m_size_pos_start = m_cur_pos;
|
||||
m_size_value_start = canvas->m_current_brush.m_tip_size;
|
||||
m_size_value_start = canvas->m_current_brush->m_tip_size;
|
||||
node->mouse_capture();
|
||||
}
|
||||
break;
|
||||
@@ -171,13 +171,13 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
if (m_dragging && m_picking)
|
||||
{
|
||||
glm::vec4 pix = canvas->pick_get(loc);
|
||||
canvas->m_current_brush.m_tip_color = pix;
|
||||
canvas->m_current_brush->m_tip_color = pix;
|
||||
App::I.color->set_color(pix);
|
||||
}
|
||||
if (m_dragging && m_resizing)
|
||||
{
|
||||
auto diff = m_cur_pos - m_size_pos_start;
|
||||
canvas->m_current_brush.m_tip_size = m_size_value_start + diff.x * 0.001f;
|
||||
canvas->m_current_brush->m_tip_size = m_size_value_start + diff.x * 0.001f;
|
||||
}
|
||||
m_cur_pos = loc;
|
||||
break;
|
||||
@@ -204,14 +204,14 @@ void CanvasModePen::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const
|
||||
{
|
||||
auto pos = m_resizing ? m_size_pos_start : m_cur_pos;
|
||||
if (App::I.keys[(int)kKey::KeyAlt] && !m_resizing)
|
||||
pos.x = pos.x - canvas->m_current_brush.m_tip_size * 500.f;
|
||||
pos.x = pos.x - canvas->m_current_brush->m_tip_size * 500.f;
|
||||
ShaderManager::use(kShader::StrokePreview);
|
||||
ShaderManager::u_int(kShaderUniform::Tex, 0);
|
||||
float tip_scale_fix = 1.f / glm::tan(glm::radians(Canvas::I->m_cam_fov * 0.5f));
|
||||
float tip_scale = canvas->m_current_brush.m_tip_size * 800.f * tip_scale_fix;
|
||||
float tip_angle = canvas->m_current_brush.m_tip_angle * (float)(M_PI * 2.0);
|
||||
float tip_scale = canvas->m_current_brush->m_tip_size * 800.f * tip_scale_fix;
|
||||
float tip_angle = canvas->m_current_brush->m_tip_angle * (float)(M_PI * 2.0);
|
||||
glm::vec2 tip_offset = glm::vec2(0);
|
||||
auto tip_color = glm::vec4(glm::vec3(canvas->m_current_brush.m_tip_color), 1);
|
||||
auto tip_color = glm::vec4(glm::vec3(canvas->m_current_brush->m_tip_color), 1);
|
||||
if (canvas->m_current_stroke)
|
||||
{
|
||||
const auto& s = canvas->m_current_stroke->m_prev_sample;
|
||||
@@ -234,7 +234,7 @@ void CanvasModePen::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const
|
||||
bool blend = glIsEnabled(GL_BLEND);
|
||||
glEnable(GL_BLEND);
|
||||
glActiveTexture(GL_TEXTURE0);
|
||||
auto& tex = TextureManager::get(canvas->m_current_brush.m_tex_id);
|
||||
auto& tex = *canvas->m_current_brush->m_tip_texture;
|
||||
tex.bind();
|
||||
canvas->m_sampler_brush.bind(0);
|
||||
canvas->m_plane.draw_fill();
|
||||
@@ -245,21 +245,20 @@ void CanvasModePen::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const
|
||||
|
||||
void CanvasModePen::leave()
|
||||
{
|
||||
m_brush = canvas->m_current_brush;
|
||||
*m_brush = *canvas->m_current_brush;
|
||||
}
|
||||
|
||||
void CanvasModePen::enter()
|
||||
{
|
||||
m_cur_pos = Canvas::I->m_cur_pos;
|
||||
if (m_valid_brush)
|
||||
if (m_brush)
|
||||
{
|
||||
canvas->m_current_brush = m_brush;
|
||||
*canvas->m_current_brush = *m_brush;
|
||||
App::I.brush_update();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_brush = canvas->m_current_brush;
|
||||
m_valid_brush = true;
|
||||
m_brush = std::make_shared<Brush>(*canvas->m_current_brush);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -306,7 +305,7 @@ void CanvasModeLine::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, cons
|
||||
{
|
||||
ShaderManager::use(kShader::Color);
|
||||
ShaderManager::u_mat4(kShaderUniform::MVP, ortho);
|
||||
ShaderManager::u_vec4(kShaderUniform::Col, canvas->m_current_brush.m_tip_color);
|
||||
ShaderManager::u_vec4(kShaderUniform::Col, canvas->m_current_brush->m_tip_color);
|
||||
static glm::vec4 AB[2];
|
||||
AB[0] = { m_drag_start, 0, 1 };
|
||||
AB[1] = { m_drag_pos, 0, 1 };
|
||||
|
||||
Reference in New Issue
Block a user