mirror of
https://github.com/penpot/penpot.git
synced 2025-05-29 04:36:12 +02:00
🐛 Fix svg path parsing on uploading svg image
This commit is contained in:
parent
8f2ca15ec0
commit
0b4a367e9e
5 changed files with 12 additions and 8 deletions
|
@ -13,6 +13,7 @@
|
||||||
[app.common.files.changes-builder :as fcb]
|
[app.common.files.changes-builder :as fcb]
|
||||||
[app.common.files.helpers :as cfh]
|
[app.common.files.helpers :as cfh]
|
||||||
[app.common.files.migrations :as fmg]
|
[app.common.files.migrations :as fmg]
|
||||||
|
[app.common.files.shapes-builder :as sbuilder]
|
||||||
[app.common.files.shapes-helpers :as cfsh]
|
[app.common.files.shapes-helpers :as cfsh]
|
||||||
[app.common.files.validate :as cfv]
|
[app.common.files.validate :as cfv]
|
||||||
[app.common.fressian :as fres]
|
[app.common.fressian :as fres]
|
||||||
|
@ -25,7 +26,6 @@
|
||||||
[app.common.math :as mth]
|
[app.common.math :as mth]
|
||||||
[app.common.schema :as sm]
|
[app.common.schema :as sm]
|
||||||
[app.common.svg :as csvg]
|
[app.common.svg :as csvg]
|
||||||
[app.common.svg.shapes-builder :as sbuilder]
|
|
||||||
[app.common.types.color :as ctc]
|
[app.common.types.color :as ctc]
|
||||||
[app.common.types.component :as ctk]
|
[app.common.types.component :as ctk]
|
||||||
[app.common.types.components-list :as ctkl]
|
[app.common.types.components-list :as ctkl]
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
;;
|
;;
|
||||||
;; Copyright (c) KALEIDOS INC
|
;; Copyright (c) KALEIDOS INC
|
||||||
|
|
||||||
(ns app.common.svg.shapes-builder
|
(ns app.common.files.shapes-builder
|
||||||
"A SVG to Shapes builder."
|
"A SVG to Shapes builder."
|
||||||
(:require
|
(:require
|
||||||
[app.common.colors :as clr]
|
[app.common.colors :as clr]
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
[app.common.math :as mth]
|
[app.common.math :as mth]
|
||||||
[app.common.schema :as sm :refer [max-safe-int min-safe-int]]
|
[app.common.schema :as sm :refer [max-safe-int min-safe-int]]
|
||||||
[app.common.svg :as csvg]
|
[app.common.svg :as csvg]
|
||||||
[app.common.svg.path :as path]
|
[app.common.types.path :as path]
|
||||||
[app.common.types.path.segment :as path.segm]
|
[app.common.types.path.segment :as path.segm]
|
||||||
[app.common.types.shape :as cts]
|
[app.common.types.shape :as cts]
|
||||||
[app.common.uuid :as uuid]
|
[app.common.uuid :as uuid]
|
||||||
|
@ -219,7 +219,7 @@
|
||||||
(defn create-path-shape [name frame-id svg-data {:keys [attrs] :as data}]
|
(defn create-path-shape [name frame-id svg-data {:keys [attrs] :as data}]
|
||||||
(when (and (contains? attrs :d) (seq (:d attrs)))
|
(when (and (contains? attrs :d) (seq (:d attrs)))
|
||||||
(let [transform (csvg/parse-transform (:transform attrs))
|
(let [transform (csvg/parse-transform (:transform attrs))
|
||||||
content (cond-> (path/parse (:d attrs))
|
content (cond-> (path/from-string (:d attrs))
|
||||||
(some? transform)
|
(some? transform)
|
||||||
(path.segm/transform-content transform))
|
(path.segm/transform-content transform))
|
||||||
|
|
|
@ -36,6 +36,10 @@
|
||||||
[data]
|
[data]
|
||||||
(impl/from-bytes data))
|
(impl/from-bytes data))
|
||||||
|
|
||||||
|
(defn from-string
|
||||||
|
[data]
|
||||||
|
(impl/from-string data))
|
||||||
|
|
||||||
(defn check-path-content
|
(defn check-path-content
|
||||||
[content]
|
[content]
|
||||||
(impl/check-content-like content))
|
(impl/check-content-like content))
|
||||||
|
|
|
@ -12,10 +12,10 @@
|
||||||
[app.common.exceptions :as ex]
|
[app.common.exceptions :as ex]
|
||||||
[app.common.files.builder :as fb]
|
[app.common.files.builder :as fb]
|
||||||
[app.common.files.changes-builder :as pcb]
|
[app.common.files.changes-builder :as pcb]
|
||||||
|
[app.common.files.shapes-builder :as sb]
|
||||||
[app.common.logging :as log]
|
[app.common.logging :as log]
|
||||||
[app.common.math :as mth]
|
[app.common.math :as mth]
|
||||||
[app.common.schema :as sm]
|
[app.common.schema :as sm]
|
||||||
[app.common.svg.shapes-builder :as csvg.shapes-builder]
|
|
||||||
[app.common.types.container :as ctn]
|
[app.common.types.container :as ctn]
|
||||||
[app.common.types.shape :as cts]
|
[app.common.types.shape :as cts]
|
||||||
[app.common.uuid :as uuid]
|
[app.common.uuid :as uuid]
|
||||||
|
@ -299,7 +299,7 @@
|
||||||
process-svg
|
process-svg
|
||||||
(fn [svg-data]
|
(fn [svg-data]
|
||||||
(let [[root-svg-shape children]
|
(let [[root-svg-shape children]
|
||||||
(csvg.shapes-builder/create-svg-shapes svg-data pos objects uuid/zero nil #{} false)
|
(sb/create-svg-shapes svg-data pos objects uuid/zero nil #{} false)
|
||||||
|
|
||||||
frame-shape
|
frame-shape
|
||||||
(cts/setup-shape
|
(cts/setup-shape
|
||||||
|
|
|
@ -10,8 +10,8 @@
|
||||||
[app.common.data.macros :as dm]
|
[app.common.data.macros :as dm]
|
||||||
[app.common.files.changes-builder :as pcb]
|
[app.common.files.changes-builder :as pcb]
|
||||||
[app.common.files.helpers :as cfh]
|
[app.common.files.helpers :as cfh]
|
||||||
|
[app.common.files.shapes-builder :as sb]
|
||||||
[app.common.svg :as csvg]
|
[app.common.svg :as csvg]
|
||||||
[app.common.svg.shapes-builder :as csvg.shapes-builder]
|
|
||||||
[app.common.types.shape-tree :as ctst]
|
[app.common.types.shape-tree :as ctst]
|
||||||
[app.common.uuid :as uuid]
|
[app.common.uuid :as uuid]
|
||||||
[app.main.data.changes :as dch]
|
[app.main.data.changes :as dch]
|
||||||
|
@ -92,7 +92,7 @@
|
||||||
base-id)
|
base-id)
|
||||||
|
|
||||||
[new-shape new-children]
|
[new-shape new-children]
|
||||||
(csvg.shapes-builder/create-svg-shapes id svg-data position objects frame-id parent-id selected true)
|
(sb/create-svg-shapes id svg-data position objects frame-id parent-id selected true)
|
||||||
|
|
||||||
changes (-> (pcb/empty-changes it page-id)
|
changes (-> (pcb/empty-changes it page-id)
|
||||||
(pcb/with-objects objects)
|
(pcb/with-objects objects)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue