0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-04-14 07:51:35 -05:00

fix vbox being nil when calling translate

This commit is contained in:
Belén Albeza 2024-10-02 14:49:25 +02:00
parent e0a9f63015
commit 739b8d7c02
2 changed files with 23 additions and 10 deletions

View file

@ -130,6 +130,7 @@
hover-top-frame-id (mf/use-state nil)
frame-hover (mf/use-state nil)
active-frames (mf/use-state #{})
canvas-set? (mf/use-state false)
;; REFS
[viewport-ref
@ -269,13 +270,14 @@
rule-area-size (/ rulers/ruler-area-size zoom)]
(when (render-v2/is-enabled?)
(mf/with-effect
[canvas-ref base-objects]
[canvas-ref vbox' @canvas-set? base-objects]
(let [canvas (mf/ref-val canvas-ref)]
(p/then (render-v2/init)
#(render-v2/set-canvas canvas vbox base-objects)))))
(when (and (some? vbox') (not @canvas-set?))
(swap! canvas-set? true)
(p/then (render-v2/init)
#(render-v2/set-canvas canvas vbox' base-objects))))))
(hooks/setup-dom-events zoom disable-paste in-viewport? workspace-read-only? drawing-tool drawing-path?)
(hooks/setup-viewport-size vport viewport-ref)

View file

@ -14,6 +14,19 @@
[promesa.core :as p]))
(defonce ^:dynamic internal-module #js {})
(defonce ^:dynamic gpu-state #js {})
(defn draw-canvas [vbox objects]
(let [draw_rect (gobj/get ^js internal-module "_draw_rect")
translate (gobj/get ^js internal-module "_translate")
_ (js/console.log "vbox " (clj->js vbox))
scale (gobj/get ^js internal-module "_scale")]
(translate gpu-state (- (:x vbox)) (- (:y vbox)))
(doseq [shape (vals objects)]
(let [sr (:selrect shape)]
(println "*****" (:x1 sr) (:y1 sr) (:x2 sr) (:y2 sr))
(draw_rect gpu-state (:x1 sr) (:y1 sr) (:x2 sr) (:y2 sr))))))
(defn set-canvas
[canvas vbox objects]
@ -22,7 +35,6 @@
"depth" true
"stencil" true
"alpha" true})
_ (js/console.log "context" context)
;; Register the context with emscripten
handle (.registerContext gl context {"majorVersion" 2})
_ (.makeContextCurrent gl handle)
@ -35,16 +47,15 @@
(set! (.-width canvas) (.-clientWidth canvas))
(set! (.-height canvas) (.-clientHeight canvas))
(set! gpu-state state)
(translate state (- (:x vbox)) (- (:y vbox)))
(doseq [shape (vals objects)]
(let [sr (:selrect shape)]
(println "-----" (:x1 sr) (:y1 sr) (:x2 sr) (:y2 sr))
(draw_rect state (:x1 sr) (:y1 sr) (:x2 sr) (:y2 sr))))
(draw-canvas vbox objects)
#_(draw_rect state 100 100 500 500)
(println "set-canvas ok" (.-width canvas) (.-height canvas))))
(defn on-init
[module']
(set! internal-module module')