From 91c2040876526293547e5313632136ec5dd99ac6 Mon Sep 17 00:00:00 2001 From: Johannes Wolf Date: Thu, 27 Jun 2024 22:57:56 +0200 Subject: [PATCH] mark: Respect transform-shape style --- CHANGES.md | 4 ++- src/draw/shapes.typ | 38 ++++++++++++++++----------- tests/mark/shape-transform/ref/1.png | Bin 3307 -> 5598 bytes tests/mark/shape-transform/test.typ | 11 ++++++++ tests/mark/single/ref/1.png | Bin 2767 -> 2921 bytes tests/mark/single/test.typ | 7 +++++ 6 files changed, 43 insertions(+), 17 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index ef3bbd84c..306a41deb 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -4,7 +4,9 @@ CeTZ 0.3.0 requires Typst 0.11.0 The licence changed from Apache-2.0 to GPLv3. ## Canvas -- Add runtime cetz version check support (see `assert-version`) +- Marks drawn using the `mark` function now respect the `transform-shape` style. +- The second argument of `mark` is now optional and defaults to `0deg`. +- Add runtime cetz version check support (see `assert-version`). - Fixed a bug with `#set place(float: true)` affecting the canvas. - Transformation matrices are now rounded - The default coordinate system changed to a right-hand side system. diff --git a/src/draw/shapes.typ b/src/draw/shapes.typ index 057573bde..dac1b9a2b 100644 --- a/src/draw/shapes.typ +++ b/src/draw/shapes.typ @@ -428,6 +428,9 @@ /// Note: To place a mark centered at the first coodinate (`from`) use /// the marks `anchor: "center"` style. /// +/// To place marks unaffected by the current transformation, set their +/// `transform-shape` style to `false`. +/// /// = parameters /// /// = Styling @@ -436,27 +439,26 @@ /// /// - from (coordinate): The position to place the mark. /// - to (coordinate,angle): The position or angle the mark should point towards. -/// - ..style (style): -#let mark(from, to, ..style) = { - assert.eq( - style.pos(), - (), - message: "Unexpected positional arguments: " + repr(style.pos()), - ) - - let style = style.named() - - if type(to) == angle { - // Construct a coordinate pointing (+1, 0) away from - // `from`, rotated by the angle given. - to = ((rel: (to, 1), to: from)) +/// - ..args-style (coordinate,angle,style): An optional secondary position or angle +/// to rotate the mark by and the marks style key value pairs (including `symbol:` to set the mark shape). +#let mark(from, ..args-style) = { + assert(args-style.pos().len() <= 1, + message: "Unexpected positional arguments: " + repr(args-style.pos())) + + let style = args-style.named() + + let to-angle = args-style.pos().at(0, default: 0deg) + let to = if type(to-angle) == angle { + (rel: (to-angle, 1), to: from) + } else if to-angle != none { + to-angle } (from, to).map(coordinate.resolve-system) return (ctx => { - let (ctx, ..pts) = coordinate.resolve(ctx, from, to) let style = styles.resolve(ctx.style, merge: style, root: "mark") + let (ctx, ..pts) = coordinate.resolve(ctx, from, to) if style.end == none { style.end = style.symbol @@ -471,7 +473,11 @@ drawables = mark_.place-marks-along-path(ctx, style, none, drawables, add-path: false) return ( ctx: ctx, - drawables: drawable.apply-transform(ctx.transform, drawables) + drawables: if style.transform-shape { + drawable.apply-transform(ctx.transform, drawables) + } else { + drawables + } ) },) } diff --git a/tests/mark/shape-transform/ref/1.png b/tests/mark/shape-transform/ref/1.png index 0ba5a5ff2f26991454a3f37034720a3163bc6d0c..a21f64a69e1473297d11e1cab1825bf78270cc6d 100644 GIT binary patch literal 5598 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 Qs(^)RYGi3xa?UmKUjQ-_wEzGB literal 3307 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 diff --git a/tests/mark/shape-transform/test.typ b/tests/mark/shape-transform/test.typ index f16fcd70b..cc9bcf599 100644 --- a/tests/mark/shape-transform/test.typ +++ b/tests/mark/shape-transform/test.typ @@ -28,3 +28,14 @@ rotate(45deg) line((-1,-1), (1,-1), (1,1), mark: (start: "rect", end: "rect", scale: 3)) }) + +#test-case({ + import cetz.draw: * + + set-style(mark: (transform-shape: false)) + + rotate(30deg) + rect((-1,-1), (1,1)) + + mark((0,0), symbol: "x") +}) diff --git a/tests/mark/single/ref/1.png b/tests/mark/single/ref/1.png index 9abf3e0af2f25e49ba96f94776043713f9eea275..c4d5b9a60b0646869176c1a69be8402f18215090 100644 GIT binary patch delta 2384 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 Cn8Swv delta 2251 zcmZ9OdpMN)7RPm?O;H`xK6JHnnZam?XGp3o*D@NHK`v>G?8xOEg3*7K}C)|_guO2$FO zuH8FiWMpn8ji}4WY~yC0^v%3)klB1eHect2jQ3-z{5B8jjctJMjy*f~?b@ldbEnL1 zMH#uhu*K%~_COh#-NUw)=ba-*7ltMRyTjB4zp)8C_Y_A3md%8bY5mKvA3Bm0j`x9` z!7s-G?Bd@2{5l9Z_lp#JXK`G-E-;P-RwFmR>rKJ4<*EA>P~`Zn*MjPzVOO~KN@ zlgRwkkX3JT$W$$O5>fivt$d4j=Kl9Ip=+z^d>VJN2*-DXnnm5*Dxe(f7Ute?hx%zN z=oxocekiO*WxMEmVNfI{k*0v}`3nyJ5BB^M+y5U9f~JY%_jl2@x)+v%UCE10aII)$ zx&YCTb6D`M%ab;$PhvvBh9(i$FGD?`6T4UOE@~z2MpWqU?v`a^PEjjs>GvARMKkF2 zd?;!D)&8dzF)sX4N#(}IO0ULs>3h#%;vz<9NIz@!e4QR)rG{8{Wtzqj4e7;Ej1}Dm z-Ok>$=;A&b=ra-)Tgvk{-eG^$fwVNO&d@-oc`fZ>k#qZ_P@+ImTv^#o}uc%E-hnz7JA zv4Sd_!?q5`bK@pG69)LMOXl(UA^EoAOB-t`6VHH=u&7u+eYUyV_D{dtfwEw;a?Px= zHknEGQPeSUruaOlRg7mMr=SeUD9nQHh5Y+B6e>9@M<p8MSyg)ZdR(gL z)C*zQ3Fz;{Wt{V!2Xf=mTMpA8Sy;G!h^|du=tos0@_Ws!dIz(P*kWonKP|sKj33@7 zJsa{*MrB~&`ZX+=HW35pO3BqPhjOqaA_Xeak;NI~r`_~N+b)39pt_JqdW7S-!h)Ix zwU&bx09Q^iSV0vcj)>Antu03j&}zP##Aw*M(xpobBvObD3jR7*ktAIb+FpE#dR$h8 zOhiJV-%>k_x-eISGj>uGptZPJ)ma@J5$yUezVs*d{&8bblYli?O-&1{>l)G18P*p3 zo}?sAZP|8bwdH^YRC+Js7;Nf@jK&2I)$0js6r6QfSvb4DJS6g~Cr`(;bwaB zGccK@HF{s|VG(c*3i8tGx4u*-+*((tK2se+1#b)%0|C%b4W<6*a)V~M`W3OPhusUw z#W<&96}4I<)9i9}7fhb$h|pQFW}$0=BSO8m#IO0Sxs?E+M67>0nHY!FZ>rVe3edD- zWHdTj*9p`3Eq&^)<|U?z2@J50X3j8&3weG^eS(zO3ti0?+2v!R=hr7_m6}`ua0}`@ zOG8eKi|-cG7*TK)d|=C`zlAIfIO`t?W#@@j3H->lyog6Pkz3I%kupws!Z<*f8vEW z>d0R%L|LQZwtltepeH`yHr{|5t?F~|U=I2h8|)EEoa$~EnbDSxan?v|58xIsS zHh=J#+Cz`*@cEUqa8)VJFX{4!RNl%Lr~v2y=U9grS!AO;l^9IfSaU5ZX|=BU^j04| z5hS=epprfW_+r02k?PCQ1ZBD2@;UwNja}Wuq<4VhMj^74-k!bc&{|OG-Uhp4LZN

yeV zJX_(Qku|go9uX$(@?rro#B`{gXX>oTUf_7T4aS3QU%zzvl>h<6bmEhupAgBeYi>Lz z4|rK&LCwJ*VU1sNTk|U+1L3fM^+zPTI0$OB3~9xPQi7Pu0DWn{au&KSL1p0F*MERB z6s{YMcEVHvrrG9WjiI&POc^h_gMj&~7n!y~PC!54^( N?L`O6nhVzw{s83Emz@9r diff --git a/tests/mark/single/test.typ b/tests/mark/single/test.typ index b426b9fd8..05e4ac312 100644 --- a/tests/mark/single/test.typ +++ b/tests/mark/single/test.typ @@ -28,3 +28,10 @@ mark((0,0), 180deg, symbol: ">", scale: 3, fill: red) mark((0,0), 270deg, symbol: ">", scale: 3, fill: yellow) }) + +// Default angle +#test-case({ + import draw: * + + mark((0,0), symbol: ">") +})