mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
Add OpenGL spectrum renderer
This commit is contained in:
+27
-21
@@ -28,7 +28,7 @@ const
|
||||
|
||||
type
|
||||
TSpectrumView = class
|
||||
private
|
||||
protected
|
||||
// ── Off-screen bitmaps ────────────────────────────────────────────────────
|
||||
FSpectrumBitmap: TBitmap;
|
||||
FGridBitmap: TBitmap;
|
||||
@@ -202,34 +202,35 @@ type
|
||||
property VfoOverlay: TVfoOverlay read FVfoOverlay write FVfoOverlay;
|
||||
|
||||
// ── Данные от DSP ─────────────────────────────────────────────────────────
|
||||
procedure SetSpectrumData(const Pixels: array of Single; Count: Integer);
|
||||
procedure SetWaterfallData(const Pixels: array of Single; Count: Integer);
|
||||
procedure SetSpectrumData(const Pixels: array of Single; Count: Integer); virtual;
|
||||
procedure SetWaterfallData(const Pixels: array of Single; Count: Integer); virtual;
|
||||
|
||||
// ── Рендеринг ─────────────────────────────────────────────────────────────
|
||||
procedure DrawSpectrum;
|
||||
procedure DrawWaterfall;
|
||||
procedure DrawRuler;
|
||||
procedure DrawSpectrum; virtual;
|
||||
procedure DrawWaterfall; virtual;
|
||||
procedure DrawRuler; virtual;
|
||||
|
||||
// ── Управление размером bitmap ────────────────────────────────────────────
|
||||
procedure SetSpectrumBitmapSize(W, H: Integer);
|
||||
procedure SetWaterfallBitmapSize(W, H: Integer);
|
||||
procedure SetRulerSize(W, H: Integer);
|
||||
function SpectrumBitmapWidth: Integer;
|
||||
procedure SetSpectrumBitmapSize(W, H: Integer); virtual;
|
||||
procedure SetWaterfallBitmapSize(W, H: Integer); virtual;
|
||||
procedure SetRulerSize(W, H: Integer); virtual;
|
||||
function SpectrumBitmapWidth: Integer; virtual;
|
||||
|
||||
// ── Paint-обработчики ────────────────────────────────────────────────────
|
||||
procedure PaintSpectrum(Sender: TObject);
|
||||
procedure PaintWaterfall(Sender: TObject);
|
||||
procedure PaintRuler(Sender: TObject);
|
||||
procedure PaintSMeterRight(Sender: TObject);
|
||||
procedure PaintSpectrum(Sender: TObject); virtual;
|
||||
procedure PaintWaterfall(Sender: TObject); virtual;
|
||||
procedure PaintRuler(Sender: TObject); virtual;
|
||||
procedure PaintSMeterRight(Sender: TObject); virtual;
|
||||
|
||||
// ── Утилиты ───────────────────────────────────────────────────────────────
|
||||
procedure InvalidateGridCache;
|
||||
procedure SetTheme(const T: TAppTheme);
|
||||
procedure InvalidateRulerCache;
|
||||
procedure ResetSpectrumBuf;
|
||||
procedure ResetWfAvgBuf;
|
||||
procedure FillDemoSpectrum;
|
||||
function NeedsRulerRedraw: Boolean;
|
||||
procedure InvalidateGridCache; virtual;
|
||||
procedure InvalidateOverlayCache; virtual;
|
||||
procedure SetTheme(const T: TAppTheme); virtual;
|
||||
procedure InvalidateRulerCache; virtual;
|
||||
procedure ResetSpectrumBuf; virtual;
|
||||
procedure ResetWfAvgBuf; virtual;
|
||||
procedure FillDemoSpectrum; virtual;
|
||||
function NeedsRulerRedraw: Boolean; virtual;
|
||||
end;
|
||||
|
||||
implementation
|
||||
@@ -640,6 +641,11 @@ begin
|
||||
FSpectrumDirty := True;
|
||||
end;
|
||||
|
||||
procedure TSpectrumView.InvalidateOverlayCache;
|
||||
begin
|
||||
FSpectrumDirty := True;
|
||||
end;
|
||||
|
||||
procedure TSpectrumView.SetTheme(const T: TAppTheme);
|
||||
begin
|
||||
FTheme := T;
|
||||
|
||||
Reference in New Issue
Block a user