fix(slices): XVTR-трансляция частот панов N

Частота пана хранится ВИДИМОЙ (как FVfoA/FCenterFreq) и транслируется в
IF через XvtrTranslate только на границе с железом (AddPanDDC,
SetPanDDCFreq, SetPanDDCRate, SetPanADC) — раньше DDC пана получал
видимую частоту сырьём, а drag водопада пана N клампился пределами АЦП
(~61 МГц) вместо диапазона трансвертера.

Новое: controller.VisibleFreqBounds (диапазон активного XVTR | пределы
железа) для UI-клампа драга; RefreshPanDDCs — на входе/выходе XVTR и
правке LO/LOError клампит видимые центры живых панов, перешивает
freq-слова DDC и прижимает выпавшие слайсы к краям полосы захвата.

Подтверждено юзером на трансвертере.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-12 16:02:54 +03:00
co-authored by Claude Fable 5
parent eac66100a8
commit b3edf3a4ad
2 changed files with 78 additions and 12 deletions
+6 -2
View File
@@ -6154,8 +6154,10 @@ begin
end;
PanViewWindow(P, VC, VS);
NewHz := FPanCenterDragF0 - (X - FPanCenterDragX0) * VS / W;
NewHz := Max(FController.BackendCaps.MinFreqHz,
Min(FController.BackendCaps.MaxFreqHz, NewHz));
// Кламп в ВИДИМЫХ частотах: при активном XVTR — его диапазон (иначе
// 1296 МГц «падала» на MaxFreqHz железа ~61 МГц), без XVTR — железо.
FController.VisibleFreqBounds(LoHz, HiHz);
NewHz := Max(LoHz, Min(HiHz, NewHz));
FController.SetPanDDCFreq(P.PanId, NewHz);
SyncPanZoomUI(P); // окно вьюхи с учётом зума + freq зум-бара
P.LayoutFlags;
@@ -6885,6 +6887,8 @@ begin
DeactivateXvtr;
// Перепрошить XVTR в сеть (если параметры текущего изменились)
ApplyXvtrToNetwork;
// Правка LO/LOError при живых панах: freq-слова их DDC — через свежую трансляцию.
FController.RefreshPanDDCs;
UpdateWidebandFrequencyView;
if PbWideband <> nil then PbWideband.Invalidate;
if PbWidebandRuler <> nil then PbWidebandRuler.Invalidate;