From 6260878245bdf81d7b928777e4fc1018c6651878 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Sun, 12 Feb 2023 15:01:40 +0100 Subject: [PATCH] Let line have an extent --- library/src/visualize/line.rs | 3 ++- tests/ref/visualize/line.png | Bin 1562 -> 3016 bytes tests/typ/visualize/line.typ | 44 +++++++++++++++++----------------- 3 files changed, 24 insertions(+), 23 deletions(-) diff --git a/library/src/visualize/line.rs b/library/src/visualize/line.rs index 4b4867809..a8b0e334a 100644 --- a/library/src/visualize/line.rs +++ b/library/src/visualize/line.rs @@ -96,7 +96,8 @@ impl Layout for LineNode { .zip(regions.base) .map(|(l, b)| l.relative_to(b)); - let target = regions.expand.select(regions.first, Size::zero()); + let size = origin.max(origin + delta).max(Size::zero()); + let target = regions.expand.select(regions.first, size); let mut frame = Frame::new(target); let shape = Geometry::Line(delta.to_point()).stroked(stroke); diff --git a/tests/ref/visualize/line.png b/tests/ref/visualize/line.png index 4a73ccd733fe97431160d899f59b05d53134c475..89323f768b886bd88c95f5d7f6519028d795dcc1 100644 GIT binary patch literal 3016 zcmd5-dpy(s8lU7+R`OC9KUtY1QmuYs)Le?DjGs$5E>mqSB)7R&6OlreTvC`@S*K8u zTw*!Ikmb@`(ux>1Hn*6$Z0DQ)>744E&VT3odVMd?`+2_a&-;0v&-eLWw?SKMSg*Vu z1Ojb99XnzR0*S2!PCe;003zKRu>=CiB%zL&*oVI7W)V-M@Ku}0e~7`12XEBCwWAnD zpB*-v?UY2kJ^A!P)nBhELFIc>ok#MVw56Yc##{92)Dj(1%5$8~KP?yDfg2>m=~-B1 zp1f}2xz>mnS!M>?4nOCK^2Sadrwl878O{=UOBK8oob-vPz%{ zX)MTC67<`bP{i=?FonVK?kNsJJ}xS9c*N-I>-!*2^H71GXI42R7YsEe@kK>68coch zg+?R6*e$8rOxd~c8W@VrW^aGVF)=aW@pvCrqK`@vi6Ske1RNUe1YcNMI-WetKVw=!SRK#G0S@51Hff_*Bb3Jv(76k$&h@&K$g~yj<6<%0Aa-XKKqWbqj>P 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 RVqkH>;OXk;vd$@?2>>ZQtfl|} diff --git a/tests/typ/visualize/line.typ b/tests/typ/visualize/line.typ index 2085daa13..a7bca6135 100644 --- a/tests/typ/visualize/line.typ +++ b/tests/typ/visualize/line.typ @@ -1,17 +1,16 @@ -// Test lines +// Test lines. --- -// Default line. -#line() +#set page(height: 60pt) +#box({ + set line(stroke: 0.75pt) + place(line(end: (0.4em, 0pt))) + place(line(start: (0pt, 0.4em), end: (0pt, 0pt))) + line(end: (0.6em, 0.6em)) +}) +Hello #line()! ---- -// Test the `end` argument. -#{ - line(end: (10pt, 0pt)) - line(start: (0pt, 10pt), end: (0pt, 0pt)) - line(end: (15pt, 15pt)) -} -#v(.5cm) +#line(end: (70%, 50%)) --- // Test the angle argument and positioning. @@ -19,20 +18,21 @@ #set page(fill: rgb("0B1026")) #set line(stroke: white) -#let star(width, ..args) = box(width: width, height: width)[ +#let star(size, ..args) = box(width: size, height: size)[ #set text(spacing: 0%) #set line(..args) #set align(left) - #line(length: +30%, start: (09.0%, 02%)) - #line(length: +30%, start: (38.7%, 02%), angle: -72deg) - #line(length: +30%, start: (57.5%, 02%), angle: 252deg) - #line(length: +30%, start: (57.3%, 02%)) - #line(length: -30%, start: (88.0%, 02%), angle: -36deg) - #line(length: +30%, start: (73.3%, 48%), angle: 252deg) - #line(length: -30%, start: (73.5%, 48%), angle: 36deg) - #line(length: +30%, start: (25.4%, 48%), angle: -36deg) - #line(length: +30%, start: (25.6%, 48%), angle: -72deg) - #line(length: +32%, start: (8.50%, 02%), angle: 34deg) + #v(30%) + #place(line(length: +30%, start: (09.0%, 02%))) + #place(line(length: +30%, start: (38.7%, 02%), angle: -72deg)) + #place(line(length: +30%, start: (57.5%, 02%), angle: 252deg)) + #place(line(length: +30%, start: (57.3%, 02%))) + #place(line(length: -30%, start: (88.0%, 02%), angle: -36deg)) + #place(line(length: +30%, start: (73.3%, 48%), angle: 252deg)) + #place(line(length: -30%, start: (73.5%, 48%), angle: 36deg)) + #place(line(length: +30%, start: (25.4%, 48%), angle: -36deg)) + #place(line(length: +30%, start: (25.6%, 48%), angle: -72deg)) + #place(line(length: +32%, start: (8.50%, 02%), angle: 34deg)) ] #align(center, grid(