Extract final canvas wrappers and preview mix pass

This commit is contained in:
2026-06-16 23:02:05 +02:00
parent 5f76716732
commit a8e4e02e94
14 changed files with 458 additions and 604 deletions

View File

@@ -79,13 +79,13 @@ What is still carrying too much live ownership:
Current hotspot files:
- `src/canvas.cpp`: 368 lines
- `src/canvas.cpp`: 17 lines
- `src/app_layout.cpp`: 125 lines
- `src/canvas_modes.cpp`: 402 lines
- `src/node.cpp`: 260 lines
- `src/main.cpp`: 130 lines
- `src/node_panel_brush.cpp`: 255 lines
- `src/node_stroke_preview.cpp`: 490 lines
- `src/node_panel_brush.cpp`: 231 lines
- `src/node_stroke_preview.cpp`: 343 lines
- `src/node_canvas.cpp`: 219 lines
- `src/app.cpp`: 113 lines
- `src/app_dialogs.cpp`: 168 lines
@@ -262,6 +262,10 @@ Current architecture mismatches that must be treated as real blockers:
pass planning, shader setup, and live render request assembly now also
routes through `src/legacy_node_stroke_preview_runtime_services.*` instead
of staying inline in `src/node_stroke_preview.cpp`, while
`NodeStrokePreview` remaining mix-pass planning and execution now also route
through `src/legacy_node_stroke_preview_draw_services.*`, which trims the
last dedicated mix-orchestration pocket from `src/node_stroke_preview.cpp`,
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
@@ -320,7 +324,11 @@ Current architecture mismatches that must be treated as real blockers:
panel UI pocket, while the retained `LegacyBrushPresetListServices` block
now also lives in `src/legacy_brush_preset_list_services.*` instead of
staying inline in `src/node_panel_brush.cpp`, which trims another retained
preset workflow pocket, while `NodeCanvas::handle_event()` now also routes
preset popup tail now also lives in `src/legacy_brush_preset_panel_ui.*`
instead of staying inline in `src/node_panel_brush.cpp`, which removes the
last inline brush-panel popup close handler from the live node. The
broader preset workflow pocket still remains, while `NodeCanvas::handle_event()`
now also routes
through `execute_node_canvas_handle_event(...)`, which trims another coherent
input-routing block from `src/node_canvas.cpp` even though the file is still
a live canvas/controller shell, while `NodeCanvas` restore/clear context,

View File

@@ -36,8 +36,8 @@ Completed, blocked, and superseded task history moved to
- `pp_legacy_paint_document`: 7 files, about 5709 lines
- `pp_legacy_app`: 20 files, about 4368 lines
- `pp_legacy_ui_core`: 20 files, about 3770 lines
- The biggest single-file choke points are still `src/canvas.cpp`,
`src/app_layout.cpp`, `src/canvas_modes.cpp`, `src/node.cpp`,
- The biggest single-file choke points are still `src/canvas_modes.cpp`,
`src/node.cpp`,
`src/main.cpp`, `src/node_panel_brush.cpp`, `src/node_stroke_preview.cpp`,
`src/node_canvas.cpp`, `src/app.cpp`, and `src/app_dialogs.cpp`.
- The platform boundary is not finished:
@@ -90,11 +90,16 @@ looks like a wrapper around the old renderer shell.
Status: In Progress
Why now:
`src/canvas.cpp` is still the biggest single architectural blocker at about
429 lines, with `src/canvas_modes.cpp` now materially thinner and the next
remaining render-shell pressure shifting toward preview/canvas nodes.
The live `Canvas` ownership boundary is still active, but `src/canvas.cpp`
itself is now down to a thin static singleton plus mode-table shell. The
remaining canvas pressure now sits in the extracted legacy canvas service
files and the preview/canvas node render paths rather than the old monolithic
translation unit.
Current slice:
- The remaining `Canvas` member wrappers in `src/canvas.cpp` now live in the
extracted canvas service files, leaving `canvas.cpp` as the static singleton
and mode-table shell.
- Canvas state-management helpers for picking, clear/clear-all, layer
add/remove/order/lookups, animation frame control, resize, and snapshot
save/restore now live in `src/legacy_canvas_state_services.cpp` instead of
@@ -213,6 +218,9 @@ Current slice:
`legacy_node_stroke_preview_execution_services.h`, which trims another
coherent pass-setup block from `src/node_stroke_preview.cpp`, but broader
preview-pass orchestration is still inline.
- `NodeStrokePreview` remaining mix-pass planning and execution now also route
through `legacy_node_stroke_preview_draw_services.*`, which trims the last
dedicated mix-orchestration pocket from `src/node_stroke_preview.cpp`.
- `NodeStrokePreview::draw_stroke_immediate()` immediate preview pass
sequencing now also routes through the private
`execute_stroke_draw_immediate_pass_sequence(...)` helper, which removes
@@ -1136,6 +1144,10 @@ Current slice:
`src/node_panel_brush.cpp`, which materially thins another retained preset
panel UI pocket even though cloud/package worker ownership remains the
follow-up.
- `NodePanelBrushPreset` popup-close event handling now also lives in
`src/legacy_brush_preset_panel_ui.*` instead of staying inline in
`src/node_panel_brush.cpp`, which trims the remaining inline popup tail
from the live brush panel file.
- The retained `LegacyBrushPresetListServices` block now also lives in
`src/legacy_brush_preset_list_services.*` instead of staying inline in
`src/node_panel_brush.cpp`, which trims another retained preset workflow