Extract app runtime shell, canvas render shell, and node tree services

This commit is contained in:
2026-06-16 20:36:47 +02:00
parent a05afb24f3
commit c25af6f493
10 changed files with 1450 additions and 1251 deletions

View File

@@ -79,15 +79,15 @@ What is still carrying too much live ownership:
Current hotspot files:
- `src/canvas.cpp`: 1010 lines
- `src/canvas.cpp`: 429 lines
- `src/app_layout.cpp`: 125 lines
- `src/canvas_modes.cpp`: 720 lines
- `src/node.cpp`: 803 lines
- `src/node.cpp`: 465 lines
- `src/main.cpp`: 271 lines
- `src/node_panel_brush.cpp`: 435 lines
- `src/node_stroke_preview.cpp`: 607 lines
- `src/node_canvas.cpp`: 219 lines
- `src/app.cpp`: 502 lines
- `src/app.cpp`: 292 lines
- `src/app_dialogs.cpp`: 168 lines
Current architecture mismatches that must be treated as real blockers:
@@ -332,7 +332,22 @@ Current architecture mismatches that must be treated as real blockers:
while `Canvas` point-trace/unproject/project/camera push-pop-get-set and
face-to-shape helpers now also route through
`src/legacy_canvas_projection_services.*` instead of staying inline in
`src/canvas.cpp`.
`src/canvas.cpp`, while `App::draw(...)`, `App::update(...)`,
`App::terminate(...)`, `App::update_memory_usage(...)`,
`App::update_rec_frames(...)`, `App::res_from_index(...)`,
`App::res_to_index(...)`, `App::res_to_string(...)`, `App::rec_clear(...)`,
`App::rec_start(...)`, `App::rec_stop(...)`, `App::rec_export(...)`,
`App::rec_loop(...)`, and `App::render_thread_tick(...)` now also route
through `src/legacy_app_runtime_shell_services.cpp` instead of staying
inline in `src/app.cpp`, while `Canvas::draw_merge(...)`, the temporary
paint/branch orchestration helpers, final-plane composite, timelapse commit,
create/destroy, clear-context, and camera accessors now also route through
`src/legacy_canvas_render_shell_services.*` instead of staying inline in
`src/canvas.cpp`, while `Node::destroy()`, `root()`, `set_manager(...)`,
`added_to_root()`, `handle_on_screen(...)`, template loading helpers, child
add/remove/move helpers, and child query helpers now also route through
`src/legacy_ui_node_tree_services.cpp` instead of staying inline in
`src/node.cpp`.
- 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