@kitware/vtk.js 33.3.2 → 34.0.0-beta.2

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.
Files changed (56) hide show
  1. package/BREAKING_CHANGES.md +10 -0
  2. package/IO/Geometry/GLTFImporter/Decoder.js +21 -35
  3. package/IO/Geometry/GLTFImporter/ORMTexture.worker.js +42 -0
  4. package/IO/Geometry/GLTFImporter/Parser.js +6 -15
  5. package/IO/Geometry/GLTFImporter/Reader.js +10 -7
  6. package/IO/Geometry/GLTFImporter/Utils.js +27 -9
  7. package/Interaction/Manipulators/KeyboardCameraManipulator.d.ts +113 -0
  8. package/Rendering/Core/Actor.d.ts +5 -20
  9. package/Rendering/Core/Actor.js +5 -68
  10. package/Rendering/Core/ImageCPRMapper.d.ts +1 -20
  11. package/Rendering/Core/ImageCPRMapper.js +1 -2
  12. package/Rendering/Core/ImageProperty.d.ts +20 -1
  13. package/Rendering/Core/ImageProperty.js +7 -5
  14. package/Rendering/Core/ImageResliceMapper.d.ts +1 -20
  15. package/Rendering/Core/ImageResliceMapper.js +1 -2
  16. package/Rendering/Core/ImageSlice.d.ts +7 -23
  17. package/Rendering/Core/ImageSlice.js +9 -68
  18. package/Rendering/Core/Prop3D.d.ts +39 -2
  19. package/Rendering/Core/Prop3D.js +81 -2
  20. package/Rendering/Core/RenderWindowInteractor.d.ts +6 -0
  21. package/Rendering/Core/RenderWindowInteractor.js +7 -5
  22. package/Rendering/Core/Volume.d.ts +5 -20
  23. package/Rendering/Core/Volume.js +2 -70
  24. package/Rendering/Core/VolumeMapper/Constants.d.ts +0 -7
  25. package/Rendering/Core/VolumeMapper/Constants.js +2 -8
  26. package/Rendering/Core/VolumeMapper.d.ts +16 -173
  27. package/Rendering/Core/VolumeMapper.js +16 -51
  28. package/Rendering/Core/VolumeProperty/Constants.d.ts +12 -3
  29. package/Rendering/Core/VolumeProperty/Constants.js +11 -4
  30. package/Rendering/Core/VolumeProperty.d.ts +140 -5
  31. package/Rendering/Core/VolumeProperty.js +54 -7
  32. package/Rendering/OpenGL/Framebuffer.js +7 -1
  33. package/Rendering/OpenGL/ImageCPRMapper.js +72 -27
  34. package/Rendering/OpenGL/ImageMapper.js +71 -33
  35. package/Rendering/OpenGL/ImageResliceMapper.js +306 -183
  36. package/Rendering/OpenGL/OrderIndependentTranslucentPass.js +20 -3
  37. package/Rendering/OpenGL/PolyDataMapper.js +8 -9
  38. package/Rendering/OpenGL/RenderWindow/resourceSharingHelper.d.ts +3 -3
  39. package/Rendering/OpenGL/RenderWindow/resourceSharingHelper.js +8 -5
  40. package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D/pingpong.js +7 -1
  41. package/Rendering/OpenGL/SurfaceLIC/SurfaceLICInterface.js +20 -3
  42. package/Rendering/OpenGL/Texture.d.ts +110 -62
  43. package/Rendering/OpenGL/Texture.js +145 -37
  44. package/Rendering/OpenGL/VolumeMapper.js +763 -783
  45. package/Rendering/OpenGL/glsl/vtkVolumeFS.glsl.js +1 -1
  46. package/Rendering/WebGPU/CellArrayMapper.js +17 -17
  47. package/Rendering/WebGPU/PolyDataMapper.js +15 -35
  48. package/Rendering/WebGPU/Renderer.js +1 -1
  49. package/Rendering/WebGPU/Texture.js +12 -13
  50. package/Rendering/WebGPU/TextureManager.js +7 -12
  51. package/Rendering/WebGPU/VolumePassFSQ.js +2 -2
  52. package/_virtual/rollup-plugin-worker-loader__module_Sources/IO/Geometry/GLTFImporter/ORMTexture.worker.js +296 -0
  53. package/index.d.ts +1 -0
  54. package/macros.js +1 -1
  55. package/macros2.js +8 -3
  56. package/package.json +1 -1
