diff --git a/frontend/render_v2/rs/src/main.rs b/frontend/render_v2/rs/src/main.rs index 5837a7b799..027bdba541 100644 --- a/frontend/render_v2/rs/src/main.rs +++ b/frontend/render_v2/rs/src/main.rs @@ -127,6 +127,16 @@ pub unsafe extern "C" fn draw_rect(state: *mut State, left: i32, right: i32, top .flush_and_submit_surface(&mut state.surface, None); } +#[no_mangle] +pub unsafe extern "C" fn translate(state: *mut State, dx: f32, dy: f32) { + (*state).surface.canvas().translate((dx, dy)); +} + +#[no_mangle] +pub unsafe extern "C" fn scale(state: *mut State, sx: f32, sy: f32) { + (*state).surface.canvas().scale((sx, sy)); +} + fn main() { init_gl(); } diff --git a/frontend/src/app/render_v2/rs.cljs b/frontend/src/app/render_v2/rs.cljs index db0238ebd4..264defffb8 100644 --- a/frontend/src/app/render_v2/rs.cljs +++ b/frontend/src/app/render_v2/rs.cljs @@ -29,17 +29,17 @@ ;; Initialize Skia state (._init ^js internal-module (.-width canvas) (.-height canvas)) draw_rect (gobj/get ^js internal-module "_draw_rect") + translate (gobj/get ^js internal-module "_translate") + scale (gobj/get ^js internal-module "_scale") resize_surface (gobj/get ^js internal-module "_resize_surface")] (set! (.-width canvas) (.-clientWidth canvas)) (set! (.-height canvas) (.-clientHeight canvas)) - - ;; (resize_surface state (.-clientWidth canvas) (.-clientHeight canvas)) - + + (translate state (- (:x vbox)) (- (:y vbox))) (doseq [shape (vals objects)] (let [sr (:selrect shape)] (println "-----" (:x1 sr) (:y1 sr) (:x2 sr) (:y2 sr)) - ;; TODO: scale y translate con el vbox (draw_rect state (:x1 sr) (:y1 sr) (:x2 sr) (:y2 sr)))) #_(draw_rect state 100 100 500 500) diff --git a/frontend/src/app/render_v2/rs.js b/frontend/src/app/render_v2/rs.js index c982b7a1d4..7f6f4abc7b 100644 --- a/frontend/src/app/render_v2/rs.js +++ b/frontend/src/app/render_v2/rs.js @@ -28,7 +28,7 @@ var readyPromise = new Promise((resolve, reject) => { readyPromiseResolve = resolve; readyPromiseReject = reject; }); -["_add","_draw_rect","_init","_main","_resize_surface","getExceptionMessage","incrementExceptionRefcount","decrementExceptionRefcount","_memory","___indirect_function_table","onRuntimeInitialized"].forEach((prop) => { +["_add","_draw_rect","_init","_main","_resize_surface","_scale","_translate","getExceptionMessage","incrementExceptionRefcount","decrementExceptionRefcount","_memory","___indirect_function_table","onRuntimeInitialized"].forEach((prop) => { if (!Object.getOwnPropertyDescriptor(readyPromise, prop)) { Object.defineProperty(readyPromise, prop, { get: () => abort('You are getting ' + prop + ' on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js'), @@ -8507,6 +8507,8 @@ var wasmImports = { /** @export */ invoke_ii, /** @export */ + invoke_iiff, + /** @export */ invoke_iii, /** @export */ invoke_iiii, @@ -8563,6 +8565,8 @@ var _add = Module['_add'] = createExportWrapper('add', 2); var _init = Module['_init'] = createExportWrapper('init', 2); var _resize_surface = Module['_resize_surface'] = createExportWrapper('resize_surface', 3); var _draw_rect = Module['_draw_rect'] = createExportWrapper('draw_rect', 5); +var _translate = Module['_translate'] = createExportWrapper('translate', 3); +var _scale = Module['_scale'] = createExportWrapper('scale', 3); var _main = Module['_main'] = createExportWrapper('main', 2); var _fflush = createExportWrapper('fflush', 1); var _free = createExportWrapper('free', 1); @@ -8718,6 +8722,17 @@ function invoke_iiiii(index,a1,a2,a3,a4) { } } +function invoke_iiff(index,a1,a2,a3) { + var sp = stackSave(); + try { + return getWasmTableEntry(index)(a1,a2,a3); + } catch(e) { + stackRestore(sp); + if (!(e instanceof EmscriptenEH)) throw e; + _setThrew(1, 0); + } +} + function invoke_viiii(index,a1,a2,a3,a4) { var sp = stackSave(); try {