From d5af0b984e65080f12c5f85ca1bd68fc9490d648 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Sun, 14 Jun 2026 05:27:44 +0200 Subject: [PATCH] Extract stroke commit sequence wrapper --- src/canvas.cpp | 67 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 22 deletions(-) diff --git a/src/canvas.cpp b/src/canvas.cpp index b56edb6..9a1e5b6 100644 --- a/src/canvas.cpp +++ b/src/canvas.cpp @@ -1154,6 +1154,32 @@ static auto make_canvas_stroke_commit_request( return pp::panopainter::make_legacy_canvas_stroke_commit_request(faces, sequence, commit_callbacks); } +template +static auto execute_canvas_stroke_commit_request( + Canvas& canvas, + const glm::vec4& vp, + const glm::vec4& cc, + bool blend, + SetActiveTextureUnit&& set_active_texture_unit, + ActionStroke* action, + const Stroke* current_stroke, + const pp::paint_renderer::CanvasStrokeCommitSequencePlan& sequence, + const pp::paint_renderer::CanvasStrokeCommitMaterialPlan& stroke_material) +{ + return execute_canvas_stroke_commit_sequence([&]() { + return make_canvas_stroke_commit_request( + canvas, + vp, + cc, + blend, + std::forward(set_active_texture_unit), + action, + current_stroke, + sequence, + stroke_material); + }); +} + static void stamp_canvas_stroke_commit_action( Canvas& canvas, ActionStroke* action) @@ -1947,28 +1973,25 @@ void Canvas::stroke_commit() const auto& b = m_current_stroke->m_brush; const auto stroke_material = canvas_stroke_material_plan(*b, false); - [[maybe_unused]] const auto commit_result = execute_canvas_stroke_commit_sequence( - [&]() { - return make_canvas_stroke_commit_request( - *this, - vp, - cc, - blend, - [&](int texture_slot) { - set_active_texture_unit(texture_slot); - }, - action, - m_current_stroke, - pp::paint_renderer::plan_canvas_stroke_commit_sequence( - pp::paint_renderer::CanvasStrokeCommitRequest { - .erase_mode = m_current_mode == kCanvasMode::Erase, - .alpha_locked = m_layers[m_current_layer_idx]->m_alpha_locked, - .selection_mask_active = m_smask_active, - .dual_stroke_enabled = stroke_material.composite_pass.use_dual, - .pattern_enabled = stroke_material.composite_pass.use_pattern, - }), - stroke_material); - }); + [[maybe_unused]] const auto commit_result = execute_canvas_stroke_commit_request( + *this, + vp, + cc, + blend, + [&](int texture_slot) { + set_active_texture_unit(texture_slot); + }, + action, + m_current_stroke, + pp::paint_renderer::plan_canvas_stroke_commit_sequence( + pp::paint_renderer::CanvasStrokeCommitRequest { + .erase_mode = m_current_mode == kCanvasMode::Erase, + .alpha_locked = m_layers[m_current_layer_idx]->m_alpha_locked, + .selection_mask_active = m_smask_active, + .dual_stroke_enabled = stroke_material.composite_pass.use_dual, + .pattern_enabled = stroke_material.composite_pass.use_pattern, + }), + stroke_material); } void Canvas::stroke_commit_timelapse()