@@ -0,0 +1,296 @@
1
+ import { c as createInlineWorkerFactory } from '../../../../rollup-plugin-web-worker-loader__helper__browser__createInlineWorkerFactory.js';
2
+
3
+ var WorkerFactory = createInlineWorkerFactory(/* rollup-plugin-web-worker-loader */function () {
4
+ (function () {
5
+ '__worker_loader_strict__';
6
+
7
+ var register = {exports: {}};
8
+
9
+ 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; }; }();
10
+
11
+ function _classCallCheck$1(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12
+
13
+ var TinyEmitter$1 = function () {
14
+ function TinyEmitter() {
15
+ _classCallCheck$1(this, TinyEmitter);
16
+
17
+ Object.defineProperty(this, '__listeners', {
18
+ value: {},
19
+ enumerable: false,
20
+ writable: false
21
+ });
22
+ }
23
+
24
+ _createClass$1(TinyEmitter, [{
25
+ key: 'emit',
26
+ value: function emit(eventName) {
27
+ if (!this.__listeners[eventName]) return this;
28
+
29
+ for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
30
+ args[_key - 1] = arguments[_key];
31
+ }
32
+
33
+ var _iteratorNormalCompletion = true;
34
+ var _didIteratorError = false;
35
+ var _iteratorError = undefined;
36
+
37
+ try {
38
+ for (var _iterator = this.__listeners[eventName][Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
39
+ var handler = _step.value;
40
+
41
+ handler.apply(undefined, args);
42
+ }
43
+ } catch (err) {
44
+ _didIteratorError = true;
45
+ _iteratorError = err;
46
+ } finally {
47
+ try {
48
+ if (!_iteratorNormalCompletion && _iterator.return) {
49
+ _iterator.return();
50
+ }
51
+ } finally {
52
+ if (_didIteratorError) {
53
+ throw _iteratorError;
54
+ }
55
+ }
56
+ }
57
+
58
+ return this;
59
+ }
60
+ }, {
61
+ key: 'once',
62
+ value: function once(eventName, handler) {
63
+ var _this = this;
64
+
65
+ var once = function once() {
66
+ _this.off(eventName, once);
67
+ handler.apply(undefined, arguments);
68
+ };
69
+
70
+ return this.on(eventName, once);
71
+ }
72
+ }, {
73
+ key: 'on',
74
+ value: function on(eventName, handler) {
75
+ if (!this.__listeners[eventName]) this.__listeners[eventName] = [];
76
+
77
+ this.__listeners[eventName].push(handler);
78
+
79
+ return this;
80
+ }
81
+ }, {
82
+ key: 'off',
83
+ value: function off(eventName, handler) {
84
+ if (handler) this.__listeners[eventName] = this.__listeners[eventName].filter(function (h) {
85
+ return h !== handler;
86
+ });else this.__listeners[eventName] = [];
87
+
88
+ return this;
89
+ }
90
+ }]);
91
+
92
+ return TinyEmitter;
93
+ }();
94
+
95
+ var tinyEmitter = TinyEmitter$1;
96
+
97
+ 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; }; }();
98
+
99
+ 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); } };
100
+
101
+ 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; };
102
+
103
+ 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); } }
104
+
105
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
106
+
107
+ 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; }
108
+
109
+ 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; }
110
+
111
+ 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; }
112
+
113
+ var TinyEmitter = tinyEmitter;
114
+
115
+ var MESSAGE_RESULT = 0;
116
+ var MESSAGE_EVENT = 1;
117
+
118
+ var RESULT_ERROR = 0;
119
+ var RESULT_SUCCESS = 1;
120
+
121
+ var DEFAULT_HANDLER = 'main';
122
+
123
+ var isPromise = function isPromise(o) {
124
+ return (typeof o === 'undefined' ? 'undefined' : _typeof(o)) === 'object' && o !== null && typeof o.then === 'function' && typeof o.catch === 'function';
125
+ };
126
+
127
+ function RegisterPromise(fn) {
128
+ var handlers = _defineProperty({}, DEFAULT_HANDLER, fn);
129
+ var sendPostMessage = self.postMessage.bind(self);
130
+
131
+ var server = new (function (_TinyEmitter) {
132
+ _inherits(WorkerRegister, _TinyEmitter);
133
+
134
+ function WorkerRegister() {
135
+ _classCallCheck(this, WorkerRegister);
136
+
137
+ return _possibleConstructorReturn(this, (WorkerRegister.__proto__ || Object.getPrototypeOf(WorkerRegister)).apply(this, arguments));
138
+ }
139
+
140
+ _createClass(WorkerRegister, [{
141
+ key: 'emit',
142
+ value: function emit(eventName) {
143
+ for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
144
+ args[_key - 1] = arguments[_key];
145
+ }
146
+
147
+ if (args.length == 1 && args[0] instanceof TransferableResponse) {
148
+ sendPostMessage({ eventName: eventName, args: args }, args[0].transferable);
149
+ } else {
150
+ sendPostMessage({ eventName: eventName, args: args });
151
+ }
152
+ return this;
153
+ }
154
+ }, {
155
+ key: 'emitLocally',
156
+ value: function emitLocally(eventName) {
157
+ var _get2;
158
+
159
+ for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
160
+ args[_key2 - 1] = arguments[_key2];
161
+ }
162
+
163
+ (_get2 = _get(WorkerRegister.prototype.__proto__ || Object.getPrototypeOf(WorkerRegister.prototype), 'emit', this)).call.apply(_get2, [this, eventName].concat(args));
164
+ }
165
+ }, {
166
+ key: 'operation',
167
+ value: function operation(name, handler) {
168
+ handlers[name] = handler;
169
+ return this;
170
+ }
171
+ }]);
172
+
173
+ return WorkerRegister;
174
+ }(TinyEmitter))();
175
+
176
+ var run = function run(messageId, payload, handlerName) {
177
+
178
+ var onSuccess = function onSuccess(result) {
179
+ if (result && result instanceof TransferableResponse) {
180
+ sendResult(messageId, RESULT_SUCCESS, result.payload, result.transferable);
181
+ } else {
182
+ sendResult(messageId, RESULT_SUCCESS, result);
183
+ }
184
+ };
185
+
186
+ var onError = function onError(e) {
187
+ sendResult(messageId, RESULT_ERROR, {
188
+ message: e.message,
189
+ stack: e.stack
190
+ });
191
+ };
192
+
193
+ try {
194
+ var result = runFn(messageId, payload, handlerName);
195
+ if (isPromise(result)) {
196
+ result.then(onSuccess).catch(onError);
197
+ } else {
198
+ onSuccess(result);
199
+ }
200
+ } catch (e) {
201
+ onError(e);
202
+ }
203
+ };
204
+
205
+ var runFn = function runFn(messageId, payload, handlerName) {
206
+ var handler = handlers[handlerName || DEFAULT_HANDLER];
207
+ if (!handler) throw new Error('Not found handler for this request');
208
+
209
+ return handler(payload, sendEvent.bind(null, messageId));
210
+ };
211
+
212
+ var sendResult = function sendResult(messageId, success, payload) {
213
+ var transferable = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
214
+
215
+ sendPostMessage([MESSAGE_RESULT, messageId, success, payload], transferable);
216
+ };
217
+
218
+ var sendEvent = function sendEvent(messageId, eventName, payload) {
219
+ if (!eventName) throw new Error('eventName is required');
220
+
221
+ if (typeof eventName !== 'string') throw new Error('eventName should be string');
222
+
223
+ sendPostMessage([MESSAGE_EVENT, messageId, eventName, payload]);
224
+ };
225
+
226
+ self.addEventListener('message', function (_ref) {
227
+ var data = _ref.data;
228
+
229
+ if (Array.isArray(data)) {
230
+ run.apply(undefined, _toConsumableArray(data));
231
+ } else if (data && data.eventName) {
232
+ server.emitLocally.apply(server, [data.eventName].concat(_toConsumableArray(data.args)));
233
+ }
234
+ });
235
+
236
+ return server;
237
+ }
238
+
239
+ var TransferableResponse = function TransferableResponse(payload, transferable) {
240
+ _classCallCheck(this, TransferableResponse);
241
+
242
+ this.payload = payload;
243
+ this.transferable = transferable;
244
+ };
245
+
246
+ register.exports = RegisterPromise;
247
+ register.exports.TransferableResponse = TransferableResponse;
248
+
249
+ var registerWebworker = register.exports;
250
+
251
+ /**
252
+ *
253
+ * @param {ArrayBuffer} imageBuffer
254
+ * @param {string} mimeType
255
+ * @param {string} channel
256
+ * @returns {Promise<ImageData>}
257
+ */
258
+ registerWebworker(async _ref => {
259
+ let {
260
+ imageBuffer,
261
+ mimeType,
262
+ channel
263
+ } = _ref;
264
+ const channelsMap = {
265
+ r: 0,
266
+ g: 1,
267
+ b: 2
268
+ };
269
+ const blob = new Blob([imageBuffer], {
270
+ type: mimeType
271
+ });
272
+ const img = await createImageBitmap(blob);
273
+ const canvas = new OffscreenCanvas(img.width, img.height);
274
+ const ctx = canvas.getContext('2d');
275
+ ctx.drawImage(img, 0, 0, img.width, img.height);
276
+ const bitmap = ctx.getImageData(0, 0, img.width, img.height);
277
+ if (channel) {
278
+ const idx = channelsMap[channel];
279
+ for (let i = 0; i < bitmap.data.length; i += 4) {
280
+ const channelValue = bitmap.data[i + idx];
281
+ bitmap.data[i] = channelValue; // red channel
282
+ bitmap.data[i + 1] = channelValue; // green channel
283
+ bitmap.data[i + 2] = channelValue; // blue channel
284
+ }
285
+ }
286
+
287
+ return {
288
+ bitmap
289
+ };
290
+ });
291
+
292
+ })();
293
+ }, null);
294
+ /* eslint-enable */
295
+
296
+ export { WorkerFactory as W };
package/index.d.ts CHANGED
@@ -123,6 +123,7 @@
123
123
  /// <reference path="./Interaction/Manipulators/CompositeMouseManipulator.d.ts" />
