Extract final canvas wrappers and preview mix pass

This commit is contained in:
2026-06-16 23:02:05 +02:00
parent 5f76716732
commit a8e4e02e94
14 changed files with 458 additions and 604 deletions

View File

@@ -36,8 +36,8 @@ Completed, blocked, and superseded task history moved to
- `pp_legacy_paint_document`: 7 files, about 5709 lines
- `pp_legacy_app`: 20 files, about 4368 lines
- `pp_legacy_ui_core`: 20 files, about 3770 lines
- The biggest single-file choke points are still `src/canvas.cpp`,
`src/app_layout.cpp`, `src/canvas_modes.cpp`, `src/node.cpp`,
- The biggest single-file choke points are still `src/canvas_modes.cpp`,
`src/node.cpp`,
`src/main.cpp`, `src/node_panel_brush.cpp`, `src/node_stroke_preview.cpp`,
`src/node_canvas.cpp`, `src/app.cpp`, and `src/app_dialogs.cpp`.
- The platform boundary is not finished:
@@ -90,11 +90,16 @@ looks like a wrapper around the old renderer shell.
Status: In Progress
Why now:
`src/canvas.cpp` is still the biggest single architectural blocker at about
429 lines, with `src/canvas_modes.cpp` now materially thinner and the next
remaining render-shell pressure shifting toward preview/canvas nodes.
The live `Canvas` ownership boundary is still active, but `src/canvas.cpp`
itself is now down to a thin static singleton plus mode-table shell. The
remaining canvas pressure now sits in the extracted legacy canvas service
files and the preview/canvas node render paths rather than the old monolithic
translation unit.
Current slice:
- The remaining `Canvas` member wrappers in `src/canvas.cpp` now live in the
extracted canvas service files, leaving `canvas.cpp` as the static singleton
and mode-table shell.
- Canvas state-management helpers for picking, clear/clear-all, layer
add/remove/order/lookups, animation frame control, resize, and snapshot
save/restore now live in `src/legacy_canvas_state_services.cpp` instead of
@@ -213,6 +218,9 @@ Current slice:
`legacy_node_stroke_preview_execution_services.h`, which trims another
coherent pass-setup block from `src/node_stroke_preview.cpp`, but broader
preview-pass orchestration is still inline.
- `NodeStrokePreview` remaining mix-pass planning and execution now also route
through `legacy_node_stroke_preview_draw_services.*`, which trims the last
dedicated mix-orchestration pocket from `src/node_stroke_preview.cpp`.
- `NodeStrokePreview::draw_stroke_immediate()` immediate preview pass
sequencing now also routes through the private
`execute_stroke_draw_immediate_pass_sequence(...)` helper, which removes
@@ -1136,6 +1144,10 @@ Current slice:
`src/node_panel_brush.cpp`, which materially thins another retained preset
panel UI pocket even though cloud/package worker ownership remains the
follow-up.
- `NodePanelBrushPreset` popup-close event handling now also lives in
`src/legacy_brush_preset_panel_ui.*` instead of staying inline in
`src/node_panel_brush.cpp`, which trims the remaining inline popup tail
from the live brush panel file.
- The retained `LegacyBrushPresetListServices` block now also lives in
`src/legacy_brush_preset_list_services.*` instead of staying inline in
`src/node_panel_brush.cpp`, which trims another retained preset workflow