Share retained stroke frame execution helpers
This commit is contained in:
@@ -293,6 +293,41 @@ std::size_t execute_legacy_canvas_stroke_frame_samples(
|
||||
return result;
|
||||
}
|
||||
|
||||
template <typename ExecuteSample, typename BeginFace, typename PrepareDirtyRequest, typename FinishFace>
|
||||
[[nodiscard]] inline LegacyCanvasStrokeFaceDirtyResult execute_legacy_canvas_stroke_face_sample(
|
||||
const LegacyCanvasStrokeFaceDirtyRequest& dirty_request,
|
||||
ExecuteSample&& execute_sample,
|
||||
BeginFace&& begin_face,
|
||||
PrepareDirtyRequest&& prepare_dirty_request,
|
||||
FinishFace&& finish_face,
|
||||
glm::vec4* accumulated_dirty_box = nullptr,
|
||||
glm::vec4* pass_dirty_box = nullptr,
|
||||
bool* committed_dirty = nullptr,
|
||||
bool* pass_dirty = nullptr) noexcept(noexcept(execute_sample()))
|
||||
{
|
||||
LegacyCanvasStrokeFaceDirtyResult result;
|
||||
begin_face();
|
||||
|
||||
auto request = dirty_request;
|
||||
request.sample_dirty_box = execute_sample();
|
||||
prepare_dirty_request(request);
|
||||
|
||||
finish_face(request.sample_dirty_box);
|
||||
|
||||
glm::vec4 accumulated = request.previous_accumulated_dirty_box;
|
||||
result = apply_legacy_canvas_stroke_face_dirty_update(
|
||||
request,
|
||||
accumulated,
|
||||
pass_dirty_box,
|
||||
committed_dirty,
|
||||
pass_dirty);
|
||||
result.accumulated_dirty_box = accumulated;
|
||||
if (accumulated_dirty_box) {
|
||||
*accumulated_dirty_box = accumulated;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
[[nodiscard]] inline LegacyCanvasStrokePadExecutionResult execute_legacy_canvas_stroke_pad_faces(
|
||||
const LegacyCanvasStrokePadExecutionRequest& request)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user