feat(slices): маркеры фильтров окрашиваются в цвет бейджа своего слайса

Полоса фильтра, края и линия несущей теперь берут цвет из
SliceColor(SliceLetter) вместо захардкоженного янтарного, который
совпадал с бейджем слайса B. Каждый слайс (B/C/D…) получает свой оттенок.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-08 15:37:03 +03:00
co-authored by Claude Opus 4.8
parent b2b3339a2a
commit cf67a66120
2 changed files with 16 additions and 15 deletions
+7 -7
View File
@@ -605,23 +605,23 @@ begin
end;
// Маркер фильтра каждого слайса (B+) на спектре: полупрозрачная полоса
// пропускания + центральная несущая. Цвет янтарный — отличить от главного.
// пропускания + центральная несущая. Цвет — по букве слайса (как его бейдж).
procedure TSpectrumViewOpenGL.DrawSliceFilterMarkers(W, H: Integer);
const
SLICE_CLR = TColor($0010A8F0); // янтарный (BGR), как акцент TX-select флага
var
i, SX1, SX2, SVfoX: Integer;
O: TVfoOverlay;
Clr: TColor;
begin
for i := 0 to SliceOverlayCount - 1 do
begin
O := SliceOverlayAt(i);
if (O = nil) or (not O.Visible) then Continue;
Clr := SliceColor(O.SliceLetter); // оттенок бейджа слайса
CalcFilterBandXFor(O.DisplayVfoHz, O.DisplayMode, O.DisplayBW, W, SX1, SX2, SVfoX);
if SX2 > SX1 then DrawRect(SX1, 0, SX2, H, SLICE_CLR, 60 / 255);
DrawLine(SX1, 0, SX1, H, SLICE_CLR, 1, False);
DrawLine(SX2, 0, SX2, H, SLICE_CLR, 1, False);
DrawLine(SVfoX, 0, SVfoX, H - 12, SLICE_CLR, 2, False);
if SX2 > SX1 then DrawRect(SX1, 0, SX2, H, Clr, 60 / 255);
DrawLine(SX1, 0, SX1, H, Clr, 1, False);
DrawLine(SX2, 0, SX2, H, Clr, 1, False);
DrawLine(SVfoX, 0, SVfoX, H - 12, Clr, 2, False);
DrawBandLetterGL(SX1, SX2, O.SliceLetter);
end;
end;