diff --git a/engine/canvas.cpp b/engine/canvas.cpp index 8db8041..ff626ff 100644 --- a/engine/canvas.cpp +++ b/engine/canvas.cpp @@ -144,17 +144,18 @@ void ui::Canvas::snap_history(const std::vector& planes) auto action = new ActionStroke; for (auto i : planes) { - if (!m_dirty_face[i]) + if (!m_layers[m_current_layer_idx].m_dirty_face[i]) continue; // no stroke on this face, skip it m_layers[m_current_layer_idx].m_rtt[i].bindFramebuffer(); // save image before commit - glm::vec2 box_sz = m_dirty_box[i].zw() - m_dirty_box[i].xy(); + glm::vec2 box_or = m_layers[m_current_layer_idx].m_dirty_box[i].xy(); + glm::vec2 box_sz = m_layers[m_current_layer_idx].m_dirty_box[i].zw() - m_layers[m_current_layer_idx].m_dirty_box[i].xy(); action->m_image[i] = std::make_unique(box_sz.x * box_sz.y * 4); - glReadPixels(m_dirty_box[i].x, m_dirty_box[i].y, box_sz.x, box_sz.y, GL_RGBA, GL_UNSIGNED_BYTE, action->m_image[i].get()); + glReadPixels(box_or.x, box_or.y, box_sz.x, box_sz.y, GL_RGBA, GL_UNSIGNED_BYTE, action->m_image[i].get()); - action->m_box[i] = m_dirty_box[i]; + action->m_box[i] = m_layers[m_current_layer_idx].m_dirty_box[i]; 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];