mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-07-13 05:12:11 +08:00
36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
from __future__ import annotations
|
|
|
|
import math
|
|
|
|
import pyray as rl
|
|
|
|
from openpilot.common.params import Params
|
|
|
|
|
|
def blend_colors(a: rl.Color, b: rl.Color, f: float) -> rl.Color:
|
|
h0, s0, v0 = (hsv0 := rl.color_to_hsv(a)).x, hsv0.y, hsv0.z
|
|
h1, s1, v1 = (hsv1 := rl.color_to_hsv(b)).x, hsv1.y, hsv1.z
|
|
dh = ((h1 - h0 + 180) % 360) - 180 # shortest hue delta
|
|
return rl.color_from_hsv((h0 + f * dh) % 360,
|
|
s0 + f * (s1 - s0),
|
|
v0 + f * (v1 - v0))
|
|
|
|
|
|
def get_border_width(base_width: int, params: Params | None = None) -> int:
|
|
active_params = params if params is not None else Params()
|
|
|
|
scale = active_params.get_float("BorderWidth", return_default=True, default=100.0)
|
|
if not math.isfinite(scale):
|
|
scale = 100.0
|
|
scale = min(250.0, max(25.0, scale))
|
|
|
|
return max(1, int(round(base_width * scale / 100.0)))
|
|
|
|
|
|
def lead_indicator_enabled(params: Params | None = None, *, hide_by_default: bool = False) -> bool:
|
|
active_params = params if params is not None else Params()
|
|
|
|
if active_params.get("HideLeadMarker") is None:
|
|
return not hide_by_default
|
|
return not active_params.get_bool("HideLeadMarker")
|