mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 18:43:51 +00:00
ui(2ton): читаемые IMD-маркеры на спектре
- сводка «IMD3 −NN dBc» слева от полосы фильтра (не прячется за SampleRateOverlay), шрифт 9→11 - маркеры пиков: все подписи в dBm как в Thetis (dBc только в сводке), все зелёные (оранжевый = вычисленная сводка), подпись центрирована над своим кружком (не наезжают у соседних тонов) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+16
-9
@@ -842,7 +842,7 @@ const
|
||||
CLR_IMD = TColor($000A8CFF); // оранжевый — продукты IMD3
|
||||
var
|
||||
M: array[0..3] of TIMDMarker;
|
||||
N, i, X, Y, TX, TY: Integer;
|
||||
N, i, X, Y, TX, TY, BX1, BX2, BVX: Integer;
|
||||
Col: TColor;
|
||||
begin
|
||||
if FSpanHz <= 0 then Exit;
|
||||
@@ -854,28 +854,35 @@ begin
|
||||
X := Round((M[i].FreqHz - (FCenterFreq - FSpanHz / 2)) / FSpanHz * W);
|
||||
if (X < 0) or (X >= W) then Continue;
|
||||
Y := Max(0, Min(H - 1, Round((DBmax - M[i].LevelDB) * InvRange * H)));
|
||||
if M[i].IsTone then Col := CLR_TONE else Col := CLR_IMD;
|
||||
// Все маркеры зелёные (dBm-замеры); оранжевый — только вычисленная
|
||||
// сводка dBc, чтобы цвета не путались.
|
||||
Col := CLR_TONE;
|
||||
DrawCircleGL(X, Y, 4.0, Col);
|
||||
if (M[i].Caption <> FIMDLastText[i]) or FIMDLabelTex[i].Dirty then
|
||||
begin
|
||||
UploadText(FIMDLabelTex[i], M[i].Caption, Col, 7, True);
|
||||
FIMDLastText[i] := M[i].Caption;
|
||||
end;
|
||||
TY := Y - 14;
|
||||
if TY < 2 then TY := Y + 6;
|
||||
TX := X + 6;
|
||||
if TX + FIMDLabelTex[i].W >= W then TX := X - 6 - FIMDLabelTex[i].W;
|
||||
// Подпись по центру над своим кружком; у верхней кромки — под ним.
|
||||
TY := Y - 16;
|
||||
if TY < 2 then TY := Y + 8;
|
||||
TX := Max(2, Min(W - FIMDLabelTex[i].W - 2, X - FIMDLabelTex[i].W div 2));
|
||||
DrawTexture(FIMDLabelTex[i], TX, TY);
|
||||
end;
|
||||
// Сводка в левом верхнем углу
|
||||
// Сводка слева от полосы фильтра, чтобы не прятаться за SampleRateOverlay
|
||||
// в левом верхнем углу и сразу бросаться в глаза рядом с сигналом.
|
||||
if FIMDSummary <> '' then
|
||||
begin
|
||||
if (FIMDSummary <> FIMDLastText[4]) or FIMDLabelTex[4].Dirty then
|
||||
begin
|
||||
UploadText(FIMDLabelTex[4], FIMDSummary, CLR_IMD, 9, True);
|
||||
UploadText(FIMDLabelTex[4], FIMDSummary, CLR_IMD, 11, True);
|
||||
FIMDLastText[4] := FIMDSummary;
|
||||
end;
|
||||
DrawTexture(FIMDLabelTex[4], 6, 6);
|
||||
if FActiveVfo = 0 then CalcFilterBandX(FVfoA, W, BX1, BX2, BVX)
|
||||
else CalcFilterBandX(FVfoB, W, BX1, BX2, BVX);
|
||||
TX := Max(2, Min(W - FIMDLabelTex[4].W - 2,
|
||||
BX1 - FIMDLabelTex[4].W - 8));
|
||||
DrawTexture(FIMDLabelTex[4], TX, 6);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user