diff options
| author | Laurenz <laurmaedje@gmail.com> | 2020-11-30 22:07:08 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2020-11-30 22:07:08 +0100 |
| commit | fdc1b378a3eb3cf325592b801c43e2ec2478ddff (patch) | |
| tree | 0e83aa07d7ec49ac494746b44869d0306f5648fe /src/library | |
| parent | 21857064db8ca1bdf61b6e5ee37dff1a15083189 (diff) | |
Compress images in PDFs ⚙
Diffstat (limited to 'src/library')
| -rw-r--r-- | src/library/insert.rs | 16 | ||||
| -rw-r--r-- | src/library/layout.rs | 6 |
2 files changed, 7 insertions, 15 deletions
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 } |
