Extract canvas document IO and preview pass setup

This commit is contained in:
2026-06-16 10:53:20 +02:00
parent 551fe6c94a
commit 8afeb087b8
7 changed files with 1341 additions and 1179 deletions

View File

@@ -79,13 +79,13 @@ What is still carrying too much live ownership:
Current hotspot files:
- `src/canvas.cpp`: 3622 lines
- `src/canvas.cpp`: 2645 lines
- `src/app_layout.cpp`: 1498 lines
- `src/canvas_modes.cpp`: 1798 lines
- `src/node.cpp`: 1551 lines
- `src/main.cpp`: 1374 lines
- `src/node_panel_brush.cpp`: 1197 lines
- `src/node_stroke_preview.cpp`: 1129 lines
- `src/node_stroke_preview.cpp`: 933 lines
- `src/node_canvas.cpp`: 888 lines
- `src/app.cpp`: 950 lines
- `src/app_dialogs.cpp`: 908 lines
@@ -155,8 +155,11 @@ Current architecture mismatches that must be treated as real blockers:
canvas state-management cluster for picking, clear/clear-all, layer
add/remove/order/lookups, animation frame control, resize, and snapshot
save/restore now lives in `src/legacy_canvas_state_services.cpp` instead of
`src/canvas.cpp`, even though the bridge still owns worker-side readback flow
and encoder-state label reads.
`src/canvas.cpp`, while the larger import/export/save/open/thumbnail
document-IO cluster now lives in `src/legacy_canvas_document_io_services.cpp`
and `NodeStrokePreview` render-target setup plus immediate-pass sequencing
now route through retained preview execution helpers, even though the bridge
still owns worker-side readback flow and encoder-state label reads.
- Modern C++23 usage exists in extracted components, especially `std::span`,
explicit result/status objects, and a few concepts, but the live app still
does not consistently express ownership, thread affinity, or renderer