feat(waterfall): палитры Inferno/Turbo + gamma, разрешение до 4096, HiDPI

- SPECTRUM_PIXELS 1024→4096 + настройка display_pixels (лимит точек
  анализатора, SetDisplayResLimit); web-зеркало остаётся 1024 —
  max-децимация в SnapshotPixels
- палитры водопада Classic/Inferno/Turbo + регулятор gamma (в LUT),
  настройки wf_palette/wf_gamma, страница Waterfall → группа Rendering
- GL-водопад переведён на общий LUT/AGC-уровни базового класса
  (убраны дубли ColorForDB/UpdateLevels)
- явные glViewport в GL-вьюхах умножаются на PixelScale (HiDPI),
  текстура водопада — в физической ширине

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-04 16:11:58 +03:00
co-authored by Claude Fable 5
parent 4733ddab58
commit 092a202f5f
10 changed files with 397 additions and 263 deletions
+23
View File
@@ -587,6 +587,8 @@ type
SpecAvgTimeMS: Double);
procedure ApplyWaterfallParams(WfDet, WfAvgMode: Integer;
WfAvgTimeMS, WfHigh, WfLow, WfAGCOffset: Double);
procedure ApplyWfRenderParams(Palette: Integer; Gamma: Double;
ResLimit: Integer);
procedure ApplyWfAGCNF(WfAGC, WfNF: Boolean);
procedure ApplyADCSettings(Dither, Random: Boolean);
procedure ApplyWebSettings(Enabled: Boolean; Port: Integer;
@@ -1028,6 +1030,8 @@ begin
FSpecView.WfManualHigh := FController.FWfManualHigh;
FSpecView.WfManualLow := FController.FWfManualLow;
FSpecView.WfAGCOffset := FController.FWfAGCOffset;
FSpecView.WfPalette := FController.FWfPalette;
FSpecView.WfGamma := FController.FWfGamma;
FSpecView.SpecRefLevel := FController.FSpecRefLevel;
FSpecView.SpecRange := FController.FSpecRange;
FSpecView.SpecGridStep := FController.FSpecGridStep;
@@ -1469,6 +1473,8 @@ begin
FSpecView.WfManualHigh := FController.FWfManualHigh;
FSpecView.WfManualLow := FController.FWfManualLow;
FSpecView.WfAGCOffset := FController.FWfAGCOffset;
FSpecView.WfPalette := FController.FWfPalette;
FSpecView.WfGamma := FController.FWfGamma;
FSpecView.ResetWfAvgBuf;
if Assigned(FWidebandView) then
FWidebandView.SetFillSpectrum(FController.FWidebandFill);
@@ -6435,6 +6441,20 @@ begin
FSpectrumDirty := True;
end;
procedure TMainForm.ApplyWfRenderParams(Palette: Integer; Gamma: Double;
ResLimit: Integer);
begin
FController.FWfPalette := Palette;
FController.FWfGamma := Gamma;
FController.FDisplayPixels := ResLimit;
FSpecView.WfPalette := Palette;
FSpecView.WfGamma := Gamma;
if FController.FWDSPReady then
FController.FDSPEngine.SetDisplayResLimit(ResLimit);
FWaterfallDirty := True;
FSpectrumDirty := True;
end;
procedure TMainForm.ApplyGridParams(RefLevel, Range, GridStep: Double);
begin
FController.FSpecRefLevel := RefLevel;
@@ -6602,6 +6622,7 @@ begin
FSettingsForm := SF;
SF.OnDisplayChange := ApplyDisplayParams;
SF.OnWaterfallChange := ApplyWaterfallParams;
SF.OnWfRenderChange := ApplyWfRenderParams;
SF.OnGridChange := ApplyGridParams;
SF.OnAudioDevChange := ApplyAudioDevice;
SF.OnAudioInDevChange := ApplyAudioInputDevice;
@@ -6646,6 +6667,8 @@ begin
SF.LoadVisibility(FController.FShowSpectrum, FController.FShowWaterfall, FController.FShowWideband, FController.FWidebandFill,
FController.FSpectrumFill);
SF.LoadWfAGCNF(FController.FWfAGCEnabled, FController.FWfNFEnabled);
SF.LoadWfRender(FController.FWfPalette, FController.FWfGamma,
FController.FDisplayPixels);
SF.LoadADCSettings(FController.FDitherEnabled, FController.FRandomEnabled);
SF.LoadWebSettings(FWebEnabled, FWebPort, FWebBindAddr, FWebUser, FWebPass);
SF.LoadFPS(FDisplayFPS);