From 34ec00768f578b0f5308d4326de7bf96d1b8dbe5 Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Wed, 21 Jan 2026 15:20:26 +0100 Subject: [PATCH] fixed sync alignment with unequal elements fixes #21 --- src/core/draw/sequence.typ | 5 +++++ src/core/draw/sync.typ | 34 +++++++++++++++++++++++++----- tests/sequence/sync/.gitignore | 4 ++++ tests/sequence/sync/ref/1.png | Bin 0 -> 15814 bytes tests/sequence/sync/test.typ | 37 +++++++++++++++++++++++++++++++++ 5 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 tests/sequence/sync/.gitignore create mode 100644 tests/sequence/sync/ref/1.png create mode 100644 tests/sequence/sync/test.typ diff --git a/src/core/draw/sequence.typ b/src/core/draw/sequence.typ index 512c6ca..b1f0659 100644 --- a/src/core/draw/sequence.typ +++ b/src/core/draw/sequence.typ @@ -394,6 +394,11 @@ set-ctx(c => { c.y = end-info.y c.lifelines = ctx.lifelines + c.last-drawn = ( + type: "seq", + start-info: start-info, + end-info: end-info + ) return c }) }) diff --git a/src/core/draw/sync.typ b/src/core/draw/sync.typ index 1a300a7..b681947 100644 --- a/src/core/draw/sync.typ +++ b/src/core/draw/sync.typ @@ -1,11 +1,17 @@ #import "/src/core/utils.typ": get-ctx, is-elmt, set-ctx +#import "/src/cetz.typ": draw #let render(sync) = get-ctx(ctx => { set-ctx(c => { - c.sync-ys = () + c.sync = ( + bottoms: (), + starts: (), + y: ctx.y + ) return c }) + // Compute heights for e in sync.elmts { assert(is-elmt(e), message: "Sync element can only contain chronos elements, found " + repr(e)) assert( @@ -17,16 +23,34 @@ c.y = ctx.y return c }) - (e.draw)(e) + draw.hide({ + (e.draw)(e) + }) set-ctx(c => { - c.sync-ys.push(c.y) + c.sync.starts.push(c.last-drawn.start-info.y) + c.sync.bottoms.push(c.y) return c }) } set-ctx(c => { - c.y = calc.min(..c.sync-ys) - c.remove("sync-ys") + c.sync-y = calc.min(..c.sync.starts) + return c + }) + + // Draw aligned elements + for (i, e) in sync.elmts.enumerate() { + set-ctx(c => { + let dy = c.sync.starts.at(i) - ctx.y + c.y = c.sync-y - dy + return c + }) + (e.draw)(e) + } + + set-ctx(c => { + c.y = calc.min(..c.sync.bottoms) + c.remove("sync") return c }) }) \ No newline at end of file diff --git a/tests/sequence/sync/.gitignore b/tests/sequence/sync/.gitignore new file mode 100644 index 0000000..40223be --- /dev/null +++ b/tests/sequence/sync/.gitignore @@ -0,0 +1,4 @@ +# generated by tytanic, do not edit + +diff/** +out/** diff --git a/tests/sequence/sync/ref/1.png b/tests/sequence/sync/ref/1.png new file mode 100644 index 0000000000000000000000000000000000000000..a7d40674c2b96c27da4cf7a3f6174bb53f4e36c0 GIT binary patch literal 15814 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 F{{?7(T@nBQ literal 0 HcmV?d00001 diff --git a/tests/sequence/sync/test.typ b/tests/sequence/sync/test.typ new file mode 100644 index 0000000..35098d8 --- /dev/null +++ b/tests/sequence/sync/test.typ @@ -0,0 +1,37 @@ +#set page(width: auto, height: auto) +#import "/src/lib.typ": * + +#diagram({ + _par("a") + _par("b") + _par("c") + _sync({ + _seq("b", "a") + _seq("b", "c") + }) + _gap() + _sync({ + _seq("b", "a", comment: [Comment]) + _seq("b", "c") + }) + _gap() + _sync({ + _seq("b", "a") + _seq("b", "c", comment: [Comment]) + }) + _gap() + _sync({ + _seq("b", "a", comment: [Two\ lines]) + _seq("b", "c", comment: [Comment]) + }) + + _sync({ + _seq("b", "a") + _seq("b", "c", slant: 10) + }) + + _sync({ + _seq("b", "a") + _seq("b", "b") + }) +})