Type-enforce the waveform overlay contract, narrow waveformLanes to LaneSplit, fix laneCount/cache/path-fallback bugs

This commit is contained in:
2026-07-30 09:35:11 -04:00
parent 2a0d10fab5
commit fb12c53522
19 changed files with 233 additions and 174 deletions
+11 -8
View File
@@ -906,13 +906,15 @@ target_link_libraries(keyboard_strip PUBLIC editor_geometry)
# waveform_view (Phase S11) — PURE frame<->pixel mapping, marker grab regions, drag-delta
# frame resolver, the zero-crossing snap, and the WAVEFORM band's drawn surface (channel
# lane(s) + the one full-height overlay rect) for the capture-first editor. The mirror of
# keyboard_strip; links editor_geometry for the shared Rect, peaks for the AudioSample alias
# the snap scans + the per-lane Envelope split, and sample_bands (READ-ONLY, as a band
# interior) for the lane inventory. NEITHER SDK.
# lanes + the overlay area — see waveform_view.h) for the capture-first editor. The mirror of
# keyboard_strip; links editor_geometry for the shared Rect/OverlayArea, peaks for the
# AudioSample alias the snap scans + the per-lane Envelope split. sample_bands is a PRIVATE
# implementation dep (waveformLanes, used internally) — nothing in the public header needs it.
# NEITHER SDK.
add_library(waveform_view STATIC src/core/instrument/ui/waveform_view.cpp)
target_include_directories(waveform_view PUBLIC src)
target_link_libraries(waveform_view PUBLIC editor_geometry peaks sample_bands)
target_link_libraries(waveform_view PUBLIC editor_geometry peaks)
target_link_libraries(waveform_view PRIVATE sample_bands)
# bank_sync (Phase S9/S8 reader) — PURE decision logic for the instrument's off-audio-thread
# poll: parse/compare the S9 bank-generation stamp, and the S8 assignment-request CONSUME
@@ -1035,10 +1037,11 @@ add_executable(keyboard_strip_tests tests/test_keyboard_strip.cpp)
target_link_libraries(keyboard_strip_tests PRIVATE keyboard_strip)
add_test(NAME keyboard_strip_tests COMMAND keyboard_strip_tests)
# waveform_view (S11): the pure marker geometry + zero-crossing snap. Links ONLY waveform_view
# (+ its pure editor_geometry/peaks deps) — NEITHER SDK — the same plain-data-boundary proof.
# waveform_view (S11): the pure marker geometry + zero-crossing snap. Links waveform_view (+
# its pure editor_geometry/peaks deps) plus sample_bands directly, since the test exercises
# waveformLanes/kWaveformMinHeight/kLaneGap, which waveform_view no longer re-exports. NEITHER SDK.
add_executable(waveform_view_tests tests/test_waveform_view.cpp)
target_link_libraries(waveform_view_tests PRIVATE waveform_view)
target_link_libraries(waveform_view_tests PRIVATE waveform_view sample_bands)
add_test(NAME waveform_view_tests COMMAND waveform_view_tests)
# bank_sync (S9/S8 reader): the pure generation-parse + assignment-consume decision. Links