Skip to content

Commit b73b4a1

Browse files
committed
[wip] transform attr
1 parent f717cba commit b73b4a1

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

src/renderer/attribute/core.cljs

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@
99
[renderer.attribute.range]
1010
[renderer.attribute.stroke-linecap]
1111
[renderer.attribute.stroke-linejoin]
12-
[renderer.attribute.style]))
12+
[renderer.attribute.style]
13+
[renderer.attribute.transform]))

src/renderer/attribute/transform.cljs

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
(ns renderer.attribute.transform
2+
"https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform"
3+
(:require
4+
[renderer.attribute.hierarchy :as hierarchy]
5+
[renderer.element.events :as-alias element.e]))
6+
7+
(defmethod hierarchy/description :transform
8+
[]
9+
"The transform attribute defines a list of transform definitions that are
10+
applied to an element and the element's children.")

src/renderer/tool/container/group.cljs

+11-2
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,18 @@
1717
SVG elements."
1818
:attrs [:transform]})
1919

20+
(defn- translate
21+
[transform [x y]]
22+
(let [g (js/document.createElementNS "http://www.w3.org/2000/svg" "g")
23+
_ (.setAttributeNS g nil "transform" (or transform ""))
24+
m (.consolidate (.. g -transform -baseVal))
25+
matrix (if m (.-matrix m) (js/DOMMatrixReadOnly.))
26+
matrix (.translate matrix x y)]
27+
(.toString matrix)))
28+
2029
(defmethod tool/translate :g
21-
[el [_x _y]]
22-
el) ; TODO
30+
[el offset]
31+
(update-in el [:attrs :transform] translate offset))
2332

2433
(defmethod tool/render :g
2534
[{:keys [attrs children bounds] :as element}]

0 commit comments

Comments
 (0)