Extract stroke commit sequence wrapper
This commit is contained in:
@@ -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 <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(
|
||||
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()
|
||||
|
||||
Reference in New Issue
Block a user