mirror of
https://github.com/typst/typst
synced 2025-05-14 04:56:26 +08:00
58 lines
1.9 KiB
Typst
58 lines
1.9 KiB
Typst
// Test polygons.
|
|
|
|
--- polygon ---
|
|
#set page(width: 50pt)
|
|
#set polygon(stroke: 0.75pt, fill: blue)
|
|
|
|
// These are not visible, but should also not give an error
|
|
#polygon()
|
|
#polygon((0em, 0pt))
|
|
#polygon((0pt, 0pt), (10pt, 0pt))
|
|
#polygon.regular(size: 0pt, vertices: 9)
|
|
|
|
#polygon((5pt, 0pt), (0pt, 10pt), (10pt, 10pt))
|
|
#polygon(
|
|
(0pt, 0pt), (5pt, 5pt), (10pt, 0pt),
|
|
(15pt, 5pt),
|
|
(5pt, 10pt)
|
|
)
|
|
#polygon(stroke: none, (5pt, 0pt), (0pt, 10pt), (10pt, 10pt))
|
|
#polygon(stroke: 3pt, fill: none, (5pt, 0pt), (0pt, 10pt), (10pt, 10pt))
|
|
|
|
// Relative size
|
|
#polygon((0pt, 0pt), (100%, 5pt), (50%, 10pt))
|
|
|
|
// Antiparallelogram
|
|
#polygon((0pt, 5pt), (5pt, 0pt), (0pt, 10pt), (5pt, 15pt))
|
|
|
|
// Self-intersections
|
|
#polygon((0pt, 10pt), (30pt, 20pt), (0pt, 30pt), (20pt, 0pt), (20pt, 35pt))
|
|
#polygon(fill-rule: "non-zero", (0pt, 10pt), (30pt, 20pt), (0pt, 30pt), (20pt, 0pt), (20pt, 35pt))
|
|
#polygon(fill-rule: "even-odd", (0pt, 10pt), (30pt, 20pt), (0pt, 30pt), (20pt, 0pt), (20pt, 35pt))
|
|
|
|
// Regular polygon; should have equal side lengths
|
|
#for k in range(3, 9) {polygon.regular(size: 30pt, vertices: k,)}
|
|
|
|
--- polygon-line-join ---
|
|
// Line joins
|
|
#stack(
|
|
dir: ltr,
|
|
spacing: 1em,
|
|
polygon(stroke: (thickness: 4pt, paint: blue, join: "round"),
|
|
(0pt, 20pt), (15pt, 0pt), (0pt, 40pt), (15pt, 45pt)),
|
|
polygon(stroke: (thickness: 4pt, paint: blue, join: "bevel"),
|
|
(0pt, 20pt), (15pt, 0pt), (0pt, 40pt), (15pt, 45pt)),
|
|
polygon(stroke: (thickness: 4pt, paint: blue, join: "miter"),
|
|
(0pt, 20pt), (15pt, 0pt), (0pt, 40pt), (15pt, 45pt)),
|
|
polygon(stroke: (thickness: 4pt, paint: blue, join: "miter", miter-limit: 20.0),
|
|
(0pt, 20pt), (15pt, 0pt), (0pt, 40pt), (15pt, 45pt)),
|
|
)
|
|
|
|
--- polygon-bad-point-array ---
|
|
// Error: 10-17 point array must contain exactly two entries
|
|
#polygon((50pt,))
|
|
|
|
--- polygon-infinite-size ---
|
|
// Error: 2-57 cannot create polygon with infinite size
|
|
#polygon((0pt, 0pt), (0pt, 1pt), (float.inf * 1pt, 0pt))
|