mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:27: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;
|
||||
HDR_H = 16;
|
||||
MET_H = 18;
|
||||
HDR_BADGE_H = 12; // высота бейджей A/SPLIT/TX (верх на CurY, низ приподнят)
|
||||
MET_H = 21;
|
||||
FRQ_H = 26;
|
||||
BAR_H = 24;
|
||||
ROW_H = 20;
|
||||
@@ -518,7 +519,7 @@ var
|
||||
I, BarEnd, PX, BarH, TW, Col: Integer;
|
||||
T: Double;
|
||||
begin
|
||||
BarH := BH - 9;
|
||||
BarH := BH - 12;
|
||||
C.Brush.Color := CLR_BAR_BG;
|
||||
C.Brush.Style := bsSolid;
|
||||
C.Pen.Style := psClear;
|
||||
@@ -543,9 +544,10 @@ begin
|
||||
C.Rectangle(X, Y, X+BW, Y+BarH);
|
||||
|
||||
C.Font.Name := 'Courier New';
|
||||
C.Font.Size := 5;
|
||||
C.Font.Size := 7;
|
||||
C.Font.Style := [];
|
||||
for I := 0 to High(S_POS) do
|
||||
// Последнюю метку (+60 = правый край) не рисуем — вылезает за границу.
|
||||
for I := 0 to High(S_POS) - 1 do
|
||||
begin
|
||||
T := (S_POS[I] - DB_MIN) / (DB_MAX - DB_MIN);
|
||||
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;
|
||||
C.Pen.Color := CLR_DIM;
|
||||
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;
|
||||
|
||||
@@ -701,7 +703,7 @@ begin
|
||||
CurY := PAD;
|
||||
|
||||
{ --- Шапка: [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])
|
||||
else BWStr := IntToStr(FFilterBW);
|
||||
@@ -709,11 +711,11 @@ begin
|
||||
C.Font.Color := CLR_DIM; C.Brush.Style := bsClear;
|
||||
C.TextOut(X + 22, CurY + 1, BWStr);
|
||||
// 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)
|
||||
else DrawBadge(C, R, 'TX', CLR_BTN_NORM, CLR_DIM);
|
||||
// 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)
|
||||
else DrawBadge(C, R, 'SPLIT', CLR_BTN_NORM, CLR_DIM);
|
||||
RegisterHit(R, HIT_SPLIT);
|
||||
|
||||
Reference in New Issue
Block a user