Add classic design, set as default
Classic = original flat white design (matches reference screenshot)
This commit is contained in:
+35
-7
@@ -1,12 +1,23 @@
|
|||||||
"""Render-Pipeline für das Dashboard.
|
"""Render-Pipeline für das Dashboard.
|
||||||
|
|
||||||
Unterstützt 3 Display-Designs:
|
Unterstützte Display-Designs:
|
||||||
magazine — großes TYPO, schmale Balken, monochrome Akzente
|
classic — Original flach, weiß, kein UI-Chrome (DEFAULT)
|
||||||
cards — Panel-Hintergründe, Emoji-Icons, vertikale Ränder
|
minimal — Schwarz/Weiß, bold, clean, viel Weißraum
|
||||||
kiosk — Daten-first, viele kleine Info-Zellen, kompakt
|
minimal_color — Minimal + dezenter Akzent-Strich pro Kategorie
|
||||||
|
bold — Riesen-Typography, 1px-Rahmen, vollflächig
|
||||||
|
analog — 2×2-Uhr als Ziffernblatt, Rest clean Panels
|
||||||
|
magazine — Bold Typography, farbige Akzentstreifen links
|
||||||
|
cards — iOS-Widget-Style, Emoji-Icons, warme Paneele
|
||||||
|
kiosk — Dunkel, Daten-first, kompakte Info-Zellen
|
||||||
|
wireframe — Blueprint-Style, gestrichelte Rahmen, keine Füllungen
|
||||||
|
bauhaus — Geometrische Primärfarben, blockweise
|
||||||
|
poster — Farbige Flächen, bold, fast nur Content
|
||||||
|
retro_lcd — Alte LCD-Uhren-Ästhetik, grüner Hintergrund
|
||||||
|
glossy — Moderner iOS-Style, Emoji-Icons, Panels
|
||||||
|
data_board — Kontrollraum-Dashboard, dunkel, invertierte Karten
|
||||||
|
|
||||||
Aufruf:
|
Aufruf:
|
||||||
img = render_design(items, widgets, fonts, design="magazine")
|
img = render_design(items, widgets, fonts, design="classic")
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from PIL import Image, ImageDraw, ImageFont
|
from PIL import Image, ImageDraw, ImageFont
|
||||||
@@ -20,7 +31,7 @@ CELL_W = DISPLAY_W // COLS
|
|||||||
CELL_H = DISPLAY_H // ROWS
|
CELL_H = DISPLAY_H // ROWS
|
||||||
|
|
||||||
|
|
||||||
def render_design(items, widgets, fonts, design="magazine") -> Image.Image:
|
def render_design(items, widgets, fonts, design="classic") -> Image.Image:
|
||||||
fn = {
|
fn = {
|
||||||
"magazine": _render_magazine,
|
"magazine": _render_magazine,
|
||||||
"cards": _render_cards,
|
"cards": _render_cards,
|
||||||
@@ -35,7 +46,8 @@ def render_design(items, widgets, fonts, design="magazine") -> Image.Image:
|
|||||||
"minimal_color": _render_minimal_color,
|
"minimal_color": _render_minimal_color,
|
||||||
"bold": _render_bold,
|
"bold": _render_bold,
|
||||||
"analog": _render_analog_clock,
|
"analog": _render_analog_clock,
|
||||||
}.get(design, _render_minimal)
|
"classic": _render_classic,
|
||||||
|
}.get(design, _render_classic)
|
||||||
return fn(items, widgets, fonts)
|
return fn(items, widgets, fonts)
|
||||||
|
|
||||||
|
|
||||||
@@ -366,6 +378,22 @@ def _render_data_board(items, widgets, fonts) -> Image.Image:
|
|||||||
return img
|
return img
|
||||||
|
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# CLASSIC — Original flaches Design
|
||||||
|
# Weißer Hintergrund, kein UI-Chrome, widget füllt Zelle aus
|
||||||
|
# Das was auf deinem Referenz-Bild zu sehen ist
|
||||||
|
# ============================================================================
|
||||||
|
def _render_classic(items, widgets, fonts) -> Image.Image:
|
||||||
|
img = Image.new("RGB", (DISPLAY_W, DISPLAY_H), WHITE)
|
||||||
|
draw = ImageDraw.Draw(img)
|
||||||
|
for item, widget in zip(items, widgets):
|
||||||
|
x, y, w, h = _px(item)
|
||||||
|
if widget is None:
|
||||||
|
continue
|
||||||
|
widget.render(draw, fonts, x + 8, y + 8, w - 16, h - 16)
|
||||||
|
return img
|
||||||
|
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
# MINIMAL — das Referenz-Design
|
# MINIMAL — das Referenz-Design
|
||||||
# Schwarz/Weiß, bold, clean, viel Weißraum. Kein UI-Chrome.
|
# Schwarz/Weiß, bold, clean, viel Weißraum. Kein UI-Chrome.
|
||||||
|
|||||||
Reference in New Issue
Block a user