Extract stroke commit sequence wrapper

This commit is contained in:
2026-06-14 05:27:44 +02:00
parent ed2c683ced
commit d5af0b984e

View File

@@ -1154,6 +1154,32 @@ static auto make_canvas_stroke_commit_request(
return pp::panopainter::make_legacy_canvas_stroke_commit_request(faces, sequence, commit_callbacks); return pp::panopainter::make_legacy_canvas_stroke_commit_request(faces, sequence, commit_callbacks);
} }
template <typename SetActiveTextureUnit>
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<SetActiveTextureUnit>(set_active_texture_unit),
action,
current_stroke,
sequence,
stroke_material);
});
}
static void stamp_canvas_stroke_commit_action( static void stamp_canvas_stroke_commit_action(
Canvas& canvas, Canvas& canvas,
ActionStroke* action) ActionStroke* action)
@@ -1947,28 +1973,25 @@ void Canvas::stroke_commit()
const auto& b = m_current_stroke->m_brush; const auto& b = m_current_stroke->m_brush;
const auto stroke_material = canvas_stroke_material_plan(*b, false); const auto stroke_material = canvas_stroke_material_plan(*b, false);
[[maybe_unused]] const auto commit_result = execute_canvas_stroke_commit_sequence( [[maybe_unused]] const auto commit_result = execute_canvas_stroke_commit_request(
[&]() { *this,
return make_canvas_stroke_commit_request( vp,
*this, cc,
vp, blend,
cc, [&](int texture_slot) {
blend, set_active_texture_unit(texture_slot);
[&](int texture_slot) { },
set_active_texture_unit(texture_slot); action,
}, m_current_stroke,
action, pp::paint_renderer::plan_canvas_stroke_commit_sequence(
m_current_stroke, pp::paint_renderer::CanvasStrokeCommitRequest {
pp::paint_renderer::plan_canvas_stroke_commit_sequence( .erase_mode = m_current_mode == kCanvasMode::Erase,
pp::paint_renderer::CanvasStrokeCommitRequest { .alpha_locked = m_layers[m_current_layer_idx]->m_alpha_locked,
.erase_mode = m_current_mode == kCanvasMode::Erase, .selection_mask_active = m_smask_active,
.alpha_locked = m_layers[m_current_layer_idx]->m_alpha_locked, .dual_stroke_enabled = stroke_material.composite_pass.use_dual,
.selection_mask_active = m_smask_active, .pattern_enabled = stroke_material.composite_pass.use_pattern,
.dual_stroke_enabled = stroke_material.composite_pass.use_dual, }),
.pattern_enabled = stroke_material.composite_pass.use_pattern, stroke_material);
}),
stroke_material);
});
} }
void Canvas::stroke_commit_timelapse() void Canvas::stroke_commit_timelapse()