From fdc1b378a3eb3cf325592b801c43e2ec2478ddff Mon Sep 17 00:00:00 2001 From: Laurenz Date: Mon, 30 Nov 2020 22:07:08 +0100 Subject: =?UTF-8?q?Compress=20images=20in=20PDFs=20=E2=9A=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/library/insert.rs | 16 ++++------------ src/library/layout.rs | 6 +++--- 2 files changed, 7 insertions(+), 15 deletions(-) (limited to 'src/library') diff --git a/src/library/insert.rs b/src/library/insert.rs index c196ce9e..a06cf170 100644 --- a/src/library/insert.rs +++ b/src/library/insert.rs @@ -1,9 +1,6 @@ -use std::io::Cursor; - -use image::io::Reader; use image::GenericImageView; -use crate::env::ResourceId; +use crate::env::{ImageResource, ResourceId}; use crate::layout::*; use crate::prelude::*; @@ -20,15 +17,10 @@ pub fn image(mut args: Args, ctx: &mut EvalContext) -> Value { if let Some(path) = path { let mut env = ctx.env.borrow_mut(); - let loaded = env.resources.load(path.v, |data| { - Reader::new(Cursor::new(data)) - .with_guessed_format() - .ok() - .and_then(|reader| reader.decode().ok()) - }); + let loaded = env.resources.load(path.v, ImageResource::parse); - if let Some((res, buf)) = loaded { - let dimensions = buf.dimensions(); + if let Some((res, img)) = loaded { + let dimensions = img.buf.dimensions(); drop(env); ctx.push(Image { res, diff --git a/src/library/layout.rs b/src/library/layout.rs index 26f94f22..4a787f1e 100644 --- a/src/library/layout.rs +++ b/src/library/layout.rs @@ -316,13 +316,13 @@ pub fn page(mut args: Args, ctx: &mut EvalContext) -> Value { args.done(ctx); if let Some(body) = body { - ctx.end_page_group(); + ctx.end_page_group(false); ctx.start_page_group(true); body.eval(ctx); ctx.state = snapshot; } - ctx.end_page_group(); + ctx.end_page_group(false); ctx.start_page_group(false); Value::None @@ -331,7 +331,7 @@ pub fn page(mut args: Args, ctx: &mut EvalContext) -> Value { /// `pagebreak`: Start a new page. pub fn pagebreak(args: Args, ctx: &mut EvalContext) -> Value { args.done(ctx); - ctx.end_page_group(); + ctx.end_page_group(false); ctx.start_page_group(true); Value::None } -- cgit v1.2.3