Extract canvas projection helpers and thin preview and node loading

This commit is contained in:
2026-06-16 18:16:04 +02:00
parent 1442c13dd7
commit 8906756d12
11 changed files with 565 additions and 341 deletions

View File

@@ -91,7 +91,7 @@ Status: In Progress
Why now:
`src/canvas.cpp` is still the biggest single architectural blocker at about
2645 lines.
2728 lines.
Current slice:
- Canvas state-management helpers for picking, clear/clear-all, layer
@@ -103,6 +103,11 @@ Current slice:
`src/legacy_canvas_document_io_services.cpp` instead of staying inline in
`src/canvas.cpp`, which materially reduces document IO ownership in the live
render shell.
- Canvas point-trace, unproject, project2D, face-to-shape, and camera
push/pop/get/set helpers now also live in
`src/legacy_canvas_projection_services.*` instead of staying inline in
`src/canvas.cpp`, which trims another coherent non-UI state/query pocket
from the live canvas shell.
Write scope:
- `src/canvas.cpp`
@@ -158,6 +163,11 @@ Current slice:
`execute_stroke_draw_immediate_pass_sequence(...)` helper, which removes
another live orchestration block from the node even though worker/readback
flow still remains in the file.
- `NodeStrokePreview` stroke preparation, dual-brush setup, and live-pass
request assembly now also route through retained preview execution helpers,
which trims another coherent setup pocket from
`src/node_stroke_preview.cpp` even though worker/readback ownership and
broader preview flow still remain inline.
- `NodeCanvas` merged-path per-plane merged-texture draw execution now also
routes through `execute_legacy_canvas_draw_merge_layer_texture(...)`.
- `NodeCanvas` merged-path and non-blend checkerboard background setup now also
@@ -390,7 +400,7 @@ Status: In Progress
Why now:
`src/app_dialogs.cpp` still mixes document workflow decisions, export routing,
dialog construction, and overlay ownership.
dialog construction, and overlay ownership in one 168-line shell.
Current slice:
- Informational overlay opener paths for user manual, changelog, about,
@@ -439,7 +449,7 @@ Status: In Progress
Why now:
`src/app.cpp` still carries startup, frame flow, queue draining, recording,
and composition logic in one 502-line file.
and composition logic in one 575-line file.
Current slice:
- UI observer math now routes through `src/legacy_app_frame_services.cpp`
@@ -651,12 +661,19 @@ attached to it.
#### ARC-UI-001 - Move Generic Node And Control Code Out Of `pp_legacy_ui_core`
Status: Ready
Status: In Progress
Why now:
`pp_ui_core` has layout, color, node lifetime, and overlay lifetime, but the
generic widget layer still sits in `pp_legacy_ui_core`.
Current slice:
- `Node::load_internal(...)` child XML loading now routes through
`src/legacy_ui_node_loader.*` instead of staying inline in `src/node.cpp`.
That trims another coherent generic node-instantiation pocket and makes the
remaining scene-graph load path easier to isolate, even though ownership has
not yet moved into `pp_ui_core`.
Write scope:
- `src/node.cpp`
- `src/layout.cpp`