Skip to content

feat: Starter-Poster-Seite pro Generation (3×3-Binder-Frontpage) #2

Description

@DerFlash

Zusammenfassung

Vor jeder Generationssektion im Pokédex-PDF soll eine neue Art von Trenn-/Frontpage eingefügt werden: Eine A4-Seite, die ein großes Bild der drei Starter-Pokémon der jeweiligen Generation zeigt – aufgeteilt in ein 3×3-Raster (Kartengröße 63,5 × 88,9 mm), sodass die 9 Felder direkt in die 9 Hüllen einer 9-Pocket-Binder-Seite passen und zusammen ein zusammenhängendes Bild ergeben.


Motivation / Kontext

Aktuell zeigt jede Generationssektion eine Cover-Seite mit Farbstreifen, Regionname, ID-Range und drei einzelnen Feature-Pokémon-Bildern (nebeneinander unten). Diese Cover-Seite ist informativ, aber der Nutzer legt sie nicht in den Binder ein.

Die neue „Starter-Poster-Seite" dient als visuell ansprechende Trennseite innerhalb des Binders, die man ausschneidet und direkt in die 9 Hüllen steckt – ähnlich einem Puzzle-Poster in Kartengröße.


Gewünschtes Verhalten

  • Pro Generation eine zusätzliche A4-Seite, die vor oder anstelle der aktuellen Cover-Seite eingefügt wird (konfigurierbar).
  • Die Seite ist als 3×3-Raster aufgebaut, jede Zelle exakt 63,5 × 88,9 mm (Standard-Pokémon-Kartengröße).
  • Das Raster zeigt die drei Starter der Generation als Artwork, verteilt über die gesamte Fläche (z. B. Querformat-Panorama oder zentriertes Komposit).
  • Schneidemarken an den Zellgrenzen (wie bereits im grid_3x3.svg-Template vorhanden: config/templates/pages/grid_3x3.svg), damit man die 9 Teile sauber trennen kann – mit Schere oder Schneidemaschine.
  • Optionales Overlay: kleiner Generationsname / Regionsname in einer Ecke (dezent, nicht auf dem Hauptbild störend).

Aktueller Projektstand (technische Einordnung)

Vorhandene Infrastruktur

Komponente Datei Relevanz
Cover-Renderer scripts/pdf/lib/rendering/cover_renderer.py Zeichnet aktuell die Generationscover mit render_cover()
Page-Renderer scripts/pdf/lib/rendering/page_renderer.py Zuständig für 3×3-Raster, Schneidemarken, Footer
Variant-PDF-Generator scripts/pdf/lib/variant_pdf_generator.py Iteriert über sections, ruft _draw_section_cover() auf
PDF-Generator (Pokédex) scripts/pdf/lib/pdf_generator.py Ruft _draw_cover_page() für jede Generation
Seitentemplate config/templates/pages/grid_3x3.svg Enthält bereits Schneidemarken (<g id="cropMarks">)
Generationsdaten (JSON) data/output/Pokedex.json Pro Section: featured_elements mit den 3 Starter-Pokémon, local_image_path, image_url, color_hex
Bild-Cache data/pokemon_images_cache/pokemon_#NNN/ Official-Artwork PNGs bereits gecacht (aus cache_pokemon_images-Step)

Datenstruktur featured_elements (Beispiel Gen 1)

"featured_elements": [
  { "pokemon_id": 1,  "pokemon_name": "Bulbasaur",  "local_image_path": "data/section_artwork/pokemon_1_pokedex.png",  "image_url": "..." },
  { "pokemon_id": 4,  "pokemon_name": "Charmander", "local_image_path": "data/section_artwork/pokemon_4_pokedex.png",  "image_url": "..." },
  { "pokemon_id": 7,  "pokemon_name": "Squirtle",   "local_image_path": "data/section_artwork/pokemon_7_pokedex.png",  "image_url": "..." }
]

Die Starter-Pokémon sind also bereits als featured_elements in den Sektionen vorhanden und haben lokale Image-Caches.


Technische Umsetzungsidee

Option A – Neue Render-Methode im CoverRenderer (empfohlen)

Neue Methode render_starter_poster(canvas_obj, section_data, color) im CoverRenderer:

  1. Weißer Hintergrund + optionaler farbiger Rand/Akzent in section.color_hex.
  2. Die drei featured_elements-Bilder werden auf das A4-Blatt verteilt, sodass zusammen alle 9 Kartenpositionen (3×3) belegt werden – z. B.:
    • Linke 3 Zellen: Starter 1 (aufgeteilt)
    • Mittlere 3 Zellen: Starter 2
    • Rechte 3 Zellen: Starter 3
    • Alternativ: Ein großes Panoramabild über alle 9 Zellen (wenn ein zusammengesetztes Artwork vorhanden ist)
  3. Schneidemarken aus page_renderer.draw_cutting_guides() werden auf diese Seite angewendet.
  4. Dezenter Text (Generationsname, Region) am Rand oder in einer Zelle.

Option B – Neuer StarterPosterRenderer

Eigene Renderer-Klasse analog zu CoverRenderer, ausschließlich für diesen Seitentyp.

Integration in den Workflow

  • In variant_pdf_generator._generate_with_sections(): Pro Section nach dem _draw_section_cover()-Aufruf (oder als Ersatz) die neue Starter-Poster-Seite einzufügen.
  • In pdf_generator.PDFGenerator.generate(): Analog für den klassischen Pokédex-Flow.
  • Steuerbar über einen Scope-Parameter in Pokedex.yaml, z. B.:
    section_frontpage: starter_poster   # statt: cover (Standard)

Offene Fragen / Designentscheidungen

  1. Bildkomposition: Wie werden die 3 Starter-Bilder auf 9 Kartenzellen verteilt?
    • Je Starter 3 Zellen (eine Spalte)?
    • Panorama-Montage mit KI-generiertem Bild?
    • Jeder Starter in 1 Zelle (Mitte), die anderen 6 mit Hintergrundfarbe/Pattern?
  2. Bestehende Cover-Seite beibehalten? Starter-Poster zusätzlich oder als Ersatz?
  3. Konfigurierbarkeit: Soll das Feature per Scope-YAML an/ausschaltbar sein?

Ursprüngliche Idee: Nutzer-Feedback (WhatsApp, 14. Mai 2026)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions