summaryrefslogtreecommitdiff
path: root/src/library/graphics
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-04-07 18:04:29 +0200
committerLaurenz <laurmaedje@gmail.com>2022-04-07 18:04:29 +0200
commit4bb6240b401605ef6d905273db07545e14f9a21f (patch)
treeb01163a5fce3fe62d16abcbdabf37bc373617ff1 /src/library/graphics
parent1192132dc0a9e991953fd29e93f87c8437a53ea0 (diff)
Make `Relative` generic
Diffstat (limited to 'src/library/graphics')
-rw-r--r--src/library/graphics/line.rs17
-rw-r--r--src/library/graphics/shape.rs2
-rw-r--r--src/library/graphics/transform.rs8
3 files changed, 15 insertions, 12 deletions
diff --git a/src/library/graphics/line.rs b/src/library/graphics/line.rs
index 1ca25bd9..571506c1 100644
--- a/src/library/graphics/line.rs
+++ b/src/library/graphics/line.rs
@@ -3,8 +3,10 @@ use crate::library::prelude::*;
/// Display a line without affecting the layout.
#[derive(Debug, Hash)]
pub struct LineNode {
- origin: Spec<Relative>,
- delta: Spec<Relative>,
+ /// Where the line starts.
+ origin: Spec<Relative<Length>>,
+ /// The offset from the `origin` where the line ends.
+ delta: Spec<Relative<Length>>,
}
#[node]
@@ -15,14 +17,15 @@ impl LineNode {
pub const THICKNESS: Length = Length::pt(1.0);
fn construct(_: &mut Context, args: &mut Args) -> TypResult<Content> {
- let origin = args.named::<Spec<Relative>>("origin")?.unwrap_or_default();
- let delta = match args.named::<Spec<Relative>>("to")? {
+ let origin = args.named("origin")?.unwrap_or_default();
+ let delta = match args.named::<Spec<Relative<Length>>>("to")? {
Some(to) => to.zip(origin).map(|(to, from)| to - from),
None => {
- let length =
- args.named::<Relative>("length")?.unwrap_or(Length::cm(1.0).into());
- let angle = args.named::<Angle>("angle")?.unwrap_or_default();
+ let length = args
+ .named::<Relative<Length>>("length")?
+ .unwrap_or(Length::cm(1.0).into());
+ let angle = args.named::<Angle>("angle")?.unwrap_or_default();
let x = angle.cos() * length;
let y = angle.sin() * length;
diff --git a/src/library/graphics/shape.rs b/src/library/graphics/shape.rs
index 3f338d1a..9faa4c52 100644
--- a/src/library/graphics/shape.rs
+++ b/src/library/graphics/shape.rs
@@ -28,7 +28,7 @@ impl<const S: ShapeKind> ShapeNode<S> {
/// The stroke's thickness.
pub const THICKNESS: Length = Length::pt(1.0);
/// How much to pad the shape's content.
- pub const PADDING: Relative = Relative::zero();
+ pub const PADDING: Relative<Length> = Relative::zero();
fn construct(_: &mut Context, args: &mut Args) -> TypResult<Content> {
let size = match S {
diff --git a/src/library/graphics/transform.rs b/src/library/graphics/transform.rs
index 1ce91f28..eb419a7e 100644
--- a/src/library/graphics/transform.rs
+++ b/src/library/graphics/transform.rs
@@ -29,11 +29,11 @@ impl<const T: TransformKind> TransformNode<T> {
MOVE => {
let tx = args.named("x")?.unwrap_or_default();
let ty = args.named("y")?.unwrap_or_default();
- Transform::translation(tx, ty)
+ Transform::translate(tx, ty)
}
ROTATE => {
let angle = args.named_or_find("angle")?.unwrap_or_default();
- Transform::rotation(angle)
+ Transform::rotate(angle)
}
SCALE | _ => {
let all = args.find()?;
@@ -62,9 +62,9 @@ impl<const T: TransformKind> Layout for TransformNode<T> {
for frame in &mut frames {
let Spec { x, y } = origin.zip(frame.size).map(|(o, s)| o.resolve(s));
- let transform = Transform::translation(x, y)
+ let transform = Transform::translate(x, y)
.pre_concat(self.transform)
- .pre_concat(Transform::translation(-x, -y));
+ .pre_concat(Transform::translate(-x, -y));
Arc::make_mut(frame).transform(transform);
}