UNPKG

@sohale/implisolid

Version:

A Solid Modelling Kernel in Javascript based on Implicit Surfaces, for MP5 file format

107 lines (91 loc) 3.42 kB
<html> <script> 'use strict'; var worker = new Worker('./e1_emworker.compiled.js'); var api_info = { test: { funcName: "worker_function", callbackId: 3, }, }; /* var api_revlookup = { [api_info.test]: "test", }; */ function test_data_worker(arguments_data_buffer) { // The protocol used by Emscripten worker.postMessage( { funcName: api_info.test.funcName, callbackId: api_info.test.callbackId, data: arguments_data_buffer, // 'finalResponse': false, }, [arguments_data_buffer] // rtransferable only if .buffer of a TypedArray ); /* // worker.postMessage(temp_copy); if (false) { var a1 = new Float32Array([1,2,3.1415926536123456789012345678901234567890,4]); worker.postMessage(a1); // [12345678,2] } */ } function request() { /* var params = { resolution: 1, box: {xmin: 1000, xmax: 2000}, }; var mcsettings = JSON.stringify(params); var b16 = new Uint16Array([5,6,65000,10]); */ // new idea! var verts = new Float32Array([3.141592651234567890123456780,1,2, 3,4,5, 6,7,8, 9,0.5,1.5]); var faces = new Uint16Array([0,1,2, 1,2,3, 0,1,3, 0,2,3]); var b8verts=new Uint8Array(verts.buffer); var b8faces=new Uint8Array(faces.buffer); //var b8verts= "messssssssage"; //var b8verts= verts; //test_data_worker(b8verts, [b8verts.buffer]); // works //test_data_worker(b8verts.buffer, [b8verts.buffer]); // works console.log("before sending ", b8verts); test_data_worker(b8verts.buffer); // .buffer to make it transferrable console.log("after sending ", b8verts); //test_data_worker([b8verts,b8faces]); // sends two bytes instead //test_data_worker([b, 60, b]); //test_data_worker({b16:b, d:60, b2:b}); /* * [1,2] -> 1 02 // * [12345678,2] -> 4e 02 // turns this into a two bytes! * [12345677, 3] -> 4d 03 * ["hi.abc", 3] -> 00 03 */ setTimeout(function(){console.info("delayed: ", b8verts);}, 3000); } worker.addEventListener('message', function(event) { // event.data is {callbackId: -1, finalResponse: true, data: 0} // console.log("Message received from worker:", event.data, event); // event switch (event.data.callbackId) { case api_info.test.callbackId: //api_revlookup.: // console.log("Result of TEST caught from web worker", event.data); // Reinterpret data var uint8Arr = event.data.data; //var returned_message = new Float32Array(uint8Arr); //new string(uint8Arr); var returned_message = String.fromCharCode.apply(null, uint8Arr) console.log(returned_message); break; default: console.error("Unrecognised message sent back."); } }, false); /* worker.onmessage = function(event) { console.log("Message received from worker:", event); console.log(event.data); } */ request(); console.log("request() sent."); </script>