--- /dev/null
+<!DOCTYPE html>\r
+<html lang=en-us>\r
+<head>\r
+<meta charset=utf-8><meta content="text/html; charset=utf-8" http-equiv=Content-Type>\r
+<link rel="shortcut icon" href="lamp.ico" type="image/x-icon" />\r
+<title>OCCT Draw Harness</title>\r
+</head>\r
+<body>\r
+\r
+<h2>OCCT Draw Harness</h2>\r
+<div>\r
+ <canvas id=occViewerCanvas oncontextmenu=event.preventDefault() tabindex=-1 style="border:0 none;background-color:#000" width="409" height="409"></canvas>\r
+</div>\r
+<div>\r
+ <label for="fileInput">Choose BREP file to upload: </label><input type="file" id="fileInput" accept=".brep">\r
+ <input type="button" value="Clear All" onclick="DRAWEXE.removeAllObjects()">\r
+ <input type="button" value="Fit All" onclick="DRAWEXE.eval('dversion')">\r
+</div>\r
+<h4>Console output:</h4>\r
+<p id="output"></p>\r
+<script type="text/javascript" src="DRAWBUNDLE.js" charset="utf-8"></script>\r
+<script>\r
+//! Check browser support.\r
+function isWasmSupported()\r
+{\r
+ try {\r
+ if (typeof WebAssembly === "object"\r
+ && typeof WebAssembly.instantiate === "function") {\r
+ const aDummyModule = new WebAssembly.Module (Uint8Array.of (0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\r
+ if (aDummyModule instanceof WebAssembly.Module)\r
+ {\r
+ return new WebAssembly.Instance(aDummyModule) instanceof WebAssembly.Instance;\r
+ }\r
+ }\r
+ } catch (e) {}\r
+ return false;\r
+}\r
+if (!isWasmSupported())\r
+{\r
+ var anElement = document.getElementById('output');\r
+ anElement.innerHTML += "Browser is too old - WebAssembly support is missing!<br>Please check updates or install a modern browser.<br>";\r
+}\r
+\r
+//! Handle file uploading.\r
+fileInput.onchange = function()\r
+{\r
+ if (fileInput.files.length == 0) { return; }\r
+ // Warning! Entire file is pre-loaded into memory.\r
+ var aFile = fileInput.files[0];\r
+ var aReader = new FileReader();\r
+ aReader.onload = function()\r
+ {\r
+ var aDataArray = new Uint8Array (aReader.result);\r
+ const aDataBuffer = DRAWEXE._malloc (aDataArray.length);\r
+ DRAWEXE.HEAPU8.set (aDataArray, aDataBuffer);\r
+ DRAWEXE.openFromMemory (aFile.name, aDataBuffer, aDataArray.length, true);\r
+ //DRAWEXE._free (aDataBuffer); will be freed by called method\r
+ DRAWEXE.displayGround (true);\r
+ };\r
+ aReader.readAsArrayBuffer(aFile);\r
+};\r
+\r
+var DRAWEXE =\r
+{\r
+ print: (function() {\r
+ var anElement = document.getElementById('output');\r
+ //return function(theText) { anElement.innerHTML += theText + "<br>"; };\r
+ return function(theText) { console.warn(theText); };\r
+ })(),\r
+ printErr: function(theText) {\r
+ //var anElement = document.getElementById('output');\r
+ //anElement.innerHTML += theText + "<br>";\r
+ console.warn(theText);\r
+ },\r
+ canvas: (function() {\r
+console.warn(" @@ canvas getter 1"); ///\r
+ var aCanvas = document.getElementById('occViewerCanvas');\r
+ var aGlCtx = aCanvas.getContext ('webgl2', { alpha: false, depth: true, antialias: false, preserveDrawingBuffer: true } );\r
+ if (aGlCtx == null) { aGlCtx = aCanvas.getContext ('webgl', { alpha: false, depth: true, antialias: false, preserveDrawingBuffer: true } ); }\r
+console.warn(" @@ canvas getter 2"); ///\r
+ return aCanvas;\r
+ })(),\r
+\r
+ onRuntimeInitialized: function() {\r
+ //console.log(" @@ onRuntimeInitialized()" + Object.getOwnPropertyNames(DRAWEXE));\r
+ //DRAWEXE.eval("dversion");\r
+ }\r
+};\r
+\r
+const DRAWEXEInitialized = createDRAWEXE(DRAWEXE);\r
+DRAWEXEInitialized.then(function(Module) {\r
+ //DRAWEXE.eval("dversion");\r
+});\r
+\r
+</script>\r
+</body>\r
+</html>\r