fix action history with frames

This commit is contained in:
2019-10-19 16:06:43 +02:00
parent aa41703df5
commit e25de3c454
8 changed files with 121 additions and 80 deletions

View File

@@ -583,7 +583,7 @@ void CanvasModeGrid::commit()
m_line.update_vertices(AB);
m_line.draw_stroke();
};
Canvas::I->draw_objects(std::bind(drawer, std::placeholders::_1, std::placeholders::_2));
Canvas::I->draw_objects(std::bind(drawer, std::placeholders::_1, std::placeholders::_2), Canvas::I->layer().m_frame_index, true);
}
void CanvasModeGrid::clear()
@@ -714,7 +714,7 @@ void CanvasModeMaskFree::on_MouseEvent(MouseEvent* me, glm::vec2& loc)
auto v = triangulate(poly_remove_duplicate(m_points2d));
Canvas::I->project2Dpoints(v);
m_shape.update_vertices(v.data(), (int)v.size());
Canvas::I->draw_objects_direct(std::bind(drawer, std::placeholders::_1, std::placeholders::_2), Canvas::I->m_smask);
Canvas::I->draw_objects_direct(std::bind(drawer, std::placeholders::_1, std::placeholders::_2), Canvas::I->m_smask, 0);
// close the path and reset m_shape to contour rendering
m_points.push_back(m_points.back());
@@ -844,7 +844,7 @@ void CanvasModeMaskLine::leave(kCanvasMode next)
ShaderManager::u_vec4(kShaderUniform::Col, {1, 1, 1, 1});
m_shape.draw_fill();
};
Canvas::I->draw_objects_direct(std::bind(drawer, std::placeholders::_1, std::placeholders::_2), Canvas::I->m_smask);
Canvas::I->draw_objects_direct(std::bind(drawer, std::placeholders::_1, std::placeholders::_2), Canvas::I->m_smask, 0);
//m_points.clear();
// close the path
@@ -977,7 +977,7 @@ void CanvasModeFill::leave(kCanvasMode next)
ShaderManager::u_vec4(kShaderUniform::Col, {1, 1, 1, 1});
m_shape.draw_fill();
};
Canvas::I->draw_objects_direct(std::bind(drawer, std::placeholders::_1, std::placeholders::_2), Canvas::I->m_smask);
Canvas::I->draw_objects_direct(std::bind(drawer, std::placeholders::_1, std::placeholders::_2), Canvas::I->m_smask, 0);
m_points.clear();
Canvas::I->m_smask_active = true;
}
@@ -1321,6 +1321,7 @@ void CanvasModeTransform::enter(kCanvasMode prev)
}
action->m_layer_idx = Canvas::I->m_current_layer_idx;
action->m_frame_idx = Canvas::I->layer().m_frame_index;
action->m_canvas = Canvas::I;
//action->m_stroke = std::move(m_current_stroke);
ActionManager::add(action);
@@ -1443,6 +1444,7 @@ void CanvasModeTransform::leave(kCanvasMode next)
action->m_layer_idx = Canvas::I->m_current_layer_idx;
action->m_canvas = Canvas::I;
action->m_frame_idx = Canvas::I->layer().m_frame_index;
//action->m_stroke = std::move(m_current_stroke);
ActionManager::add(action);
layer->optimize();