Route stroke face sample ordering through helper

This commit is contained in:
2026-06-13 09:28:51 +02:00
parent 91f3b7f3dc
commit 5dc0bc7342
5 changed files with 57 additions and 16 deletions

View File

@@ -192,6 +192,32 @@ std::size_t execute_legacy_canvas_stroke_frame_faces(
return executed_faces;
}
template <typename Frames, typename BeginFrame, typename BeginFace, typename ExecuteSample, typename FinishFace>
std::size_t execute_legacy_canvas_stroke_frame_samples(
Frames&& frames,
BeginFrame&& begin_frame,
BeginFace&& begin_face,
ExecuteSample&& execute_sample,
FinishFace&& finish_face)
{
std::size_t executed_faces = 0;
for (auto& frame : frames) {
begin_frame(frame);
for (int face_index = 0; face_index < 6; ++face_index) {
auto& vertices = frame.shapes[face_index];
if (vertices.size() < 3) {
continue;
}
begin_face(frame, face_index, vertices);
auto sample_dirty_box = execute_sample(frame, face_index, vertices);
finish_face(frame, face_index, sample_dirty_box);
++executed_faces;
}
}
return executed_faces;
}
[[nodiscard]] inline pp::paint_renderer::CanvasStrokeBox legacy_canvas_stroke_box(glm::vec4 box) noexcept
{
return pp::paint_renderer::CanvasStrokeBox {