124
124
  /// <reference path="./Interaction/Manipulators/CompositeVRManipulator.d.ts" />
125
125
  /// <reference path="./Interaction/Manipulators/GestureCameraManipulator.d.ts" />
126
+ /// <reference path="./Interaction/Manipulators/KeyboardCameraManipulator.d.ts" />
126
127
  /// <reference path="./Interaction/Manipulators/MouseBoxSelectorManipulator.d.ts" />
127
128
  /// <reference path="./Interaction/Manipulators/MouseCameraTrackballMultiRotateManipulator.d.ts" />
128
129
  /// <reference path="./Interaction/Manipulators/MouseCameraTrackballPanManipulator.d.ts" />
package/macros.js CHANGED
@@ -1,4 +1,4 @@
1
1
  import 'fast-deep-equal';
2
2
  import './vtk.js';
3
3
  import './Common/Core/ClassHierarchy.js';
4
- export { G as EVENT_ABORT, T as TYPED_ARRAYS, V as VOID, _ as _capitalize, d as algo, q as capitalize, h as chain, I as debounce, m as default, f as event, B as formatBytesToProperUnit, C as formatNumbersWithThousandSeparator, g as get, k as getArray, H as isVtkObject, K as keystore, E as measurePromiseExecution, i as moveToProtected, n as newInstance, a as newTypedArray, b as newTypedArrayFrom, M as normalizeWheel, o as obj, p as proxy, j as proxyPropertyMapping, L as proxyPropertyState, s as set, F as setArray, e as setGet, l as setGetArray, D as setImmediateVTK, u as setLoggerFunction, J as throttle, t as traverseInstanceTree, A as uncapitalize, y as vtkDebugMacro, r as vtkErrorMacro, x as vtkInfoMacro, w as vtkLogMacro, z as vtkOnceErrorMacro, v as vtkWarningMacro } from './macros2.js';
4
+ export { H as EVENT_ABORT, T as TYPED_ARRAYS, V as VOID, _ as _capitalize, d as algo, q as capitalize, h as chain, J as debounce, m as default, f as event, C as formatBytesToProperUnit, D as formatNumbersWithThousandSeparator, g as get, k as getArray, I as isVtkObject, L as keystore, F as measurePromiseExecution, i as moveToProtected, n as newInstance, a as newTypedArray, b as newTypedArrayFrom, N as normalizeWheel, o as obj, p as proxy, j as proxyPropertyMapping, M as proxyPropertyState, u as requiredParam, s as set, G as setArray, e as setGet, l as setGetArray, E as setImmediateVTK, w as setLoggerFunction, K as throttle, t as traverseInstanceTree, B as uncapitalize, z as vtkDebugMacro, r as vtkErrorMacro, y as vtkInfoMacro, x as vtkLogMacro, A as vtkOnceErrorMacro, v as vtkWarningMacro } from './macros2.js';
package/macros2.js CHANGED
@@ -7,6 +7,9 @@ import ClassHierarchy from './Common/Core/ClassHierarchy.js';
7
7
  * The name change is so we do not get eaten by babel-plugin-macros.
