From 79b06aa092966983a140a2b4c7bfd4fe81cf6224 Mon Sep 17 00:00:00 2001 From: Aitor Date: Fri, 17 Mar 2023 13:29:57 +0100 Subject: [PATCH] wip --- common/src/app/common/types/modifiers.cljc | 2 + frontend/resources/public/wasm/Makefile | 9 +- frontend/resources/public/wasm/NOTAS.md | 72 ------- frontend/resources/public/wasm/build/main.js | 1 - .../resources/public/wasm/build/main.wasm | Bin 143018 -> 0 bytes frontend/resources/public/wasm/labs/Makefile | 3 - .../public/wasm/labs/test-vector.mjs | 9 - .../resources/public/wasm/labs/vector.cpp | 25 --- .../resources/public/wasm/labs/vector.wasm | Bin 166340 -> 0 bytes frontend/resources/public/wasm/src/Box2.h | 54 ----- frontend/resources/public/wasm/src/Color.h | 96 --------- .../resources/public/wasm/src/Interpolation.h | 20 -- frontend/resources/public/wasm/src/Matrix2D.h | 122 ----------- frontend/resources/public/wasm/src/Shape.h | 65 ------ frontend/resources/public/wasm/src/Vector2.h | 198 ------------------ frontend/resources/public/wasm/src/main.cpp | 34 --- .../app/main/data/workspace/modifiers.cljs | 1 + .../app/main/data/workspace/transforms.cljs | 13 +- .../main/ui/workspace/viewport/selection.cljs | 2 + frontend/src/app/wasm.cljs | 46 ++-- 20 files changed, 52 insertions(+), 720 deletions(-) delete mode 100644 frontend/resources/public/wasm/NOTAS.md delete mode 100644 frontend/resources/public/wasm/build/main.js delete mode 100755 frontend/resources/public/wasm/build/main.wasm delete mode 100644 frontend/resources/public/wasm/labs/Makefile delete mode 100644 frontend/resources/public/wasm/labs/test-vector.mjs delete mode 100644 frontend/resources/public/wasm/labs/vector.cpp delete mode 100755 frontend/resources/public/wasm/labs/vector.wasm delete mode 100644 frontend/resources/public/wasm/src/Box2.h delete mode 100644 frontend/resources/public/wasm/src/Color.h delete mode 100644 frontend/resources/public/wasm/src/Interpolation.h delete mode 100644 frontend/resources/public/wasm/src/Matrix2D.h delete mode 100644 frontend/resources/public/wasm/src/Shape.h delete mode 100644 frontend/resources/public/wasm/src/Vector2.h delete mode 100644 frontend/resources/public/wasm/src/main.cpp diff --git a/common/src/app/common/types/modifiers.cljc b/common/src/app/common/types/modifiers.cljc index 5097550e96..4866e5ebb3 100644 --- a/common/src/app/common/types/modifiers.cljc +++ b/common/src/app/common/types/modifiers.cljc @@ -389,6 +389,7 @@ ([vector] (move (empty) vector))) +;; This function is never used (defn move-parent-modifiers ([x y] (move-parent (empty) (gpt/point x y))) @@ -403,6 +404,7 @@ ([vector origin transform transform-inverse] (resize (empty) vector origin transform transform-inverse))) +;; This function is never used (defn resize-parent-modifiers ([vector origin] (resize-parent (empty) vector origin)) diff --git a/frontend/resources/public/wasm/Makefile b/frontend/resources/public/wasm/Makefile index 8fc4eb217b..189974bc29 100644 --- a/frontend/resources/public/wasm/Makefile +++ b/frontend/resources/public/wasm/Makefile @@ -1,3 +1,10 @@ all: mkdir -p build - em++ -std=c++20 -O3 -sINCOMING_MODULE_JS_API=['print'] -sENVIRONMENT=web,node,worker -sFILESYSTEM=0 src/main.cpp -o build/main.js + clang \ + -target wasm32 \ + -nostdlib \ + -Wl,--no-entry \ + -Wl,--export-all \ + -o build/resize.wasm \ + src/resize.c + diff --git a/frontend/resources/public/wasm/NOTAS.md b/frontend/resources/public/wasm/NOTAS.md deleted file mode 100644 index 1110c5085c..0000000000 --- a/frontend/resources/public/wasm/NOTAS.md +++ /dev/null @@ -1,72 +0,0 @@ -# Notas - -## TO DO - -- [ ] Mover todo esto a algún otro sitio mejor que no sea `resources/public`. -- [ ] Implementar tanto `clang-format` como `clang-tidy` para formatear el código. -- [ ] Implementar algún sistema de testing (Catch2, Google Test, CppUnit, etc). -- [ ] Implementar CMake para construir el proyecto. - -Para compilar el código en C++ se puede usar la siguiente línea: - -```sh -g++ -std=c++20 src/main.cpp -o main -``` - -## Emscripten - -### Instalación - -1. Clonar repositorio: - -```sh -git clone https://github.com/emscripten-core/emsdk.git -cd emsdk -``` - -2. Actualizar e instalar dependencias: - -```sh -git pull -./emsdk install latest -./emsdk activate latest -source ./emsdk_env.sh -``` - -3. Probar: - -:bulb: Ahora deberíamos tener disponibles herramientas como `emcc` (equivalente a -`gcc` o `clang`), `em++` (equivalente a `g++` o `clang++`), `emmake` -(equivalente a `make`) o `emcmake` (equivalente a `cmake`). - -Puedes compilar el proyecto con: - -```sh -emmake make -``` - -## WebAssembly - -### Memoria - -La memoria de WebAssembly se crea cuando se instancia el módulo de WebAssembly, aunque esta memoria puede crecer. Si no se pasa un `WebAssembly.Memory` al módulo en la instanciación, crea una memoria por defecto con el número de páginas que indique el módulo. - -:bulb: Para averiguar cuál es este valor por defecto podemos usar `wasm-objdump -x | grep 'pages:'`. - -La memoria de WebAssembly se reserva usando páginas (una página equivale a 64KB). - -El máximo de memoria que puede reservar un módulo de WebAssembly ahora mismo son 4GB (65536 páginas). - -:bulb: Ahora mismo existen dos _proposals_ para ampliar estos límites: [Memory64](https://github.com/WebAssembly/memory64) y [Multi-Memory](https://github.com/WebAssembly/multi-memory/blob/master/proposals/multi-memory/Overview.md) - -## Documentos - -- [C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#S-introduction) - -## Recursos - -- [Compiling C to WebAssembly without Emscripten](https://surma.dev/things/c-to-webassembly/) -- [Emscripten: C/C++ compiler toolchain](https://emscripten.org/) -- [Emscripten: settings.js](https://github.com/emscripten-core/emscripten/blob/main/src/settings.js) -- [WABT: WebAssembly Binary Toolkit](https://github.com/WebAssembly/wabt) -- [Binaryen: Compiler Toolchain](https://github.com/WebAssembly/binaryen) diff --git a/frontend/resources/public/wasm/build/main.js b/frontend/resources/public/wasm/build/main.js deleted file mode 100644 index 0416d29db1..0000000000 --- a/frontend/resources/public/wasm/build/main.js +++ /dev/null @@ -1 +0,0 @@ -var Module=typeof Module!="undefined"?Module:{};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",function(ex){if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});var nodeMajor=process.versions.node.split(".")[0];if(nodeMajor<15){process.on("unhandledRejection",function(reason){throw reason})}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;var wasmBinary;var noExitRuntime=true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){callRuntimeCallbacks(__ATPOSTRUN__)}function addOnInit(cb){__ATINIT__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++}function removeRunDependency(id){runDependencies--;if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="main.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(binaryFile)})}}return Promise.resolve().then(function(){return getBinary(binaryFile)})}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(function(binary){return WebAssembly.instantiate(binary,imports)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}else{return instantiateArrayBuffer(binaryFile,imports,callback)}}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["l"];updateMemoryViews();wasmTable=Module["asm"]["o"];addOnInit(Module["asm"]["m"]);removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function _abort(){abort("")}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;abortOnCannotGrowMemory(requestedSize)}var ENV={};function getExecutableName(){return thisProgram||"./this.program"}function getEnvStrings(){if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(x+"="+env[x])}getEnvStrings.strings=strings}return getEnvStrings.strings}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}var SYSCALLS={varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret}};function _environ_get(__environ,environ_buf){var bufSize=0;getEnvStrings().forEach(function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;writeAsciiToMemory(string,ptr);bufSize+=string.length+1});return 0}function _environ_sizes_get(penviron_count,penviron_buf_size){var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAPU32[penviron_buf_size>>2]=bufSize;return 0}function _fd_close(fd){return 52}function _fd_read(fd,iov,iovcnt,pnum){return 52}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){return 70}var printCharBuffers=[null,[],[]];function printChar(stream,curr){var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j>2]=num;return 0}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":function(date){var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&__isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!__isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":function(date){return date.tm_wday},"%W":function(date){var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":function(date){return(date.tm_year+1900).toString().substring(2)},"%Y":function(date){return date.tm_year+1900},"%z":function(date){var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm,loc){return _strftime(s,maxsize,format,tm)}function _proc_exit(code){EXITSTATUS=code;if(!keepRuntimeAlive()){ABORT=true}quit_(code,new ExitStatus(code))}function exitJS(status,implicit){EXITSTATUS=status;_proc_exit(status)}function handleException(e){if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)}function allocateUTF8OnStack(str){var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8Array(str,HEAP8,ret,size);return ret}var wasmImports={"k":___cxa_throw,"a":_abort,"h":_emscripten_memcpy_big,"j":_emscripten_resize_heap,"d":_environ_get,"e":_environ_sizes_get,"f":_fd_close,"g":_fd_read,"i":_fd_seek,"b":_fd_write,"c":_strftime_l};var asm=createWasm();var ___wasm_call_ctors=function(){return(___wasm_call_ctors=Module["asm"]["m"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["n"]).apply(null,arguments)};var ___errno_location=function(){return(___errno_location=Module["asm"]["__errno_location"]).apply(null,arguments)};var stackAlloc=function(){return(stackAlloc=Module["asm"]["p"]).apply(null,arguments)};var ___cxa_is_pointer_type=function(){return(___cxa_is_pointer_type=Module["asm"]["q"]).apply(null,arguments)};var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args=[]){var entryFunction=_main;args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv>>2;args.forEach(arg=>{HEAP32[argv_ptr++]=allocateUTF8OnStack(arg)});HEAP32[argv_ptr]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(args=arguments_){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(shouldRunNow)callMain(args);postRun()}{doRun()}}var shouldRunNow=true;run(); diff --git a/frontend/resources/public/wasm/build/main.wasm b/frontend/resources/public/wasm/build/main.wasm deleted file mode 100755 index 2cb5f4cdf48e6fc4b56c2be2b400f18b072591d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143018 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 o#xl^y{gKS4@x})kriyHrNh1A!|wEY7P zoG0_dy9xM074(HFc(6$idfeu7?j>yC>>=QDD(G`6c=U6PhS(dQ^O-zny_r)%pHsmd zPg~A?kA=zX9BhmCMLe4qaiCd*g1!g^$Nr>IxgK}>oQDXz7X&=m2MPL|3Lg1(t{OpYteT%Xx%= o#so#YVR-`cz6Fg{GYmV1rk7>Np>svnR0LaN+RGhY-0`3zxuQ77PYD(G`6_}sIN zoO*oT=iE=&UhE^_b1LX_D!BJhBc~o8{dG4YpCxQB4iNA;74$h3Jn$EdoO*oR=R8E% zy&&Lo9wg{0Sh&y~WauR%6IY}i z-e#?2f~G@Yszt}X%-=g2iiWVb>D=!$sG+y0q_L3gty~(0w%{U;2kUsUa&Z*-aAyw zN`PJA9J_xT-xZtf8#@Bk%J)J0el{Lq8!qdP{3fnfbaiHsJp*Ww2^O?CC_p#& z*^F}z*P?Mwdab+K=h8=(eh=xnosG^Wp{4iM-q~rNtS9+h3oi9eHQc3Uf1pbDsb^vL z>!A7_@knx1O00N1wi@ZD0t^3?D4Ac?w!F=g+un{F_1=z{eH}9=!=_>hYdxeZHBhO3 z5UMRksOD`)<1ID@duuUzD-+EqXRD2jjL>_^Xob$4Y32$kDPs3ZXZ8&{{I?UGJ6Qm< zGCnYlxHe1_6VdHF0FSw@>ZPuNN(LD^I8-wvpkoNEKxI=A$|**-qgLvF+GVt4RJ0^| zmg(`5=s=8BSpI<4_~hFRK>c*); z84tx8%)HmIW=euZ!;EO;(#(M&?A&%4ShChemH*Qb&eA{|$4u^wD@C1r24!BrA&w%W z-5t>1`O!{{LPk`{Bf6v2Q5)wQplLZh5r_Ow=#4Rs53;|+PbXPQl`S-biy`af# zybfVTZjTE!!9lW}TuaiCeZ7k%q7`(dd6Meb8Wtl3R$H zsk-u11TaFeMN-9afed~D3@Utq#Z6qXvW4Z`q?|0N&4Srjr6hxXv`IuB^9N$>(_=bit z?b{c#rLU81+U|kK8OAnmF>On_kzQn~;cYQ~ytY2@#VXU;Tpg?{AsGV-A-EQvPq zxvo+@Ef&stPd@UAb0c3bYh0TEY#R5A#NxH&7L~^EPNFViufm zk#?wP8MKQOlQsse)gGp{>XHxIM(t&dR~xyBAGF6#ZO|I^Ld31Cph4m`QbJa!TKGg` zlxTR{aPO;#+kM>&*WK_4CtP=8hnYdRE`8C$m9fzxTo=ldA8+Co0ZYwbd53*JfvHde z_7nWJ3E1sgOF0bz`ylC0UBI%Zc4h&4jGc*p_mTzdrc;!!o4yC)b<@nFh_^F{^U2cn z2Sv2za@B}uS?~lsv@G}p>!rC|-IV<8RATk~lZ#b^X-R`K7pptNQxvQ05jU~=*IumF zbNyAqu1&16rBkA3KWmeaJkBI7V)d|y?I26{k`#v_&sMQ&FWJR@iehztG_zRUZ;Os z%q&ykJyWNjMy9gUe^UArWa^_#bsDT;KCtkY8|*N_?!*Z&xTED`e@iPR$HX0#_CC=DZ{iwV>Oqi`@>Tjt1m^G)}8X~ zr0H*$-B!)!P-jGOKo)}k{Ae$~+5d}7?&p^cuYnYeAnWH4TU26cqRi4bYG!Ihw3BJA zxB~`rVQ()gr4}(Qy*7mfSs#NNEl2!<1G|#H4+}$13uNwyzTL*vHIIm-A9RzR#UnXx zxCyAKY4%E2WAnD!Stk5ti z9JM0lL=?-L%6Z;_Otz6V@C}Y8;k%}*-0}p5;C5`)%A@ATfet=7q3;P?BMluiunXf+ z3EbhS6eU+cRz|`xWTLq>6edEp{-d2rCjTH%jezW87X61tie`_o%>>{?4;p(KP`I=* zaC*TuZh#;oi`?O!DD-<{xDUSxz-V${rZOR2P8-(A#PZ(FsafCT$yThb%XI#kt**LB z2OhM3%KeQ3jRuz!g?!2l!#KiBS`6c;X4GOBC<|WR>BJh-5at^*sGFEIj$vz1BCUY<8OlOzuPw|v$rR>>F`vxrvePlKv)tzLv7$@H2cL^hgE>GMhsqf+%302 zXcPA2R-u(tZ>$j!n!!RZHG{WA*cIVBPr>UL5a(z?S2K6*q*pD~D9)>Ju5i3{tG;p< zRU2{j3z84A;JS(?=heE2ld}=!)#BR4uBJxYX|*VUc{0nh9|TablMz&vCI}EEBhf>{nN~H zNn_c{B7i^4Idfi3Q5K{%bTrwvo zh*8s2FP|7a+NUU;l>5I;K0$5P#|=h1nTxfvJH~BOdYverx}1EHUt>+TCbse6rT}{J z!inx_NG6?Y*U^wnZ2mRLgmEwV)#)WuM=qAiUMzW{XAFS}Km6z{nf0wBk$HJX!e}~2 zTEr4g6|f^Xb@Dq|^10Y4 zJL4EaWXXonWaHST5%O{kmT=NCmv(+5C^$6$5K)#R=1EXhq+4huQA)|bf!K&wVhIIu)WfOD4&BFzEO>XY}-ZR{3yKrgIz zxU>!vtenzv4ZdzP8N6}DbL|i#>8Hu>f(To{l^d{g=mvi_XOn@+P3$;W!GS7{Lrn?O z4+AmK6Q>YqqDKhT*@q0L0BY?M{A#APR`ZCU^2-tKdw{9qcJm&4K5%8a9%CjeK@M`8 zJ*I*@hdvPzTH~4;5v+Er5CMm_-G&IAUy~M>1wrzF_^%e1TM+>tq9sBEAzH_|<~br_ zhluz^BO(&dF=RZ|=g!$#o)a}N>aZJA{JkOF=Fm(-OrHZ!Zk4)hIx12`(>CdOU3$~y zCKMJ+uh@h_`(RH0AD#Ax!D#PAK{!wtC=Qf51_lPY_zd*+C4A30Lt*}cFpA@WfpDNa zFwj{U=pN`9s0<9un%zGa z^EIFu^uVkjsF|CBEeX*!lcRwxE;Xe3^wB1sEq^}APKH2rH&8ag$fD#z$dwMq#37Wy zL&DMQEVN&v%`I{r*`A9ym|1I`Tq5j(Eb(MJT#(+%#$8aX ztEHL7$kGu94fm>bWCxoC9cUJ`uUSz2Z4v`$Z4=j@&s+kCsZ2)9 z+h;m(|EddQOoT{IH zd@>+LF)f|k>q@AK3uCktsbUu+{O*~Y*48Ey(KEjDu&R>C; z1)pa9ZfAoCykOgFg5=Bvywf0YC6dqWq{|HoPSx$^bVs$w2$kxZL#2GeP?<#hnint> z2Hff@@EEczMuTHip!zBedjeI%67H?x3@hb8jJpu>h>^1D=S^f&;H+Ce*sh#F;SIS) zU2K?Dgknzo08zZJRJvI~@5l~clr2l%R6~kbB{ud=$6e+J1-M}FtN>Ty#~s=B6*kZ` zq_(->R70xY=k9W70ub#TnPPyyadO97*R*sz_d<4L`&>;L-E|ifD0`Zq?4BN!d~~z% ztAz%`6Gua7GAMS(RSPKW$Z5rrXiP^=6$9pmS!d2 z)j|C&5m~{tlZhU~QzlJVXm+%h4LAK2Z6YdVi#d`_yhp>@jaMknjWVZwX_RFp&ys~g z#+2z{47aRM4O7kSG??6gLnWJLz)A06G2Ik39fVQ{vc*tr7Ewl=oaqa-1$_q&_cmhc z0qZ9FX%~)N+DC^;+6nM2q0?sI2o6>$86@X~8j6%P-mFl$-Ot2#h;7Z8sYs)#qr^8F zrW8Q42U;vW>+FGsVKvuiI0nO}Z~?N{BE!l9p;L~5LY`!t$|WdDrw;`Si8|kY3Me$J zk=dmt9LG7}3%&(5ynYvazuL$3^tZi_#8ADXS<7n_5}$~rQ`GVrMF`O^UdwAM zW>SBhnwG~|1~Y1TeP&vf^gXGDhuEvsYmsfXl-Q9eLdPI7(I-2{ve`l(dQp&^)u#8! zv@*Tk2ZSN|Z<~<+{^)%_`*P`hTQ9N&BH3~7yU5murc&c7eq5Lmxa}e{7fV7tXt|9C zwsKIFR`gj+^P7nnPD%3{{`j`P{^Xbb^@<|4xX?Kn4!V^cq4~cf?vDZ}X@-`*+ zxg!d44S<6HTq9pb)lQqOofgIzJ3ZCTMp~BZc8ezIc4zrgXV&eyoo;8=s-W`Xbi1W5 zMYp?;`I2;*m#o`O0mbR)cJDb+r+RTZ=4r#xuG`&zA{_6AS2kyg?JV%+)$JGwm5Uqd zy(xBW+<-;NCLpM8n46^uqrYVh{q4&kM*%aJIe?1K1ObP2rawA&fL3TFoO!RbzJ9dp z_jMrzYBjtQa4<>EL4lKgUo+p0h51np%wU)<*fgTRG{QW1IFQJ;sc0I(PHT>!a0+hcZPtk3>{^;SSlbS$u%IuQZ$(TMhI1>hxrGSf;M5eh6$DN`I|r zK$N-+OL*0m1dTpfQK@lshE5*W9k;X^2$p~jkwFPu5CO8>jta%=z!?z+vq%;LpoM%Z zgf)gMyjmKgCRkyvQ8M0GJN-dP9Hp8psBv4Z&DOLDf?{p*Ktdkc>qTY)KI=k|peC=j zao-O3$*GRxQBuyCCK*P1Rmpcp@(b={9I`R#AZfcf+G2sx&1a3!mWa-lM0a@VvSBX2 zvXYzGXcf!=c1SU-fxOn2O^j(Bh{=)`(zTRQ`KLloo)h^>q{#D#Rv?c+2$1Iv(CWxj zb|+kFM4o#^o-!qq;r&>cuT|$Ub&8H;3>D-(sFN#IAl+>0$R9n#?uw7M< zZT6(6MbRm{s$8C0r|!5wd-1d=^LGOb4WYtCMufJ>1cxIkmmS4`Xb|B=@(gZ&2L}=L zX-W?TXn_g_M4dP#8TGM3ML}9y$f<8{RF&-KANzF}#ZX^2rD{)@px@_-&p|Jktt{Tq zaz}i;s&;5xbU5Pc5b??MqVv;IYk`_(hpDwzi=i#Z-YAx6wAUpnBE8@5V(=RAt%TgHYuy$QI2s^BGnx(ds+~IK3ln}J2J7_T8|?M#dT3e&8}IbX(A~V>${y1s%1R0UAdW4v)jpvTBR?oi01OlIWAb! z?2?q3dkslQP07E4qvu7}y3eR z<`|9H(vSj{&&E@jyj>cc=&Na=g^RDvAXBd7q5Fd*Ba@bXrH;_nIcz~w=13J!<2*U zu-%c|s&q~{Os7&h(O20R!4M$$gaT zT`?VNpK_Y zRo);*r+l`(6Kk4U`Fzx<@I>YFQ7$Y$UFGvpp_W#hpnMt;o|5uOwJ%QjgaluL@+lIO z5(5doDCLupCw`yLdk%W#bHcHEM|ih@oFk}TGwYs^!^^IF-uY5=PsjTwJnw(j>z+fL z@_zIGu32`OM_4(f{%TRpTILEr{QcF^t`?Q^2fDw$ zrwZrl@3X?WYI=p!`$T$$Q^M&4g%fAp}x&53*0rz-UB~bO2q(X26ikI~CgTm~Fe#x+)1XN$fLu5}R_ELruiq zt@EQN5lHSt`M?T|hoT{Xmd%DuVz^DqOAOebl%H5zA?B!MF>=I8O{UG929t`m$jwj+ z=VSoy$s3f){MlAcqe)P}leVV=p!Y^Ku-(nJ+!UT3Ox`9m2raqGn=O8Ty>K+?o(7nz)Fd$sX8W4m5lntbJFu8Bv8j{yy3uK$n(b@}5TH7yLYb(}h&0>t!%y>6*8ZB(ioWjxC$(xw!td=%tjMmghnzlcu zwPTTvUhZ~W!DubNG&H9*4SaPt7p(@_TzN>ji4cT(6kIKdj))4?Wx^U?xoOP$FZobt zBnY-V2}ZW2eopYMu;CneScf&sUy?Xs%C*h{ z5@1WzeTC$g3F5$r`Dl(Uk@I20k*ojU3FKV=o{;liN6v{P3?LW-Hgc8`Q{-IoOA3bGq<^-!CW4D(&XsM({JUatUFr&<>U;u zCXw@>H_7=xPR_)&kTcUHXjg+x#E^_kCTDJO(QB<7X?_M^hys!GgV9B?cv2H63h|WN z(rr^wF6&$k$|bv_TyIdXyh6E+T@7*(H5s57_1X7}5&!$9++T?8~t}dmJdZ7yWTc7ULnh@Wjs3d=@oAIedd<``4w*YiV*+76XFk>1+!I?czL+x z|BjgWq95iPjdGs{v>hy^=JUWFGMUC?97ETXN+G?5{|Wm9-5$CK=PRPPT`c7GES8=) z@j+YhaN<$O;uP{0HO)P|VfI8<2@JDnuqv)br3MC@W92I054W;dUN{5n4CTn>!pcFl z_2o=|@U%>Tu37VNs$d1TdwnBDZWhc@OEUJbK1YCi#VtRl%0SWwM!U^%ozANZ`5wM8<;6jCJUN(ENs=%QMRVm(xpYtWYk_drBT~CNEj}D z(2d&1OjX7$A;Do^J@P|o)IJuT)Tn)qHu9W`Rr@;OApY?`&{z+~K+wLzDs z!Q8C_Cg-$~5cqAmw%)2!XnnNv~ogDrDe*-6a4z0J>Mf8U$6 zr(w<1C2YkF9Q~Qq|EDL=Gc*6G`SweqXU;hkJ-1p{ctoI1Hfy&GXvaKv{}9ph?wp=s zo+n$S$?3V(uD#pQ^Pd?#|EcKNC>*pA%-wvQjm*GL1gfdQwe;ImqzfZ%*tN;-S7crxT^zI~+a%jUb4{>e%>Lmf%bCpCFNG{$ zA;wpTQL^vUJShB<-%LjASBSCQQLJ5K{DEA3{^90~GnuYm3Nij5ny#0=Or~o&Z-4Ji z*FQU@>AHexd$Q?z2(P~^s0J}!mT9z-i&_J=M`ELgGZi+li6YbetDD!=;%wesX^iRo zPFlcmpd2fNwZBps44mE`%1v792)gyd`9@d%%5TPC4Zs2$vA@MhBZFnx=nsKH?vfW3!AfT|A_Y_ix=5u)+8!KV8v&5 zFFt8ma79m;rPyENL7XvZiO%KI!UXU8*}4+fO4mrow_4qWm6U}_T+}JOw&8s_Iwo=c z^bGLAW~@;i0I%f_HoEK3g@QBwmny5V#6&~!kXBIeEzULzKcKP)G-$1Z8ue4Uj0lz* zxRNak`-l_@ag%kJj4E1CAls^{yi_YwcMIH^)PBRWf9 zYS^hv>k<0t5bT@@(uAFQ1iMw|V5e~&_Wv8XgG}i47@|PN$@dk9YmOYC3+QOhIaNnf zg4~j0^_{H*^$P=l#3_p%`B}uu^G2|xO}NkiYcL~8SSxrMkQ=wBfuS_CdunKnp&Vym z^+72Mbd#js+2z2Tc*v4bt^C$nCua_5(+~R?Gp?-}9Ie@z@;YEz6wU@(BB|94hcc9E zYel2l8f#R^D=r$~Jmws#l81_|^ByXEC2jY^=2bel($gHR#(J&BL;5tC(w0*x$Bc_i z19`Xdp3Me!eH(9sEEN$0Wk&{KaTzFsfmV#_5Te)-Vo>>{Mw<#-Eh}3A!Xs>hi{0{! zKn<+74uU#Jl`?5}A$b#y?e0mth1FTgs_xJpd3Ww?m3&l42a{VH@mR3q{^Vv>4j-`H z`#y6KOp&!+32E z1b^r%sDmyR1;fU?1}kqjqo_jx-9|CY0c&yc@rc%I1gC{Tc%a%6)0RkWPzSif;a3xe zr@#S}6?DL;D)&Y1sx62acYQ~c5C>;uh}pR=JSSKNRwB+_$XGX2^=Wdku6nWlq&BT8 zf=@b_zS2Gnl2&5~m86RRjh`g|2bN{dRB}2;n_X->0&HzoXFxBoj|Jyi5p^MpwTBT7 z)lwfXv@{C{ZzYLUN&@AA7cv$-V7l;%*ObK&CNV7$>w&mv)~Z2BFxxD;60G9sl{Iu$ z1gtbuhq6Yb6UB3vp^Qv()q&664dguogw;Zmq zdDV*GJZk2(F5+?(FQ-4EA^lUbMGienXc<^n|IjVX-iW}3_@#lM-asDo#!(b#yiy66 z6vpR6G#rDU#w&t(6}lHB_lw@>(5r-VA;I<>^&4MR)--ts@Tm(B9L_K;`~P`BPs^8s z8P^S=nK4+E{%vQ_;9O-wmkMd&6lf9(bw0e|V3FrxIriS5ikD@bI?G6>;JjyM8n4@? zk(|f}kcC<3KtBnQ5B&Qha#R2{o&S@GT%zy$ny?7j82cinp1ts8zWSh?mM>o?xC{^x=#Zo19=Ze06w!RlK!uD|o0Hxbyl#(sZt z%{y;%q3dqiuyMU!UAOTz{akgs{j6Mnt3463_}#Br{La@b{<+|sSEp&Z{D$Rs2j?um z;nmA;Abig9yI;Nh?v$vjZ@){`1RHO=bK@O%+`fLpns=saZ@>AbwQJIM-M&7(bHh!P zyZ)W&t+(B=aYK-8{F#k+ZV0Zqc|!mIL3YRb;I1_{Z@7KEqHcf3n)NDg&AS!2Zp|GV zT<9%pZgzoNZ@=@#cieR6niVT3x8J7b1-ISAD}6Su4c4wz<+rX4Xt2t;`4+(zQ2MPm-+1SS^|#*kGXcmA z7N5KPO1}AQSifB! zLy*S=S7%oT*IpH5R|QvIa$|PomBE$S)vJQbuU;8k5-fl1>t27}8_vJr!i$1S&i#qi zE6=$wI5${w+s3tPmjWOV-Tk_^ED5eRY`tztaM_x*Yj0nc{^afJ*S@nFT)T1on)I$) z*KgQ()7tc18*jT=jZW!>wQG2blI8!7bOb>}IObE}Q{+?PLv&E))5)icPlZo6pB_HF zeERt4z5Y@H3BTxX!3*3ctB>Ml^E`*o-4ysBAC<4aTX@&c?-_iKkyanY&EKKk3i@45WGhR@a4ZFv2SH@@y7 zM>Ejou$rE1^PjMYK!2X0Vgw-bLAA} zs9d$_b^N}bkB9HVoO_8L)Sr)&X5U3Ya03>*2|oH;#NgBTd?TMX@tJOXzL|Fy^BLlk zkIx(r%Ws5%z4O-FjHIAG(Ox&@YV7OpL0?Bkc$iOX9g?(a5=q*4z*~40+<6_ZwK{I! zxFN5EcdF-(mU<=#&m(>%pH+OO8_SpR?s7g?@X5z=UQcUVpc|{>Amxfr=$AVz|fiM^v?hD3#eR~jm{U3?~>J5C>@fn5T{pr6PKmO2D$B*-9 ze?*<$U%=I5g<`3r-0AamRl0k)zHHX)IsIqM9hf(N!QjF(&pJD;)_%k#INAHttNvwA zO?wI*aY@9dKZw2#D(f)iI&pR6K^=On)6aDXvJSrM^hX_`R7WV)A^JK(sg5A3BZ%q< zpE|;)j-aU{XzB=;I>Mz+KhzN>b%aSB;;17`>IjoM!lVvy)T#P+VFFK6|I^g}H1$7C z{ZCW>)71Yo^*>GhPgDQX)c-W~KTZ8#rv9g?|7nKSr^BF|{N3d5CV%%=)Sj=-F1%mA zt#}(JqXc0t-m{6pO7tX0!*5$yS%pGy$?BiF)~Jv0)jx67rEkCd5~%u;8&_X`l|?Ij z$u(DAnXTrL@Kx7bed+4#?LTGVORu{wTXpGmL3VgyC7aIxoqv$MOighP7zm-n0x_s*T){XOoTd*{yVvble<8<~if$?nUvo$&S)&Ny|n z*WH}Dc8VK0#i_e)iaTAK5N{{qjMM(Z+l5fbZocZyJgdH;u^E2`%iX8P=mx>HaY7p= zyGc?c>KwZXvKt?*5$bOR6kNDQ+UT5yJWI~-hGquknNR_u&H| zk#COf*UbNK6W&)ISVYh&mCi!LSr&2!F{N!}VoGP3=(j)y-jC^aL+!iP=p`4wY z*>Z3$Yduhs&f}Z=b=&W9+-JwvpXxZ*(CGc3&M^--)&A?a`RiKZiA;meapSK*wo97; z(jBJVR?2F3Eqnkz2;1O8@L~7}^utHtWAJhK1Q_&)4`Ti{ms0sIgOZHC8LicY1l zIP-OEEOgr&pCu#fu=6VxOQyOSu&4R8m3F$WvvxW* zzgCAr{Ic`M*sSU7O?By2uxHfxRn7t$@GC15c=55s$k4>O13Nz=zfJAocGbb1pmdP) zcai@Xbp9vsQ@9(HHc#`%^=FiIelPqS?tx#xKDZa|gZp6+ehCkN?K|R#wI>KeuM%s` z`#oMf#gdsscMBgL6np=fo%yw~*szvtZFJsnwOtXkMm6HI=1C>FQUunTvg!}hKT5&t zYW*~BefK)<-H}z({fK{sgd*M#zlPtyZ{c_Fdw3B300-b9co^~{_TD{)MqK2rWHz=y z#QxCA^KyJs%8%%Pi7pt?qUroX|9y`8U}Vt@KcYX34VIx6NqvWbxNuqF!jMG%V+S$WYBSMjg-#xqdbhX zqC5hBgTKQN`~&_8kHO=RAEiH5VNo9MSSiZvSPdG_HCDkWwwd~16o-jo-~q?I-Yu7frAo-IhzZhNu{JA9OWOyk|go1t;#ndbktT*&pf9}K=#k!eX zDJ<4QI%i_-pT#RJd^`md>&x@~9pxm9+QC7O?mzOe7n}02l3XcxHEva%@onO4UeM#u zD~)fj3iItmrVb`#fA0wP2e5w)vadGwCy~DfUJH|93cLP39K5 zw6#(n<>j8UtB>C&Td*acI>?oReX@f(9V<w)#jY))xMaV^k^W>akvhvo3e6TUgmXfVg8!IP$l501)`d@viq`1^p_Ee{G3goxS@iHeWCNg z_;nnNQ^&!$bR3L9$I>UCl$wDrhaElQxVM#QGkdI!xf*B_c&tsUWb~46b%Ymca1q$W zjYr=ezNnOFi^bEuo!-9AyNRtrez|sh@xH#6*5rn0v|5tMR7`L8Vtgkq-5|Ys$FLRBAo&60w-@L~zDo}Uh4TAD<$1F0N+&yc_7Ap@{;_bBHcETRFDBkg z;8M5@E{7Pbg%(iSMH|VrLQpQwaT_Ecr$4lN?@5M*==I4K^vSl;1o}q0*FjKsJICuG z3Awtt_fopoAS0bh+l_oWD__--=xoodHw}76ys diff --git a/frontend/resources/public/wasm/labs/Makefile b/frontend/resources/public/wasm/labs/Makefile deleted file mode 100644 index 077ae98dc4..0000000000 --- a/frontend/resources/public/wasm/labs/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -all: - em++ --no-entry -sEXPORT_KEEPALIVE=1 -sENVIRONMENT=web -sFILESYSTEM=0 vector.cpp -o vector.wasm - diff --git a/frontend/resources/public/wasm/labs/test-vector.mjs b/frontend/resources/public/wasm/labs/test-vector.mjs deleted file mode 100644 index 5721489d43..0000000000 --- a/frontend/resources/public/wasm/labs/test-vector.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import Vector from './vector.mjs' - -console.log(Vector) -async function main() -{ - const vector = await Vector() -} - -main() diff --git a/frontend/resources/public/wasm/labs/vector.cpp b/frontend/resources/public/wasm/labs/vector.cpp deleted file mode 100644 index 3af1f19d78..0000000000 --- a/frontend/resources/public/wasm/labs/vector.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include - -#include -#include -#include - -enum ShapeType -{ - FRAME = 0, - RECT, - ELLIPSE, -}; - -struct Shape { - ShapeType type; - - Shape() : type(FRAME) {}; -}; - -static std::shared_ptr root; - -void EMSCRIPTEN_KEEPALIVE resize(const std::shared_ptr ptr) -{ - std::cout << "resize" << std::endl; -} diff --git a/frontend/resources/public/wasm/labs/vector.wasm b/frontend/resources/public/wasm/labs/vector.wasm deleted file mode 100755 index d5cbebf88cef9637416cfaaeb042f864732c37c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166340 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 -struct Box2 -{ - Vector2 position; - Vector2 size; - - Box2(T x, T y, T width, T height) { - position.set(x, y); - size.set(width, height); - } - Box2(const Box2& box) : position(box.position), size(box.size) {} - Box2(const Vector2& position, const Vector2& size) : position(position), size(size) {} - - auto left() const - { - return position.x; - } - - auto right() const - { - return position.x + size.x; - } - - auto top() const - { - return position.y; - } - - auto bottom() const - { - return position.y + size.y; - } - - bool contains(const Vector2& point) const { - return point.x > position.x - && point.x < position.x + size.x - && point.y > position.y - && point.y < position.y + size.y; - } - - bool intersects(const Box2 &other) const { - if (left() > other.right() || right() < other.left()) - return false; - - if (top() > other.bottom() || bottom() < other.top()) - return false; - - return true; - } -}; diff --git a/frontend/resources/public/wasm/src/Color.h b/frontend/resources/public/wasm/src/Color.h deleted file mode 100644 index 5d8b59b0dd..0000000000 --- a/frontend/resources/public/wasm/src/Color.h +++ /dev/null @@ -1,96 +0,0 @@ -#pragma once - -template -struct Color { - T r, g, b, a; - - Color& set(T new_r, T new_g, T new_b, T new_a) - { - r = new_r; - g = new_g; - b = new_b; - a = new_a; - return *this; - } - - Color& set(T new_r, T new_g, T new_b) - { - r = new_r; - g = new_g; - b = new_b; - return *this; - } - - Color operator+(const Color other) - { - return { - r + other.r, - g + other.g, - b + other.b - }; - } - - Color operator-(const Color other) - { - return { - r - other.r, - g - other.g, - b - other.b - }; - } - - Color operator*(const Color other) - { - return { - r * other.r, - g * other.g, - b * other.b - }; - } - - Color operator/(const Color other) - { - return { - r / other.r, - g / other.g, - b / other.b - }; - } - - - Color operator+(const T scalar) - { - return { - r + scalar, - g + scalar, - b + scalar - }; - } - - Color operator-(const T scalar) - { - return { - r - scalar, - g - scalar, - b - scalar - }; - } - - Color operator*(const T scalar) - { - return { - r * scalar, - g * scalar, - b * scalar - }; - } - - Color operator/(const T scalar) - { - return { - r / scalar, - g / scalar, - b / scalar - }; - } -} diff --git a/frontend/resources/public/wasm/src/Interpolation.h b/frontend/resources/public/wasm/src/Interpolation.h deleted file mode 100644 index cd5241fcf7..0000000000 --- a/frontend/resources/public/wasm/src/Interpolation.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -namespace Interpolation { - - template - T linear(const T x, const T a, const T b) { - return (1 - x) * a + x * b; - } - - template - T quadratic(const T x, const T a, const T b, const T c) { - return linear(x, linear(x, a, b), linear(x, b, c)); - } - - template - T cubic(const T x, const T a, const T b, const T c, const T d) { - return linear(x, quadratic(x, a, b, c), quadratic(x, b, c, d)); - } - -} diff --git a/frontend/resources/public/wasm/src/Matrix2D.h b/frontend/resources/public/wasm/src/Matrix2D.h deleted file mode 100644 index 5266cb1ec1..0000000000 --- a/frontend/resources/public/wasm/src/Matrix2D.h +++ /dev/null @@ -1,122 +0,0 @@ -#pragma once - -#include -#include - -template -struct Matrix2D { - // a c tx - // b d ty - T a, b, c, d, tx, ty; - - Matrix2D() : a(1), b(0), c(0), d(1), tx(0), ty(0) {} - Matrix2D(T a, T b, T c, T d, T tx, T ty) : a(a), b(b), c(c), d(d), tx(tx), ty(ty) {} - Matrix2D(const Matrix2D& other) : a(other.a), b(other.b), c(other.c), d(other.d), tx(other.tx), ty(other.ty) {} - - auto determinant() const { - return a * d - b * c; - } - - Matrix2D& identity() - { - a = 1; - b = 0; - c = 0; - d = 1; - tx = 0; - ty = 0; - return *this; - } - - Matrix2D& translate(T x, T y) - { - tx += x; - ty += y; - return *this; - } - - Matrix2D& scale(T x, T y) - { - a *= x; - b *= y; - c *= x; - d *= y; - return *this; - } - - Matrix2D& rotate(auto angle) - { - auto cos = std::cos(angle); - auto sin = std::sin(angle); - - auto new_a = a * cos + c * sin; - auto new_b = b * cos + d * sin; - auto new_c = c * cos - a * sin; - auto new_d = d * cos - b * sin; - - a = new_a; - b = new_b; - c = new_c; - d = new_d; - - return *this; - } - - Matrix2D invert() - { - auto det = determinant(); - if (det == 0) - { - return *this; - } - auto inv_det = 1.0 / det; - return { - d * inv_det, - -b * inv_det, - -c * inv_det, - a * inv_det, - (c * ty - d * tx) * inv_det, - (b * tx - a * ty) * inv_det - }; - } - - Matrix2D operator*(const Matrix2D& other) - { - // M N - // a c x a c x - // b d y x b d y = T - // 0 0 1 0 0 1 - return { - a * other.a + b * other.c, - a * other.b + b * other.d, - c * other.a + d * other.c, - c * other.b + d * other.d, - tx * other.a + ty * other.c + other.tx, - tx * other.b + ty * other.d + other.ty - }; - } - - static Matrix2D create_translation(const T x, const T y) - { - return { 1, 0, 0, 1, x, y }; - } - - static Matrix2D create_scale(const T x, const T y) - { - return { x, 0, 0, y, 0, 0 }; - } - - static Matrix2D create_rotation(auto angle) - { - auto c = std::cos(angle); - auto s = std::sin(angle); - return { c, s, -s, c, 0, 0 }; - } -}; - -template -std::ostream &operator<<(std::ostream &os, const Matrix2D &matrix) -{ - os << "Matrix2D(" << matrix.a << ", " << matrix.b << ", " << matrix.c << ", " << matrix.d << ", " << matrix.tx << ", " << matrix.ty << ")"; - return os; -} diff --git a/frontend/resources/public/wasm/src/Shape.h b/frontend/resources/public/wasm/src/Shape.h deleted file mode 100644 index 1611f509af..0000000000 --- a/frontend/resources/public/wasm/src/Shape.h +++ /dev/null @@ -1,65 +0,0 @@ -#pragma once - -#include -#include - -#include "Vector2.h" -#include "Matrix2D.h" -#include "Color.h" - -enum ShapeType -{ - FRAME = 0, - RECT, - ELLIPSE, - PATH, - TEXT -}; - -enum PaintType -{ - COLOR = 0, - IMAGE, - PATTERN, - LINEAR_GRADIENT, - RADIAL_GRADIENT -}; - -struct MatrixTransform -{ - Matrix2D concatenatedMatrix; - Matrix2D matrix; -}; - -struct Transform -{ - Vector2 position; - Vector2 scale; - float rotation; -}; - -struct Paint -{ - PaintType type; -}; - -struct Stroke -{ - float width; - Paint paint; -}; - -struct Fill -{ - Paint paint; -}; - -struct Shape -{ - ShapeType type; - Transform transform; - std::shared_ptr parent; - std::vector> children; - // std::vector strokes; - // std::vector fills; -}; diff --git a/frontend/resources/public/wasm/src/Vector2.h b/frontend/resources/public/wasm/src/Vector2.h deleted file mode 100644 index 69eab2751e..0000000000 --- a/frontend/resources/public/wasm/src/Vector2.h +++ /dev/null @@ -1,198 +0,0 @@ -#pragma once - -#include -#include - -#include "Interpolation.h" -#include "Matrix2D.h" - -template -struct Vector2 { - T x, y; - - Vector2() : x(0), y(0) {} - Vector2(T x, T y) : x(x), y(y) {} - Vector2(const Vector2& other) : x(other.x), y(other.y) {} - - auto dot(const Vector2 &other) const - { - return x * other.x + y * other.y; - } - - auto cross(const Vector2 &other) const - { - return x * other.y - y * other.x; - } - - auto direction() const - { - return std::atan2(y, x); - } - - auto length() const - { - return std::hypot(x, y); - } - - auto lengthSquared() const - { - return x * x + y * y; - } - - Vector2& normalize() - { - auto l = length(); - return set(x / l, x / l); - } - - Vector2& perpLeft() - { - return set(y, -x); - } - - Vector2& perpRight() - { - return set(-y, x); - } - - Vector2& rotate(auto rotation) - { - auto c = std::cos(rotation); - auto s = std::sin(rotation); - return set( - c * x - s * y, - s * x + c * y - ); - } - - Vector2& scale(auto s) - { - return set( - x * s, - y * s - ); - } - - Vector2& set(T newX, T newY) - { - x = newX; - y = newY; - return *this; - } - - Vector2& copy(const Vector2& other) - { - return set(other.x, other.y); - } - - Vector2& linear(auto p, Vector2& a, Vector2& b) - { - return set( - Interpolation::linear(p, a.x, b.x), - Interpolation::linear(p, a.y, b.y) - ); - } - - Vector2& quadratic(auto p, Vector2& a, Vector2& b, Vector2& c) - { - return set( - Interpolation::quadratic(p, a.x, b.x, c.x), - Interpolation::quadratic(p, a.y, b.y, c.y) - ); - } - - Vector2& cubic(auto p, Vector2& a, Vector2& b, Vector2& c, Vector2& d) - { - return set( - Interpolation::cubic(p, a.x, b.x, c.x, d.x), - Interpolation::cubic(p, a.y, b.y, c.y, d.y) - ); - } - - Vector2 operator*(const Matrix2D m) - { - return { - x * m.a + y * m.c + m.tx, - x * m.b + y * m.d + m.ty - }; - } - - Vector2 operator+(const Vector2 other) - { - return { - x + other.x, - y + other.y - }; - } - - Vector2 operator-(const Vector2 other) - { - return { - x - other.x, - y - other.y - }; - } - - Vector2 operator*(const Vector2 other) - { - return { - x * other.x, - y * other.y - }; - } - - Vector2 operator/(const Vector2 other) - { - return { - x / other.x, - y / other.y - }; - } - - Vector2 operator+(T scalar) - { - return { - x + scalar, - y + scalar - }; - } - - Vector2 operator-(T scalar) - { - return { - x - scalar, - y - scalar - }; - } - - Vector2 operator*(T scalar) - { - return { - x * scalar, - y * scalar - }; - } - - Vector2 operator/(T scalar) - { - return { - x / scalar, - y / scalar - }; - } - - Vector2 operator-() const - { - return { - -x, - -y - }; - } -}; - -template -std::ostream& operator<<(std::ostream &os, const Vector2& vector) -{ - os << "Vector2(" << vector.x << ", " << vector.y << ")"; - return os; -} diff --git a/frontend/resources/public/wasm/src/main.cpp b/frontend/resources/public/wasm/src/main.cpp deleted file mode 100644 index 523f701d94..0000000000 --- a/frontend/resources/public/wasm/src/main.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include -#include - -#include "Interpolation.h" -#include "Matrix2D.h" -#include "Vector2.h" -#include "Box2.h" - -void resize() -{ - -} - -int main(int argc, char** argv) -{ - Vector2 a(1, 0); - Vector2 b(0, 1); - - Matrix2D m; - - std::cout << m << std::endl; - - std::cout << m.rotate(M_PI / 2) << std::endl; - - Vector2 a2 = a * m; - Vector2 b2 = b * m; - - std::cout << a << ", " << a2 << std::endl; - std::cout << b << ", " << b2 << std::endl; - - std::cout << "Hello, World!" << std::endl; - - return 0; -} diff --git a/frontend/src/app/main/data/workspace/modifiers.cljs b/frontend/src/app/main/data/workspace/modifiers.cljs index 110439add6..f393850881 100644 --- a/frontend/src/app/main/data/workspace/modifiers.cljs +++ b/frontend/src/app/main/data/workspace/modifiers.cljs @@ -392,6 +392,7 @@ (reduce merge {})) undo-id (js/Symbol)] + (js/console.log (clj->js object-modifiers) (clj->js text-modifiers) (clj->js objects)) (rx/concat (if undo-transation? (rx/of (dwu/start-undo-transaction undo-id)) diff --git a/frontend/src/app/main/data/workspace/transforms.cljs b/frontend/src/app/main/data/workspace/transforms.cljs index ed43feba55..6f27541eb1 100644 --- a/frontend/src/app/main/data/workspace/transforms.cljs +++ b/frontend/src/app/main/data/workspace/transforms.cljs @@ -29,6 +29,7 @@ [app.main.snap :as snap] [app.main.streams :as ms] [app.util.dom :as dom] + [app.wasm :as wasm] [beicon.core :as rx] [cljs.spec.alpha :as s] [potok.core :as ptk])) @@ -175,6 +176,9 @@ set-fix-height? (not (mth/close? (:y scalev) 1)) + ;; Creates the initial structure of modifiers + ;; that will be later filled in the create-modif-tree + ;; call modifiers (-> (ctm/empty) (cond-> displacement @@ -190,7 +194,10 @@ (cond-> scale-text (ctm/scale-content (:x scalev)))) - modif-tree (dwm/create-modif-tree ids modifiers)] + ;; Fills modifiers using identifiers + modif-tree (dwm/create-modif-tree ids modifiers)] + (js/console.log (clj->js modif-tree)) + (wasm/resize handler ids shape) (rx/of (dwm/set-modifiers modif-tree)))) ;; Unifies the instantaneous proportion lock modifier @@ -209,7 +216,7 @@ ptk/WatchEvent (watch [_ state stream] (let [initial-position @ms/mouse-position - stoper (rx/filter ms/mouse-up? stream) + stopper (rx/filter ms/mouse-up? stream) layout (:workspace-layout state) page-id (:current-page-id state) focus (:workspace-focus-selected state) @@ -226,7 +233,7 @@ (->> (snap/closest-snap-point page-id resizing-shapes objects layout zoom focus point) (rx/map #(conj current %))))) (rx/mapcat (partial resize shape initial-position layout)) - (rx/take-until stoper)) + (rx/take-until stopper)) (rx/of (dwm/apply-modifiers) (finish-transform)))))))) diff --git a/frontend/src/app/main/ui/workspace/viewport/selection.cljs b/frontend/src/app/main/ui/workspace/viewport/selection.cljs index a3977510c7..72c5e42485 100644 --- a/frontend/src/app/main/ui/workspace/viewport/selection.cljs +++ b/frontend/src/app/main/ui/workspace/viewport/selection.cljs @@ -370,6 +370,7 @@ (when (dom/left-mouse? event) (dom/stop-propagation event) (st/emit! (dw/start-resize current-position selected shape)))) + ;;(js/console.log event (dw/start-resize current-position selected shape)))) on-rotate (fn [event] @@ -410,6 +411,7 @@ (when (dom/left-mouse? event) (dom/stop-propagation event) (st/emit! (dw/start-resize current-position #{shape-id} shape)))) + ;;(js/console.log event (clj->js (dw/start-resize current-position #{shape-id} shape))))) on-rotate (fn [event] diff --git a/frontend/src/app/wasm.cljs b/frontend/src/app/wasm.cljs index c5419858f1..85db6c4503 100644 --- a/frontend/src/app/wasm.cljs +++ b/frontend/src/app/wasm.cljs @@ -2,7 +2,7 @@ (:require [promesa.core :as p])) -(defonce instance (atom nil)) +(defonce assembly (atom nil)) (defn load-wasm "Loads a WebAssembly module" @@ -10,7 +10,7 @@ (-> (p/let [response (js/fetch uri) array-buffer (.arrayBuffer response) - assembly (.instantiate js/WebAssembly array-buffer)] + assembly (.instantiate js/WebAssembly array-buffer (js-obj "env" (js-obj)))] assembly) (p/catch (fn [error] (prn "error: " error))))) @@ -18,18 +18,30 @@ "Initializes WebAssembly module" [] (p/then - (load-wasm "wasm/add.wasm") - (fn [assembly] - (let [operations (js/Int32Array. - assembly.instance.exports.memory.buffer ;; buffer we want to use - assembly.instance.exports.operations.value ;; offset of pointer 'operations' - (* 2048 12))] - (aset operations 0 2) - (aset operations 1 2) - (.set operations #js [4 5 -1] 3) - (js/console.time "compute") - (assembly.instance.exports.compute) - (js/console.timeEnd "compute") - (js/console.log assembly) - ) - (reset! instance assembly.instance)))) + (load-wasm "wasm/build/resize.wasm") + (fn [asm] + (reset! assembly + (js-obj "instance" asm.instance + "module" asm.module + "exports" asm.instance.exports))))) + +(defn get-handler-id + [handler] + (case handler + :top 0 + :top-right 1 + :right 2 + :bottom-right 3 + :bottom 4 + :bottom-left 5 + :left 6 + :top-left 7)) + +(defn resize + [handler ids shape] + ;; TODO: Tenemos que resolver los diferentes shapes + ;; para subirlos al módulo de WebAssembly. + (when @assembly + (let [asm @assembly] + (js/console.log (clj->js ids) (clj->js shape)) + (asm.exports.resize (get-handler-id handler) ids shape))))