Extract brush refresh and thin unmerged NodeCanvas pass

This commit is contained in:
2026-06-16 17:32:42 +02:00
parent 69bcb1bc38
commit 0441dc4077
7 changed files with 213 additions and 141 deletions

View File

@@ -80,13 +80,13 @@ What is still carrying too much live ownership:
Current hotspot files:
- `src/canvas.cpp`: 2645 lines
- `src/app_layout.cpp`: 285 lines
- `src/app_layout.cpp`: 229 lines
- `src/canvas_modes.cpp`: 1798 lines
- `src/node.cpp`: 1594 lines
- `src/main.cpp`: 434 lines
- `src/main.cpp`: 390 lines
- `src/node_panel_brush.cpp`: 1197 lines
- `src/node_stroke_preview.cpp`: 890 lines
- `src/node_canvas.cpp`: 881 lines
- `src/node_canvas.cpp`: 831 lines
- `src/app.cpp`: 502 lines
- `src/app_dialogs.cpp`: 142 lines
@@ -132,7 +132,10 @@ Current architecture mismatches that must be treated as real blockers:
routes through `execute_node_canvas_draw_merge_tail(...)`, while the
unmerged-path onion-range planning, plane filtering, per-layer visit
handling, and per-visit layer-path execution now also route through
`execute_legacy_canvas_draw_unmerged_node_canvas_shell(...)`.
`execute_legacy_canvas_draw_unmerged_node_canvas_shell(...)`, while the
broader unmerged cache/viewport/background/composite pass setup now also
routes through
`execute_legacy_canvas_draw_unmerged_node_canvas_pass(...)`.
- `app_layout.cpp` and `app_dialogs.cpp` are still mixed shell/controller files
rather than thin composition/binding surfaces, even though tools-menu binding
plus nested panels/options submenu wiring now live in
@@ -150,8 +153,9 @@ Current architecture mismatches that must be treated as real blockers:
`App::init_menu_edit()` is now a thin call-through, while UI-direction and
persisted floating/docked panel-state ownership now also live in
`src/app_layout_ui_state.cpp`, while draw-toolbar binding now also lives in
`src/app_layout_draw_toolbar.cpp`, and `src/app_layout.cpp` is now mostly
brush-refresh and layout/bootstrap composition, while the
`src/app_layout_draw_toolbar.cpp`, while brush-refresh now also lives in
`src/app_layout_brush.cpp`, and `src/app_layout.cpp` is now mostly
layout/bootstrap composition, while the
informational overlay opener family now also lives in
`src/app_dialogs_info_openers.cpp` and the corresponding `App::dialog_*`
entrypoints are thinner, while the export/video/PPBR dialog family now also
@@ -175,9 +179,9 @@ Current architecture mismatches that must be treated as real blockers:
retained local state object instead of separate process-wide globals, the
Win32 async GL/context lock state now lives under
`src/platform_windows/windows_platform_services.cpp` instead of `main.cpp`
retained state, the main-thread queued task state now sits behind a narrow
retained helper instead of `RetainedState.main_tasklist` /
`main_task_mutex`, the canvas async worker now sits behind a named retained
retained state, the main-thread queued task state now lives under
`src/platform_windows/windows_platform_services.cpp` instead of staying in
`src/main.cpp`, the canvas async worker now sits behind a named retained
local worker-state helper instead of a bare static accessor, the
prepared-file worker and the canvas async import/export/save/open worker now
live under `AppRuntime` instead of retained static app-events/canvas

View File

@@ -230,6 +230,11 @@ Current slice:
`execute_legacy_canvas_draw_unmerged_node_canvas_shell(...)`, which trims
another outer draw-shell block even though the broader node draw loop still
lives in `src/node_canvas.cpp`.
- `NodeCanvas` broader unmerged cache/viewport/background/composite pass setup
now also routes through
`execute_legacy_canvas_draw_unmerged_node_canvas_pass(...)`, which removes
another coherent outer-shell block even though the broader node draw loop
still lives in `src/node_canvas.cpp`.
Write scope:
- `src/node_stroke_preview.cpp`
@@ -308,7 +313,7 @@ targets look like helpers under one old monolith.
Status: In Progress
Why now:
`src/app_layout.cpp` is still a 285-line mixed file that builds menus,
`src/app_layout.cpp` is still a 229-line mixed file that builds menus,
attaches callbacks, computes planner inputs, and mutates UI state directly.
Current slice:
@@ -341,6 +346,8 @@ Current slice:
- Draw-toolbar binding now also lives in `src/app_layout_draw_toolbar.cpp`, and
`src/app_layout.cpp` is down to the remaining brush-refresh and
layout/bootstrap composition.
- Brush-refresh now also lives in `src/app_layout_brush.cpp`, and
`src/app_layout.cpp` is down to the remaining layout/bootstrap composition.
Write scope:
- `src/app_layout.cpp`
@@ -483,8 +490,9 @@ Current slice:
`src/platform_windows/windows_platform_services.cpp` instead of `main.cpp`
retained state, and `main.cpp` only seeds that platform-owned context handle
pair during initialization and context recreation
- `main.cpp` main-thread queued task state now sits behind a narrow retained
helper instead of `RetainedState.main_tasklist` / `main_task_mutex` directly
- `main.cpp` main-thread queued task state now lives under
`src/platform_windows/windows_platform_services.cpp` instead of staying in
the entry TU
- Win32 pointer API loading, stylus/ink timer ownership and decay, `WT_PACKET`
reset, and `WM_POINTERUPDATE` pen/touch handling now live in
`src/platform_windows/windows_stylus_input.cpp` instead of `src/main.cpp`,