mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-04-10 13:02:59 +00:00
feat: Add smaller font for inning indicator and use in live MLB display
This commit is contained in:
@@ -176,6 +176,14 @@ class DisplayManager:
|
|||||||
self.small_font = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8)
|
self.small_font = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 8)
|
||||||
logger.info("Press Start 2P small font loaded successfully")
|
logger.info("Press Start 2P small font loaded successfully")
|
||||||
|
|
||||||
|
# Load another PressStart2P instance at size 6 for inning display
|
||||||
|
try:
|
||||||
|
self.inning_font = ImageFont.truetype("assets/fonts/PressStart2P-Regular.ttf", 6)
|
||||||
|
logger.info("Press Start 2P inning font (size 6) loaded successfully")
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"Failed to load Press Start 2P size 6: {e}. Falling back to small_font.")
|
||||||
|
self.inning_font = self.small_font
|
||||||
|
|
||||||
# Load 5x7 BDF font for calendar events
|
# Load 5x7 BDF font for calendar events
|
||||||
try:
|
try:
|
||||||
script_dir = os.path.dirname(os.path.abspath(__file__))
|
script_dir = os.path.dirname(os.path.abspath(__file__))
|
||||||
@@ -219,6 +227,8 @@ class DisplayManager:
|
|||||||
self.calendar_font = self.regular_font
|
self.calendar_font = self.regular_font
|
||||||
if not hasattr(self, 'extra_small_font'):
|
if not hasattr(self, 'extra_small_font'):
|
||||||
self.extra_small_font = self.regular_font
|
self.extra_small_font = self.regular_font
|
||||||
|
if not hasattr(self, 'inning_font'): # Add fallback for inning_font too
|
||||||
|
self.inning_font = self.small_font
|
||||||
|
|
||||||
def get_text_width(self, text, font):
|
def get_text_width(self, text, font):
|
||||||
"""Get the width of text when rendered with the given font."""
|
"""Get the width of text when rendered with the given font."""
|
||||||
|
|||||||
@@ -535,11 +535,12 @@ class MLBLiveManager(BaseMLBManager):
|
|||||||
# Draw Inning (Top Center)
|
# Draw Inning (Top Center)
|
||||||
inning_half_indicator = "▲" if game_data['inning_half'] == 'top' else "▼"
|
inning_half_indicator = "▲" if game_data['inning_half'] == 'top' else "▼"
|
||||||
inning_text = f"{inning_half_indicator}{game_data['inning']}"
|
inning_text = f"{inning_half_indicator}{game_data['inning']}"
|
||||||
inning_bbox = draw.textbbox((0, 0), inning_text, font=self.display_manager.font)
|
inning_font_to_use = self.display_manager.inning_font # Use the new smaller font
|
||||||
|
inning_bbox = draw.textbbox((0, 0), inning_text, font=inning_font_to_use)
|
||||||
inning_width = inning_bbox[2] - inning_bbox[0]
|
inning_width = inning_bbox[2] - inning_bbox[0]
|
||||||
inning_x = (width - inning_width) // 2
|
inning_x = (width - inning_width) // 2
|
||||||
inning_y = 2 # Position near top center
|
inning_y = 2 # Position near top center
|
||||||
draw.text((inning_x, inning_y), inning_text, fill=(255, 255, 255), font=self.display_manager.font)
|
draw.text((inning_x, inning_y), inning_text, fill=(255, 255, 255), font=inning_font_to_use)
|
||||||
|
|
||||||
# --- NEW BASES AND COUNT DRAWING ---
|
# --- NEW BASES AND COUNT DRAWING ---
|
||||||
bases_occupied = game_data['bases_occupied'] # [1st, 2nd, 3rd]
|
bases_occupied = game_data['bases_occupied'] # [1st, 2nd, 3rd]
|
||||||
|
|||||||
Reference in New Issue
Block a user