|
|
@ -1,11 +1,55 @@ |
|
|
|
import pyray as rl |
|
|
|
import pyray as rl |
|
|
|
|
|
|
|
from openpilot.system.ui.lib.application import gui_app, FontWeight, DEFAULT_TEXT_SIZE, DEFAULT_TEXT_COLOR |
|
|
|
from openpilot.system.ui.lib.utils import GuiStyleContext |
|
|
|
from openpilot.system.ui.lib.utils import GuiStyleContext |
|
|
|
|
|
|
|
|
|
|
|
def gui_label(rect, text, font_size): |
|
|
|
|
|
|
|
|
|
|
|
def gui_label( |
|
|
|
|
|
|
|
rect: rl.Rectangle, |
|
|
|
|
|
|
|
text: str, |
|
|
|
|
|
|
|
font_size: int = DEFAULT_TEXT_SIZE, |
|
|
|
|
|
|
|
color: rl.Color = DEFAULT_TEXT_COLOR, |
|
|
|
|
|
|
|
font_weight: FontWeight = FontWeight.NORMAL, |
|
|
|
|
|
|
|
alignment: int = rl.GuiTextAlignment.TEXT_ALIGN_LEFT, |
|
|
|
|
|
|
|
alignment_vertical: int = rl.GuiTextAlignmentVertical.TEXT_ALIGN_MIDDLE |
|
|
|
|
|
|
|
): |
|
|
|
|
|
|
|
# Set font based on the provided weight |
|
|
|
|
|
|
|
font = gui_app.font(font_weight) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Measure text size |
|
|
|
|
|
|
|
text_size = rl.measure_text_ex(font, text, font_size, 0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Calculate horizontal position based on alignment |
|
|
|
|
|
|
|
text_x = rect.x + { |
|
|
|
|
|
|
|
rl.GuiTextAlignment.TEXT_ALIGN_LEFT: 0, |
|
|
|
|
|
|
|
rl.GuiTextAlignment.TEXT_ALIGN_CENTER: (rect.width - text_size.x) / 2, |
|
|
|
|
|
|
|
rl.GuiTextAlignment.TEXT_ALIGN_RIGHT: rect.width - text_size.x, |
|
|
|
|
|
|
|
}.get(alignment, 0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Calculate vertical position based on alignment |
|
|
|
|
|
|
|
text_y = rect.y + { |
|
|
|
|
|
|
|
rl.GuiTextAlignmentVertical.TEXT_ALIGN_TOP: 0, |
|
|
|
|
|
|
|
rl.GuiTextAlignmentVertical.TEXT_ALIGN_MIDDLE: (rect.height - text_size.y) / 2, |
|
|
|
|
|
|
|
rl.GuiTextAlignmentVertical.TEXT_ALIGN_BOTTOM: rect.height - text_size.y, |
|
|
|
|
|
|
|
}.get(alignment_vertical, 0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Draw the text in the specified rectangle |
|
|
|
|
|
|
|
rl.draw_text_ex(font, text, rl.Vector2(text_x, text_y), font_size, 0, color) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def gui_text_box( |
|
|
|
|
|
|
|
rect: rl.Rectangle, |
|
|
|
|
|
|
|
text: str, |
|
|
|
|
|
|
|
font_size: int = DEFAULT_TEXT_SIZE, |
|
|
|
|
|
|
|
color: rl.Color = DEFAULT_TEXT_COLOR, |
|
|
|
|
|
|
|
alignment: int = rl.GuiTextAlignment.TEXT_ALIGN_LEFT, |
|
|
|
|
|
|
|
alignment_vertical: int = rl.GuiTextAlignmentVertical.TEXT_ALIGN_TOP |
|
|
|
|
|
|
|
): |
|
|
|
styles = [ |
|
|
|
styles = [ |
|
|
|
|
|
|
|
(rl.GuiControl.DEFAULT, rl.GuiControlProperty.TEXT_COLOR_NORMAL, rl.color_to_int(color)), |
|
|
|
(rl.GuiControl.DEFAULT, rl.GuiDefaultProperty.TEXT_SIZE, font_size), |
|
|
|
(rl.GuiControl.DEFAULT, rl.GuiDefaultProperty.TEXT_SIZE, font_size), |
|
|
|
(rl.GuiControl.DEFAULT, rl.GuiDefaultProperty.TEXT_LINE_SPACING, font_size), |
|
|
|
(rl.GuiControl.DEFAULT, rl.GuiDefaultProperty.TEXT_LINE_SPACING, font_size), |
|
|
|
(rl.GuiControl.DEFAULT, rl.GuiDefaultProperty.TEXT_ALIGNMENT_VERTICAL, rl.GuiTextAlignmentVertical.TEXT_ALIGN_TOP), |
|
|
|
(rl.GuiControl.DEFAULT, rl.GuiControlProperty.TEXT_ALIGNMENT, alignment), |
|
|
|
|
|
|
|
(rl.GuiControl.DEFAULT, rl.GuiDefaultProperty.TEXT_ALIGNMENT_VERTICAL, alignment_vertical), |
|
|
|
(rl.GuiControl.DEFAULT, rl.GuiDefaultProperty.TEXT_WRAP_MODE, rl.GuiTextWrapMode.TEXT_WRAP_WORD) |
|
|
|
(rl.GuiControl.DEFAULT, rl.GuiDefaultProperty.TEXT_WRAP_MODE, rl.GuiTextWrapMode.TEXT_WRAP_WORD) |
|
|
|
] |
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|