Replace content->points with faster get-points

This commit is contained in:
Andrey Antukh 2025-04-08 14:28:27 +02:00
parent 3ca76c9ef7
commit b0cbe3cec8
4 changed files with 77 additions and 50 deletions

View file

@ -48,18 +48,22 @@
(ptk/reify ::apply-content-modifiers
ptk/WatchEvent
(watch [it state _]
(let [objects (dsh/lookup-page-objects state)
(let [page-id (get state :current-page-id state)
objects (dsh/lookup-page-objects state)
id (st/get-path-id state)
page-id (:current-page-id state)
shape (st/get-path state)
content-modifiers (dm/get-in state [:workspace-local :edit-path id :content-modifiers])
content (:content shape)
new-content (path/apply-content-modifiers content content-modifiers)
shape
(st/get-path state)
old-points (->> content path.segment/content->points)
new-points (->> new-content path.segment/content->points)
content-modifiers
(dm/get-in state [:workspace-local :edit-path id :content-modifiers])
content (get shape :content)
new-content (path/apply-content-modifiers content content-modifiers)
old-points (path.segment/get-points content)
new-points (path.segment/get-points new-content)
point-change (->> (map hash-map old-points new-points) (reduce merge))]
(when (and (some? new-content) (some? shape))
@ -161,7 +165,7 @@
start-position (apply min-key #(gpt/distance start-position %) selected-points)
content (st/get-path state :content)
points (path.segment/content->points content)]
points (path.segment/get-points content)]
(rx/concat
;; This stream checks the consecutive mouse positions to do the dragging
@ -254,7 +258,7 @@
start-delta-y (dm/get-in modifiers [index cy] 0)
content (st/get-path state :content)
points (path.segment/content->points content)
points (path.segment/get-points content)
point (-> content (nth (if (= prefix :c1) (dec index) index)) (path.segment/get-point))
handler (-> content (nth index) (path.segment/get-handler prefix))

View file

@ -170,7 +170,8 @@
ranges-stream
(->> content-stream
(rx/map path.segm/content->points)
(rx/filter some?)
(rx/map path.segm/get-points)
(rx/map snap/create-ranges))]
(->> ms/mouse-position

View file

@ -282,7 +282,7 @@
base-points
(mf/with-memo [base-content]
(path.segment/content->points base-content))
(path.segment/get-points base-content))
content
(mf/with-memo [base-content content-modifiers]
@ -290,7 +290,7 @@
content-points
(mf/with-memo [content]
(path.segment/content->points content))
(path.segment/get-points content))
point->base (->> (map hash-map content-points base-points) (reduce merge))
base->point (map-invert point->base)