0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-09 16:48:16 -05:00

WIP: exposing translate

This commit is contained in:
Alejandro Alonso 2024-10-02 14:11:19 +02:00
parent 0bf442e626
commit 579b157ab7
3 changed files with 30 additions and 5 deletions

View file

@ -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();
}

View file

@ -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)

View file

@ -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 {