20 Commits

Author SHA1 Message Date
c9aa81af2e Merge pull request 'Release v0.2.1' (#25) from dev into main
Reviewed-on: #25
2026-07-03 23:37:38 +00:00
6871053810 Merge pull request 'Release v0.2.1' (#24) from release/0.2.1 into dev
Reviewed-on: #24
2026-07-03 23:36:46 +00:00
73b7348eed chore: remove duplicate alt text 2026-07-04 01:35:35 +02:00
b71e822bb8 chore: use preview import paths in examples 2026-06-30 21:40:09 +02:00
4c1025b1eb chore: remove "Typst" from description 2026-06-30 21:31:55 +02:00
b35c04a7d9 chore: add alt text on README images 2026-06-30 21:29:01 +02:00
0612e9b6ec chore: bump to 0.2.1 2026-06-30 21:13:41 +02:00
42d6915b15 Merge pull request 'fix: handle y port alignment with gates' (#22) from fix/15-gate-y-port-alignment into dev
Reviewed-on: #22
2026-06-30 19:08:48 +00:00
b646d24930 fix: handle y port alignment with gates 2026-06-30 21:07:52 +02:00
1533b5ccd4 Merge pull request 'Update manual and gallery' (#21) from feat/update-manual-and-gallery into dev
Reviewed-on: #21
2026-06-30 17:18:26 +00:00
2633b35f39 chore: remove gallery PDFs 2026-06-30 19:16:17 +02:00
415029e0c3 chore: update gallery examples 2026-06-30 19:15:26 +02:00
091ec8c08a chore: update manual 2026-06-30 19:13:19 +02:00
ffd3356ab2 docs: add radius parameter for block 2026-06-30 19:02:08 +02:00
02e59c5d7a Merge pull request 'Update CeTZ' (#20) from feat/18-update-cetz into dev
Reviewed-on: #20
2026-06-30 16:54:30 +00:00
96dd9b0543 chore: bump compiler version to 0.13.1 2026-06-30 18:52:01 +02:00
da9c2b568b chore: update cetz to 0.3.4 2026-06-30 18:50:22 +02:00
459892bb13 refactor: centralize cetz import 2026-06-30 18:48:34 +02:00
255eec7f35 Merge pull request 'chore: expose package name' (#19) from feat/17-expose-name into dev
Reviewed-on: #19
2026-06-30 16:34:28 +00:00
536f5a075d chore: expose package name 2026-06-30 18:31:51 +02:00
50 changed files with 54 additions and 47 deletions

View File

@@ -3,7 +3,7 @@
Circuiteria is a [Typst](https://typst.app) package for drawing block circuit diagrams using the [CeTZ](https://typst.app/universe/package/cetz) package.
<p align="center">
<img src="./gallery/platypus.png" alt="Perry the platypus">
<img src="./gallery/platypus.png" alt="A platypus / Perry the Platypus meme made with colored rounded rectangles">
</p>
## Examples
@@ -11,17 +11,17 @@ Circuiteria is a [Typst](https://typst.app) package for drawing block circuit di
<tr>
<td colspan="2">
<a href="./gallery/test.typ">
<img src="./gallery/test.png" width="500px">
<img src="./gallery/test.png" width="500px" alt="Block diagram of a multi-cycle RISC-V FPGA processor">
</a>
</td>
</tr>
<tr>
<td colspan="2">A bit of eveything</td>
<td colspan="2">A bit of everything</td>
</tr>
<tr>
<td colspan="2">
<a href="./gallery/test5.typ">
<img src="./gallery/test5.png" width="500px">
<img src="./gallery/test5.png" width="500px" alt="Block diagram of a single-cycle RISC-V processor">
</a>
</td>
</tr>
@@ -31,12 +31,12 @@ Circuiteria is a [Typst](https://typst.app) package for drawing block circuit di
<tr>
<td>
<a href="./gallery/test4.typ">
<img src="./gallery/test4.png" width="250px">
<img src="./gallery/test4.png" width="250px" alt="Top-level block diagram of a single-cycle RISC-V processor">
</a>
</td>
<td>
<a href="./gallery/test6.typ">
<img src="./gallery/test6.png" width="250px">
<img src="./gallery/test6.png" width="250px" alt="Block diagram of a simple single-cycle RISC-V ALU">
</a>
</td>
</tr>
@@ -56,7 +56,7 @@ For more information, see the [manual](manual.pdf)
To use this package, simply import [circuiteria](https://typst.app/universe/package/circuiteria) and call the `circuit` function:
```typ
#import "@preview/circuiteria:0.2.0"
#import "@preview/circuiteria:0.2.1"
#circuiteria.circuit({
import circuiteria: *
...

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw
#import "/src/cetz.typ": draw
#import "../src/circuit.typ": circuit
#import "../src/util.typ"

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

@@ -1,4 +1,4 @@
#import "../src/lib.typ": *
#import "@preview/circuiteria:0.2.1": *
#set page(width: auto, height: auto, margin: .5cm)

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 160 KiB

View File

@@ -1,4 +1,4 @@
#import "../src/lib.typ": circuit, element, util, wire
#import "@preview/circuiteria:0.2.1": circuit, element, util, wire
#set page(width: auto, height: auto, margin: .5cm)

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 KiB

After

Width:  |  Height:  |  Size: 160 KiB

View File

@@ -1,4 +1,4 @@
#import "../src/lib.typ": circuit, element, util, wire
#import "@preview/circuiteria:0.2.1": circuit, element, util, wire
#set page(width: auto, height: auto, margin: .5cm)

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 66 KiB

View File

@@ -1,5 +1,4 @@
#import "@preview/cetz:0.3.2": draw
#import "../src/lib.typ": circuit, element, util, wire
#import "@preview/circuiteria:0.2.1": circuit, element, util, wire
#set page(width: auto, height: auto, margin: .5cm)

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

After

Width:  |  Height:  |  Size: 195 KiB

View File

@@ -1,5 +1,5 @@
#import "@preview/cetz:0.3.2": draw
#import "../src/lib.typ": *
#import "/src/cetz.typ": draw
#import "@preview/circuiteria:0.2.1": *
#set page(width: auto, height: auto, margin: .5cm)

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 KiB

After

Width:  |  Height:  |  Size: 274 KiB

View File

@@ -1,5 +1,5 @@
#import "@preview/cetz:0.3.2": draw
#import "../src/lib.typ": *
#import "/src/cetz.typ": draw
#import "@preview/circuiteria:0.2.1": *
#set page(width: auto, height: auto, margin: .5cm)

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

@@ -1,5 +1,5 @@
#import "@preview/cetz:0.3.2": draw, vector
#import "../src/lib.typ": *
#import "/src/cetz.typ": draw
#import "@preview/circuiteria:0.2.1": *
#set page(width: auto, height: auto, margin: .5cm)

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 40 KiB

View File

@@ -1,5 +1,4 @@
#import "@preview/cetz:0.3.2": draw
#import "../src/lib.typ": circuit, element, util, wire
#import "@preview/circuiteria:0.2.1": circuit, element, util, wire
#set page(width: auto, height: auto, margin: .5cm)

Binary file not shown.

View File

@@ -1,5 +1,5 @@
#import "@preview/tidy:0.4.1"
#import "@preview/cetz:0.3.2": draw, canvas
#import "/src/cetz.typ": draw, canvas
#import "src/lib.typ"
#import "doc/examples.typ"
#import "src/circuit.typ": circuit
@@ -105,7 +105,7 @@ This package provides a way to make beautiful block circuit diagrams using the C
Simply import Circuiteria and call the `circuit` function:
#pad(left: 1em)[```typ
#import "@preview/circuiteria:0.2.0"
#import "@preview/circuiteria:0.2.1"
#circuiteria.circuit({
import circuiteria: *
...

1
src/cetz.typ Normal file
View File

@@ -0,0 +1 @@
#import "@preview/cetz:0.3.4": *

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": canvas
#import "/src/cetz.typ": canvas
#import "@preview/tidy:0.3.0"
/// Draws a block circuit diagram

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw
#import "/src/cetz.typ": draw
#import "element.typ"
#import "ports.typ": add-port

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw
#import "/src/cetz.typ": draw
#import "element.typ"
#let draw-shape(id, tl, tr, br, bl, fill, stroke, radius: 0.5em) = {
@@ -16,7 +16,8 @@
/// Draws a block element
///
/// #examples.block
/// For parameters description, see #doc-ref("element.elmt")
/// For other parameters description, see #doc-ref("element.elmt")
/// - radius (number, length, ratio, dictionary): The corner radius of the block. See CeTZ documentation for more information
#let block(
x: none,
y: none,

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw, coordinate
#import "/src/cetz.typ": draw, coordinate
#import "ports.typ": add-ports, add-port
#import "../util.typ"

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw
#import "/src/cetz.typ": draw
#import "element.typ"
#import "ports.typ": add-port

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw, coordinate
#import "/src/cetz.typ": draw, coordinate
#import "../util.typ"
/// Draws a group of elements

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw
#import "/src/cetz.typ": draw
#import "gate.typ"
#let draw-shape(id, tl, tr, br, bl, fill, stroke) = {

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw
#import "/src/cetz.typ": draw
#import "gate.typ"
#let draw-shape(id, tl, tr, br, bl, fill, stroke) = {

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw, coordinate
#import "/src/cetz.typ": draw, coordinate
#import "../ports.typ": add-ports, add-port
#import "../element.typ"
@@ -63,6 +63,12 @@
if to == "out" {
dy = height / 2
} else {
let all-ports = range(inputs).map(i => "in" + str(i))
let i = all-ports.position(p => p == to)
assert(
i != none,
message: "Unknown port '" + y.to + "' must be one of " + repr(all-ports)
)
dy = height * (i + 0.5) / inputs
}

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw
#import "/src/cetz.typ": draw
// #import "iec_gate.typ" as iec-gate
#import "iec_gate.typ" as iec-gate

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw
#import "/src/cetz.typ": draw
#import "iec_gate.typ" as iec-gate

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw, coordinate
#import "/src/cetz.typ": draw, coordinate
#import "../ports.typ": add-ports, add-port
#import "../element.typ"

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw
#import "/src/cetz.typ": draw
#import "iec_gate.typ" as iec-gate
/// Draws an IEC-OR gate. This function is also available as `element.iec-gate-or()`

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw
#import "/src/cetz.typ": draw
#import "iec_gate.typ" as iec-gate
/// Draws an IEC-XOR gate. This function is also available as `element.iec-gate-xor()`

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw
#import "/src/cetz.typ": draw
#import "gate.typ"
#let draw-shape(id, tl, tr, br, bl, fill, stroke) = {

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw
#import "/src/cetz.typ": draw
#import "gate.typ"
#let space = 10%

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw
#import "/src/cetz.typ": draw
#import "../util.typ"
#import "element.typ"
#import "ports.typ": add-port

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw
#import "/src/cetz.typ": draw
#import "../util.typ": rotate-anchor
#let add-port(

View File

@@ -1,4 +1,5 @@
#let version = version(0, 2, 0)
#let version = version(0, 2, 1)
#let name = "circuiteria"
#import "circuit.typ": circuit
#import "element.typ"

View File

@@ -1,4 +1,4 @@
#import "@preview/cetz:0.3.2": draw, coordinate
#import "/src/cetz.typ": draw, coordinate
#import "util.typ": opposite-anchor
/// List of valid wire styles

View File

@@ -1,7 +1,7 @@
[package]
name = "circuiteria"
version = "0.2.0"
compiler = "0.13.0"
version = "0.2.1"
compiler = "0.13.1"
repository = "https://git.kb28.ch/HEL/circuiteria"
entrypoint = "src/lib.typ"
authors = [
@@ -9,6 +9,6 @@ authors = [
]
categories = [ "visualization" ]
license = "Apache-2.0"
description = "Drawing block circuits with Typst made easy, using CeTZ"
description = "Drawing block circuits made easy, using CeTZ"
keywords = [ "circuit", "block", "draw" ]
exclude = [ "gallery", "justfile", "doc" ]