From 6aa43392308a6902f6b62b8aff40f32c24aff999 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Sun, 15 Sep 2019 22:19:15 +0200 Subject: [PATCH] fix layer alpha lock --- src/canvas.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/canvas.cpp b/src/canvas.cpp index 7f21d14..4f57e70 100644 --- a/src/canvas.cpp +++ b/src/canvas.cpp @@ -775,11 +775,14 @@ void Canvas::stroke_commit() action->m_old_box[i] = m_layers[m_current_layer_idx]->m_dirty_box[i]; action->m_old_dirty[i] = m_layers[m_current_layer_idx]->m_dirty_face[i]; - auto& lbox = m_layers[m_current_layer_idx]->m_dirty_box[i]; - lbox = glm::vec4( - glm::min(xy(m_dirty_box[i]), xy(lbox)), - glm::max(zw(m_dirty_box[i]), zw(lbox)) + if (!m_layers[m_current_layer_idx]->m_alpha_locked) + { + auto& lbox = m_layers[m_current_layer_idx]->m_dirty_box[i]; + lbox = glm::vec4( + glm::min(xy(m_dirty_box[i]), xy(lbox)), + glm::max(zw(m_dirty_box[i]), zw(lbox)) ); + } m_layers[m_current_layer_idx]->m_dirty_face[i] = true; // copy to tmp2 for layer blending @@ -834,7 +837,7 @@ void Canvas::stroke_commit() ShaderManager::u_vec2(kShaderUniform::Resolution, m_size); ShaderManager::u_float(kShaderUniform::Alpha, 1); ShaderManager::u_int(kShaderUniform::Mask, m_smask_active); - ShaderManager::u_int(kShaderUniform::Lock, false); + ShaderManager::u_int(kShaderUniform::Lock, m_layers[m_current_layer_idx]->m_alpha_locked); ShaderManager::u_int(kShaderUniform::UseFragcoord, false); ShaderManager::u_int(kShaderUniform::BlendMode, b->m_blend_mode); ShaderManager::u_mat4(kShaderUniform::MVP, glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f));