mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
fix(overlay): S-meter scale + header badge polish
- S-метр: убрана метка +60 (вылезала за правый край), шрифт подписей 5→7 (читаемость), подписи сдвинуты ниже тика. Бар оставлен компактным, ряду добавлено 3px под крупные метки. - Градиент S-метра привязан к уровню dBm (S1→S7→S9→S9+18), а не к длине бара — сильные сигналы уходят в красный раньше. - Бейджи A/SPLIT/TX: высота 15→12px (верх на месте, низ приподнят) — текст по центру, больше зазор до S-метра. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+10
-8
@@ -163,7 +163,8 @@ const
|
|||||||
// Геометрия карточки
|
// Геометрия карточки
|
||||||
PAD = 6;
|
PAD = 6;
|
||||||
HDR_H = 16;
|
HDR_H = 16;
|
||||||
MET_H = 18;
|
HDR_BADGE_H = 12; // высота бейджей A/SPLIT/TX (верх на CurY, низ приподнят)
|
||||||
|
MET_H = 21;
|
||||||
FRQ_H = 26;
|
FRQ_H = 26;
|
||||||
BAR_H = 24;
|
BAR_H = 24;
|
||||||
ROW_H = 20;
|
ROW_H = 20;
|
||||||
@@ -518,7 +519,7 @@ var
|
|||||||
I, BarEnd, PX, BarH, TW, Col: Integer;
|
I, BarEnd, PX, BarH, TW, Col: Integer;
|
||||||
T: Double;
|
T: Double;
|
||||||
begin
|
begin
|
||||||
BarH := BH - 9;
|
BarH := BH - 12;
|
||||||
C.Brush.Color := CLR_BAR_BG;
|
C.Brush.Color := CLR_BAR_BG;
|
||||||
C.Brush.Style := bsSolid;
|
C.Brush.Style := bsSolid;
|
||||||
C.Pen.Style := psClear;
|
C.Pen.Style := psClear;
|
||||||
@@ -543,9 +544,10 @@ begin
|
|||||||
C.Rectangle(X, Y, X+BW, Y+BarH);
|
C.Rectangle(X, Y, X+BW, Y+BarH);
|
||||||
|
|
||||||
C.Font.Name := 'Courier New';
|
C.Font.Name := 'Courier New';
|
||||||
C.Font.Size := 5;
|
C.Font.Size := 7;
|
||||||
C.Font.Style := [];
|
C.Font.Style := [];
|
||||||
for I := 0 to High(S_POS) do
|
// Последнюю метку (+60 = правый край) не рисуем — вылезает за границу.
|
||||||
|
for I := 0 to High(S_POS) - 1 do
|
||||||
begin
|
begin
|
||||||
T := (S_POS[I] - DB_MIN) / (DB_MAX - DB_MIN);
|
T := (S_POS[I] - DB_MIN) / (DB_MAX - DB_MIN);
|
||||||
PX := X + Round(T * BW);
|
PX := X + Round(T * BW);
|
||||||
@@ -553,7 +555,7 @@ begin
|
|||||||
if I < 4 then C.Font.Color := CLR_DIM else C.Font.Color := CLR_ACCENT;
|
if I < 4 then C.Font.Color := CLR_DIM else C.Font.Color := CLR_ACCENT;
|
||||||
C.Pen.Color := CLR_DIM;
|
C.Pen.Color := CLR_DIM;
|
||||||
C.MoveTo(PX, Y+BarH); C.LineTo(PX, Y+BarH+2);
|
C.MoveTo(PX, Y+BarH); C.LineTo(PX, Y+BarH+2);
|
||||||
C.TextOut(PX - TW div 2, Y+BarH+1, S_LBL[I]);
|
C.TextOut(PX - TW div 2, Y+BarH+2, S_LBL[I]);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -701,7 +703,7 @@ begin
|
|||||||
CurY := PAD;
|
CurY := PAD;
|
||||||
|
|
||||||
{ --- Шапка: [A] BW ... SPLIT [TX] --- }
|
{ --- Шапка: [A] BW ... SPLIT [TX] --- }
|
||||||
DrawBadge(C, Rect(X, CurY, X+16, CurY+HDR_H-1), FSlice, CLR_ACCENT, CLR_CARD_BG);
|
DrawBadge(C, Rect(X, CurY, X+16, CurY+HDR_BADGE_H), FSlice, CLR_ACCENT, CLR_CARD_BG);
|
||||||
// ширина фильтра
|
// ширина фильтра
|
||||||
if FFilterBW >= 1000 then BWStr := Format('%.1fk', [FFilterBW/1000.0])
|
if FFilterBW >= 1000 then BWStr := Format('%.1fk', [FFilterBW/1000.0])
|
||||||
else BWStr := IntToStr(FFilterBW);
|
else BWStr := IntToStr(FFilterBW);
|
||||||
@@ -709,11 +711,11 @@ begin
|
|||||||
C.Font.Color := CLR_DIM; C.Brush.Style := bsClear;
|
C.Font.Color := CLR_DIM; C.Brush.Style := bsClear;
|
||||||
C.TextOut(X + 22, CurY + 1, BWStr);
|
C.TextOut(X + 22, CurY + 1, BWStr);
|
||||||
// TX badge (правый край)
|
// TX badge (правый край)
|
||||||
R := Rect(W - PAD - 26, CurY, W - PAD, CurY + HDR_H - 1);
|
R := Rect(W - PAD - 26, CurY, W - PAD, CurY + HDR_BADGE_H);
|
||||||
if FTx then DrawBadge(C, R, 'TX', CLR_TX_ON, clWhite)
|
if FTx then DrawBadge(C, R, 'TX', CLR_TX_ON, clWhite)
|
||||||
else DrawBadge(C, R, 'TX', CLR_BTN_NORM, CLR_DIM);
|
else DrawBadge(C, R, 'TX', CLR_BTN_NORM, CLR_DIM);
|
||||||
// SPLIT (левее TX) — кликабельно
|
// SPLIT (левее TX) — кликабельно
|
||||||
R := Rect(W - PAD - 26 - 44, CurY, W - PAD - 26 - 4, CurY + HDR_H - 1);
|
R := Rect(W - PAD - 26 - 44, CurY, W - PAD - 26 - 4, CurY + HDR_BADGE_H);
|
||||||
if FSplit then DrawBadge(C, R, 'SPLIT', CLR_SPLIT_ON, CLR_CARD_BG)
|
if FSplit then DrawBadge(C, R, 'SPLIT', CLR_SPLIT_ON, CLR_CARD_BG)
|
||||||
else DrawBadge(C, R, 'SPLIT', CLR_BTN_NORM, CLR_DIM);
|
else DrawBadge(C, R, 'SPLIT', CLR_BTN_NORM, CLR_DIM);
|
||||||
RegisterHit(R, HIT_SPLIT);
|
RegisterHit(R, HIT_SPLIT);
|
||||||
|
|||||||
Reference in New Issue
Block a user