From d7244c2cc7b8f62f2f42cca7f3dece89c30bf105 Mon Sep 17 00:00:00 2001 From: Julian T Date: Mon, 26 Jul 2021 23:50:07 +0200 Subject: Add scaled image to page --- src/piece.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src/piece.rs') diff --git a/src/piece.rs b/src/piece.rs index 2c0b545..1ebad66 100644 --- a/src/piece.rs +++ b/src/piece.rs @@ -1,4 +1,5 @@ use std::path::PathBuf; +use std::collections::HashMap; use crate::picture::{Picture, ConversionError}; use crate::context::Context; use tera::Context as WebContext; @@ -8,14 +9,14 @@ use serde::Serialize; pub struct Piece { pic: Picture, - scaled_path: PathBuf, - //thumb_path: PathBuf, + scaled: HashMap, info: Option, } pub fn create_index(ctx: &Context, pieces: &[Piece]) -> Result<(), tera::Error> { let mut web_ctx = WebContext::new(); web_ctx.insert("pieces", pieces); + web_ctx.insert("opts", &ctx.options); println!("render: {}", ctx.tmpl.render("index.html", &web_ctx)?); Ok(()) @@ -25,15 +26,19 @@ impl Piece { pub fn new(ctx: &Context, pic: Picture) -> Result { println!("Creating piece from file {}", pic.path.display()); let mut conv = pic.convert()?; - let scaled_path = conv.get_size(ctx, ctx.options.size_scaled)?; - //let thumb_path = conv.get_size(ctx, ctx.options.size_thumb)?; + let mut scaled = HashMap::with_capacity(ctx.config.sizes.capacity()); + + // Create all needed sizes + for (id, size) in ctx.config.sizes.iter() { + scaled.insert(id.clone(), conv.get_size(ctx, *size)?); + } let info: Option = pic.path.file_name() .map(|name| name.to_str()).flatten() .map(|name| ctx.config.info.get(name).map(|s| s.clone())).flatten(); Ok(Piece { - pic, scaled_path, info, + pic, scaled, info, }) } } -- cgit v1.2.3