]> OCCT Git - occt-copy.git/commitdiff
DRAWEXE.html CR32303_0
authorkgv <kgv@opencascade.com>
Sun, 21 Mar 2021 21:46:34 +0000 (00:46 +0300)
committerkgv <kgv@opencascade.com>
Sun, 21 Mar 2021 21:46:34 +0000 (00:46 +0300)
src/DRAWBUNDLE/CMakeLists.txt
src/DRAWBUNDLE/DRAWEXE.html [new file with mode: 0644]
src/OpenGl/OpenGl_Caps.cxx

index 05f1b1d144a6688d0428d057ef0cd0798e687798..a6d06f439f1eb2d506ce860dbf9cf80b75cdd3e5 100644 (file)
@@ -10,8 +10,8 @@ if (EMSCRIPTEN)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --bind")
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s TOTAL_MEMORY=512MB")
 
-  #set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s MODULARIZE=1")
-  #set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXPORT_NAME='createDRAWEXE'")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s MODULARIZE=1")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXPORT_NAME='createDRAWEXE'")
   #set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXTRA_EXPORTED_RUNTIME_METHODS=['ccall','cwrap']")
 endif()
 
diff --git a/src/DRAWBUNDLE/DRAWEXE.html b/src/DRAWBUNDLE/DRAWEXE.html
new file mode 100644 (file)
index 0000000..208e82d
--- /dev/null
@@ -0,0 +1,97 @@
+<!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
index b339c15d15401936fe3889c27d196c62b0c5f477..5adefbb57c4a41b595a340d38f37a0cfad69b1ec 100755 (executable)
@@ -62,7 +62,10 @@ OpenGl_Caps::OpenGl_Caps()
   suppressExtraMsg  (Standard_True),
   glslDumpLevel     (OpenGl_ShaderProgramDumpLevel_Off)
 {
-  //
+#if defined(__EMSCRIPTEN__)
+  buffersNoSwap = true; // swap has no effect in WebGL
+  buffersOpaqueAlpha = true; // avoid unexpected blending of canvas with page background
+#endif
 }
 
 // =======================================================================