SVG import enhancements

This commit is contained in:
alonso.torres 2021-03-24 17:31:16 +01:00 committed by Andrey Antukh
parent 92e07c3b54
commit c380400578
4 changed files with 584 additions and 181 deletions

View file

@ -32,20 +32,24 @@
mask (when show-mask? (first childs))
childs (if show-mask? (rest childs) childs)
props (-> (attrs/extract-style-attrs shape)
(obj/merge!
#js {:pointerEvents pointer-events
:clipPath (when (and mask (not expand-mask)) (clip-str mask))
:mask (when (and mask (not expand-mask)) (mask-str mask))}))]
mask-props (when (and mask (not expand-mask))
#js {:clipPath (clip-str mask)
:mask (mask-str mask)})
mask-wrapper (if (and mask (not expand-mask))
"g"
mf/Fragment)
[:> :g props
(when mask
[:> render-mask #js {:frame frame :mask mask}])
props (-> (attrs/extract-style-attrs shape))]
(for [item childs]
[:& shape-wrapper {:frame frame
:shape item
:key (:id item)}])]))))
[:> mask-wrapper mask-props
[:> :g (attrs/extract-style-attrs shape)
(when mask
[:> render-mask #js {:frame frame :mask mask}])
(for [item childs]
[:& shape-wrapper {:frame frame
:shape item
:key (:id item)}])]]))))

View file

@ -60,15 +60,19 @@
transform-filter? (and (contains? usvg/filter-tags tag)
(= "userSpaceOnUse" (get attrs :filterUnits "objectBoundingBox")))
transform-mask? (and (= :mask tag)
(= "userSpaceOnUse" (get attrs :maskUnits "objectBoundingBox")))
attrs (-> attrs
(usvg/update-attr-ids prefix-id)
(usvg/clean-attrs)
(cond->
transform-gradient? (add-matrix :gradientTransform transform)
transform-pattern? (add-matrix :patternTransform transform)
transform-clippath? (add-matrix :transform transform)
transform-filter? (transform-region transform)))
transform-gradient? (add-matrix :gradientTransform transform)
transform-pattern? (add-matrix :patternTransform transform)
transform-clippath? (add-matrix :transform transform)
(or transform-filter?
transform-mask?) (transform-region transform)))
[wrapper wrapper-props] (if (= tag :mask)
["g" #js {:transform (str transform)}]