From 87e68e8fb4765a15ad2220c03f55a32f950feec5 Mon Sep 17 00:00:00 2001 From: johannes-wolf Date: Mon, 15 Jan 2024 18:20:29 +0100 Subject: [PATCH] draw: Remove deprecated functions --- src/draw/grouping.typ | 112 +++------------------------------- tests/anchor-on-path/ref.png | Bin 78266 -> 0 bytes tests/anchor-on-path/test.typ | 39 ------------ 3 files changed, 7 insertions(+), 144 deletions(-) delete mode 100644 tests/anchor-on-path/ref.png delete mode 100644 tests/anchor-on-path/test.typ diff --git a/src/draw/grouping.typ b/src/draw/grouping.typ index 0b15e774..79f04115 100644 --- a/src/draw/grouping.typ +++ b/src/draw/grouping.typ @@ -337,63 +337,6 @@ },) } -/// Place multiple anchors along a path. -/// -/// *DEPRECATED* -/// -/// #example(``` -/// place-anchors(circle(()), "circle", ("a", 0), ("b", .5), ("c", .75)) -/// for-each-anchor("circle", n => { -/// circle("circle." + n, radius: .1, fill: blue, stroke: none) -/// }) -/// ```) -/// -/// - path (drawable): Single drawable -/// - name: (string): The grouping elements name -/// - ..anchors (array): List of anchor tuples `(name, pos)` or dictionaries of the -/// form `(name: , pos: )`, where `pos` is a relative position -/// on the path from `0` to `1` or 0% to 100%. -#let place-anchors(path, name, ..anchors) = { - assert(type(name) == str, - message: "Name must be of type string, got: " + type(name)) - - return (ctx => { - let (ctx, drawables) = process.many(ctx, path) - - assert(drawables.first().type == "path") - let s = drawables.first().segments - - let out = (:) - for a in anchors.pos() { - assert(type(a) in (dictionary, array), - message: "Expected anchor tuple or dictionary, got: " + repr(a)) - let (name, pos) = if type(a) == dictionary { - (a.name, a.pos) - } else { - a - } - if type(pos) != ratio { - pos *= 100% - } - out.insert(name, path-util.point-on-path(s, pos)) - } - - return ( - ctx: ctx, - name: name, - anchors: anchor_.setup( - anchor => { - out.at(anchor) - }, - out.keys(), - name: name, - transform: none - ).last(), - drawables: drawables - ) - },) -} - /// An advanced element that allows you to modify the current canvas context. /// /// A context object holds the canvas' state, such as the element dictionary, @@ -515,53 +458,12 @@ },) } -/// TODO: Not writing the docs for this as it should be removed in place of better anchors before 0.2 -/// Place one or more marks along a path -/// -/// Mark items must get passed as positional arguments. A `mark-item` is an dictionary -/// of the format: `(mark: "", pos: )`, where the position `pos` is a -/// relative position from `0` to `1` along the path. -/// -/// - name (none,string): Element name -/// - path (drawable): A single drawable -/// - ..marks-style (mark-item,style): Positional `mark-item`s and style key-value pairs -#let place-marks(path, ..marks-style, name: none) = { - let (marks, style) = (marks-style.pos(), marks-style.named()) - assert(type(path) == array and path.len() == 1 and type(path.first()) == function) - path = path.first() - return (ctx => { - let (ctx, drawables) = process.element(ctx, path) - let paths = drawables.filter(d => d.type == "path") - assert(paths.len() > 0, message: "Cannot place marks on an element with no path.") - - let path = paths.first() - let anchors = ( - start: path-util.point-on-path(path.segments, 0%), - end: path-util.point-on-path(path.segments, 100%) - ) - - let style = styles.resolve(ctx.style, merge: style, root: "mark") - - for mark in marks { - let (pos, dir) = path-util.direction(path.segments, mark.pos) - drawables.push( - drawable.mark( - vector.add(pos, dir), - pos, - mark.mark, - style, - ) - ) - if "name" in mark { - anchors.insert(m.name, path-util.point-on-path(path, mark.pos * 100%)) - } - } +// DEPRECATED TODO: Remove +#let place-anchors(path, name, ..anchors) = { + panic("place-anchors got removed. Use path anchors `(name: , anchor: )` instead.") +} - return ( - ctx: ctx, - name: name, - drawables: drawables, - anchors: anchors, - ) - },) +// DEPRECATED TODO: Remove +#let place-marks(path, ..marks-style, name: none) = { + panic("place-marks got removed. Use the `pos:` key of marks for manual mark positioning.") } diff --git a/tests/anchor-on-path/ref.png b/tests/anchor-on-path/ref.png deleted file mode 100644 index 0a7e73034e13acfebce39c96bc6212a18e2cb749..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78266 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 diff --git a/tests/anchor-on-path/test.typ b/tests/anchor-on-path/test.typ deleted file mode 100644 index 97687483..00000000 --- a/tests/anchor-on-path/test.typ +++ /dev/null @@ -1,39 +0,0 @@ -#set page(width: auto, height: auto) -#import "../../src/lib.typ": * - -#box(stroke: 2pt + red, canvas({ - import draw: * - - let place-along = (path) => { - let name = "obj" - place-anchors(path, name, - ..range(0, 11).map(x => (name: str(x), pos: x / 10))) - - for x in range(0, 11) { - circle(name + "." + str(x), radius: .1) - } - } - - translate((0, 0)) - place-along(circle((0,0))) - - translate((0, 2)) - place-along(bezier((-1,0), (1,0), (-.5,1), (.5,-1))) - - translate((0, 2)) - place-along(line((-1,0), (-.5,1), (.5,-1), (1,0))) - - translate((0, 2)) - place-along(rect((-1,0), (1,1))) - - translate((0, 2)) - place-along(rect((-1,0), (1,1), radius: .35)) - - translate((0, 2)) - place-along(merge-path(close: true, { - line((0,0), (1,0)) - bezier((), (0,1), (1,1)) - line((0, 1), (-.5,1)) - arc((), start: 90deg, delta: 180deg, radius: .5) - })) -}))