From 5e99ed237c703e49bb9349b7546ae8d2f45d89c0 Mon Sep 17 00:00:00 2001 From: Phil DeOrsey Date: Sat, 16 Nov 2024 19:32:12 -0500 Subject: [PATCH] add optional center of rotation on setTransform method --- src/elements.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/elements.ts b/src/elements.ts index 019f69f..394ded6 100644 --- a/src/elements.ts +++ b/src/elements.ts @@ -905,12 +905,13 @@ export class SVGBaseView extends BaseView { return matrix as [[number, number, number], [number, number, number]]; } - setTransform(posn?: SimplePoint, angle = 0, scale = 1) { + setTransform(posn?: SimplePoint, angle = 0, scale = 1, rotCenter?: SimplePoint) { // TODO Safari only supports transform-origin and transform-box for CSS // transforms, not the [transform=] attribute: // https://stackoverflow.com/questions/61272308/ + const center = rotCenter ?? {x: 0, y: 0}; const t1 = posn ? `translate(${roundTo(posn.x, 0.1)} ${roundTo(posn.y, 0.1)})` : ''; - const t2 = nearlyEquals(angle, 0) ? '' : `rotate(${angle * 180 / Math.PI})`; + const t2 = nearlyEquals(angle, 0) ? '' : `rotate(${angle * 180 / Math.PI}, ${center.x} , ${center.y})`; const t3 = nearlyEquals(scale, 1) ? '' : `scale(${scale})`; this.setAttr('transform', [t1, t2, t3].join(' ')); }