Move stroke commit request assembly behind service helper
This commit is contained in:
@@ -115,6 +115,10 @@ agent or engineer to remove them without reconstructing context from chat.
|
|||||||
- 2026-06-13: `DEBT-0036` was narrowed again. `Canvas::stroke_commit()`
|
- 2026-06-13: `DEBT-0036` was narrowed again. `Canvas::stroke_commit()`
|
||||||
now routes the face-indexed commit-input binding wrapper through the retained
|
now routes the face-indexed commit-input binding wrapper through the retained
|
||||||
service boundary, leaving `Canvas` with only concrete face bindings.
|
service boundary, leaving `Canvas` with only concrete face bindings.
|
||||||
|
- 2026-06-13: `DEBT-0036` was narrowed again. `Canvas::stroke_commit()`
|
||||||
|
now routes the retained commit request assembly through
|
||||||
|
`make_legacy_canvas_stroke_commit_request(...)`, leaving the callsite with
|
||||||
|
only concrete faces, sequence, and callbacks.
|
||||||
- 2026-06-13: `DEBT-0036` was narrowed again. `NodeStrokePreview::draw_stroke_immediate()`
|
- 2026-06-13: `DEBT-0036` was narrowed again. `NodeStrokePreview::draw_stroke_immediate()`
|
||||||
now routes final composite execution and preview copy-back through a retained
|
now routes final composite execution and preview copy-back through a retained
|
||||||
local wrapper, leaving the call site with only sequence wiring.
|
local wrapper, leaving the call site with only sequence wiring.
|
||||||
|
|||||||
@@ -1253,6 +1253,10 @@ ctest --preset desktop-fast --build-config Debug -R "pp_paint_renderer_stroke_ex
|
|||||||
| --- | --- | ---: | --- | --- |
|
| --- | --- | ---: | --- | --- |
|
||||||
| 2026-06-13 | STR-014 | +1 renderer boundary and OpenGL parity | `ctest --preset desktop-fast --build-config Debug -R "pp_paint_renderer_stroke_execution|pp_paint_renderer_compositor" --output-on-failure` | `536f2683` |
|
| 2026-06-13 | STR-014 | +1 renderer boundary and OpenGL parity | `ctest --preset desktop-fast --build-config Debug -R "pp_paint_renderer_stroke_execution|pp_paint_renderer_compositor" --output-on-failure` | `536f2683` |
|
||||||
|
|
||||||
|
- 2026-06-13: `Canvas::stroke_commit()` now routes the retained commit request
|
||||||
|
assembly through `make_legacy_canvas_stroke_commit_request(...)`, so the
|
||||||
|
callsite only supplies concrete faces, sequence, and callbacks.
|
||||||
|
|
||||||
### STR-011 - Extract Preview Main Pass Orchestration
|
### STR-011 - Extract Preview Main Pass Orchestration
|
||||||
|
|
||||||
Status: Done
|
Status: Done
|
||||||
|
|||||||
@@ -736,19 +736,6 @@ static auto make_canvas_stroke_commit_callbacks(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
static auto make_canvas_stroke_commit_request(
|
|
||||||
const std::array<pp::panopainter::LegacyCanvasStrokeCommitFace, 6>& faces,
|
|
||||||
const pp::paint_renderer::CanvasStrokeCommitSequencePlan& sequence,
|
|
||||||
const pp::panopainter::LegacyCanvasStrokeCommitCallbacks& callbacks)
|
|
||||||
{
|
|
||||||
return pp::panopainter::LegacyCanvasStrokeCommitRequest {
|
|
||||||
.context = "Canvas::stroke_commit",
|
|
||||||
.faces = faces,
|
|
||||||
.sequence = sequence,
|
|
||||||
.callbacks = callbacks,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
glm::vec4 Canvas::stroke_draw_samples(
|
glm::vec4 Canvas::stroke_draw_samples(
|
||||||
int i,
|
int i,
|
||||||
std::vector<vertex_t>& P,
|
std::vector<vertex_t>& P,
|
||||||
@@ -1353,7 +1340,7 @@ void Canvas::stroke_commit()
|
|||||||
};
|
};
|
||||||
|
|
||||||
[[maybe_unused]] const auto commit_result = pp::panopainter::execute_legacy_canvas_stroke_commit_sequence(
|
[[maybe_unused]] const auto commit_result = pp::panopainter::execute_legacy_canvas_stroke_commit_sequence(
|
||||||
make_canvas_stroke_commit_request(faces, sequence, commit_callbacks));
|
pp::panopainter::make_legacy_canvas_stroke_commit_request(faces, sequence, commit_callbacks));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Canvas::stroke_commit_timelapse()
|
void Canvas::stroke_commit_timelapse()
|
||||||
|
|||||||
@@ -165,6 +165,19 @@ inline void bind_legacy_canvas_stroke_commit_face_inputs(
|
|||||||
std::forward<BindFaceSamplerRole>(bind_face_sampler_role));
|
std::forward<BindFaceSamplerRole>(bind_face_sampler_role));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[[nodiscard]] inline LegacyCanvasStrokeCommitRequest make_legacy_canvas_stroke_commit_request(
|
||||||
|
const std::array<LegacyCanvasStrokeCommitFace, 6>& faces,
|
||||||
|
const pp::paint_renderer::CanvasStrokeCommitSequencePlan& sequence,
|
||||||
|
const LegacyCanvasStrokeCommitCallbacks& callbacks)
|
||||||
|
{
|
||||||
|
return LegacyCanvasStrokeCommitRequest {
|
||||||
|
.context = "Canvas::stroke_commit",
|
||||||
|
.faces = faces,
|
||||||
|
.sequence = sequence,
|
||||||
|
.callbacks = callbacks,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
template <typename SetupShader, typename DrawPlane>
|
template <typename SetupShader, typename DrawPlane>
|
||||||
inline void execute_legacy_canvas_stroke_commit_erase(
|
inline void execute_legacy_canvas_stroke_commit_erase(
|
||||||
SetupShader&& setup_shader,
|
SetupShader&& setup_shader,
|
||||||
|
|||||||
@@ -1972,6 +1972,55 @@ void retained_stroke_commit_request_builder_preserves_dirty_face_order(pp::tests
|
|||||||
PP_EXPECT(h, request.faces[5].index == 5);
|
PP_EXPECT(h, request.faces[5].index == 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void retained_stroke_commit_request_helper_preserves_dirty_face_order(pp::tests::Harness& h)
|
||||||
|
{
|
||||||
|
const pp::panopainter::LegacyCanvasStrokeCommitCallbacks callbacks {
|
||||||
|
.mark_commit_started = []() {},
|
||||||
|
.capture_render_state = []() {},
|
||||||
|
.prepare_render_state = []() {},
|
||||||
|
.restore_render_state = []() {},
|
||||||
|
.publish_history = []() {},
|
||||||
|
.capture_timelapse_frame = []() {},
|
||||||
|
.bind_layer_framebuffer = [](int) {},
|
||||||
|
.capture_history_region = [](int) {},
|
||||||
|
.apply_layer_dirty_region = [](int) {},
|
||||||
|
.copy_layer_to_commit_destination = [](int) {},
|
||||||
|
.bind_commit_inputs = [](int) {},
|
||||||
|
.execute_erase_composite = [](int) {},
|
||||||
|
.execute_paint_composite = [](int) {},
|
||||||
|
.copy_committed_to_dilate_source = [](int) {},
|
||||||
|
.execute_commit_dilate = [](int) {},
|
||||||
|
.unbind_layer_framebuffer = [](int) {},
|
||||||
|
};
|
||||||
|
const auto sequence = plan_canvas_stroke_commit_sequence(
|
||||||
|
CanvasStrokeCommitRequest {
|
||||||
|
.erase_mode = true,
|
||||||
|
.alpha_locked = true,
|
||||||
|
.selection_mask_active = false,
|
||||||
|
.dual_stroke_enabled = false,
|
||||||
|
.pattern_enabled = false,
|
||||||
|
});
|
||||||
|
const std::array<pp::panopainter::LegacyCanvasStrokeCommitFace, 6> faces {
|
||||||
|
pp::panopainter::LegacyCanvasStrokeCommitFace { .index = 0, .dirty = true },
|
||||||
|
pp::panopainter::LegacyCanvasStrokeCommitFace { .index = 1, .dirty = false },
|
||||||
|
pp::panopainter::LegacyCanvasStrokeCommitFace { .index = 2, .dirty = true },
|
||||||
|
pp::panopainter::LegacyCanvasStrokeCommitFace { .index = 3, .dirty = false },
|
||||||
|
pp::panopainter::LegacyCanvasStrokeCommitFace { .index = 4, .dirty = true },
|
||||||
|
pp::panopainter::LegacyCanvasStrokeCommitFace { .index = 5, .dirty = false },
|
||||||
|
};
|
||||||
|
|
||||||
|
const auto request = pp::panopainter::make_legacy_canvas_stroke_commit_request(
|
||||||
|
faces,
|
||||||
|
sequence,
|
||||||
|
callbacks);
|
||||||
|
|
||||||
|
PP_EXPECT(h, request.context == "Canvas::stroke_commit");
|
||||||
|
PP_EXPECT(h, request.faces[0].dirty);
|
||||||
|
PP_EXPECT(h, request.faces[1].index == 1);
|
||||||
|
PP_EXPECT(h, request.faces[2].dirty);
|
||||||
|
PP_EXPECT(h, request.faces[4].dirty);
|
||||||
|
}
|
||||||
|
|
||||||
void retained_stroke_commit_dilate_copy_uses_layer_scratch_slot(pp::tests::Harness& h)
|
void retained_stroke_commit_dilate_copy_uses_layer_scratch_slot(pp::tests::Harness& h)
|
||||||
{
|
{
|
||||||
const auto sequence = plan_canvas_stroke_commit_sequence(
|
const auto sequence = plan_canvas_stroke_commit_sequence(
|
||||||
|
|||||||
Reference in New Issue
Block a user