Extract canvas mask modes, preview draw pass, and node style shell

This commit is contained in:
2026-06-16 21:50:12 +02:00
parent c25af6f493
commit a2a67960c8
12 changed files with 916 additions and 557 deletions

View File

@@ -81,11 +81,11 @@ Current hotspot files:
- `src/canvas.cpp`: 429 lines
- `src/app_layout.cpp`: 125 lines
- `src/canvas_modes.cpp`: 720 lines
- `src/node.cpp`: 465 lines
- `src/canvas_modes.cpp`: 402 lines
- `src/node.cpp`: 389 lines
- `src/main.cpp`: 271 lines
- `src/node_panel_brush.cpp`: 435 lines
- `src/node_stroke_preview.cpp`: 607 lines
- `src/node_stroke_preview.cpp`: 562 lines
- `src/node_canvas.cpp`: 219 lines
- `src/app.cpp`: 292 lines
- `src/app_dialogs.cpp`: 168 lines
@@ -347,7 +347,16 @@ Current architecture mismatches that must be treated as real blockers:
`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`.
`src/node.cpp`, while the `CanvasModeMaskFree` and `CanvasModeMaskLine`
interaction families now also route through
`src/legacy_canvas_mode_mask.cpp` instead of staying inline in
`src/canvas_modes.cpp`, while the remaining live render/pass orchestration in
`NodeStrokePreview::draw_stroke_immediate()` now also routes through
`src/legacy_node_stroke_preview_draw_services.*` instead of staying inline in
`src/node_stroke_preview.cpp`, and while the generic Yoga
style/visibility pocket from `Node::SetWidth(...)` through `Node::GetRTL()`
now also routes through `src/legacy_ui_node_style.*` 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

View File

@@ -152,6 +152,10 @@ Current slice:
in `src/legacy_canvas_mode_pen_line.cpp` instead of staying inline in
`src/canvas_modes.cpp`, which materially thins another retained pen/line
interaction pocket from the broader canvas/render hotspot family.
- The `CanvasModeMaskFree` and `CanvasModeMaskLine` interaction families now
also live in `src/legacy_canvas_mode_mask.cpp` instead of staying inline in
`src/canvas_modes.cpp`, which materially thins another retained mask-tool
interaction pocket from the broader canvas/render hotspot family.
Write scope:
- `src/canvas.cpp`
@@ -326,6 +330,11 @@ Current slice:
inline in `src/node_stroke_preview.cpp`, which materially thins the preview
node around its runtime-facing shell even though live pass execution still
remains.
- The remaining live render/pass orchestration in
`NodeStrokePreview::draw_stroke_immediate()` now also lives in
`src/legacy_node_stroke_preview_draw_services.*` instead of staying inline in
`src/node_stroke_preview.cpp`, which trims another coherent preview
draw-pass pocket while preserving the current runtime-facing shell.
- `NodeCanvas::init()` plus the remaining `NodeCanvas::draw()` outer shell now
also live in `src/legacy_node_canvas_draw_services.*` instead of staying
inline in `src/node_canvas.cpp`, which materially reduces the live node to a
@@ -778,6 +787,10 @@ Current slice:
`src/legacy_ui_node_tree_services.cpp` instead of staying inline in
`src/node.cpp`, which materially thins the remaining generic scene-graph
lifecycle/tree shell without changing the public surface.
- The generic Yoga style/visibility pocket from `Node::SetWidth(...)` through
`Node::GetRTL()` now also lives in `src/legacy_ui_node_style.*` instead of
staying inline in `src/node.cpp`, which trims another coherent generic node
shell pocket without changing the public surface.
Write scope:
- `src/node.cpp`