@kitware/vtk.js 21.2.0 → 21.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Filters/General/ImageCropFilter.js +3 -4
- package/IO/Geometry/STLReader.js +2 -2
- package/Rendering/Core/Actor2D.js +1 -3
- package/Rendering/Core/Mapper2D.d.ts +402 -0
- package/Rendering/Core/Mapper2D.js +213 -0
- package/Rendering/Core/Property2D/Constants.js +9 -0
- package/Rendering/Core/Property2D.js +30 -2
- package/Rendering/Core.js +2 -0
- package/Rendering/OpenGL/Actor2D.js +74 -30
- package/Rendering/OpenGL/ForwardPass.js +11 -0
- package/Rendering/OpenGL/PolyDataMapper.js +3 -2
- package/Rendering/OpenGL/PolyDataMapper2D.js +667 -0
- package/Rendering/OpenGL/Profiles/All.js +1 -0
- package/Rendering/OpenGL/Profiles/Geometry.js +1 -0
- package/Rendering/OpenGL/glsl/vtkPolyData2DFS.glsl.js +3 -0
- package/Rendering/OpenGL/glsl/vtkPolyData2DVS.glsl.js +3 -0
- package/Rendering/OpenGL.js +2 -0
- package/Rendering/Profiles/All.js +1 -0
- package/Rendering/Profiles/Geometry.js +1 -0
- package/_virtual/rollup-plugin-web-worker-loader__helper__browser__createInlineWorkerFactory.js +17 -0
- package/_virtual/rollup-plugin-web-worker-loader__helper__funcToSource.js +18 -0
- package/_virtual/rollup-plugin-worker-loader__module_Sources/Filters/General/PaintFilter/PaintFilter.worker.js +698 -2
- package/_virtual/rollup-plugin-worker-loader__module_Sources/Interaction/Widgets/PiecewiseGaussianWidget/ComputeHistogram.worker.js +274 -2
- package/macros.js +6 -2
- package/package.json +1 -1
- package/_virtual/rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js +0 -31
|
@@ -1,6 +1,702 @@
|
|
|
1
|
-
import { c as
|
|
1
|
+
import { c as createInlineWorkerFactory } from '../../../../rollup-plugin-web-worker-loader__helper__browser__createInlineWorkerFactory.js';
|
|
2
2
|
|
|
3
|
-
var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKF90b0NvbnN1bWFibGVBcnJheSwgX3NsaWNlZFRvQXJyYXksIHJlZ2lzdGVyV2Vid29ya2VyLCBnbE1hdHJpeCkgewogICd1c2Ugc3RyaWN0JzsKCiAgZnVuY3Rpb24gX2ludGVyb3BEZWZhdWx0TGVnYWN5IChlKSB7IHJldHVybiBlICYmIHR5cGVvZiBlID09PSAnb2JqZWN0JyAmJiAnZGVmYXVsdCcgaW4gZSA/IGUgOiB7ICdkZWZhdWx0JzogZSB9OyB9CgogIHZhciBfdG9Db25zdW1hYmxlQXJyYXlfX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX2ludGVyb3BEZWZhdWx0TGVnYWN5KF90b0NvbnN1bWFibGVBcnJheSk7CiAgdmFyIF9zbGljZWRUb0FycmF5X19kZWZhdWx0ID0gLyojX19QVVJFX18qL19pbnRlcm9wRGVmYXVsdExlZ2FjeShfc2xpY2VkVG9BcnJheSk7CiAgdmFyIHJlZ2lzdGVyV2Vid29ya2VyX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19pbnRlcm9wRGVmYXVsdExlZ2FjeShyZWdpc3RlcldlYndvcmtlcik7CgogIHZhciBTbGljaW5nTW9kZSA9IHsKICAgIE5PTkU6IC0xLAogICAgSTogMCwKICAgIEo6IDEsCiAgICBLOiAyLAogICAgWDogMywKICAgIFk6IDQsCiAgICBaOiA1CiAgfTsKCiAgdmFyIGdsb2JhbHMgPSB7CiAgICAvLyBzaW5nbGUtY29tcG9uZW50IGxhYmVsbWFwCiAgICBidWZmZXI6IG51bGwsCiAgICBkaW1lbnNpb25zOiBbMCwgMCwgMF0sCiAgICBwcmV2UG9pbnQ6IG51bGwsCiAgICBzbGljaW5nTW9kZTogbnVsbCAvLyAyRCBvciAzRCBwYWludGluZwoKICB9OyAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICBmdW5jdGlvbiBoYW5kbGVQYWludFJlY3RhbmdsZShfcmVmKSB7CiAgICB2YXIgcG9pbnQxID0gX3JlZi5wb2ludDEsCiAgICAgICAgcG9pbnQyID0gX3JlZi5wb2ludDI7CgogICAgdmFyIF9wb2ludCA9IF9zbGljZWRUb0FycmF5X19kZWZhdWx0WydkZWZhdWx0J10ocG9pbnQxLCAzKSwKICAgICAgICB4MSA9IF9wb2ludFswXSwKICAgICAgICB5MSA9IF9wb2ludFsxXSwKICAgICAgICB6MSA9IF9wb2ludFsyXTsKCiAgICB2YXIgX3BvaW50MiA9IF9zbGljZWRUb0FycmF5X19kZWZhdWx0WydkZWZhdWx0J10ocG9pbnQyLCAzKSwKICAgICAgICB4MiA9IF9wb2ludDJbMF0sCiAgICAgICAgeTIgPSBfcG9pbnQyWzFdLAogICAgICAgIHoyID0gX3BvaW50MlsyXTsKCiAgICB2YXIgeHN0YXJ0ID0gTWF0aC5tYXgoTWF0aC5taW4oeDEsIHgyKSwgMCk7CiAgICB2YXIgeGVuZCA9IE1hdGgubWluKE1hdGgubWF4KHgxLCB4MiksIGdsb2JhbHMuZGltZW5zaW9uc1swXSAtIDEpOwoKICAgIGlmICh4c3RhcnQgPD0geGVuZCkgewogICAgICB2YXIgeXN0YXJ0ID0gTWF0aC5tYXgoTWF0aC5taW4oeTEsIHkyKSwgMCk7CiAgICAgIHZhciB5ZW5kID0gTWF0aC5taW4oTWF0aC5tYXgoeTEsIHkyKSwgZ2xvYmFscy5kaW1lbnNpb25zWzFdIC0gMSk7CiAgICAgIHZhciB6c3RhcnQgPSBNYXRoLm1heChNYXRoLm1pbih6MSwgejIpLCAwKTsKICAgICAgdmFyIHplbmQgPSBNYXRoLm1pbihNYXRoLm1heCh6MSwgejIpLCBnbG9iYWxzLmRpbWVuc2lvbnNbMl0gLSAxKTsKICAgICAgdmFyIGpTdHJpZGUgPSBnbG9iYWxzLmRpbWVuc2lvbnNbMF07CiAgICAgIHZhciBrU3RyaWRlID0gZ2xvYmFscy5kaW1lbnNpb25zWzBdICogZ2xvYmFscy5kaW1lbnNpb25zWzFdOwoKICAgICAgZm9yICh2YXIgayA9IHpzdGFydDsgayA8PSB6ZW5kOyBrKyspIHsKICAgICAgICBmb3IgKHZhciBqID0geXN0YXJ0OyBqIDw9IHllbmQ7IGorKykgewogICAgICAgICAgdmFyIGluZGV4ID0gaiAqIGpTdHJpZGUgKyBrICoga1N0cmlkZTsKICAgICAgICAgIGdsb2JhbHMuYnVmZmVyLmZpbGwoMSwgaW5kZXggKyB4c3RhcnQsIGluZGV4ICsgeGVuZCArIDEpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0gLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBjZW50ZXIgYW5kIHNjYWxlMyBhcmUgaW4gSUpLIGNvb3JkaW5hdGVzCgoKICBmdW5jdGlvbiBoYW5kbGVQYWludEVsbGlwc2UoX3JlZjIpIHsKICAgIHZhciBjZW50ZXIgPSBfcmVmMi5jZW50ZXIsCiAgICAgICAgc2NhbGUzID0gX3JlZjIuc2NhbGUzOwoKICAgIHZhciByYWRpdXMzID0gX3RvQ29uc3VtYWJsZUFycmF5X19kZWZhdWx0WydkZWZhdWx0J10oc2NhbGUzKTsKCiAgICB2YXIgaW5kZXhDZW50ZXIgPSBjZW50ZXIubWFwKGZ1bmN0aW9uICh2YWwpIHsKICAgICAgcmV0dXJuIE1hdGgucm91bmQodmFsKTsKICAgIH0pOwogICAgdmFyIHNsaWNlQXhpcyA9IC0xOwoKICAgIGlmIChnbG9iYWxzLnNsaWNpbmdNb2RlICE9IG51bGwgJiYgZ2xvYmFscy5zbGljaW5nTW9kZSAhPT0gU2xpY2luZ01vZGUuTk9ORSkgewogICAgICBzbGljZUF4aXMgPSBnbG9iYWxzLnNsaWNpbmdNb2RlICUgMzsKICAgIH0KCiAgICB2YXIgeVN0cmlkZSA9IGdsb2JhbHMuZGltZW5zaW9uc1swXTsKICAgIHZhciB6U3RyaWRlID0gZ2xvYmFscy5kaW1lbnNpb25zWzBdICogZ2xvYmFscy5kaW1lbnNpb25zWzFdOwoKICAgIHZhciBfaW5kZXhDZW50ZXIgPSBfc2xpY2VkVG9BcnJheV9fZGVmYXVsdFsnZGVmYXVsdCddKGluZGV4Q2VudGVyLCAzKSwKICAgICAgICB4bWluID0gX2luZGV4Q2VudGVyWzBdLAogICAgICAgIHltaW4gPSBfaW5kZXhDZW50ZXJbMV0sCiAgICAgICAgem1pbiA9IF9pbmRleENlbnRlclsyXTsKCiAgICB2YXIgX2luZGV4Q2VudGVyMiA9IF9zbGljZWRUb0FycmF5X19kZWZhdWx0WydkZWZhdWx0J10oaW5kZXhDZW50ZXIsIDMpLAogICAgICAgIHhtYXggPSBfaW5kZXhDZW50ZXIyWzBdLAogICAgICAgIHltYXggPSBfaW5kZXhDZW50ZXIyWzFdLAogICAgICAgIHptYXggPSBfaW5kZXhDZW50ZXIyWzJdOwoKICAgIGlmIChzbGljZUF4aXMgIT09IDIpIHsKICAgICAgem1pbiA9IE1hdGgucm91bmQoTWF0aC5tYXgoaW5kZXhDZW50ZXJbMl0gLSByYWRpdXMzWzJdLCAwKSk7CiAgICAgIHptYXggPSBNYXRoLnJvdW5kKE1hdGgubWluKGluZGV4Q2VudGVyWzJdICsgcmFkaXVzM1syXSwgZ2xvYmFscy5kaW1lbnNpb25zWzJdIC0gMSkpOwogICAgfQoKICAgIGZvciAodmFyIHogPSB6bWluOyB6IDw9IHptYXg7IHorKykgewogICAgICB2YXIgZHogPSAwOwoKICAgICAgaWYgKHNsaWNlQXhpcyAhPT0gMikgewogICAgICAgIGR6ID0gKGluZGV4Q2VudGVyWzJdIC0geikgLyByYWRpdXMzWzJdOwogICAgICB9CgogICAgICB2YXIgZHpTcXVhcmVkID0gZHogKiBkejsKCiAgICAgIGlmIChkelNxdWFyZWQgPD0gMSkgewogICAgICAgIHZhciBheSA9IHJhZGl1czNbMV0gKiBNYXRoLnNxcnQoMSAtIGR6U3F1YXJlZCk7CgogICAgICAgIGlmIChzbGljZUF4aXMgIT09IDEpIHsKICAgICAgICAgIHltaW4gPSBNYXRoLnJvdW5kKE1hdGgubWF4KGluZGV4Q2VudGVyWzFdIC0gYXksIDApKTsKICAgICAgICAgIHltYXggPSBNYXRoLnJvdW5kKE1hdGgubWluKGluZGV4Q2VudGVyWzFdICsgYXksIGdsb2JhbHMuZGltZW5zaW9uc1sxXSAtIDEpKTsKICAgICAgICB9CgogICAgICAgIGZvciAodmFyIHkgPSB5bWluOyB5IDw9IHltYXg7IHkrKykgewogICAgICAgICAgdmFyIGR5ID0gMDsKCiAgICAgICAgICBpZiAoc2xpY2VBeGlzICE9PSAxKSB7CiAgICAgICAgICAgIGR5ID0gKGluZGV4Q2VudGVyWzFdIC0geSkgLyByYWRpdXMzWzFdOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBkeVNxdWFyZWQgPSBkeSAqIGR5OwoKICAgICAgICAgIGlmIChkeVNxdWFyZWQgKyBkelNxdWFyZWQgPD0gMSkgewogICAgICAgICAgICBpZiAoc2xpY2VBeGlzICE9PSAwKSB7CiAgICAgICAgICAgICAgdmFyIGF4ID0gcmFkaXVzM1swXSAqIE1hdGguc3FydCgxIC0gZHlTcXVhcmVkIC0gZHpTcXVhcmVkKTsKICAgICAgICAgICAgICB4bWluID0gTWF0aC5yb3VuZChNYXRoLm1heChpbmRleENlbnRlclswXSAtIGF4LCAwKSk7CiAgICAgICAgICAgICAgeG1heCA9IE1hdGgucm91bmQoTWF0aC5taW4oaW5kZXhDZW50ZXJbMF0gKyBheCwgZ2xvYmFscy5kaW1lbnNpb25zWzBdIC0gMSkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoeG1pbiA8PSB4bWF4KSB7CiAgICAgICAgICAgICAgdmFyIGluZGV4ID0geSAqIHlTdHJpZGUgKyB6ICogelN0cmlkZTsKICAgICAgICAgICAgICBnbG9iYWxzLmJ1ZmZlci5maWxsKDEsIGluZGV4ICsgeG1pbiwgaW5kZXggKyB4bWF4ICsgMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKICBmdW5jdGlvbiBoYW5kbGVQYWludChfcmVmMykgewogICAgdmFyIHBvaW50ID0gX3JlZjMucG9pbnQsCiAgICAgICAgcmFkaXVzID0gX3JlZjMucmFkaXVzOwoKICAgIGlmICghZ2xvYmFscy5wcmV2UG9pbnQpIHsKICAgICAgZ2xvYmFscy5wcmV2UG9pbnQgPSBwb2ludDsKICAgIH0gLy8gRERBIHBhcmFtcwoKCiAgICB2YXIgZGVsdGEgPSBbcG9pbnRbMF0gLSBnbG9iYWxzLnByZXZQb2ludFswXSwgcG9pbnRbMV0gLSBnbG9iYWxzLnByZXZQb2ludFsxXSwgcG9pbnRbMl0gLSBnbG9iYWxzLnByZXZQb2ludFsyXV07CiAgICB2YXIgaW5jID0gWzEsIDEsIDFdOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgaSsrKSB7CiAgICAgIGlmIChkZWx0YVtpXSA8IDApIHsKICAgICAgICBkZWx0YVtpXSA9IC1kZWx0YVtpXTsKICAgICAgICBpbmNbaV0gPSAtMTsKICAgICAgfQogICAgfQoKICAgIHZhciBzdGVwID0gTWF0aC5tYXguYXBwbHkoTWF0aCwgZGVsdGEpOyAvLyBEREEKCiAgICB2YXIgdGhyZXNoID0gW3N0ZXAsIHN0ZXAsIHN0ZXBdOwoKICAgIHZhciBwdCA9IF90b0NvbnN1bWFibGVBcnJheV9fZGVmYXVsdFsnZGVmYXVsdCddKGdsb2JhbHMucHJldlBvaW50KTsKCiAgICBmb3IgKHZhciBzID0gMDsgcyA8PSBzdGVwOyBzKyspIHsKICAgICAgaGFuZGxlUGFpbnRFbGxpcHNlKHsKICAgICAgICBjZW50ZXI6IHB0LAogICAgICAgIHNjYWxlMzogcmFkaXVzCiAgICAgIH0pOwoKICAgICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IDM7IGlpKyspIHsKICAgICAgICB0aHJlc2hbaWldIC09IGRlbHRhW2lpXTsKCiAgICAgICAgaWYgKHRocmVzaFtpaV0gPD0gMCkgewogICAgICAgICAgdGhyZXNoW2lpXSArPSBzdGVwOwogICAgICAgICAgcHRbaWldICs9IGluY1tpaV07CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgZ2xvYmFscy5wcmV2UG9pbnQgPSBwb2ludDsKICB9IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKICBmdW5jdGlvbiBoYW5kbGVQYWludFRyaWFuZ2xlcyhfcmVmNCkgewogICAgdmFyIHRyaWFuZ2xlTGlzdCA9IF9yZWY0LnRyaWFuZ2xlTGlzdDsKICAgIC8vIGRlYnVnZ2VyOwogICAgdmFyIHRyaWFuZ2xlQ291bnQgPSBNYXRoLmZsb29yKHRyaWFuZ2xlTGlzdC5sZW5ndGggLyA5KTsKCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyaWFuZ2xlQ291bnQ7IGkrKykgewogICAgICB2YXIgcG9pbnQwID0gdHJpYW5nbGVMaXN0LnN1YmFycmF5KDkgKiBpICsgMCwgOSAqIGkgKyAzKTsKICAgICAgdmFyIHBvaW50MSA9IHRyaWFuZ2xlTGlzdC5zdWJhcnJheSg5ICogaSArIDMsIDkgKiBpICsgNik7CiAgICAgIHZhciBwb2ludDIgPSB0cmlhbmdsZUxpc3Quc3ViYXJyYXkoOSAqIGkgKyA2LCA5ICogaSArIDkpOwogICAgICB2YXIgdjEgPSBbMCwgMCwgMF07CiAgICAgIHZhciB2MiA9IFswLCAwLCAwXTsKICAgICAgZ2xNYXRyaXgudmVjMy5zdWJ0cmFjdCh2MSwgcG9pbnQxLCBwb2ludDApOwogICAgICBnbE1hdHJpeC52ZWMzLnN1YnRyYWN0KHYyLCBwb2ludDIsIHBvaW50MCk7CiAgICAgIHZhciBzdGVwMSA9IFswLCAwLCAwXTsKICAgICAgdmFyIG51bVN0ZXAxID0gMiAqIE1hdGgubWF4KE1hdGguYWJzKHYxWzBdKSwgTWF0aC5hYnModjFbMV0pLCBNYXRoLmFicyh2MVsyXSkpOwogICAgICBnbE1hdHJpeC52ZWMzLnNjYWxlKHN0ZXAxLCB2MSwgMSAvIG51bVN0ZXAxKTsKICAgICAgdmFyIHN0ZXAyID0gWzAsIDAsIDBdOwogICAgICB2YXIgbnVtU3RlcDIgPSAyICogTWF0aC5tYXgoTWF0aC5hYnModjJbMF0pLCBNYXRoLmFicyh2MlsxXSksIE1hdGguYWJzKHYyWzJdKSk7CiAgICAgIGdsTWF0cml4LnZlYzMuc2NhbGUoc3RlcDIsIHYyLCAxIC8gbnVtU3RlcDIpOwogICAgICB2YXIgalN0cmlkZSA9IGdsb2JhbHMuZGltZW5zaW9uc1swXTsKICAgICAgdmFyIGtTdHJpZGUgPSBnbG9iYWxzLmRpbWVuc2lvbnNbMF0gKiBnbG9iYWxzLmRpbWVuc2lvbnNbMV07CgogICAgICBmb3IgKHZhciB1ID0gMDsgdSA8PSBudW1TdGVwMSArIDE7IHUrKykgewogICAgICAgIHZhciBtYXhWID0gbnVtU3RlcDIgLSB1ICogKG51bVN0ZXAyIC8gbnVtU3RlcDEpOwoKICAgICAgICBmb3IgKHZhciB2ID0gMDsgdiA8PSBtYXhWICsgMTsgdisrKSB7CiAgICAgICAgICB2YXIgcG9pbnQgPSBfdG9Db25zdW1hYmxlQXJyYXlfX2RlZmF1bHRbJ2RlZmF1bHQnXShwb2ludDApOwoKICAgICAgICAgIGdsTWF0cml4LnZlYzMuc2NhbGVBbmRBZGQocG9pbnQsIHBvaW50LCBzdGVwMSwgdSk7CiAgICAgICAgICBnbE1hdHJpeC52ZWMzLnNjYWxlQW5kQWRkKHBvaW50LCBwb2ludCwgc3RlcDIsIHYpOwogICAgICAgICAgcG9pbnRbMF0gPSBNYXRoLnJvdW5kKHBvaW50WzBdKTsKICAgICAgICAgIHBvaW50WzFdID0gTWF0aC5yb3VuZChwb2ludFsxXSk7CiAgICAgICAgICBwb2ludFsyXSA9IE1hdGgucm91bmQocG9pbnRbMl0pOwoKICAgICAgICAgIGlmIChwb2ludFswXSA+PSAwICYmIHBvaW50WzBdIDwgZ2xvYmFscy5kaW1lbnNpb25zWzBdICYmIHBvaW50WzFdID49IDAgJiYgcG9pbnRbMV0gPCBnbG9iYWxzLmRpbWVuc2lvbnNbMV0gJiYgcG9pbnRbMl0gPj0gMCAmJiBwb2ludFsyXSA8IGdsb2JhbHMuZGltZW5zaW9uc1syXSkgewogICAgICAgICAgICBnbG9iYWxzLmJ1ZmZlcltwb2ludFswXSArIGpTdHJpZGUgKiBwb2ludFsxXSArIGtTdHJpZGUgKiBwb2ludFsyXV0gPSAxOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0gLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgogIHJlZ2lzdGVyV2Vid29ya2VyX19kZWZhdWx0WydkZWZhdWx0J10oKS5vcGVyYXRpb24oJ3N0YXJ0JywgZnVuY3Rpb24gKF9yZWY1KSB7CiAgICB2YXIgYnVmZmVyVHlwZSA9IF9yZWY1LmJ1ZmZlclR5cGUsCiAgICAgICAgZGltZW5zaW9ucyA9IF9yZWY1LmRpbWVuc2lvbnMsCiAgICAgICAgc2xpY2luZ01vZGUgPSBfcmVmNS5zbGljaW5nTW9kZTsKCiAgICBpZiAoIWdsb2JhbHMuYnVmZmVyKSB7CiAgICAgIHZhciBidWZmZXJTaXplID0gZGltZW5zaW9uc1swXSAqIGRpbWVuc2lvbnNbMV0gKiBkaW1lbnNpb25zWzJdOwogICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgKi8KCiAgICAgIGdsb2JhbHMuYnVmZmVyID0gbmV3IHNlbGZbYnVmZmVyVHlwZV0oYnVmZmVyU2l6ZSk7CiAgICAgIGdsb2JhbHMuZGltZW5zaW9ucyA9IGRpbWVuc2lvbnM7CiAgICAgIGdsb2JhbHMucHJldlBvaW50ID0gbnVsbDsKICAgICAgZ2xvYmFscy5zbGljaW5nTW9kZSA9IHNsaWNpbmdNb2RlOwogICAgfQogIH0pLm9wZXJhdGlvbigncGFpbnQnLCBoYW5kbGVQYWludCkub3BlcmF0aW9uKCdwYWludFJlY3RhbmdsZScsIGhhbmRsZVBhaW50UmVjdGFuZ2xlKS5vcGVyYXRpb24oJ3BhaW50RWxsaXBzZScsIGhhbmRsZVBhaW50RWxsaXBzZSkub3BlcmF0aW9uKCdwYWludFRyaWFuZ2xlcycsIGhhbmRsZVBhaW50VHJpYW5nbGVzKS5vcGVyYXRpb24oJ2VuZCcsIGZ1bmN0aW9uICgpIHsKICAgIHZhciByZXNwb25zZSA9IG5ldyByZWdpc3RlcldlYndvcmtlcl9fZGVmYXVsdFsnZGVmYXVsdCddLlRyYW5zZmVyYWJsZVJlc3BvbnNlKGdsb2JhbHMuYnVmZmVyLmJ1ZmZlciwgW2dsb2JhbHMuYnVmZmVyLmJ1ZmZlcl0pOwogICAgZ2xvYmFscy5idWZmZXIgPSBudWxsOwogICAgcmV0dXJuIHJlc3BvbnNlOwogIH0pOwoKfShfdG9Db25zdW1hYmxlQXJyYXksIF9zbGljZWRUb0FycmF5LCByZWdpc3RlcldlYndvcmtlciwgZ2xNYXRyaXgpKTsKCg==', null, false);
|
|
3
|
+
var WorkerFactory = createInlineWorkerFactory(/* rollup-plugin-web-worker-loader */function () {
|
|
4
|
+
(function () {
|
|
5
|
+
'__worker_loader_strict__';
|
|
6
|
+
|
|
7
|
+
function _arrayLikeToArray(arr, len) {
|
|
8
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
9
|
+
|
|
10
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) {
|
|
11
|
+
arr2[i] = arr[i];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return arr2;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function _arrayWithoutHoles(arr) {
|
|
18
|
+
if (Array.isArray(arr)) return _arrayLikeToArray(arr);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function _iterableToArray(iter) {
|
|
22
|
+
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
26
|
+
if (!o) return;
|
|
27
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
28
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
29
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
30
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
31
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function _nonIterableSpread() {
|
|
35
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function _toConsumableArray$1(arr) {
|
|
39
|
+
return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function _arrayWithHoles(arr) {
|
|
43
|
+
if (Array.isArray(arr)) return arr;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function _iterableToArrayLimit(arr, i) {
|
|
47
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
48
|
+
|
|
49
|
+
if (_i == null) return;
|
|
50
|
+
var _arr = [];
|
|
51
|
+
var _n = true;
|
|
52
|
+
var _d = false;
|
|
53
|
+
|
|
54
|
+
var _s, _e;
|
|
55
|
+
|
|
56
|
+
try {
|
|
57
|
+
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
|
|
58
|
+
_arr.push(_s.value);
|
|
59
|
+
|
|
60
|
+
if (i && _arr.length === i) break;
|
|
61
|
+
}
|
|
62
|
+
} catch (err) {
|
|
63
|
+
_d = true;
|
|
64
|
+
_e = err;
|
|
65
|
+
} finally {
|
|
66
|
+
try {
|
|
67
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
68
|
+
} finally {
|
|
69
|
+
if (_d) throw _e;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return _arr;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function _nonIterableRest() {
|
|
77
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function _slicedToArray(arr, i) {
|
|
81
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
var register = {exports: {}};
|
|
85
|
+
|
|
86
|
+
var _createClass$1 = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
87
|
+
|
|
88
|
+
function _classCallCheck$1(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
89
|
+
|
|
90
|
+
var TinyEmitter$1 = function () {
|
|
91
|
+
function TinyEmitter() {
|
|
92
|
+
_classCallCheck$1(this, TinyEmitter);
|
|
93
|
+
|
|
94
|
+
Object.defineProperty(this, '__listeners', {
|
|
95
|
+
value: {},
|
|
96
|
+
enumerable: false,
|
|
97
|
+
writable: false
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
_createClass$1(TinyEmitter, [{
|
|
102
|
+
key: 'emit',
|
|
103
|
+
value: function emit(eventName) {
|
|
104
|
+
if (!this.__listeners[eventName]) return this;
|
|
105
|
+
|
|
106
|
+
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
107
|
+
args[_key - 1] = arguments[_key];
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
var _iteratorNormalCompletion = true;
|
|
111
|
+
var _didIteratorError = false;
|
|
112
|
+
var _iteratorError = undefined;
|
|
113
|
+
|
|
114
|
+
try {
|
|
115
|
+
for (var _iterator = this.__listeners[eventName][Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
116
|
+
var handler = _step.value;
|
|
117
|
+
|
|
118
|
+
handler.apply(undefined, args);
|
|
119
|
+
}
|
|
120
|
+
} catch (err) {
|
|
121
|
+
_didIteratorError = true;
|
|
122
|
+
_iteratorError = err;
|
|
123
|
+
} finally {
|
|
124
|
+
try {
|
|
125
|
+
if (!_iteratorNormalCompletion && _iterator.return) {
|
|
126
|
+
_iterator.return();
|
|
127
|
+
}
|
|
128
|
+
} finally {
|
|
129
|
+
if (_didIteratorError) {
|
|
130
|
+
throw _iteratorError;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return this;
|
|
136
|
+
}
|
|
137
|
+
}, {
|
|
138
|
+
key: 'once',
|
|
139
|
+
value: function once(eventName, handler) {
|
|
140
|
+
var _this = this;
|
|
141
|
+
|
|
142
|
+
var once = function once() {
|
|
143
|
+
_this.off(eventName, once);
|
|
144
|
+
handler.apply(undefined, arguments);
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
return this.on(eventName, once);
|
|
148
|
+
}
|
|
149
|
+
}, {
|
|
150
|
+
key: 'on',
|
|
151
|
+
value: function on(eventName, handler) {
|
|
152
|
+
if (!this.__listeners[eventName]) this.__listeners[eventName] = [];
|
|
153
|
+
|
|
154
|
+
this.__listeners[eventName].push(handler);
|
|
155
|
+
|
|
156
|
+
return this;
|
|
157
|
+
}
|
|
158
|
+
}, {
|
|
159
|
+
key: 'off',
|
|
160
|
+
value: function off(eventName, handler) {
|
|
161
|
+
if (handler) this.__listeners[eventName] = this.__listeners[eventName].filter(function (h) {
|
|
162
|
+
return h !== handler;
|
|
163
|
+
});else this.__listeners[eventName] = [];
|
|
164
|
+
|
|
165
|
+
return this;
|
|
166
|
+
}
|
|
167
|
+
}]);
|
|
168
|
+
|
|
169
|
+
return TinyEmitter;
|
|
170
|
+
}();
|
|
171
|
+
|
|
172
|
+
var tinyEmitter = TinyEmitter$1;
|
|
173
|
+
|
|
174
|
+
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
175
|
+
|
|
176
|
+
var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
|
|
177
|
+
|
|
178
|
+
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
|
179
|
+
|
|
180
|
+
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
|
181
|
+
|
|
182
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
183
|
+
|
|
184
|
+
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
185
|
+
|
|
186
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
|
187
|
+
|
|
188
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
189
|
+
|
|
190
|
+
var TinyEmitter = tinyEmitter;
|
|
191
|
+
|
|
192
|
+
var MESSAGE_RESULT = 0;
|
|
193
|
+
var MESSAGE_EVENT = 1;
|
|
194
|
+
|
|
195
|
+
var RESULT_ERROR = 0;
|
|
196
|
+
var RESULT_SUCCESS = 1;
|
|
197
|
+
|
|
198
|
+
var DEFAULT_HANDLER = 'main';
|
|
199
|
+
|
|
200
|
+
var isPromise = function isPromise(o) {
|
|
201
|
+
return (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === 'object' && o !== null && typeof o.then === 'function' && typeof o.catch === 'function';
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
function RegisterPromise(fn) {
|
|
205
|
+
var handlers = _defineProperty({}, DEFAULT_HANDLER, fn);
|
|
206
|
+
var sendPostMessage = self.postMessage.bind(self);
|
|
207
|
+
|
|
208
|
+
var server = new (function (_TinyEmitter) {
|
|
209
|
+
_inherits(WorkerRegister, _TinyEmitter);
|
|
210
|
+
|
|
211
|
+
function WorkerRegister() {
|
|
212
|
+
_classCallCheck(this, WorkerRegister);
|
|
213
|
+
|
|
214
|
+
return _possibleConstructorReturn(this, (WorkerRegister.__proto__ || Object.getPrototypeOf(WorkerRegister)).apply(this, arguments));
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
_createClass(WorkerRegister, [{
|
|
218
|
+
key: 'emit',
|
|
219
|
+
value: function emit(eventName) {
|
|
220
|
+
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
221
|
+
args[_key - 1] = arguments[_key];
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
if (args.length == 1 && args[0] instanceof TransferableResponse) {
|
|
225
|
+
sendPostMessage({ eventName: eventName, args: args }, args[0].transferable);
|
|
226
|
+
} else {
|
|
227
|
+
sendPostMessage({ eventName: eventName, args: args });
|
|
228
|
+
}
|
|
229
|
+
return this;
|
|
230
|
+
}
|
|
231
|
+
}, {
|
|
232
|
+
key: 'emitLocally',
|
|
233
|
+
value: function emitLocally(eventName) {
|
|
234
|
+
var _get2;
|
|
235
|
+
|
|
236
|
+
for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
237
|
+
args[_key2 - 1] = arguments[_key2];
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
(_get2 = _get(WorkerRegister.prototype.__proto__ || Object.getPrototypeOf(WorkerRegister.prototype), 'emit', this)).call.apply(_get2, [this, eventName].concat(args));
|
|
241
|
+
}
|
|
242
|
+
}, {
|
|
243
|
+
key: 'operation',
|
|
244
|
+
value: function operation(name, handler) {
|
|
245
|
+
handlers[name] = handler;
|
|
246
|
+
return this;
|
|
247
|
+
}
|
|
248
|
+
}]);
|
|
249
|
+
|
|
250
|
+
return WorkerRegister;
|
|
251
|
+
}(TinyEmitter))();
|
|
252
|
+
|
|
253
|
+
var run = function run(messageId, payload, handlerName) {
|
|
254
|
+
|
|
255
|
+
var onSuccess = function onSuccess(result) {
|
|
256
|
+
if (result && result instanceof TransferableResponse) {
|
|
257
|
+
sendResult(messageId, RESULT_SUCCESS, result.payload, result.transferable);
|
|
258
|
+
} else {
|
|
259
|
+
sendResult(messageId, RESULT_SUCCESS, result);
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
var onError = function onError(e) {
|
|
264
|
+
sendResult(messageId, RESULT_ERROR, {
|
|
265
|
+
message: e.message,
|
|
266
|
+
stack: e.stack
|
|
267
|
+
});
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
try {
|
|
271
|
+
var result = runFn(messageId, payload, handlerName);
|
|
272
|
+
if (isPromise(result)) {
|
|
273
|
+
result.then(onSuccess).catch(onError);
|
|
274
|
+
} else {
|
|
275
|
+
onSuccess(result);
|
|
276
|
+
}
|
|
277
|
+
} catch (e) {
|
|
278
|
+
onError(e);
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
var runFn = function runFn(messageId, payload, handlerName) {
|
|
283
|
+
var handler = handlers[handlerName || DEFAULT_HANDLER];
|
|
284
|
+
if (!handler) throw new Error('Not found handler for this request');
|
|
285
|
+
|
|
286
|
+
return handler(payload, sendEvent.bind(null, messageId));
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
var sendResult = function sendResult(messageId, success, payload) {
|
|
290
|
+
var transferable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
|
|
291
|
+
|
|
292
|
+
sendPostMessage([MESSAGE_RESULT, messageId, success, payload], transferable);
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
var sendEvent = function sendEvent(messageId, eventName, payload) {
|
|
296
|
+
if (!eventName) throw new Error('eventName is required');
|
|
297
|
+
|
|
298
|
+
if (typeof eventName !== 'string') throw new Error('eventName should be string');
|
|
299
|
+
|
|
300
|
+
sendPostMessage([MESSAGE_EVENT, messageId, eventName, payload]);
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
self.addEventListener('message', function (_ref) {
|
|
304
|
+
var data = _ref.data;
|
|
305
|
+
|
|
306
|
+
if (Array.isArray(data)) {
|
|
307
|
+
run.apply(undefined, _toConsumableArray(data));
|
|
308
|
+
} else if (data && data.eventName) {
|
|
309
|
+
server.emitLocally.apply(server, [data.eventName].concat(_toConsumableArray(data.args)));
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
return server;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
var TransferableResponse = function TransferableResponse(payload, transferable) {
|
|
317
|
+
_classCallCheck(this, TransferableResponse);
|
|
318
|
+
|
|
319
|
+
this.payload = payload;
|
|
320
|
+
this.transferable = transferable;
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
register.exports = RegisterPromise;
|
|
324
|
+
register.exports.TransferableResponse = TransferableResponse;
|
|
325
|
+
|
|
326
|
+
var registerWebworker = register.exports;
|
|
327
|
+
|
|
328
|
+
var SlicingMode = {
|
|
329
|
+
NONE: -1,
|
|
330
|
+
I: 0,
|
|
331
|
+
J: 1,
|
|
332
|
+
K: 2,
|
|
333
|
+
X: 3,
|
|
334
|
+
Y: 4,
|
|
335
|
+
Z: 5
|
|
336
|
+
};
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* Common utilities
|
|
340
|
+
* @module glMatrix
|
|
341
|
+
*/
|
|
342
|
+
var ARRAY_TYPE = typeof Float32Array !== 'undefined' ? Float32Array : Array;
|
|
343
|
+
if (!Math.hypot) Math.hypot = function () {
|
|
344
|
+
var y = 0,
|
|
345
|
+
i = arguments.length;
|
|
346
|
+
|
|
347
|
+
while (i--) {
|
|
348
|
+
y += arguments[i] * arguments[i];
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
return Math.sqrt(y);
|
|
352
|
+
};
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* 3 Dimensional Vector
|
|
356
|
+
* @module vec3
|
|
357
|
+
*/
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* Creates a new, empty vec3
|
|
361
|
+
*
|
|
362
|
+
* @returns {vec3} a new 3D vector
|
|
363
|
+
*/
|
|
364
|
+
|
|
365
|
+
function create() {
|
|
366
|
+
var out = new ARRAY_TYPE(3);
|
|
367
|
+
|
|
368
|
+
if (ARRAY_TYPE != Float32Array) {
|
|
369
|
+
out[0] = 0;
|
|
370
|
+
out[1] = 0;
|
|
371
|
+
out[2] = 0;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
return out;
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Subtracts vector b from vector a
|
|
378
|
+
*
|
|
379
|
+
* @param {vec3} out the receiving vector
|
|
380
|
+
* @param {ReadonlyVec3} a the first operand
|
|
381
|
+
* @param {ReadonlyVec3} b the second operand
|
|
382
|
+
* @returns {vec3} out
|
|
383
|
+
*/
|
|
384
|
+
|
|
385
|
+
function subtract(out, a, b) {
|
|
386
|
+
out[0] = a[0] - b[0];
|
|
387
|
+
out[1] = a[1] - b[1];
|
|
388
|
+
out[2] = a[2] - b[2];
|
|
389
|
+
return out;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Scales a vec3 by a scalar number
|
|
393
|
+
*
|
|
394
|
+
* @param {vec3} out the receiving vector
|
|
395
|
+
* @param {ReadonlyVec3} a the vector to scale
|
|
396
|
+
* @param {Number} b amount to scale the vector by
|
|
397
|
+
* @returns {vec3} out
|
|
398
|
+
*/
|
|
399
|
+
|
|
400
|
+
function scale(out, a, b) {
|
|
401
|
+
out[0] = a[0] * b;
|
|
402
|
+
out[1] = a[1] * b;
|
|
403
|
+
out[2] = a[2] * b;
|
|
404
|
+
return out;
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Adds two vec3's after scaling the second operand by a scalar value
|
|
408
|
+
*
|
|
409
|
+
* @param {vec3} out the receiving vector
|
|
410
|
+
* @param {ReadonlyVec3} a the first operand
|
|
411
|
+
* @param {ReadonlyVec3} b the second operand
|
|
412
|
+
* @param {Number} scale the amount to scale b by before adding
|
|
413
|
+
* @returns {vec3} out
|
|
414
|
+
*/
|
|
415
|
+
|
|
416
|
+
function scaleAndAdd(out, a, b, scale) {
|
|
417
|
+
out[0] = a[0] + b[0] * scale;
|
|
418
|
+
out[1] = a[1] + b[1] * scale;
|
|
419
|
+
out[2] = a[2] + b[2] * scale;
|
|
420
|
+
return out;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Perform some operation over an array of vec3s.
|
|
424
|
+
*
|
|
425
|
+
* @param {Array} a the array of vectors to iterate over
|
|
426
|
+
* @param {Number} stride Number of elements between the start of each vec3. If 0 assumes tightly packed
|
|
427
|
+
* @param {Number} offset Number of elements to skip at the beginning of the array
|
|
428
|
+
* @param {Number} count Number of vec3s to iterate over. If 0 iterates over entire array
|
|
429
|
+
* @param {Function} fn Function to call for each vector in the array
|
|
430
|
+
* @param {Object} [arg] additional argument to pass to fn
|
|
431
|
+
* @returns {Array} a
|
|
432
|
+
* @function
|
|
433
|
+
*/
|
|
434
|
+
|
|
435
|
+
(function () {
|
|
436
|
+
var vec = create();
|
|
437
|
+
return function (a, stride, offset, count, fn, arg) {
|
|
438
|
+
var i, l;
|
|
439
|
+
|
|
440
|
+
if (!stride) {
|
|
441
|
+
stride = 3;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
if (!offset) {
|
|
445
|
+
offset = 0;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
if (count) {
|
|
449
|
+
l = Math.min(count * stride + offset, a.length);
|
|
450
|
+
} else {
|
|
451
|
+
l = a.length;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
for (i = offset; i < l; i += stride) {
|
|
455
|
+
vec[0] = a[i];
|
|
456
|
+
vec[1] = a[i + 1];
|
|
457
|
+
vec[2] = a[i + 2];
|
|
458
|
+
fn(vec, vec, arg);
|
|
459
|
+
a[i] = vec[0];
|
|
460
|
+
a[i + 1] = vec[1];
|
|
461
|
+
a[i + 2] = vec[2];
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
return a;
|
|
465
|
+
};
|
|
466
|
+
})();
|
|
467
|
+
|
|
468
|
+
var globals = {
|
|
469
|
+
// single-component labelmap
|
|
470
|
+
buffer: null,
|
|
471
|
+
dimensions: [0, 0, 0],
|
|
472
|
+
prevPoint: null,
|
|
473
|
+
slicingMode: null // 2D or 3D painting
|
|
474
|
+
|
|
475
|
+
}; // --------------------------------------------------------------------------
|
|
476
|
+
|
|
477
|
+
function handlePaintRectangle(_ref) {
|
|
478
|
+
var point1 = _ref.point1,
|
|
479
|
+
point2 = _ref.point2;
|
|
480
|
+
|
|
481
|
+
var _point = _slicedToArray(point1, 3),
|
|
482
|
+
x1 = _point[0],
|
|
483
|
+
y1 = _point[1],
|
|
484
|
+
z1 = _point[2];
|
|
485
|
+
|
|
486
|
+
var _point2 = _slicedToArray(point2, 3),
|
|
487
|
+
x2 = _point2[0],
|
|
488
|
+
y2 = _point2[1],
|
|
489
|
+
z2 = _point2[2];
|
|
490
|
+
|
|
491
|
+
var xstart = Math.max(Math.min(x1, x2), 0);
|
|
492
|
+
var xend = Math.min(Math.max(x1, x2), globals.dimensions[0] - 1);
|
|
493
|
+
|
|
494
|
+
if (xstart <= xend) {
|
|
495
|
+
var ystart = Math.max(Math.min(y1, y2), 0);
|
|
496
|
+
var yend = Math.min(Math.max(y1, y2), globals.dimensions[1] - 1);
|
|
497
|
+
var zstart = Math.max(Math.min(z1, z2), 0);
|
|
498
|
+
var zend = Math.min(Math.max(z1, z2), globals.dimensions[2] - 1);
|
|
499
|
+
var jStride = globals.dimensions[0];
|
|
500
|
+
var kStride = globals.dimensions[0] * globals.dimensions[1];
|
|
501
|
+
|
|
502
|
+
for (var k = zstart; k <= zend; k++) {
|
|
503
|
+
for (var j = ystart; j <= yend; j++) {
|
|
504
|
+
var index = j * jStride + k * kStride;
|
|
505
|
+
globals.buffer.fill(1, index + xstart, index + xend + 1);
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
} // --------------------------------------------------------------------------
|
|
510
|
+
// center and scale3 are in IJK coordinates
|
|
511
|
+
|
|
512
|
+
|
|
513
|
+
function handlePaintEllipse(_ref2) {
|
|
514
|
+
var center = _ref2.center,
|
|
515
|
+
scale3 = _ref2.scale3;
|
|
516
|
+
|
|
517
|
+
var radius3 = _toConsumableArray$1(scale3);
|
|
518
|
+
|
|
519
|
+
var indexCenter = center.map(function (val) {
|
|
520
|
+
return Math.round(val);
|
|
521
|
+
});
|
|
522
|
+
var sliceAxis = -1;
|
|
523
|
+
|
|
524
|
+
if (globals.slicingMode != null && globals.slicingMode !== SlicingMode.NONE) {
|
|
525
|
+
sliceAxis = globals.slicingMode % 3;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
var yStride = globals.dimensions[0];
|
|
529
|
+
var zStride = globals.dimensions[0] * globals.dimensions[1];
|
|
530
|
+
|
|
531
|
+
var _indexCenter = _slicedToArray(indexCenter, 3),
|
|
532
|
+
xmin = _indexCenter[0],
|
|
533
|
+
ymin = _indexCenter[1],
|
|
534
|
+
zmin = _indexCenter[2];
|
|
535
|
+
|
|
536
|
+
var _indexCenter2 = _slicedToArray(indexCenter, 3),
|
|
537
|
+
xmax = _indexCenter2[0],
|
|
538
|
+
ymax = _indexCenter2[1],
|
|
539
|
+
zmax = _indexCenter2[2];
|
|
540
|
+
|
|
541
|
+
if (sliceAxis !== 2) {
|
|
542
|
+
zmin = Math.round(Math.max(indexCenter[2] - radius3[2], 0));
|
|
543
|
+
zmax = Math.round(Math.min(indexCenter[2] + radius3[2], globals.dimensions[2] - 1));
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
for (var z = zmin; z <= zmax; z++) {
|
|
547
|
+
var dz = 0;
|
|
548
|
+
|
|
549
|
+
if (sliceAxis !== 2) {
|
|
550
|
+
dz = (indexCenter[2] - z) / radius3[2];
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
var dzSquared = dz * dz;
|
|
554
|
+
|
|
555
|
+
if (dzSquared <= 1) {
|
|
556
|
+
var ay = radius3[1] * Math.sqrt(1 - dzSquared);
|
|
557
|
+
|
|
558
|
+
if (sliceAxis !== 1) {
|
|
559
|
+
ymin = Math.round(Math.max(indexCenter[1] - ay, 0));
|
|
560
|
+
ymax = Math.round(Math.min(indexCenter[1] + ay, globals.dimensions[1] - 1));
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
for (var y = ymin; y <= ymax; y++) {
|
|
564
|
+
var dy = 0;
|
|
565
|
+
|
|
566
|
+
if (sliceAxis !== 1) {
|
|
567
|
+
dy = (indexCenter[1] - y) / radius3[1];
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
var dySquared = dy * dy;
|
|
571
|
+
|
|
572
|
+
if (dySquared + dzSquared <= 1) {
|
|
573
|
+
if (sliceAxis !== 0) {
|
|
574
|
+
var ax = radius3[0] * Math.sqrt(1 - dySquared - dzSquared);
|
|
575
|
+
xmin = Math.round(Math.max(indexCenter[0] - ax, 0));
|
|
576
|
+
xmax = Math.round(Math.min(indexCenter[0] + ax, globals.dimensions[0] - 1));
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
if (xmin <= xmax) {
|
|
580
|
+
var index = y * yStride + z * zStride;
|
|
581
|
+
globals.buffer.fill(1, index + xmin, index + xmax + 1);
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
} // --------------------------------------------------------------------------
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
function handlePaint(_ref3) {
|
|
591
|
+
var point = _ref3.point,
|
|
592
|
+
radius = _ref3.radius;
|
|
593
|
+
|
|
594
|
+
if (!globals.prevPoint) {
|
|
595
|
+
globals.prevPoint = point;
|
|
596
|
+
} // DDA params
|
|
597
|
+
|
|
598
|
+
|
|
599
|
+
var delta = [point[0] - globals.prevPoint[0], point[1] - globals.prevPoint[1], point[2] - globals.prevPoint[2]];
|
|
600
|
+
var inc = [1, 1, 1];
|
|
601
|
+
|
|
602
|
+
for (var i = 0; i < 3; i++) {
|
|
603
|
+
if (delta[i] < 0) {
|
|
604
|
+
delta[i] = -delta[i];
|
|
605
|
+
inc[i] = -1;
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
var step = Math.max.apply(Math, delta); // DDA
|
|
610
|
+
|
|
611
|
+
var thresh = [step, step, step];
|
|
612
|
+
|
|
613
|
+
var pt = _toConsumableArray$1(globals.prevPoint);
|
|
614
|
+
|
|
615
|
+
for (var s = 0; s <= step; s++) {
|
|
616
|
+
handlePaintEllipse({
|
|
617
|
+
center: pt,
|
|
618
|
+
scale3: radius
|
|
619
|
+
});
|
|
620
|
+
|
|
621
|
+
for (var ii = 0; ii < 3; ii++) {
|
|
622
|
+
thresh[ii] -= delta[ii];
|
|
623
|
+
|
|
624
|
+
if (thresh[ii] <= 0) {
|
|
625
|
+
thresh[ii] += step;
|
|
626
|
+
pt[ii] += inc[ii];
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
globals.prevPoint = point;
|
|
632
|
+
} // --------------------------------------------------------------------------
|
|
633
|
+
|
|
634
|
+
|
|
635
|
+
function handlePaintTriangles(_ref4) {
|
|
636
|
+
var triangleList = _ref4.triangleList;
|
|
637
|
+
// debugger;
|
|
638
|
+
var triangleCount = Math.floor(triangleList.length / 9);
|
|
639
|
+
|
|
640
|
+
for (var i = 0; i < triangleCount; i++) {
|
|
641
|
+
var point0 = triangleList.subarray(9 * i + 0, 9 * i + 3);
|
|
642
|
+
var point1 = triangleList.subarray(9 * i + 3, 9 * i + 6);
|
|
643
|
+
var point2 = triangleList.subarray(9 * i + 6, 9 * i + 9);
|
|
644
|
+
var v1 = [0, 0, 0];
|
|
645
|
+
var v2 = [0, 0, 0];
|
|
646
|
+
subtract(v1, point1, point0);
|
|
647
|
+
subtract(v2, point2, point0);
|
|
648
|
+
var step1 = [0, 0, 0];
|
|
649
|
+
var numStep1 = 2 * Math.max(Math.abs(v1[0]), Math.abs(v1[1]), Math.abs(v1[2]));
|
|
650
|
+
scale(step1, v1, 1 / numStep1);
|
|
651
|
+
var step2 = [0, 0, 0];
|
|
652
|
+
var numStep2 = 2 * Math.max(Math.abs(v2[0]), Math.abs(v2[1]), Math.abs(v2[2]));
|
|
653
|
+
scale(step2, v2, 1 / numStep2);
|
|
654
|
+
var jStride = globals.dimensions[0];
|
|
655
|
+
var kStride = globals.dimensions[0] * globals.dimensions[1];
|
|
656
|
+
|
|
657
|
+
for (var u = 0; u <= numStep1 + 1; u++) {
|
|
658
|
+
var maxV = numStep2 - u * (numStep2 / numStep1);
|
|
659
|
+
|
|
660
|
+
for (var v = 0; v <= maxV + 1; v++) {
|
|
661
|
+
var point = _toConsumableArray$1(point0);
|
|
662
|
+
|
|
663
|
+
scaleAndAdd(point, point, step1, u);
|
|
664
|
+
scaleAndAdd(point, point, step2, v);
|
|
665
|
+
point[0] = Math.round(point[0]);
|
|
666
|
+
point[1] = Math.round(point[1]);
|
|
667
|
+
point[2] = Math.round(point[2]);
|
|
668
|
+
|
|
669
|
+
if (point[0] >= 0 && point[0] < globals.dimensions[0] && point[1] >= 0 && point[1] < globals.dimensions[1] && point[2] >= 0 && point[2] < globals.dimensions[2]) {
|
|
670
|
+
globals.buffer[point[0] + jStride * point[1] + kStride * point[2]] = 1;
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
} // --------------------------------------------------------------------------
|
|
676
|
+
|
|
677
|
+
|
|
678
|
+
registerWebworker().operation('start', function (_ref5) {
|
|
679
|
+
var bufferType = _ref5.bufferType,
|
|
680
|
+
dimensions = _ref5.dimensions,
|
|
681
|
+
slicingMode = _ref5.slicingMode;
|
|
682
|
+
|
|
683
|
+
if (!globals.buffer) {
|
|
684
|
+
var bufferSize = dimensions[0] * dimensions[1] * dimensions[2];
|
|
685
|
+
/* eslint-disable-next-line */
|
|
686
|
+
|
|
687
|
+
globals.buffer = new self[bufferType](bufferSize);
|
|
688
|
+
globals.dimensions = dimensions;
|
|
689
|
+
globals.prevPoint = null;
|
|
690
|
+
globals.slicingMode = slicingMode;
|
|
691
|
+
}
|
|
692
|
+
}).operation('paint', handlePaint).operation('paintRectangle', handlePaintRectangle).operation('paintEllipse', handlePaintEllipse).operation('paintTriangles', handlePaintTriangles).operation('end', function () {
|
|
693
|
+
var response = new registerWebworker.TransferableResponse(globals.buffer.buffer, [globals.buffer.buffer]);
|
|
694
|
+
globals.buffer = null;
|
|
695
|
+
return response;
|
|
696
|
+
});
|
|
697
|
+
|
|
698
|
+
}());
|
|
699
|
+
}, null);
|
|
4
700
|
/* eslint-enable */
|
|
5
701
|
|
|
6
702
|
export { WorkerFactory as W };
|