From 99cb655832161d4ebec73273a15453a8f6acc1b7 Mon Sep 17 00:00:00 2001 From: Martin Haug Date: Fri, 27 May 2022 12:56:20 +0200 Subject: [PATCH] Intra-document links --- src/eval/value.rs | 10 ++++-- src/export/pdf.rs | 70 ++++++++++++++++++++++++++------------- src/frame.rs | 28 +++++++++++++--- src/library/text/link.rs | 65 ++++++++++++++++++++++++++---------- src/library/text/mod.rs | 2 +- tests/ref/text/link.png | Bin 35262 -> 41124 bytes tests/typ/text/link.typ | 4 +++ 7 files changed, 131 insertions(+), 48 deletions(-) diff --git a/src/eval/value.rs b/src/eval/value.rs index 011a7613f..b47d1e910 100644 --- a/src/eval/value.rs +++ b/src/eval/value.rs @@ -634,9 +634,13 @@ where Ok(sides) } - v => T::cast(v) - .map(Sides::splat) - .map_err(|msg| with_alternative(msg, "dictionary")), + v => T::cast(v).map(Sides::splat).map_err(|msg| { + with_alternative( + msg, + "dictionary with any of `left`, `top`, `right`, `bottom`,\ + `x`, `y`, or `rest` as keys", + ) + }), } } } diff --git a/src/export/pdf.rs b/src/export/pdf.rs index 7fda504eb..aeb5c47eb 100644 --- a/src/export/pdf.rs +++ b/src/export/pdf.rs @@ -16,10 +16,10 @@ use ttf_parser::{name_id, GlyphId, Tag}; use super::subset::subset; use crate::font::{find_name, FaceId, FontStore}; -use crate::frame::{Element, Frame, Group, Text}; +use crate::frame::{Destination, Element, Frame, Group, Text}; use crate::geom::{ - self, Color, Dir, Em, Geometry, Length, Numeric, Paint, Point, Shape, Size, Stroke, - Transform, + self, Color, Dir, Em, Geometry, Length, Numeric, Paint, Point, Ratio, Shape, Size, + Stroke, Transform, }; use crate::image::{Image, ImageId, ImageStore, RasterImage}; use crate::library::text::Lang; @@ -304,13 +304,18 @@ impl<'a> PdfExporter<'a> { // The page objects (non-root nodes in the page tree). let mut page_refs = vec![]; - let mut languages = HashMap::new(); - for page in self.pages { + let mut page_heights = vec![]; + for page in &self.pages { let page_id = self.alloc.bump(); - let content_id = self.alloc.bump(); page_refs.push(page_id); + page_heights.push(page.size.y.to_f32()); + } - let mut page_writer = self.writer.page(page_id); + let mut languages = HashMap::new(); + for (page, page_id) in self.pages.into_iter().zip(page_refs.iter()) { + let content_id = self.alloc.bump(); + + let mut page_writer = self.writer.page(*page_id); page_writer.parent(page_tree_ref); let w = page.size.x.to_f32(); @@ -319,14 +324,25 @@ impl<'a> PdfExporter<'a> { page_writer.contents(content_id); let mut annotations = page_writer.annotations(); - for (url, rect) in page.links { - annotations - .push() - .subtype(AnnotationType::Link) - .rect(rect) - .action() - .action_type(ActionType::Uri) - .uri(Str(url.as_bytes())); + for (dest, rect) in page.links { + let mut link = annotations.push(); + link.subtype(AnnotationType::Link).rect(rect); + match dest { + Destination::Url(uri) => { + link.action() + .action_type(ActionType::Uri) + .uri(Str(uri.as_str().as_bytes())); + } + Destination::Internal(page, point) => { + let page = page - 1; + let height = page_heights[page]; + link.action() + .action_type(ActionType::GoTo) + .destination_direct() + .page(page_refs[page]) + .xyz(point.x.to_f32(), height - point.y.to_f32(), None); + } + } } annotations.finish(); @@ -403,7 +419,7 @@ struct PageExporter<'a> { languages: HashMap, bottom: f32, content: Content, - links: Vec<(String, Rect)>, + links: Vec<(Destination, Rect)>, state: State, saves: Vec, } @@ -412,7 +428,7 @@ struct PageExporter<'a> { struct Page { size: Size, content: Content, - links: Vec<(String, Rect)>, + links: Vec<(Destination, Rect)>, languages: HashMap, } @@ -445,7 +461,14 @@ impl<'a> PageExporter<'a> { fn export(mut self, frame: &Frame) -> Page { // Make the coordinate system start at the top-left. self.bottom = frame.size.y.to_f32(); - self.content.transform([1.0, 0.0, 0.0, -1.0, 0.0, self.bottom]); + self.transform(Transform { + sx: Ratio::one(), + ky: Ratio::zero(), + kx: Ratio::zero(), + sy: Ratio::new(-1.0), + tx: Length::zero(), + ty: frame.size.y, + }); self.content.set_fill_color_space(ColorSpaceOperand::Named(SRGB)); self.content.set_stroke_color_space(ColorSpaceOperand::Named(SRGB)); self.write_frame(frame); @@ -466,7 +489,7 @@ impl<'a> PageExporter<'a> { Element::Text(ref text) => self.write_text(x, y, text), Element::Shape(ref shape) => self.write_shape(x, y, shape), Element::Image(id, size) => self.write_image(x, y, id, size), - Element::Link(ref url, size) => self.write_link(pos, url, size), + Element::Link(ref dest, size) => self.write_link(pos, dest, size), } } } @@ -627,7 +650,7 @@ impl<'a> PageExporter<'a> { self.content.restore_state(); } - fn write_link(&mut self, pos: Point, url: &str, size: Size) { + fn write_link(&mut self, pos: Point, dest: &Destination, size: Size) { let mut min_x = Length::inf(); let mut min_y = Length::inf(); let mut max_x = -Length::inf(); @@ -649,10 +672,11 @@ impl<'a> PageExporter<'a> { let x1 = min_x.to_f32(); let x2 = max_x.to_f32(); - let y1 = self.bottom - max_y.to_f32(); - let y2 = self.bottom - min_y.to_f32(); + let y1 = max_y.to_f32(); + let y2 = min_y.to_f32(); let rect = Rect::new(x1, y1, x2, y2); - self.links.push((url.to_string(), rect)); + + self.links.push((dest.clone(), rect)); } fn save_state(&mut self) { diff --git a/src/frame.rs b/src/frame.rs index 04551e6e2..6475f92a2 100644 --- a/src/frame.rs +++ b/src/frame.rs @@ -127,8 +127,8 @@ impl Frame { } /// Link the whole frame to a resource. - pub fn link(&mut self, url: EcoString) { - self.push(Point::zero(), Element::Link(url, self.size)); + pub fn link(&mut self, dest: Destination) { + self.push(Point::zero(), Element::Link(dest, self.size)); } } @@ -217,7 +217,7 @@ pub enum Element { /// An image and its size. Image(ImageId, Size), /// A link to an external resource and its trigger region. - Link(EcoString, Size), + Link(Destination, Size), } impl Debug for Element { @@ -227,7 +227,7 @@ impl Debug for Element { Self::Text(text) => write!(f, "{text:?}"), Self::Shape(shape) => write!(f, "{shape:?}"), Self::Image(image, _) => write!(f, "{image:?}"), - Self::Link(url, _) => write!(f, "Link({url:?})"), + Self::Link(target, _) => write!(f, "Link({target:?})"), } } } @@ -308,3 +308,23 @@ pub struct Glyph { /// The first character of the glyph's cluster. pub c: char, } + +/// A link destination. +#[derive(Clone, Eq, PartialEq, Hash)] +pub enum Destination { + /// A link to a point on a page. + Internal(usize, Point), + /// A link to a URL. + Url(EcoString), +} + +impl Debug for Destination { + fn fmt(&self, f: &mut Formatter) -> fmt::Result { + match self { + Self::Internal(page, point) => { + write!(f, "Internal(Page {}, {:?})", page, point) + } + Self::Url(url) => write!(f, "Url({})", url), + } + } +} diff --git a/src/library/text/link.rs b/src/library/text/link.rs index 728b594f5..2ce7a4695 100644 --- a/src/library/text/link.rs +++ b/src/library/text/link.rs @@ -5,8 +5,8 @@ use crate::util::EcoString; /// Link text and other elements to an URL. #[derive(Debug, Hash)] pub struct LinkNode { - /// The url the link points to. - pub url: EcoString, + /// The destination the link points to. + pub dest: Destination, /// How the link is represented. pub body: Option, } @@ -17,20 +17,36 @@ impl LinkNode { /// if `auto`. pub const FILL: Smart = Smart::Auto; /// Whether to underline link. - pub const UNDERLINE: bool = true; + pub const UNDERLINE: Smart = Smart::Auto; fn construct(_: &mut Machine, args: &mut Args) -> TypResult { - Ok(Content::show(Self { - url: args.expect::("url")?, - body: args.eat()?, + Ok(Content::show({ + let dest = args.expect::("destination")?; + let body = match dest { + Destination::Url(_) => args.eat()?, + Destination::Internal(_, _) => Some(args.expect("body")?), + }; + Self { dest, body } })) } } +castable! { + Destination, + Expected: "string or dictionary with `page`, `x`, and `y` keys", + Value::Str(string) => Self::Url(string), + Value::Dict(dict) => { + let page: i64 = dict.get(&EcoString::from_str("page"))?.clone().cast()?; + let x: RawLength = dict.get(&EcoString::from_str("x"))?.clone().cast()?; + let y: RawLength = dict.get(&EcoString::from_str("y"))?.clone().cast()?; + Self::Internal(page as usize, Point::new(x.length, y.length)) + }, +} + impl Show for LinkNode { fn unguard(&self, sel: Selector) -> ShowNode { Self { - url: self.url.clone(), + dest: self.dest.clone(), body: self.body.as_ref().map(|body| body.unguard(sel)), } .pack() @@ -38,7 +54,14 @@ impl Show for LinkNode { fn encode(&self, _: StyleChain) -> Dict { dict! { - "url" => Value::Str(self.url.clone()), + "url" => match &self.dest { + Destination::Url(url) => Value::Str(url.clone()), + Destination::Internal(page, point) => Value::Dict(dict!{ + "page" => Value::Int(*page as i64), + "x" => Value::Length(point.x.into()), + "y" => Value::Length(point.y.into()), + }), + }, "body" => match &self.body { Some(body) => Value::Content(body.clone()), None => Value::None, @@ -47,14 +70,16 @@ impl Show for LinkNode { } fn realize(&self, _: &mut Context, _: StyleChain) -> TypResult { - Ok(self.body.clone().unwrap_or_else(|| { - let url = &self.url; - let mut text = url.as_str(); - for prefix in ["mailto:", "tel:"] { - text = text.trim_start_matches(prefix); + Ok(self.body.clone().unwrap_or_else(|| match &self.dest { + Destination::Url(url) => { + let mut text = url.as_str(); + for prefix in ["mailto:", "tel:"] { + text = text.trim_start_matches(prefix); + } + let shorter = text.len() < url.len(); + Content::Text(if shorter { text.into() } else { url.clone() }) } - let shorter = text.len() < url.len(); - Content::Text(if shorter { text.into() } else { url.clone() }) + Destination::Internal(_, _) => panic!("missing body"), })) } @@ -65,13 +90,19 @@ impl Show for LinkNode { mut realized: Content, ) -> TypResult { let mut map = StyleMap::new(); - map.set(TextNode::LINK, Some(self.url.clone())); + map.set(TextNode::LINK, Some(self.dest.clone())); if let Smart::Custom(fill) = styles.get(Self::FILL) { map.set(TextNode::FILL, fill); } - if styles.get(Self::UNDERLINE) { + if match styles.get(Self::UNDERLINE) { + Smart::Auto => match &self.dest { + Destination::Url(_) => true, + Destination::Internal(_, _) => false, + }, + Smart::Custom(underline) => underline, + } { realized = realized.underlined(); } diff --git a/src/library/text/mod.rs b/src/library/text/mod.rs index bbe397ca9..a10894863 100644 --- a/src/library/text/mod.rs +++ b/src/library/text/mod.rs @@ -122,7 +122,7 @@ impl TextNode { pub const SMALLCAPS: bool = false; /// An URL the text should link to. #[property(skip, referenced)] - pub const LINK: Option = None; + pub const LINK: Option = None; /// Decorative lines. #[property(skip, fold)] pub const DECO: Decoration = vec![]; diff --git a/tests/ref/text/link.png b/tests/ref/text/link.png index 75ea19e8043f564bc6ae8ffed481696ff5b8b016..5a9b4ca3bd742e82762003fd73f5602945d24aef 100644 GIT binary patch literal 41124 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 WHAwJBz10)&@1=~gbcv*X!2bXchcn0k diff --git a/tests/typ/text/link.typ b/tests/typ/text/link.typ index 64697bff5..01c0b88d1 100644 --- a/tests/typ/text/link.typ +++ b/tests/typ/text/link.typ @@ -33,3 +33,7 @@ My cool #move(dx: 0.7cm, dy: 0.7cm, rotate(10deg, scale(200%, mylink))) My cool rhino #move(dx: 10pt, image("/res/rhino.png", width: 1cm)) ]) + +--- +// Link to page one. +#link((page: 1, x: 10pt, y: 20pt))[Back to the start]