File tree Expand file tree Collapse file tree 5 files changed +14
-44
lines changed Expand file tree Collapse file tree 5 files changed +14
-44
lines changed Original file line number Diff line number Diff line change 3
3
(:require
4
4
[renderer.attribute.hierarchy :as attribute.hierarchy]
5
5
[renderer.attribute.views :as attribute.views]
6
- [renderer.utils.dom :as utils.dom]
7
- [renderer.utils.element :as utils.element]
6
+ [renderer.element.impl.text :as element.impl.text]
8
7
[renderer.utils.length :as utils.length]))
9
8
10
9
(defmethod attribute.hierarchy /description [:default :font-size ]
11
10
[]
12
11
" The font-size attribute refers to the size of the font from baseline to
13
12
baseline when multiple lines of text are set solid in a multiline layout environment." )
14
13
15
- (defn get-font-size!
16
- [{:keys [content] :as el}]
17
- (when-let [svg (utils.dom/canvas-element! )]
18
- (let [dom-el (utils.element/->dom-element el)]
19
- (.appendChild svg dom-el)
20
- (set! (.-innerHTML dom-el) (if (empty? content) " \u 00a0" content))
21
- (let [computed-style (.getComputedStyle js/window dom-el nil )
22
- font-size (.getPropertyValue computed-style " font-size" )]
23
- (.remove dom-el)
24
- font-size))))
25
-
26
14
(defmethod attribute.hierarchy /update-attr :font-size
27
15
[el attribute f & more]
28
- (let [font-size (get- font-size! el)
16
+ (let [font-size (: font-size ( element.impl.text/get-computed-styles ! el) )
29
17
font-size (utils.length/unit->px font-size)]
30
18
(assoc-in el [:attrs attribute] (str (apply f font-size more)))))
31
19
Original file line number Diff line number Diff line change 3
3
(:require
4
4
[renderer.attribute.hierarchy :as attribute.hierarchy]
5
5
[renderer.attribute.views :as attribute.views]
6
- [renderer.utils.dom :as utils.dom]
7
- [renderer.utils.element :as utils.element]
6
+ [renderer.element.impl.text :as element.impl.text]
8
7
[renderer.utils.length :as utils.length]))
9
8
10
9
(defmethod attribute.hierarchy /description [:default :font-style ]
11
10
[]
12
11
" The font-size attribute refers to the size of the font from baseline to
13
12
baseline when multiple lines of text are set solid in a multiline layout environment." )
14
13
15
- (defn get-font-size!
16
- [{:keys [content] :as el}]
17
- (when-let [svg (utils.dom/canvas-element! )]
18
- (let [dom-el (utils.element/->dom-element el)]
19
- (.appendChild svg dom-el)
20
- (set! (.-innerHTML dom-el) (if (empty? content) " \u 00a0" content))
21
- (let [computed-style (.getComputedStyle js/window dom-el nil )
22
- font-size (.getPropertyValue computed-style " font-size" )]
23
- (.remove dom-el)
24
- font-size))))
25
-
26
14
(defmethod attribute.hierarchy /update-attr :font-style
27
15
[el attribute f & more]
28
- (let [font-size (get- font-size! el)
16
+ (let [font-size (: font-size ( element.impl.text/get-computed-styles ! el) )
29
17
font-size (utils.length/unit->px font-size)]
30
18
(assoc-in el [:attrs attribute] (str (apply f font-size more)))))
31
19
Original file line number Diff line number Diff line change 5
5
[renderer.element.hierarchy :as element.hierarchy]
6
6
[renderer.element.subs :as-alias element.subs]
7
7
[renderer.element.views :as element.views]
8
- [renderer.tool.subs :as-alias tool.subs]
9
- [renderer.utils.bounds :as utils.bounds]
10
- [renderer.utils.dom :as utils.dom]
11
- [renderer.utils.element :as utils.element]))
8
+ [renderer.tool.subs :as-alias tool.subs]))
12
9
13
10
(derive ::element.hierarchy/renderable ::element.hierarchy/element )
14
11
15
- (defmethod element.hierarchy /bbox ::element.hierarchy/renderable
16
- [{:keys [content] :as el}]
17
- (when-let [svg (utils.dom/canvas-element! )]
18
- (let [dom-el (utils.element/->dom-element el)]
19
- (.appendChild svg dom-el)
20
- (set! (.-innerHTML dom-el) (if (empty? content) " \u 00a0" content))
21
- (let [bbox (utils.bounds/dom-el->bbox dom-el)]
22
- (.remove dom-el)
23
- bbox))))
24
-
25
12
(defmethod element.hierarchy /render ::element.hierarchy/renderable
26
13
[el]
27
14
(let [child-els @(rf/subscribe [::element.subs/filter-visible (:children el)])
Original file line number Diff line number Diff line change 128
128
(let [computed-style (.getComputedStyle js/window dom-el nil )
129
129
font-style (.getPropertyValue computed-style " font-style" )
130
130
font-size (.getPropertyValue computed-style " font-size" )
131
- font-weight (.getPropertyValue computed-style " font-weight" )]
131
+ font-weight (.getPropertyValue computed-style " font-weight" )
132
+ bbox (utils.bounds/dom-el->bbox dom-el)]
132
133
(.remove dom-el)
133
134
{:font-style font-style
134
135
:font-size font-size
135
- :font-weight font-weight}))))
136
+ :font-weight font-weight
137
+ :bbox bbox}))))
136
138
137
139
(defn font-file->path-data
138
140
[file content x y font-size]
193
195
(-> (js/fetch (default-font-path font-style font-weight ))
194
196
(.then (fn [response]
195
197
(font-file->path-data response content x y font-size)))))))
198
+
199
+ (defmethod element.hierarchy /bbox :text
200
+ [el]
201
+ (:bbox (get-computed-styles! el)))
Original file line number Diff line number Diff line change 107
107
" floodColor"
108
108
" floodOpacity"
109
109
" fontFamily"
110
+ " fontSize"
110
111
" fontSizeAdjust"
111
112
" fontStretch"
112
113
" fontStyle"
You can’t perform that action at this time.
0 commit comments