fix zoom drawing glitch (rust)

This commit is contained in:
Belén Albeza 2024-10-02 16:10:56 +02:00
parent 80bbfe7a6f
commit 305de33200
2 changed files with 9 additions and 9 deletions

View File

@ -281,9 +281,9 @@
(swap! canvas-set? true)))))) (swap! canvas-set? true))))))
;; redraw when vbox or shapes change ;; redraw when vbox or shapes change
(mf/with-effect (mf/with-effect
[vbox' base-objects canvas-set? zoom] [vbox base-objects canvas-set? zoom]
(when @canvas-set? (when @canvas-set?
(render-v2/draw-canvas vbox' zoom base-objects)))) (render-v2/draw-canvas vbox zoom base-objects))))
(hooks/setup-dom-events zoom disable-paste in-viewport? workspace-read-only? drawing-tool drawing-path?) (hooks/setup-dom-events zoom disable-paste in-viewport? workspace-read-only? drawing-tool drawing-path?)
(hooks/setup-viewport-size vport viewport-ref) (hooks/setup-viewport-size vport viewport-ref)

View File

@ -22,13 +22,13 @@
reset-canvas (gobj/get ^js internal-module "_reset_canvas") reset-canvas (gobj/get ^js internal-module "_reset_canvas")
scale (gobj/get ^js internal-module "_scale")] scale (gobj/get ^js internal-module "_scale")]
(reset-canvas gpu-state) (js/requestAnimationFrame (fn [])
(scale gpu-state zoom zoom) (reset-canvas gpu-state)
(translate gpu-state (- (:x vbox)) (- (:y vbox))) (scale gpu-state zoom zoom)
(doseq [shape (vals objects)] (translate gpu-state (- (:x vbox)) (- (:y vbox)))
(let [sr (:selrect shape)] (doseq [shape (vals objects)]
(println "*****" (:x1 sr) (:y1 sr) (:x2 sr) (:y2 sr)) (let [sr (:selrect shape)]
(draw-rect gpu-state (:x1 sr) (:y1 sr) (:x2 sr) (:y2 sr)))))) (draw-rect gpu-state (:x1 sr) (:y1 sr) (:x2 sr) (:y2 sr)))))))
(defn set-canvas (defn set-canvas
[canvas vbox zoom objects] [canvas vbox zoom objects]