refactor to have a single global current brush on Canvas::m_current_brush and make panels read from it for drawing instead of relying on their own copy
This commit is contained in:
@@ -36,7 +36,7 @@ void CanvasModeBasicCamera::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
break;
|
||||
case kEventType::MouseScroll:
|
||||
m_zoom_canvas += me->m_scroll_delta * 0.1f;
|
||||
canvas->m_cam_fov -= me->m_scroll_delta * 20.1f;
|
||||
canvas->m_cam_fov -= me->m_scroll_delta * 2.0f;
|
||||
App::I.brush_update();
|
||||
break;
|
||||
case kEventType::MouseCancel:
|
||||
@@ -79,11 +79,10 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
{
|
||||
m_picking = true;
|
||||
canvas->pick_start();
|
||||
//canvas->m_show_tmp = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
canvas->stroke_start(loc, me->m_pressure, node->m_brush);
|
||||
canvas->stroke_start(loc, me->m_pressure, canvas->m_current_brush);
|
||||
}
|
||||
m_dragging = true;
|
||||
node->mouse_capture();
|
||||
@@ -97,12 +96,8 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
if (m_dragging && m_picking)
|
||||
{
|
||||
node->mouse_release();
|
||||
//canvas->m_show_tmp = false;
|
||||
|
||||
glm::vec4 pix = canvas->pick_get(loc);
|
||||
auto hsv = convert_rgb2hsv(glm::vec3(pix[0], pix[1], pix[2]));
|
||||
App::I.color->m_hue->set_value(hsv.x);
|
||||
App::I.color->m_quad->set_value(1.f - hsv.y, 1.f - hsv.z);
|
||||
canvas->m_current_brush.m_tip_color = pix;
|
||||
}
|
||||
m_dragging = false;
|
||||
m_picking = false;
|
||||
@@ -113,9 +108,7 @@ void CanvasModePen::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
if (m_dragging && m_picking)
|
||||
{
|
||||
glm::vec4 pix = canvas->pick_get(loc);
|
||||
auto hsv = convert_rgb2hsv(glm::vec3(pix[0], pix[1], pix[2]));
|
||||
App::I.color->m_hue->set_value(hsv.x);
|
||||
App::I.color->m_quad->set_value(1.f - hsv.y, 1.f - hsv.z);
|
||||
canvas->m_current_brush.m_tip_color = pix;
|
||||
}
|
||||
m_cur_pos = loc;
|
||||
break;
|
||||
@@ -143,8 +136,8 @@ void CanvasModePen::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const
|
||||
{
|
||||
ui::ShaderManager::use(ui::kShader::StrokePreview);
|
||||
ui::ShaderManager::u_int(ui::kShaderUniform::Tex, 0);
|
||||
ui::ShaderManager::u_float(ui::kShaderUniform::Alpha, node->m_brush.m_tip_flow);
|
||||
auto tip_color = glm::vec4(glm::vec3(node->m_brush.m_tip_color), 1);
|
||||
ui::ShaderManager::u_float(ui::kShaderUniform::Alpha, canvas->m_current_brush.m_tip_flow);
|
||||
auto tip_color = glm::vec4(glm::vec3(canvas->m_current_brush.m_tip_color), 1);
|
||||
ui::ShaderManager::u_vec4(ui::kShaderUniform::Col, tip_color);
|
||||
//ui::ShaderManager::u_int(ui::kShaderUniform::Highlight, 0);
|
||||
float tip_scale = 1.f / glm::tan(glm::radians(ui::Canvas::I->m_cam_fov * 0.5f));
|
||||
@@ -152,11 +145,11 @@ void CanvasModePen::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const
|
||||
glm::scale(glm::vec3(1, -1, 1)) *
|
||||
ortho *
|
||||
glm::translate(glm::vec3(m_cur_pos, 0)) *
|
||||
glm::scale(glm::vec3(node->m_brush.m_tip_size * 800.f * tip_scale))
|
||||
glm::scale(glm::vec3(canvas->m_current_brush.m_tip_size * 800.f * tip_scale))
|
||||
);
|
||||
glEnable(GL_BLEND);
|
||||
glActiveTexture(GL_TEXTURE0);
|
||||
auto& tex = TextureManager::get(node->m_brush.m_tex_id);
|
||||
auto& tex = TextureManager::get(canvas->m_current_brush.m_tex_id);
|
||||
tex.bind();
|
||||
canvas->m_sampler_brush.bind(0);
|
||||
canvas->m_plane.draw_fill();
|
||||
@@ -167,19 +160,19 @@ void CanvasModePen::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, const
|
||||
|
||||
void CanvasModePen::leave()
|
||||
{
|
||||
m_brush = node->m_brush;
|
||||
m_brush = canvas->m_current_brush;
|
||||
}
|
||||
|
||||
void CanvasModePen::enter()
|
||||
{
|
||||
if (m_valid_brush)
|
||||
{
|
||||
node->m_brush = m_brush;
|
||||
canvas->m_current_brush = m_brush;
|
||||
App::I.brush_update();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_brush = node->m_brush;
|
||||
m_brush = canvas->m_current_brush;
|
||||
m_valid_brush = true;
|
||||
}
|
||||
}
|
||||
@@ -200,7 +193,7 @@ void CanvasModeLine::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
|
||||
node->mouse_release();
|
||||
if (m_dragging)
|
||||
{
|
||||
canvas->stroke_start(m_drag_start, 1.f, node->m_brush);
|
||||
canvas->stroke_start(m_drag_start, 1.f, canvas->m_current_brush);
|
||||
canvas->stroke_update(m_drag_pos, 1.f);
|
||||
canvas->stroke_end();
|
||||
}
|
||||
@@ -225,7 +218,7 @@ void CanvasModeLine::on_Draw(const glm::mat4& ortho, const glm::mat4& proj, cons
|
||||
{
|
||||
ui::ShaderManager::use(ui::kShader::Color);
|
||||
ui::ShaderManager::u_mat4(ui::kShaderUniform::MVP, ortho);
|
||||
ui::ShaderManager::u_vec4(ui::kShaderUniform::Col, node->m_brush.m_tip_color);
|
||||
ui::ShaderManager::u_vec4(ui::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