1
0
forked from HEL/circuiteria

initial rewrite of drawing pipeline + positioning

This commit is contained in:
2025-04-18 17:25:38 +02:00
parent 2bb7e3b5a9
commit 358de4825d
6 changed files with 536 additions and 124 deletions

View File

@ -9,6 +9,38 @@
/// - length (length, ratio): Optional base unit
/// -> none
#let circuit(body, length: 2em) = {
set text(font: "Source Sans 3")
canvas(length: length, body)
let next-id = 0
let elements = (:)
for element in body {
let internal = type(element) == dictionary and "id" in element
let eid = if internal {element.id} else {none}
if eid == none {
while str(next-id) in elements {
next-id += 1
}
eid = str(next-id)
if internal {
element.id = eid
}
next-id += 1
}
elements.insert(eid, element)
}
for element in elements.values() {
if type(element) == dictionary and "pre-process" in element {
elements = (element.pre-process)(elements, element)
}
}
canvas(length: length, {
for element in elements.values() {
if type(element) == dictionary and "draw" in element {
(element.draw)(element)
} else {
(element,)
}
}
})
}