8
8
  */
9
9
  let globalMTime = 0;
10
+ const requiredParam = name => {
11
+ throw new Error(`Named parameter '${name}' is missing`);
12
+ };
10
13
  const VOID = Symbol('void');
11
14
  function getCurrentGlobalMTime() {
12
15
  return globalMTime;
@@ -813,7 +816,7 @@ function algo(publicAPI, model, numberOfInputs, numberOfOutputs) {
813
816
  count++;
814
817
  }
815
818
  }
816
- if (publicAPI.shouldUpdate() && publicAPI.requestData) {
819
+ if (publicAPI.requestData && publicAPI.shouldUpdate()) {
817
820
  publicAPI.requestData(ins, model.output);
818
821
  }
819
822
  };
@@ -1654,11 +1657,13 @@ var macro = {
1654
1657
  vtkOnceErrorMacro,
1655
1658
  vtkWarningMacro,
1656
1659
  // vtk.js internal use
1657
- objectSetterMap
1660
+ objectSetterMap,
1661
+ requiredParam
1658
1662
  };
1659
1663
 
1660
1664
  var macro$1 = /*#__PURE__*/Object.freeze({
1661
1665
  __proto__: null,
1666
+ requiredParam: requiredParam,
1662
1667
  VOID: VOID,
1663
1668
  setLoggerFunction: setLoggerFunction,
1664
1669
  vtkLogMacro: vtkLogMacro,
@@ -1702,4 +1707,4 @@ var macro$1 = /*#__PURE__*/Object.freeze({
1702
1707
  'default': macro
1703
1708
  });
1704
1709
 
1705
- export { uncapitalize as A, formatBytesToProperUnit as B, formatNumbersWithThousandSeparator as C, setImmediateVTK as D, measurePromiseExecution as E, setArray as F, EVENT_ABORT as G, isVtkObject as H, debounce as I, throttle as J, keystore as K, proxyPropertyState as L, normalizeWheel as M, TYPED_ARRAYS as T, VOID as V, _capitalize as _, newTypedArray as a, newTypedArrayFrom as b, macro$1 as c, algo as d, setGet as e, event as f, get as g, chain as h, moveToProtected as i, proxyPropertyMapping as j, getArray as k, setGetArray as l, macro as m, newInstance as n, obj as o, proxy as p, capitalize as q, vtkErrorMacro as r, set as s, traverseInstanceTree as t, setLoggerFunction as u, vtkWarningMacro as v, vtkLogMacro as w, vtkInfoMacro as x, vtkDebugMacro as y, vtkOnceErrorMacro as z };
1710
+ export { vtkOnceErrorMacro as A, uncapitalize as B, formatBytesToProperUnit as C, formatNumbersWithThousandSeparator as D, setImmediateVTK as E, measurePromiseExecution as F, setArray as G, EVENT_ABORT as H, isVtkObject as I, debounce as J, throttle as K, keystore as L, proxyPropertyState as M, normalizeWheel as N, TYPED_ARRAYS as T, VOID as V, _capitalize as _, newTypedArray as a, newTypedArrayFrom as b, macro$1 as c, algo as d, setGet as e, event as f, get as g, chain as h, moveToProtected as i, proxyPropertyMapping as j, getArray as k, setGetArray as l, macro as m, newInstance as n, obj as o, proxy as p, capitalize as q, vtkErrorMacro as r, set as s, traverseInstanceTree as t, requiredParam as u, vtkWarningMacro as v, setLoggerFunction as w, vtkLogMacro as x, vtkInfoMacro as y, vtkDebugMacro as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kitware/vtk.js",
3
- "version": "33.3.2",
3
+ "version": "34.0.0-beta.2",
4
4
  "description": "Visualization Toolkit for the Web",
5
5
  "keywords": [
6
6
  "3d",