mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 18:43:51 +00:00
ui(spectrum): полоса главного фильтра — как у слайсов, со своим оттенком
Главный фильтр рисовался иначе, чем слайсовые полосы, причём в CPU-пути сильнее, чем в GL. 1. Порядок отрисовки. Кромки, несущая и её треугольник у главного шли ПОСЛЕ кривой спектра, у слайсов — до неё, а в GL-вьюхе весь блок фильтров идёт перед DrawSpectrumCurve. Из-за этого на CPU главная полоса единственная лезла поверх сигнала и выглядела жирнее и ярче слайсовых при тех же цвете и толщине линий. Блок перенесён к слайсам, до кривой: порядок кадра теперь одинаков у обоих путей. 2. Заливка. Была НЕПРОЗРАЧНОЙ, рядом с просвечивающими слайсовыми смотрелась плотным блоком. Теперь та же полупрозрачность, что у слайсов; прозрачность вынесена в общие SPEC_BAND_ALPHA/SPEC_BAND_ALPHA_TX (VfoOverlay, рядом с палитрой слайсов) — раньше это были четыре магических числа по двум вьюхам. Осиротевшая FillBandRaw удалена. 3. Цвет. С полупрозрачностью полоса перестала читаться: SpecFilter (34,78,106) почти совпадает с нижним цветом фонового градиента спектра (31,79,108), и заливка давала не оттенок, а затемнение — над низом градиента выходило ровно (32,79,108), то есть фон. Полосе дан свой цвет темы SpecFilterBand: тёплый янтарь RGB(255,150,40) на тёмной (фон сине-стальной, тёплое на нём читается) и насыщённый зелёный RGB(60,150,60) на светлой. SpecFilter остался подложкой подписей AGC — иначе перекрасились бы и они. 4. Слайс B перекрашен из оранжевого в васильковый RGB(97,118,255): с янтарной полосой главного фильтра оранжевый стал неразличим. Оттенок выбран по свободному месту в круге: заняты 0°(TX), 31°(полоса), 55°(E), 132°(A), 190°(C), 195°(G), 276°(F), 308°(D); самый широкий промежуток 195..276°, середина ≈236°. Палитра одна на всё, поэтому вместе с полосой и несущей перекрашиваются буква слайса на спектре и бейдж во флаге VfoOverlay. Сборка ewsdr (--ws=qt6) и ewsdrd — ОК. На экране не проверено: нужен эфир со слайсами; цвета правятся одной строкой (SpecFilterBand в AppTheme, SLICE_COLORS в VfoOverlay). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+14
-1
@@ -54,6 +54,12 @@ type
|
||||
// Спектр — сигнал и маркеры
|
||||
SpecLine: TColor;
|
||||
SpecFilter: TColor;
|
||||
// Заливка полосы главного фильтра. Отдельно от SpecFilter (тот остался
|
||||
// подложкой подписей AGC): полоса теперь полупрозрачная, как у слайсов, и
|
||||
// цвет ей нужен СВОЙ — SpecFilter почти совпадает с нижним цветом фонового
|
||||
// градиента спектра, поэтому такая заливка читалась не оттенком, а
|
||||
// затемнением.
|
||||
SpecFilterBand: TColor;
|
||||
SpecFilterEdge: TColor;
|
||||
SpecAgcColor: TColor;
|
||||
SpecAgcHangColor: TColor;
|
||||
@@ -158,6 +164,10 @@ begin
|
||||
Result.SpecGrid := TColor($00685624);
|
||||
Result.SpecLine := TColor($0040FF80);
|
||||
Result.SpecFilter := TColor($006A4E22);
|
||||
// Оттенок полосы — тёплый янтарный, из семейства курсора VFO (Amber): фон
|
||||
// спектра сине-стальной, поэтому янтарь на нём читается как оттенок, а не
|
||||
// как «потемнее фона». RGB(255,150,40).
|
||||
Result.SpecFilterBand := TColor($002896FF);
|
||||
Result.SpecFilterEdge := TColor($0040FFCC);
|
||||
Result.SpecAgcColor := TColor($0000AAFF);
|
||||
Result.SpecAgcHangColor := TColor($00FFCC00);
|
||||
@@ -266,7 +276,10 @@ begin
|
||||
Result.SpecLabelText := TColor($00404038);
|
||||
Result.SpecGrid := TColor($00B8B4A4);
|
||||
Result.SpecLine := TColor($00006400); // тёмно-зелёная линия
|
||||
Result.SpecFilter := TColor($00C8DCC8); // светло-зелёная полоса фильтра
|
||||
Result.SpecFilter := TColor($00C8DCC8); // подложка подписей AGC
|
||||
// Полоса фильтра на светлой теме: насыщённее фона (тот пергаментный), иначе
|
||||
// при той же полупрозрачности её не видно. RGB(60,150,60).
|
||||
Result.SpecFilterBand := TColor($003C963C);
|
||||
Result.SpecFilterEdge := TColor($00407840);
|
||||
Result.SpecAgcColor := TColor($00904000); // тёмно-оранжевый AGC
|
||||
Result.SpecAgcHangColor := TColor($00802000);
|
||||
|
||||
Reference in New Issue
Block a user