-
-
Save WolfgangDrescher/2a45e1919ac322a7aa3f08d91cd00a85 to your computer and use it in GitHub Desktop.
Verovio worker
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<title>Verovio test worker</title> | |
<body> | |
<button onclick="testWorker1()">Test Worker 1</button> | |
<button onclick="testWorker2()">Test Worker 2</button> | |
<script> | |
ticket = 0; | |
var worker = new Worker('./verovio-worker.js'); | |
worker.onmessage = function(event) { | |
console.log(event.data); | |
}; | |
function testWorker1() { | |
this.worker.postMessage( ["getPageCount", ticket++, {}] ); | |
} | |
function testWorker2() { | |
this.worker.postMessage( ["getVersion", ticket++, {}] ); | |
} | |
</script> | |
</body> | |
</html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Create the instance of the Verovio toolkit and provides worker methods | |
* It uses the Webassembly (WASM) version | |
*/ | |
const verovioServer = 'https://www.verovio.org/javascript/develop'; | |
///////////////////////////// | |
// WASM | |
self.Module = { | |
locateFile: function (s) { | |
console.log(s); | |
return `${verovioServer}/${s}`; | |
}, | |
onRuntimeInitialized: function() { | |
onLoad(); | |
} | |
}; | |
self.importScripts(`${verovioServer}/verovio-toolkit-wasm.js`); | |
// gets executed when everything is ready. | |
self.onLoad = function( | |
) { | |
self.vrvToolkit = new verovio.toolkit(); | |
console.log(`Verovio (WASM) ${self.vrvToolkit.getVersion()}`); // works! | |
sendBack("loaded", false, {}); | |
} | |
self.vrvToolkit = null; | |
///////////////////////////// | |
// Common code | |
function sendBack(message, ticket, params) | |
{ | |
postMessage([message, ticket, params]); | |
} | |
self.addEventListener("message", function (event) { | |
let messageType = event.data[0]; | |
let ticket = event.data[1]; | |
let params = event.data[2]; | |
if (!vrvToolkit) | |
{ | |
sendBack("error", ticket, {"error": "The verovio-toolkit has not finished loading yet!"}); | |
return; | |
} | |
switch (messageType) | |
{ | |
case "getElementAttr": | |
sendBack(messageType + "-ok", ticket, {"elementAttr": vrvToolkit.getElementAttr(params.id)}); | |
break; | |
case "getMEI": | |
sendBack(messageType + "-ok", ticket, {"mei": vrvToolkit.getMEI(-1, true)}); | |
break; | |
case "getOptions": | |
sendBack(messageType + "-ok", ticket, {"options": vrvToolkit.getOptions(params.default)}); | |
break; | |
case "getPageCount": | |
sendBack(messageType + "-ok", ticket, {"pageCount": vrvToolkit.getPageCount()}); | |
break; | |
case "getPageWithElement": | |
sendBack(messageType + "-ok", ticket, {"pageWithElement": vrvToolkit.getPageWithElement(params.id), id: params.id}); | |
break; | |
case "getVersion": | |
sendBack(messageType + "-ok", ticket, {"getVersion": vrvToolkit.getVersion()}); | |
break; | |
case "loadData": | |
vrvToolkit.loadData(params.mei); | |
sendBack(messageType + "-ok", ticket, {"pageCount": vrvToolkit.getPageCount()}); | |
break; | |
case "redoLayout": | |
vrvToolkit.redoLayout(); | |
sendBack(messageType + "-ok", ticket, {"pageCount": vrvToolkit.getPageCount()}); | |
break; | |
case "renderToSVG": | |
svg = vrvToolkit.renderToSVG(params.pageIndex); | |
sendBack(messageType + "-ok", ticket, { | |
"pageIndex": params.pageIndex, | |
"svg": svg | |
}); | |
break; | |
case "setOptions": | |
vrvToolkit.setOptions(params.options); | |
break; | |
default: | |
sendBack("error", ticket, {"error": "Did not recognize input" + event.data}); | |
break; | |
} | |
}, false); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment