Thin canvas modes, node execution, and canvas draw shell

This commit is contained in:
2026-06-16 18:30:24 +02:00
parent 8906756d12
commit b56a46a82c
9 changed files with 398 additions and 320 deletions

View File

@@ -81,12 +81,12 @@ Current hotspot files:
- `src/canvas.cpp`: 2728 lines
- `src/app_layout.cpp`: 125 lines
- `src/canvas_modes.cpp`: 1798 lines
- `src/node.cpp`: 1465 lines
- `src/canvas_modes.cpp`: 1710 lines
- `src/node.cpp`: 1368 lines
- `src/main.cpp`: 271 lines
- `src/node_panel_brush.cpp`: 1207 lines
- `src/node_stroke_preview.cpp`: 910 lines
- `src/node_canvas.cpp`: 852 lines
- `src/node_canvas.cpp`: 864 lines
- `src/app.cpp`: 575 lines
- `src/app_dialogs.cpp`: 168 lines
@@ -240,13 +240,24 @@ Current architecture mismatches that must be treated as real blockers:
`src/node_stroke_preview.cpp`, while the immediate preview pass-sequencing
family inside `draw_stroke_immediate()` now also routes through
`NodeStrokePreview::execute_stroke_draw_immediate_pass_sequence(...)`, while
`NodeCanvas::draw()` unmerged-pass blend-gate, layer-orientation, and
callback-assembly setup now also route through
`execute_node_canvas_draw_unmerged_pass(...)`, which trims another coherent
unmerged draw shell from the live node even though the file itself remains
large, while shared canvas-mode GL wrappers plus the
`CanvasModeBasicCamera` and `CanvasModeCamera` input handlers now also route
through `src/legacy_canvas_mode_helpers.*` instead of staying inline in
`src/canvas_modes.cpp`, while
preview stroke preparation, dual-brush setup, and live pass-orchestration
request assembly now also route through retained preview execution helpers,
while `Node` child attach/detach/reorder operations now route through named
local helpers in `src/node.cpp`, and `Node::load_internal(...)` child XML
loading now also routes through `src/legacy_ui_node_loader.*`, which makes
the scene-graph mutation and child-instantiation paths easier to reason
about without yet reducing the file or moving ownership into `pp_ui_core`,
about without yet moving ownership into `pp_ui_core`, while the generic
per-frame node execution/traversal family for `restore_context`,
`clear_context`, `update`, `update_internal`, and `tick` now also lives in
`src/legacy_ui_node_execution.cpp`,
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

View File

@@ -108,6 +108,11 @@ Current slice:
`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.
- Shared canvas-mode GL wrappers plus the `CanvasModeBasicCamera` and
`CanvasModeCamera` input handlers now also live in
`src/legacy_canvas_mode_helpers.*` instead of staying inline in
`src/canvas_modes.cpp`, which trims another coherent retained canvas-view
interaction pocket from the broader canvas/render hotspot family.
Write scope:
- `src/canvas.cpp`
@@ -252,6 +257,12 @@ Current slice:
`execute_legacy_canvas_draw_node_canvas_unmerged_pass(...)`, which
materially shortens the live `NodeCanvas::draw()` body even though the file
itself is still large.
- `NodeCanvas::draw()` unmerged-pass blend-gate query, layer-orientation
assembly, and callback wiring into
`execute_legacy_canvas_draw_node_canvas_unmerged_pass(...)` now also route
through `execute_node_canvas_draw_unmerged_pass(...)`, which trims another
coherent unmerged draw-orchestration block from the live node even though
the file size remains roughly flat.
Write scope:
- `src/node_stroke_preview.cpp`
@@ -673,6 +684,11 @@ Current slice:
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`.
- The generic per-frame node execution/traversal family for
`restore_context`, `clear_context`, `update`, `update_internal`, and `tick`
now also lives in `src/legacy_ui_node_execution.cpp` instead of staying
inline in `src/node.cpp`, which materially thins the base scene-graph file
without changing its public surface.
Write scope:
- `src/node.cpp`