mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +00:00
d0c82ade7305d7b585ad8ac704a3a0de89dc8847
Буква слайса стоит по центру полосы фильтра у самого верха, и вертикаль несущей шла туда же — от Y=0. В SSB/CW это не мешало (несущая лежит у кромки полосы, буква — по центру), а в модуляциях с несущей (AM/FM/DSB) центр полосы и есть несущая, и линия шла прямо по букве. Одна функция на оба вида — CarrierTopY (CPU) / CarrierTopYGL (GL): смотрит, попадает ли вертикаль под глиф, и если да, отдаёт Y ПОД буквой. Решение по факту пересечения, а не по списку «модуляций с несущей»: список пришлось бы вести и сопровождать, а в SSB зазор и так выходит нулевым сам собой. - Слайсы: DrawSliceFilterLinesRaw и DrawSliceFilterMarkers. - Главный VFO: вместе с линией вниз уезжает и её «шляпка» — треугольник в CPU (у RawTriangleDown появился параметр верхней координаты) и метка в GL. Без этого они остались бы поверх буквы и зазор не помог бы. - Полоса TX при split сверяется с той же буквой — она нарисована на RX-полосе. - В GL буква главного флага теперь рисуется ПОСЛЕ линий, как в CPU: порядок наложения у путей должен совпадать. Кегль буквы вынесен в BAND_LETTER_FONT: рисование и расчёт зазора обязаны брать его из одного места, иначе зазор разъедется с глифом. Метрика проверена замером (Qt6, offscreen): глиф 8 bold = 7x12 px ⇒ вертикаль стартует с Y=14, по горизонтали зазор ±6 px от центра полосы. Правится константами CLEAR_X/CLEAR_Y рядом с функцией. Сборка ewsdr (--ws=qt6) и ewsdrd — ОК. На экране не проверено: нужен эфир с AM/FM и слайсами. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Languages
Pascal
96.3%
Python
3%
Shell
0.6%