mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +00:00
feat(tx): self-monitor RX-аудио на TX в любом DUP + меньше TX pre-roll
RX MUTE (self-monitor даунлинка на передаче): кнопка теперь доступна на
ВСЕХ бэкендах, а не только Pluto/QO-100. Активна только в DUP; без DUP
кнопка disabled и звук на TX не проходит (движок гейтит по
FKeepRXDuringTX=FDisplayDuplex — двойная защита: аудио-гейт + RXA не
кормится). Добавлен RadioController.DisplayDuplex. TFlatButton теперь
рисует disabled-состояние приглушённым (текст/рамка к фону).
TX pre-roll 8144->6096 (2 блока подушки вместо 3): обоснование «нужно 3
блока» опиралось на щелчок ~0.5с после старта, который на деле оказался
bfo-глитчом тона (устранён f2d0519), а не underrun'ом подушки. Латентность
старта TX ~-10мс; startup-щелчков под нагрузкой DUP не слышно (подтверждено).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+20
-2
@@ -128,10 +128,28 @@ begin
|
||||
R.Top + (R.Bottom - R.Top - TH) div 2, ACaption);
|
||||
end;
|
||||
|
||||
function BlendCol(A, B: TColor; T: Double): TColor;
|
||||
// Линейная смесь A→B на долю T (0..1); системные цвета резолвим через ColorToRGB.
|
||||
var ca, cb: LongInt; r, g, bl: Integer;
|
||||
begin
|
||||
ca := ColorToRGB(A); cb := ColorToRGB(B);
|
||||
r := Round((ca and $FF) + ((cb and $FF) - (ca and $FF)) * T);
|
||||
g := Round(((ca shr 8) and $FF) + (((cb shr 8) and $FF) - ((ca shr 8) and $FF)) * T);
|
||||
bl := Round(((ca shr 16) and $FF)+ (((cb shr 16) and $FF)- ((ca shr 16) and $FF))* T);
|
||||
Result := TColor(r or (g shl 8) or (bl shl 16));
|
||||
end;
|
||||
|
||||
procedure TFlatButton.Paint;
|
||||
begin
|
||||
PaintFlatButton(Canvas, ClientRect, Caption, FActive, FHot,
|
||||
FClrNorm, FClrActive, FClrHot, FClrBorder, FClrText, FClrTextAct);
|
||||
if Enabled then
|
||||
PaintFlatButton(Canvas, ClientRect, Caption, FActive, FHot,
|
||||
FClrNorm, FClrActive, FClrHot, FClrBorder, FClrText, FClrTextAct)
|
||||
else
|
||||
// disabled: не active/не hot, текст и рамка приглушены к фону.
|
||||
PaintFlatButton(Canvas, ClientRect, Caption, False, False,
|
||||
FClrNorm, FClrActive, FClrHot,
|
||||
BlendCol(FClrBorder, FClrNorm, 0.6),
|
||||
BlendCol(FClrText, FClrNorm, 0.55), FClrTextAct);
|
||||
end;
|
||||
|
||||
procedure TFlatButton.MouseEnter;
|
||||
|
||||
Reference in New Issue
Block a user