Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
3d097a032This file is pinned to the selected release. Download the original to open it in your design tool.
<!DOCTYPE html>
<html lang=en-us>
<head>
<meta charset=utf-8><meta content="text/html; charset=utf-8" http-equiv=Content-Type>
<link rel="shortcut icon" href="lamp.ico" type="image/x-icon" />
<title>OCCT Draw Harness</title>
</head>
<body>
<h2>OCCT Draw Harness</h2>
<div>
<canvas id=occViewerCanvas oncontextmenu=event.preventDefault() tabindex=-1 style="border:0 none;background-color:#000" width="409" height="409"></canvas>
</div>
<h4>For output - open JavaScript console in your Browser.</h4>
<p id="output"></p>
<script type="text/javascript" src="DRAWEXE.js" charset="utf-8"></script>
<script>
/**
* Class defining an interface to DRAWEXE and WebAssembly Module.
*/
class DrawTerm
{
/**
* Class constructor.
*/
constructor()
{
// define WebGL canvas for WebAssembly viewer
this.canvas = document.getElementById ('occViewerCanvas'); // canvas element for OpenGL context
this.canvas.tabIndex = -1;
this.canvas.onclick = (theEvent) =>
{
this.canvas.focus()
};
}
/**
* C++ std::cout callback redirecting to console.
*/
print (theText)
{
//var anElement = document.getElementById('output');
//anElement.innerHTML += theText + "<br>";
console.warn (theText);
}
/**
* C++ std::cerr callback redirecting to console.
*/
printErr (theText)
{
//var anElement = document.getElementById('output');
//anElement.innerHTML += theText + "<br>";
console.warn (theText);
}
/**
* C++ Message::Send() callback redirecting to Terminal.
*/
printMessage (theText, theGravity)
{
switch (theGravity)
{
case 0: // trace
console.debug (theText);
return;
case 1: // info
console.info (theText);
return;
case 2: // warning
console.warn (theText);
return;
case 3: // alarm
case 4: // fail
console.error (theText);
return;
}
console.info (theText);
}
onRuntimeInitialized()
{
//
}
};
// Define a global DRAWEXE instance (will be initialized asynchronously).
var DRAWEXE = new DrawTerm();
//! Check browser support.
function isWasmSupported()
{
try {
if (typeof WebAssembly === "object"
&& typeof WebAssembly.instantiate === "function") {
const aDummyModule = new WebAssembly.Module (Uint8Array.of (0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));
if (aDummyModule instanceof WebAssembly.Module)
{
return new WebAssembly.Instance(aDummyModule) instanceof WebAssembly.Instance;
}
}
} catch (e) {}
return false;
}
if (!isWasmSupported())
{
var anElement = document.getElementById('output');
anElement.innerHTML += "Browser is too old - WebAssembly support is missing!<br>Please check updates or install a modern browser.<br>";
}
else
{
// load DRAWEXE.wasm (asynchronously) and wait initialization completion
createDRAWEXE(DRAWEXE).then (function(Module) {
//DRAWEXE.printMessage ("Hint: use \"pload ALL\" command to load standard commands\r\n", 1);
//DRAWEXE.eval ("dversion");
}).catch ((theError) => {
DRAWEXE.printMessage ("WebAssebly initialization has failed:\r\n" + theError, 4);
});
}
</script>
</body>
</html>