raylib: minor tweaks (#36507)

* try

* generic

* check

* why was this here?!
pull/36498/merge
Shane Smiskol 1 week ago committed by GitHub
parent e754b738ad
commit 2d6df2e125
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 1
      selfdrive/ui/__init__.py
  2. 3
      selfdrive/ui/onroad/augmented_road_view.py
  3. 3
      selfdrive/ui/onroad/driver_state.py
  4. 1
      selfdrive/ui/ui_state.py
  5. 13
      selfdrive/ui/widgets/pairing_dialog.py
  6. 2
      selfdrive/ui/widgets/prime.py
  7. 2
      selfdrive/ui/widgets/setup.py
  8. 2
      system/ui/lib/application.py
  9. 12
      system/ui/widgets/button.py

@ -0,0 +1 @@
UI_BORDER_SIZE = 30

@ -3,7 +3,8 @@ import numpy as np
import pyray as rl import pyray as rl
from cereal import log, messaging from cereal import log, messaging
from msgq.visionipc import VisionStreamType from msgq.visionipc import VisionStreamType
from openpilot.selfdrive.ui.ui_state import ui_state, UIStatus, UI_BORDER_SIZE from openpilot.selfdrive.ui import UI_BORDER_SIZE
from openpilot.selfdrive.ui.ui_state import ui_state, UIStatus
from openpilot.selfdrive.ui.onroad.alert_renderer import AlertRenderer from openpilot.selfdrive.ui.onroad.alert_renderer import AlertRenderer
from openpilot.selfdrive.ui.onroad.driver_state import DriverStateRenderer from openpilot.selfdrive.ui.onroad.driver_state import DriverStateRenderer
from openpilot.selfdrive.ui.onroad.hud_renderer import HudRenderer from openpilot.selfdrive.ui.onroad.hud_renderer import HudRenderer

@ -2,7 +2,8 @@ import numpy as np
import pyray as rl import pyray as rl
from cereal import log from cereal import log
from dataclasses import dataclass from dataclasses import dataclass
from openpilot.selfdrive.ui.ui_state import ui_state, UI_BORDER_SIZE from openpilot.selfdrive.ui import UI_BORDER_SIZE
from openpilot.selfdrive.ui.ui_state import ui_state
from openpilot.system.ui.lib.application import gui_app from openpilot.system.ui.lib.application import gui_app
from openpilot.system.ui.widgets import Widget from openpilot.system.ui.widgets import Widget

@ -12,7 +12,6 @@ from openpilot.selfdrive.ui.lib.prime_state import PrimeState
from openpilot.system.ui.lib.application import gui_app from openpilot.system.ui.lib.application import gui_app
from openpilot.system.hardware import HARDWARE from openpilot.system.hardware import HARDWARE
UI_BORDER_SIZE = 30
BACKLIGHT_OFFROAD = 50 BACKLIGHT_OFFROAD = 50

@ -11,21 +11,10 @@ from openpilot.system.ui.lib.application import FontWeight, gui_app
from openpilot.system.ui.lib.multilang import tr from openpilot.system.ui.lib.multilang import tr
from openpilot.system.ui.lib.wrap_text import wrap_text from openpilot.system.ui.lib.wrap_text import wrap_text
from openpilot.system.ui.lib.text_measure import measure_text_cached from openpilot.system.ui.lib.text_measure import measure_text_cached
from openpilot.system.ui.widgets.button import IconButton
from openpilot.selfdrive.ui.ui_state import ui_state from openpilot.selfdrive.ui.ui_state import ui_state
class IconButton(Widget):
def __init__(self, texture: rl.Texture):
super().__init__()
self._texture = texture
def _render(self, rect: rl.Rectangle):
color = rl.Color(180, 180, 180, 150) if self.is_pressed else rl.WHITE
draw_x = rect.x + (rect.width - self._texture.width) / 2
draw_y = rect.y + (rect.height - self._texture.height) / 2
rl.draw_texture(self._texture, int(draw_x), int(draw_y), color)
class PairingDialog(Widget): class PairingDialog(Widget):
"""Dialog for device pairing with QR code.""" """Dialog for device pairing with QR code."""

@ -34,7 +34,7 @@ class PrimeWidget(Widget):
# Description with wrapping # Description with wrapping
desc_y = y + 140 desc_y = y + 140
font = gui_app.font(FontWeight.LIGHT) font = gui_app.font(FontWeight.NORMAL)
wrapped_text = "\n".join(wrap_text(font, tr("Become a comma prime member at connect.comma.ai"), 56, int(w))) wrapped_text = "\n".join(wrap_text(font, tr("Become a comma prime member at connect.comma.ai"), 56, int(w)))
text_size = measure_text_cached(font, wrapped_text, 56) text_size = measure_text_cached(font, wrapped_text, 56)
rl.draw_text_ex(font, wrapped_text, rl.Vector2(x, desc_y), 56, 0, rl.WHITE) rl.draw_text_ex(font, wrapped_text, rl.Vector2(x, desc_y), 56, 0, rl.WHITE)

@ -46,7 +46,7 @@ class SetupWidget(Widget):
# Description # Description
desc = tr("Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer.") desc = tr("Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer.")
light_font = gui_app.font(FontWeight.LIGHT) light_font = gui_app.font(FontWeight.NORMAL)
wrapped = wrap_text(light_font, desc, 50, int(w)) wrapped = wrap_text(light_font, desc, 50, int(w))
for line in wrapped: for line in wrapped:
rl.draw_text_ex(light_font, line, rl.Vector2(x, y), 50, 0, rl.WHITE) rl.draw_text_ex(light_font, line, rl.Vector2(x, y), 50, 0, rl.WHITE)

@ -274,6 +274,8 @@ class GuiApplication:
rl.image_resize(image, new_width, new_height) rl.image_resize(image, new_width, new_height)
else: else:
rl.image_resize(image, width, height) rl.image_resize(image, width, height)
else:
assert keep_aspect_ratio, "Cannot resize without specifying width and height"
return image return image
def _load_texture_from_image(self, image: rl.Image) -> rl.Texture: def _load_texture_from_image(self, image: rl.Image) -> rl.Texture:

@ -169,3 +169,15 @@ class ButtonRadio(Button):
icon_y = self._rect.y + (self._rect.height - self._icon.height) / 2 icon_y = self._rect.y + (self._rect.height - self._icon.height) / 2
icon_x = self._rect.x + self._rect.width - self._icon.width - self._text_padding - ICON_PADDING icon_x = self._rect.x + self._rect.width - self._icon.width - self._text_padding - ICON_PADDING
rl.draw_texture_v(self._icon, rl.Vector2(icon_x, icon_y), rl.WHITE if self.enabled else rl.Color(255, 255, 255, 100)) rl.draw_texture_v(self._icon, rl.Vector2(icon_x, icon_y), rl.WHITE if self.enabled else rl.Color(255, 255, 255, 100))
class IconButton(Widget):
def __init__(self, texture: rl.Texture):
super().__init__()
self._texture = texture
def _render(self, rect: rl.Rectangle):
color = rl.Color(180, 180, 180, 150) if self.is_pressed else rl.WHITE
draw_x = rect.x + (rect.width - self._texture.width) / 2
draw_y = rect.y + (rect.height - self._texture.height) / 2
rl.draw_texture(self._texture, int(draw_x), int(draw_y), color)

Loading…
Cancel
Save