mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +00:00
feat(slices): пан-зум панов N — свой бар/кнопки, span-clip анализатора пана
Движок: TPanChan.ZoomFactor/PanSlider, span-clip в ApplyPanAnalyzerSettings (математика главного, ZOOM_LIMIT 100), SetPanZoomPan с no-op guard (SetAnalyzer сбрасывает FFT-историю). Зум переживает смену rate/ADC пана. Контроллер: формула окна вынесена в ViewWindowFor (главный GetViewWindow тоже через неё), GetPanViewWindow (PanId=0 делегирует), PanZoomIn/Out по лестнице кратностей с якорем на центре окна, PanZoomDefault, геттеры. UI: TPanZoomEvent получил Sender; у панов N включён ряд зума, бар диспетчеризуется по объекту, кнопки −/⌂/+ общие через PanOfZoomButton (матч по идентичности — MakeFlatBtn создаёт кнопки с Owner=контейнер, PanFromSender их не видит); SyncPanZoomUI/RefreshPanZoom, вся мышь панов зум-корректна через GetPanViewWindow. Темизация баров панов N. Смоук panzoomtest ALL PASS (пик тона совпадает с формулой окна ±0.6%), подтверждено на экране. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -545,6 +545,34 @@ RATEPROBE удалены.** Наблюдение юзера: смена rate Г
|
||||
паузы >41мс, main-аудио/слайс пана 0/слайс пана 1 живы и слышат тон после
|
||||
смены. Оба бинарника собираются.
|
||||
|
||||
**СТАТУС «пан-зум панов N» (2026-07-12): ГОТОВО — смоук panzoomtest ALL PASS,
|
||||
юзер подтвердил на экране, коммит cb6bdfa.**
|
||||
- Движок: `TPanChan.ZoomFactor/PanSlider`, span-clip в
|
||||
`ApplyPanAnalyzerSettings` (та же математика, что у главного; ZOOM_LIMIT 100),
|
||||
`SetPanZoomPan` (no-op guard — SetAnalyzer сбрасывает FFT-историю, урок
|
||||
dae0c19). Зум переживает смену rate пана (SetPanRate пересоздаёт анализатор
|
||||
из записи пана).
|
||||
- Контроллер: `FPanZoomF/FPanPanSl` (сессия пана, сброс в Add/RemovePanDDC —
|
||||
band-персиста у панов нет), формула окна вынесена в юнит-хелпер
|
||||
`ViewWindowFor` (GetViewWindow главного теперь тоже через него),
|
||||
`GetPanViewWindow(0)` делегирует главному; `PanZoomIn/Out` по той же
|
||||
лестнице ZOOM_MAG_LADDER, якорь = ЦЕНТР текущего окна (`PanZoomStepTo`,
|
||||
у панов нет VFO-якоря главного), `PanZoomDefault`, геттеры.
|
||||
- UI: `TPanZoomEvent` получил Sender (PanZoomBar), `OnPanZoomWindow`
|
||||
диспетчеризует бар→пан; кнопки −/⌂/+ общие (`PanFromSender`); у панов N
|
||||
включён ShowZoomRow, бар проводится в CreatePanadapter; единые
|
||||
`SyncPanZoomUI/RefreshPanZoom` (вьюха+бар ← контроллер) используются в
|
||||
SyncPanViews и drag-ретюне; `TPanafallPanel.ViewWindow` и `PanViewWindow` →
|
||||
`GetPanViewWindow` ⇒ вся мышь/флаги панов автоматически зум-корректны.
|
||||
Темизация баров панов N в ApplyDarkTheme.
|
||||
- Смоук panzoomtest.pas: пик тона +50к на пане 384к совпадает с формулой окна
|
||||
при зуме 0 / 0.5+пан 0.7 / сбросе (±0.6%).
|
||||
- ⚠Фикс по первому экранному тесту: кнопки −/⌂/+ панов N рулили ГЛАВНЫМ зумом —
|
||||
MakeFlatBtn создаёт кнопки с Owner=контейнер (не панель), PanFromSender их
|
||||
не находит. Диспетчер кнопок = PanOfZoomButton (матч по идентичности
|
||||
BtnZoomIn/Def/Out всех панов). Урок: PanFromSender работает только для
|
||||
контролов с Owner=панель (TLabel шапки — да, MakeFlatBtn-кнопки — нет).
|
||||
|
||||
### 3.6 — Pluto+ (2r2t): второй пан на втором антенном входе
|
||||
|
||||
Опционально, после 3.0-3.3. Обычного Pluto НЕ касается (там один RX разведён).
|
||||
|
||||
Reference in New Issue
Block a user