feat: font rendering + logo branding on wrapup slides
Some checks failed
CI / Check / Test (push) Failing after 43s

This commit is contained in:
2026-06-02 23:16:55 +02:00
parent 21c33b169e
commit efd1214a4c
5 changed files with 368 additions and 87 deletions

View File

@@ -1,6 +1,6 @@
mod slides;
mod charts;
mod ffmpeg;
mod slides;
use async_trait::async_trait;
use domain::errors::DomainError;
@@ -25,22 +25,27 @@ impl WrapUpVideoRenderer for FfmpegWrapUpRenderer {
) -> Result<Vec<u8>, DomainError> {
let (width, height) = config.resolution;
let renderer = slides::SlideRenderer::new(
config.font_path.as_deref(),
config.logo_path.as_deref(),
)?;
// 1. Generate slide images
let mut slide_pngs = Vec::new();
slide_pngs.push(slides::render_hero_slide(report, width, height)?);
slide_pngs.push(slides::render_ratings_slide(report, width, height)?);
slide_pngs.push(renderer.render_hero(report, width, height)?);
slide_pngs.push(renderer.render_ratings(report, width, height)?);
if !report.top_directors.is_empty() {
slide_pngs.push(slides::render_directors_slide(report, width, height)?);
slide_pngs.push(renderer.render_directors(report, width, height)?);
}
if !report.top_actors.is_empty() {
slide_pngs.push(slides::render_actors_slide(report, width, height)?);
slide_pngs.push(renderer.render_actors(report, width, height)?);
}
if !report.top_genres.is_empty() {
slide_pngs.push(charts::render_genre_chart(report, width, height)?);
}
slide_pngs.push(slides::render_highlights_slide(report, width, height)?);
slide_pngs.push(renderer.render_highlights(report, width, height)?);
if !poster_images.is_empty() {
slide_pngs.push(slides::render_mosaic_slide(&poster_images, width, height)?);
slide_pngs.push(renderer.render_mosaic(&poster_images, width, height)?);
}
// 2. Stitch into video