| 1 | use crate::{Canvas, Data, Point, Rect}; |
| 2 | |
| 3 | pub mod annotate { |
| 4 | use crate::prelude::*; |
| 5 | use crate::{Canvas, Data, Point, Rect}; |
| 6 | use skia_bindings::{ |
| 7 | SkAnnotateLinkToDestination, SkAnnotateNamedDestination, SkAnnotateRectWithURL, |
| 8 | }; |
| 9 | |
| 10 | pub fn rect_with_url(canvas: &Canvas, rect: impl AsRef<Rect>, data: &Data) { |
| 11 | unsafe { |
| 12 | SkAnnotateRectWithURL( |
| 13 | canvas.native_mut(), |
| 14 | rect.as_ref().native(), |
| 15 | data.native_mut_force(), |
| 16 | ) |
| 17 | } |
| 18 | } |
| 19 | |
| 20 | pub fn named_destination(canvas: &Canvas, point: impl Into<Point>, data: &Data) { |
| 21 | unsafe { |
| 22 | SkAnnotateNamedDestination( |
| 23 | canvas.native_mut(), |
| 24 | point.into().native(), |
| 25 | data.native_mut_force(), |
| 26 | ) |
| 27 | } |
| 28 | } |
| 29 | |
| 30 | pub fn link_to_destination(canvas: &Canvas, rect: impl AsRef<Rect>, data: &Data) { |
| 31 | unsafe { |
| 32 | SkAnnotateLinkToDestination( |
| 33 | canvas.native_mut(), |
| 34 | rect.as_ref().native(), |
| 35 | data.native_mut_force(), |
| 36 | ) |
| 37 | } |
| 38 | } |
| 39 | } |
| 40 | |
| 41 | impl Canvas { |
| 42 | // TODO: accept str or the Url type from the url crate? |
| 43 | pub fn annotate_rect_with_url(&self, rect: impl AsRef<Rect>, data: &Data) -> &Self { |
| 44 | annotate::rect_with_url(self, rect, data); |
| 45 | self |
| 46 | } |
| 47 | |
| 48 | // TODO: is data a string here, and if so, of what encoding? |
| 49 | pub fn annotate_named_destination(&self, point: impl Into<Point>, data: &Data) -> &Self { |
| 50 | annotate::named_destination(self, point, data); |
| 51 | self |
| 52 | } |
| 53 | |
| 54 | // TODO: use str? |
| 55 | pub fn annotate_link_to_destination(&self, rect: impl AsRef<Rect>, data: &Data) -> &Self { |
| 56 | annotate::link_to_destination(self, rect, data); |
| 57 | self |
| 58 | } |
| 59 | } |
| 60 | |