@kitware/vtk.js 25.9.1 → 26.0.0-beta.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.
Files changed (183) hide show
  1. package/Common/Core/CellArray.d.ts +0 -6
  2. package/Common/Core/CellArray.js +21 -12
  3. package/Common/Core/ClassHierarchy.js +11 -6
  4. package/Common/Core/DataArray.d.ts +20 -0
  5. package/Common/Core/DataArray.js +21 -4
  6. package/Proxy/Core/ViewProxy.js +17 -9
  7. package/Rendering/Core/Prop3D.js +1 -6
  8. package/Rendering/Core/RenderWindow.js +9 -6
  9. package/Rendering/Core/VolumeProperty.js +2 -3
  10. package/Rendering/Misc/CanvasView.js +6 -5
  11. package/Rendering/Misc/GenericRenderWindow.js +12 -7
  12. package/Rendering/OpenGL/Actor.js +4 -4
  13. package/Rendering/OpenGL/Actor2D.js +4 -4
  14. package/Rendering/OpenGL/Camera.js +7 -4
  15. package/Rendering/OpenGL/CubeAxesActor.js +7 -5
  16. package/Rendering/OpenGL/ForwardPass.js +1 -1
  17. package/Rendering/OpenGL/Glyph3DMapper.js +4 -4
  18. package/Rendering/OpenGL/ImageMapper.js +9 -5
  19. package/Rendering/OpenGL/ImageSlice.js +3 -3
  20. package/Rendering/OpenGL/PixelSpaceCallbackMapper.js +9 -5
  21. package/Rendering/OpenGL/PolyDataMapper.js +22 -14
  22. package/Rendering/OpenGL/PolyDataMapper2D.js +17 -10
  23. package/Rendering/OpenGL/ScalarBarActor.js +6 -4
  24. package/Rendering/OpenGL/Skybox.js +10 -6
  25. package/Rendering/OpenGL/Texture.js +6 -5
  26. package/Rendering/OpenGL/Volume.js +2 -2
  27. package/Rendering/OpenGL/VolumeMapper.js +11 -11
  28. package/Rendering/OpenGL/glsl/vtkVolumeFS.glsl.js +1 -1
  29. package/Rendering/SceneGraph/RenderPass.js +3 -2
  30. package/Rendering/WebGPU/ForwardPass.js +1 -1
  31. package/Rendering/WebGPU/HardwareSelectionPass.js +1 -1
  32. package/Rendering/WebGPU/HardwareSelector.js +14 -13
  33. package/Rendering/WebGPU/OpaquePass.js +1 -1
  34. package/Rendering/WebGPU/OrderIndependentTranslucentPass.js +1 -1
  35. package/Rendering/WebGPU/VolumePass.js +1 -1
  36. package/Utilities/config/rules-tests.js +28 -0
  37. package/Widgets/Core/AbstractWidgetFactory.js +1 -0
  38. package/Widgets/Core/StateBuilder/color3Mixin.js +22 -0
  39. package/Widgets/Core/StateBuilder/colorMixin.js +7 -0
  40. package/Widgets/Core/StateBuilder.js +2 -0
  41. package/Widgets/Representations/ArrowHandleRepresentation.js +28 -110
  42. package/Widgets/Representations/CircleContextRepresentation.js +43 -165
  43. package/Widgets/Representations/ContextRepresentation.js +0 -3
  44. package/Widgets/Representations/ConvexFaceContextRepresentation.js +11 -11
  45. package/Widgets/Representations/CroppingOutlineRepresentation.js +5 -12
  46. package/Widgets/Representations/CubeHandleRepresentation.js +15 -104
  47. package/Widgets/Representations/GlyphRepresentation.js +320 -0
  48. package/Widgets/Representations/HandleRepresentation.js +0 -5
  49. package/Widgets/Representations/ImplicitPlaneRepresentation.js +68 -49
  50. package/Widgets/Representations/LineHandleRepresentation.js +116 -0
  51. package/Widgets/Representations/PolyLineRepresentation.js +52 -49
  52. package/Widgets/Representations/RectangleContextRepresentation.js +16 -21
  53. package/Widgets/Representations/SphereContextRepresentation.js +30 -109
  54. package/Widgets/Representations/SphereHandleRepresentation.js +13 -110
  55. package/Widgets/Representations/SplineContextRepresentation.js +53 -36
  56. package/Widgets/Representations/WidgetRepresentation.d.ts +52 -1
  57. package/Widgets/Representations/WidgetRepresentation.js +140 -78
  58. package/Widgets/Representations.js +6 -0
  59. package/Widgets/SVG/SVGLandmarkRepresentation.js +1 -13
  60. package/Widgets/Widgets3D/AngleWidget.js +1 -4
  61. package/Widgets/Widgets3D/EllipseWidget/state.js +1 -1
  62. package/Widgets/Widgets3D/ResliceCursorWidget/Constants.js +15 -3
  63. package/Widgets/Widgets3D/ResliceCursorWidget/behavior.js +93 -36
  64. package/Widgets/Widgets3D/ResliceCursorWidget/helpers.js +75 -82
  65. package/Widgets/Widgets3D/ResliceCursorWidget/state.js +49 -170
  66. package/Widgets/Widgets3D/ResliceCursorWidget.js +61 -23
  67. package/index.d.ts +0 -1
  68. package/macros.d.ts +3 -5
  69. package/macros.js +4 -35
  70. package/package.json +2 -2
  71. package/Widgets/Representations/ResliceCursorContextRepresentation/Constants.js +0 -12
  72. package/Widgets/Representations/ResliceCursorContextRepresentation.d.ts +0 -54
  73. package/Widgets/Representations/ResliceCursorContextRepresentation.js +0 -357
  74. package/_vendor/available-typed-arrays/index.js_commonjs-proxy.js +0 -1
  75. package/_vendor/call-bind/callBound.js_commonjs-proxy.js +0 -1
  76. package/_vendor/call-bind/index.js_commonjs-module.js +0 -3
  77. package/_vendor/call-bind/index.js_commonjs-proxy.js +0 -1
  78. package/_vendor/deep-equal/node_modules/isarray/index.js_commonjs-proxy.js +0 -1
  79. package/_vendor/define-properties/index.js_commonjs-proxy.js +0 -1
  80. package/_vendor/es-abstract/helpers/getOwnPropertyDescriptor.js_commonjs-proxy.js +0 -1
  81. package/_vendor/es-get-iterator/index.js_commonjs-module.js +0 -3
  82. package/_vendor/es-get-iterator/index.js_commonjs-proxy.js +0 -1
  83. package/_vendor/es-get-iterator/node_modules/isarray/index.js_commonjs-proxy.js +0 -1
  84. package/_vendor/foreach/index.js_commonjs-proxy.js +0 -1
  85. package/_vendor/function-bind/implementation.js_commonjs-proxy.js +0 -1
  86. package/_vendor/function-bind/index.js_commonjs-proxy.js +0 -1
  87. package/_vendor/get-intrinsic/index.js_commonjs-proxy.js +0 -1
  88. package/_vendor/has/src/index.js_commonjs-proxy.js +0 -1
  89. package/_vendor/has-bigints/index.js_commonjs-proxy.js +0 -1
  90. package/_vendor/has-symbols/index.js_commonjs-proxy.js +0 -1
  91. package/_vendor/has-symbols/shams.js_commonjs-proxy.js +0 -1
  92. package/_vendor/has-tostringtag/shams.js_commonjs-proxy.js +0 -1
  93. package/_vendor/is-arguments/index.js_commonjs-proxy.js +0 -1
  94. package/_vendor/is-bigint/index.js_commonjs-module.js +0 -3
  95. package/_vendor/is-bigint/index.js_commonjs-proxy.js +0 -1
  96. package/_vendor/is-boolean-object/index.js_commonjs-proxy.js +0 -1
  97. package/_vendor/is-date-object/index.js_commonjs-proxy.js +0 -1
  98. package/_vendor/is-map/index.js_commonjs-proxy.js +0 -1
  99. package/_vendor/is-number-object/index.js_commonjs-proxy.js +0 -1
  100. package/_vendor/is-regex/index.js_commonjs-proxy.js +0 -1
  101. package/_vendor/is-set/index.js_commonjs-proxy.js +0 -1
  102. package/_vendor/is-string/index.js_commonjs-proxy.js +0 -1
  103. package/_vendor/is-symbol/index.js_commonjs-module.js +0 -3
  104. package/_vendor/is-symbol/index.js_commonjs-proxy.js +0 -1
  105. package/_vendor/is-typed-array/index.js_commonjs-proxy.js +0 -1
  106. package/_vendor/is-weakmap/index.js_commonjs-proxy.js +0 -1
  107. package/_vendor/is-weakset/index.js_commonjs-proxy.js +0 -1
  108. package/_vendor/object-inspect/index.js_commonjs-proxy.js +0 -1
  109. package/_vendor/object-is/implementation.js_commonjs-proxy.js +0 -1
  110. package/_vendor/object-is/index.js_commonjs-proxy.js +0 -1
  111. package/_vendor/object-is/polyfill.js_commonjs-proxy.js +0 -1
  112. package/_vendor/object-is/shim.js_commonjs-proxy.js +0 -1
  113. package/_vendor/object-keys/implementation.js_commonjs-proxy.js +0 -1
  114. package/_vendor/object-keys/index.js_commonjs-proxy.js +0 -1
  115. package/_vendor/object-keys/isArguments.js_commonjs-proxy.js +0 -1
  116. package/_vendor/object.assign/implementation.js_commonjs-proxy.js +0 -1
  117. package/_vendor/object.assign/index.js_commonjs-proxy.js +0 -1
  118. package/_vendor/object.assign/polyfill.js_commonjs-proxy.js +0 -1
  119. package/_vendor/object.assign/shim.js_commonjs-proxy.js +0 -2
  120. package/_vendor/regexp.prototype.flags/implementation.js_commonjs-proxy.js +0 -1
  121. package/_vendor/regexp.prototype.flags/index.js_commonjs-proxy.js +0 -1
  122. package/_vendor/regexp.prototype.flags/polyfill.js_commonjs-proxy.js +0 -1
  123. package/_vendor/regexp.prototype.flags/shim.js_commonjs-proxy.js +0 -1
  124. package/_vendor/side-channel/index.js_commonjs-proxy.js +0 -1
  125. package/_vendor/which-boxed-primitive/index.js_commonjs-proxy.js +0 -5
  126. package/_vendor/which-collection/index.js_commonjs-proxy.js +0 -4
  127. package/_vendor/which-typed-array/index.js_commonjs-proxy.js +0 -1
  128. package/_virtual/_node-resolve_empty.js_commonjs-proxy.js +0 -6
  129. package/_virtual/commonjsHelpers.js +0 -18
  130. package/_virtual/node-resolve_empty.js +0 -8
  131. package/_virtual/polyfill-node.global.js +0 -5
  132. package/_virtual/polyfill-node.process.js +0 -225
  133. package/vendor/available-typed-arrays/index.js +0 -29
  134. package/vendor/call-bind/callBound.js +0 -19
  135. package/vendor/call-bind/index.js +0 -52
  136. package/vendor/deep-equal/index.js +0 -379
  137. package/vendor/deep-equal/node_modules/isarray/index.js +0 -7
  138. package/vendor/define-properties/index.js +0 -60
  139. package/vendor/es-abstract/helpers/getOwnPropertyDescriptor.js +0 -17
  140. package/vendor/es-get-iterator/index.js +0 -217
  141. package/vendor/es-get-iterator/node_modules/isarray/index.js +0 -7
  142. package/vendor/foreach/index.js +0 -22
  143. package/vendor/function-bind/implementation.js +0 -52
  144. package/vendor/function-bind/index.js +0 -7
  145. package/vendor/get-intrinsic/index.js +0 -334
  146. package/vendor/has/src/index.js +0 -7
  147. package/vendor/has-bigints/index.js +0 -12
  148. package/vendor/has-symbols/index.js +0 -15
  149. package/vendor/has-symbols/shams.js +0 -42
  150. package/vendor/has-tostringtag/shams.js +0 -9
  151. package/vendor/is-arguments/index.js +0 -36
  152. package/vendor/is-bigint/index.js +0 -39
  153. package/vendor/is-boolean-object/index.js +0 -29
  154. package/vendor/is-date-object/index.js +0 -22
  155. package/vendor/is-map/index.js +0 -42
  156. package/vendor/is-number-object/index.js +0 -26
  157. package/vendor/is-regex/index.js +0 -61
  158. package/vendor/is-set/index.js +0 -42
  159. package/vendor/is-string/index.js +0 -26
  160. package/vendor/is-symbol/index.js +0 -36
  161. package/vendor/is-typed-array/index.js +0 -67
  162. package/vendor/is-weakmap/index.js +0 -42
  163. package/vendor/is-weakset/index.js +0 -42
  164. package/vendor/object-inspect/index.js +0 -515
  165. package/vendor/object-is/implementation.js +0 -18
  166. package/vendor/object-is/index.js +0 -25
  167. package/vendor/object-is/polyfill.js +0 -9
  168. package/vendor/object-is/shim.js +0 -17
  169. package/vendor/object-keys/implementation.js +0 -124
  170. package/vendor/object-keys/index.js +0 -35
  171. package/vendor/object-keys/isArguments.js +0 -17
  172. package/vendor/object.assign/implementation.js +0 -46
  173. package/vendor/object.assign/index.js +0 -29
  174. package/vendor/object.assign/polyfill.js +0 -57
  175. package/vendor/object.assign/shim.js +0 -17
  176. package/vendor/regexp.prototype.flags/implementation.js +0 -30
  177. package/vendor/regexp.prototype.flags/index.js +0 -25
  178. package/vendor/regexp.prototype.flags/polyfill.js +0 -23
  179. package/vendor/regexp.prototype.flags/shim.js +0 -29
  180. package/vendor/side-channel/index.js +0 -128
  181. package/vendor/which-boxed-primitive/index.js +0 -38
  182. package/vendor/which-collection/index.js +0 -29
  183. package/vendor/which-typed-array/index.js +0 -63
@@ -2,21 +2,19 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import macro from '../../macros.js';
3
3
  import vtkActor from '../../Rendering/Core/Actor.js';
4
4
  import vtkArrow2DSource from '../../Filters/Sources/Arrow2DSource.js';
5
- import vtkDataArray from '../../Common/Core/DataArray.js';
6
- import vtkGlyph3DMapper from '../../Rendering/Core/Glyph3DMapper.js';
7
- import vtkHandleRepresentation from './HandleRepresentation.js';
5
+ import vtkGlyphRepresentation from './GlyphRepresentation.js';
8
6
  import vtkMatrixBuilder from '../../Common/Core/MatrixBuilder.js';
9
7
  import vtkPixelSpaceCallbackMapper from '../../Rendering/Core/PixelSpaceCallbackMapper.js';
10
- import vtkPolyData from '../../Common/DataModel/PolyData.js';
11
8
  import vtkConeSource from '../../Filters/Sources/ConeSource.js';
12
9
  import vtkSphereSource from '../../Filters/Sources/SphereSource.js';
13
10
  import vtkCircleSource from '../../Filters/Sources/CircleSource.js';
14
11
  import vtkCubeSource from '../../Filters/Sources/CubeSource.js';
15
12
  import vtkViewFinderSource from '../../Filters/Sources/ViewFinderSource.js';
16
13
  import Constants from '../Widgets3D/LineWidget/Constants.js';
17
- import { ScalarMode } from '../../Rendering/Core/Mapper/Constants.js';
18
14
  import { mat4, mat3, vec3 } from 'gl-matrix';
19
15
  import { RenderingTypes } from '../Core/WidgetManager/Constants.js';
16
+ import { OrientationModes } from '../../Rendering/Core/Glyph3DMapper/Constants.js';
17
+ import { allocateArray } from './WidgetRepresentation.js';
20
18
 
21
19
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
22
20
 
@@ -35,35 +33,11 @@ function vtkArrowHandleRepresentation(publicAPI, model) {
35
33
  // Internal polydata dataset
36
34
  // --------------------------------------------------------------------------
37
35
 
38
-
39
- model.internalPolyData = vtkPolyData.newInstance({
40
- mtime: 0
41
- });
42
- model.internalArrays = {
43
- points: model.internalPolyData.getPoints(),
44
- scale: vtkDataArray.newInstance({
45
- name: 'scale',
46
- numberOfComponents: 1,
47
- empty: true
48
- }),
49
- color: vtkDataArray.newInstance({
50
- name: 'color',
51
- numberOfComponents: 1,
52
- empty: true
53
- }),
54
- direction: vtkDataArray.newInstance({
55
- name: 'direction',
56
- numberOfComponents: 9,
57
- empty: true
58
- })
59
- };
60
- model.internalPolyData.getPointData().addArray(model.internalArrays.scale);
61
- model.internalPolyData.getPointData().addArray(model.internalArrays.color);
62
- model.internalPolyData.getPointData().addArray(model.internalArrays.direction);
63
36
  /**
64
37
  * Set the shape for the glyph according to lineWidget state inputs
65
38
  */
66
39
 
40
+
67
41
  function createGlyph(shape) {
68
42
  var _representationToSour;
69
43
 
@@ -148,23 +122,12 @@ function vtkArrowHandleRepresentation(publicAPI, model) {
148
122
  model.displayActor.setMapper(model.displayMapper);
149
123
  model.displayMapper.setInputConnection(publicAPI.getOutputPort());
150
124
  publicAPI.addActor(model.displayActor);
151
- model.alwaysVisibleActors = [model.displayActor];
152
- model.mapper = vtkGlyph3DMapper.newInstance({
153
- orientationArray: 'direction',
154
- scaleArray: 'scale',
155
- colorByArrayName: 'color',
156
- scalarMode: ScalarMode.USE_POINT_FIELD_DATA
157
- });
158
- model.mapper.setOrientationModeToMatrix();
159
- model.mapper.setInputConnection(publicAPI.getOutputPort());
160
- model.actor = vtkActor.newInstance({
161
- parentProp: publicAPI
162
- });
163
- model.actor.setMapper(model.mapper);
164
- publicAPI.addActor(model.actor); // --------------------------------------------------------------------------
125
+ model.alwaysVisibleActors = [model.displayActor]; // --------------------------------------------------------------------------
165
126
 
166
127
  publicAPI.setGlyphResolution = macro.chain(publicAPI.setGlyphResolution, function (r) {
167
- return model.glyph.setPhiResolution(r) && model.glyph.setThetaResolution(r);
128
+ return model._pipeline.glyph.setPhiResolution(r);
129
+ }, function (r) {
130
+ return model._pipeline.glyph.setThetaResolution(r);
168
131
  }); // --------------------------------------------------------------------------
169
132
 
170
133
  function callbackProxy(coords) {
@@ -255,76 +218,32 @@ function vtkArrowHandleRepresentation(publicAPI, model) {
255
218
  return orientationRotation;
256
219
  }
257
220
 
258
- var superGetRepresentationStates = publicAPI.getRepresentationStates;
259
-
260
- publicAPI.getRepresentationStates = function () {
261
- var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : model.inputData[0];
262
- return superGetRepresentationStates(input).filter(function (state) {
263
- var _state$getOrigin, _state$isVisible;
221
+ function applyOrientation(polyData, states) {
222
+ model._pipeline.mapper.setOrientationArray('orientation');
264
223
 
265
- return ((_state$getOrigin = state.getOrigin) === null || _state$getOrigin === void 0 ? void 0 : _state$getOrigin.call(state)) && ((_state$isVisible = state.isVisible) === null || _state$isVisible === void 0 ? void 0 : _state$isVisible.call(state));
266
- });
267
- };
224
+ model._pipeline.mapper.setOrientationMode(OrientationModes.MATRIX);
268
225
 
269
- publicAPI.requestDataInternal = function (inData, outData) {
270
- var _model$internalArrays = model.internalArrays,
271
- points = _model$internalArrays.points,
272
- scale = _model$internalArrays.scale,
273
- color = _model$internalArrays.color,
274
- direction = _model$internalArrays.direction;
275
- var list = publicAPI.getRepresentationStates(inData[0]);
276
- var totalCount = list.length;
277
-
278
- if (color.getNumberOfValues() !== totalCount) {
279
- // Need to resize dataset
280
- points.setData(new Float32Array(3 * totalCount), 3);
281
- scale.setData(new Float32Array(totalCount));
282
- color.setData(new Float32Array(totalCount));
283
- direction.setData(new Float32Array(9 * totalCount));
284
- }
226
+ var orientation = allocateArray(polyData, 'orientation', states.length, 'Float32Array', 9).getData();
227
+ var defaultScale3 = [1, 1, 1];
285
228
 
286
- var typedArray = {
287
- points: points.getData(),
288
- scale: scale.getData(),
289
- color: color.getData(),
290
- direction: direction.getData()
291
- };
292
-
293
- for (var i = 0; i < totalCount; i++) {
294
- var state = list[i];
295
- var isActive = state.getActive();
296
- var scaleFactor = isActive ? model.activeScaleFactor : 1;
297
- var coord = state.getOrigin();
298
-
299
- if (coord) {
300
- typedArray.points[i * 3 + 0] = coord[0];
301
- typedArray.points[i * 3 + 1] = coord[1];
302
- typedArray.points[i * 3 + 2] = coord[2];
303
- var scale3 = state.getScale3 ? state.getScale3() : [1, 1, 1];
304
- scale3 = scale3.map(function (x) {
305
- return x === 0 ? 2 * model.defaultScale : 2 * x;
306
- });
307
- var rotation = getGlyphRotation(scale3);
308
- typedArray.direction.set(rotation, 9 * i);
309
- typedArray.scale[i] = scaleFactor * (state.getScale1 ? state.getScale1() : model.defaultScale);
310
-
311
- if (publicAPI.getScaleInPixels()) {
312
- typedArray.scale[i] *= publicAPI.getPixelWorldHeightAtCoord(coord);
313
- }
229
+ for (var i = 0; i < states.length; ++i) {
230
+ var _states$i$getScale, _states$i$getScale2, _states$i;
314
231
 
315
- typedArray.color[i] = model.useActiveColor && isActive ? model.activeColor : state.getColor();
316
- }
232
+ var scale3 = (_states$i$getScale = (_states$i$getScale2 = (_states$i = states[i]).getScale3) === null || _states$i$getScale2 === void 0 ? void 0 : _states$i$getScale2.call(_states$i)) !== null && _states$i$getScale !== void 0 ? _states$i$getScale : defaultScale3;
233
+ var rotation = getGlyphRotation(scale3);
234
+ orientation.set(rotation, 9 * i);
317
235
  }
236
+ }
318
237
 
319
- model.internalPolyData.modified();
320
- outData[0] = model.internalPolyData;
321
- };
238
+ publicAPI.setDirection(applyOrientation);
239
+ publicAPI.setNoOrientation(applyOrientation);
322
240
 
323
241
  publicAPI.requestData = function (inData, outData) {
324
242
  var _publicAPI$getReprese;
325
243
 
244
+ // FIXME: shape should NOT be mixin, but a representation property.
326
245
  var shape = (_publicAPI$getReprese = publicAPI.getRepresentationStates(inData[0])[0]) === null || _publicAPI$getReprese === void 0 ? void 0 : _publicAPI$getReprese.getShape();
327
- var shouldCreateGlyph = model.glyph == null;
246
+ var shouldCreateGlyph = model._pipeline.glyph == null;
328
247
 
329
248
  if (model.shape !== shape && Object.values(ShapeType).includes(shape)) {
330
249
  model.shape = shape;
@@ -332,11 +251,12 @@ function vtkArrowHandleRepresentation(publicAPI, model) {
332
251
  }
333
252
 
334
253
  if (shouldCreateGlyph && model.shape) {
335
- model.glyph = createGlyph(model.shape);
336
- model.mapper.setInputConnection(model.glyph.getOutputPort(), 1);
254
+ model._pipeline.glyph = createGlyph(model.shape);
255
+
256
+ model._pipeline.mapper.setInputConnection(model._pipeline.glyph.getOutputPort(), 1);
337
257
  }
338
258
 
339
- publicAPI.requestDataInternal(inData, outData);
259
+ return superClass.requestData(inData, outData);
340
260
  };
341
261
 
342
262
  publicAPI.updateActorVisibility = function () {
@@ -362,7 +282,6 @@ function vtkArrowHandleRepresentation(publicAPI, model) {
362
282
 
363
283
  function defaultValues(initialValues) {
364
284
  return _objectSpread({
365
- defaultScale: 1,
366
285
  faceCamera: null,
367
286
  orientation: [1, 0, 0],
368
287
  shape: ShapeType.SPHERE,
@@ -374,8 +293,7 @@ function defaultValues(initialValues) {
374
293
  function extend(publicAPI, model) {
375
294
  var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
376
295
  Object.assign(model, defaultValues(initialValues));
377
- vtkHandleRepresentation.extend(publicAPI, model, initialValues);
378
- macro.get(publicAPI, model, ['glyph', 'mapper', 'actor']);
296
+ vtkGlyphRepresentation.extend(publicAPI, model, initialValues);
379
297
  macro.setGetArray(publicAPI, model, ['visibilityFlagArray'], 2);
380
298
  macro.setGetArray(publicAPI, model, ['orientation'], 3);
381
299
  macro.setGetArray(publicAPI, model, ['viewMatrix'], 16);
@@ -1,195 +1,73 @@
1
- import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
1
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import macro from '../../macros.js';
3
- import vtkActor from '../../Rendering/Core/Actor.js';
4
3
  import vtkCircleSource from '../../Filters/Sources/CircleSource.js';
5
- import vtkContextRepresentation from './ContextRepresentation.js';
6
- import vtkDataArray from '../../Common/Core/DataArray.js';
7
- import vtkGlyph3DMapper from '../../Rendering/Core/Glyph3DMapper.js';
8
- import vtkMatrixBuilder from '../../Common/Core/MatrixBuilder.js';
9
- import vtkPolyData from '../../Common/DataModel/PolyData.js';
10
- import vtkWidgetRepresentation from './WidgetRepresentation.js';
11
- import { ScalarMode } from '../../Rendering/Core/Mapper/Constants.js';
12
- import { mat3, vec3 } from 'gl-matrix';
4
+ import vtkGlyphRepresentation from './GlyphRepresentation.js';
5
+ import { Behavior } from './WidgetRepresentation/Constants.js';
13
6
 
7
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
8
+
9
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
14
10
  // vtkCircleContextRepresentation methods
15
11
  // ----------------------------------------------------------------------------
16
12
 
17
13
  function vtkCircleContextRepresentation(publicAPI, model) {
18
14
  // Set our className
19
15
  model.classHierarchy.push('vtkCircleContextRepresentation'); // --------------------------------------------------------------------------
20
- // Internal polydata dataset
21
- // --------------------------------------------------------------------------
22
-
23
- model.internalPolyData = vtkPolyData.newInstance({
24
- mtime: 0
25
- });
26
- model.internalArrays = {
27
- points: model.internalPolyData.getPoints(),
28
- scale: vtkDataArray.newInstance({
29
- name: 'scale',
30
- numberOfComponents: 3,
31
- empty: true
32
- }),
33
- color: vtkDataArray.newInstance({
34
- name: 'color',
35
- numberOfComponents: 1,
36
- empty: true
37
- }),
38
- direction: vtkDataArray.newInstance({
39
- name: 'direction',
40
- numberOfComponents: 9,
41
- empty: true
42
- })
43
- };
44
- model.internalPolyData.getPointData().addArray(model.internalArrays.scale);
45
- model.internalPolyData.getPointData().addArray(model.internalArrays.color);
46
- model.internalPolyData.getPointData().addArray(model.internalArrays.direction); // --------------------------------------------------------------------------
47
16
  // Generic rendering pipeline
48
17
  // --------------------------------------------------------------------------
49
18
 
50
- model.pipelines = {
51
- circle: {
52
- source: publicAPI,
53
- glyph: vtkCircleSource.newInstance({
54
- resolution: model.glyphResolution,
55
- radius: 1,
56
- lines: model.drawBorder,
57
- face: model.drawFace
58
- }),
59
- mapper: vtkGlyph3DMapper.newInstance({
60
- orientationArray: 'direction',
61
- scaleArray: 'scale',
62
- scaleMode: vtkGlyph3DMapper.ScaleModes.SCALE_BY_COMPONENTS,
63
- colorByArrayName: 'color',
64
- scalarMode: ScalarMode.USE_POINT_FIELD_DATA
65
- }),
66
- actor: vtkActor.newInstance({
67
- pickable: false,
68
- _parentProp: publicAPI
69
- })
70
- }
71
- };
72
- model.pipelines.circle.actor.getProperty().setOpacity(0.2);
73
- model.pipelines.circle.mapper.setOrientationModeToMatrix();
74
- model.pipelines.circle.mapper.setResolveCoincidentTopology(true);
75
- model.pipelines.circle.mapper.setResolveCoincidentTopologyPolygonOffsetParameters(-1, -1);
76
- vtkWidgetRepresentation.connectPipeline(model.pipelines.circle);
77
- publicAPI.addActor(model.pipelines.circle.actor);
78
- model.transform = vtkMatrixBuilder.buildFromDegree(); // --------------------------------------------------------------------------
79
-
80
- publicAPI.setGlyphResolution = macro.chain(publicAPI.setGlyphResolution, function (r) {
81
- return model.pipelines.circle.glyph.setResolution(r);
82
- }); // --------------------------------------------------------------------------
19
+ model._pipeline.actor.getProperty().setOpacity(0.2);
83
20
 
84
- publicAPI.setDrawBorder = function (draw) {
85
- model.pipelines.circle.glyph.setLines(draw);
86
- }; // --------------------------------------------------------------------------
21
+ model._pipeline.mapper.setResolveCoincidentTopology(true);
87
22
 
23
+ model._pipeline.mapper.setRelativeCoincidentTopologyPolygonOffsetParameters(-1, -1); // --------------------------------------------------------------------------
88
24
 
89
- publicAPI.setDrawFace = function (draw) {
90
- model.pipelines.circle.glyph.setFace(draw);
91
- }; // --------------------------------------------------------------------------
92
25
 
26
+ publicAPI.setGlyphResolution = macro.chain(publicAPI.setGlyphResolution, model._pipeline.glyph.setResolution); // --------------------------------------------------------------------------
93
27
 
94
- publicAPI.setOpacity = function (opacity) {
95
- model.pipelines.circle.actor.getProperty().setOpacity(opacity);
96
- };
28
+ publicAPI.setDrawBorder = macro.chain(publicAPI.setDrawBorder, function (draw) {
29
+ return model._pipeline.glyph.setLines(draw);
30
+ }); // --------------------------------------------------------------------------
97
31
 
98
- var superGetRepresentationStates = publicAPI.getRepresentationStates;
99
-
100
- publicAPI.getRepresentationStates = function () {
101
- var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : model.inputData[0];
102
- return superGetRepresentationStates(input).filter(function (state) {
103
- var _state$getOrigin, _state$isVisible;
104
-
105
- return ((_state$getOrigin = state.getOrigin) === null || _state$getOrigin === void 0 ? void 0 : _state$getOrigin.call(state)) && ((_state$isVisible = state.isVisible) === null || _state$isVisible === void 0 ? void 0 : _state$isVisible.call(state));
106
- });
107
- }; // --------------------------------------------------------------------------
108
-
109
-
110
- publicAPI.requestData = function (inData, outData) {
111
- var _model$internalArrays = model.internalArrays,
112
- points = _model$internalArrays.points,
113
- scale = _model$internalArrays.scale,
114
- color = _model$internalArrays.color,
115
- direction = _model$internalArrays.direction;
116
- var list = publicAPI.getRepresentationStates(inData[0]);
117
- var totalCount = list.length;
118
-
119
- if (color.getNumberOfValues() !== totalCount) {
120
- // Need to resize dataset
121
- points.setData(new Float32Array(3 * totalCount));
122
- scale.setData(new Float32Array(3 * totalCount));
123
- direction.setData(new Float32Array(9 * totalCount));
124
- color.setData(new Float32Array(totalCount));
125
- }
126
-
127
- var typedArray = {
128
- points: points.getData(),
129
- scale: scale.getData(),
130
- color: color.getData(),
131
- direction: direction.getData()
132
- };
133
-
134
- for (var i = 0; i < totalCount; i++) {
135
- var state = list[i];
136
- var isActive = state.getActive();
137
- var scaleFactor = isActive ? model.activeScaleFactor : 1;
138
- var coord = state.getOrigin();
139
- typedArray.points[i * 3 + 0] = coord[0];
140
- typedArray.points[i * 3 + 1] = coord[1];
141
- typedArray.points[i * 3 + 2] = coord[2];
142
- var right = state.getRight ? state.getRight() : [1, 0, 0];
143
- var up = state.getUp ? state.getUp() : [0, 1, 0];
144
- var dir = state.getDirection ? state.getDirection() : [0, 0, 1];
145
- var rotation = [].concat(_toConsumableArray(right), _toConsumableArray(up), _toConsumableArray(dir));
146
- var scale3 = state.getScale3 ? state.getScale3() : [1, 1, 1];
147
- scale3 = scale3.map(function (x) {
148
- return x === 0 ? 2 * model.defaultScale : 2 * x;
149
- }); // Reorient rotation and scale3 since the circle source faces X instead of Z
150
-
151
- var reorientCircleSource4 = vtkMatrixBuilder.buildFromDegree().rotateFromDirections([1, 0, 0], [0, 0, 1]) // from X to Z
152
- .getMatrix();
153
- var reorientCircleSource3 = [];
154
- mat3.fromMat4(reorientCircleSource3, reorientCircleSource4);
155
- vec3.transformMat4(scale3, scale3, reorientCircleSource4);
156
- mat3.multiply(rotation, rotation, reorientCircleSource3);
157
-
158
- for (var j = 0; j < 9; j += 1) {
159
- typedArray.direction[i * 9 + j] = rotation[j];
160
- }
161
-
162
- var scale1 = (state.getScale1 ? state.getScale1() : model.defaultScale) / 2;
163
- typedArray.scale[i * 3 + 0] = scale1 * scaleFactor * scale3[0];
164
- typedArray.scale[i * 3 + 1] = scale1 * scaleFactor * scale3[1];
165
- typedArray.scale[i * 3 + 2] = scale1 * scaleFactor * scale3[2];
166
- typedArray.color[i] = model.useActiveColor && isActive ? model.activeColor : state.getColor();
167
- }
168
-
169
- model.internalPolyData.modified();
170
- outData[0] = model.internalPolyData;
171
- }; // --------------------------------------------------------------------------
172
- // Initialization
173
- // --------------------------------------------------------------------------
32
+ publicAPI.setDrawFace = macro.chain(publicAPI.setDrawFace, function (draw) {
33
+ return model._pipeline.glyph.setFace(draw);
34
+ }); // --------------------------------------------------------------------------
174
35
 
36
+ publicAPI.setOpacity = function (opacity) {
37
+ model._pipeline.actor.getProperty().setOpacity(opacity);
38
+ };
175
39
  } // ----------------------------------------------------------------------------
176
40
  // Object factory
177
41
  // ----------------------------------------------------------------------------
178
42
 
179
43
 
180
- var DEFAULT_VALUES = {
181
- glyphResolution: 32,
182
- defaultScale: 1,
183
- drawBorder: false,
184
- drawFace: true
185
- }; // ----------------------------------------------------------------------------
44
+ function defaultValues(initialValues) {
45
+ var _initialValues$pipeli, _initialValues$pipeli2, _initialValues$glyphR, _initialValues$drawBo, _initialValues$drawFa;
46
+
47
+ return _objectSpread(_objectSpread({
48
+ behavior: Behavior.CONTEXT,
49
+ glyphResolution: 32,
50
+ drawBorder: false,
51
+ drawFace: true
52
+ }, initialValues), {}, {
53
+ _pipeline: _objectSpread({
54
+ glyph: (_initialValues$pipeli = initialValues === null || initialValues === void 0 ? void 0 : (_initialValues$pipeli2 = initialValues.pipeline) === null || _initialValues$pipeli2 === void 0 ? void 0 : _initialValues$pipeli2.glyph) !== null && _initialValues$pipeli !== void 0 ? _initialValues$pipeli : vtkCircleSource.newInstance({
55
+ resolution: (_initialValues$glyphR = initialValues.glyphResolution) !== null && _initialValues$glyphR !== void 0 ? _initialValues$glyphR : 32,
56
+ radius: 1,
57
+ lines: (_initialValues$drawBo = initialValues.drawBorder) !== null && _initialValues$drawBo !== void 0 ? _initialValues$drawBo : false,
58
+ face: (_initialValues$drawFa = initialValues.drawFace) !== null && _initialValues$drawFa !== void 0 ? _initialValues$drawFa : true,
59
+ direction: [0, 0, 1]
60
+ })
61
+ }, initialValues === null || initialValues === void 0 ? void 0 : initialValues.pipeline)
62
+ });
63
+ } // ----------------------------------------------------------------------------
64
+
186
65
 
187
66
  function extend(publicAPI, model) {
188
67
  var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
189
- Object.assign(model, DEFAULT_VALUES, initialValues);
190
- vtkContextRepresentation.extend(publicAPI, model, initialValues);
191
- macro.setGet(publicAPI, model, ['glyphResolution', 'defaultScale']);
192
- macro.get(publicAPI, model, ['glyph', 'mapper', 'actor']); // Object specific methods
68
+ vtkGlyphRepresentation.extend(publicAPI, model, defaultValues(initialValues));
69
+ macro.setGet(publicAPI, model, ['glyphResolution', 'drawFace', 'drawBorder']);
70
+ macro.get(publicAPI, model._pipeline, ['glyph', 'mapper', 'actor']); // Object specific methods
193
71
 
194
72
  vtkCircleContextRepresentation(publicAPI, model);
195
73
  } // ----------------------------------------------------------------------------
@@ -16,9 +16,6 @@ function vtkContextRepresentation(publicAPI, model) {
16
16
 
17
17
 
18
18
  var DEFAULT_VALUES = {
19
- activeScaleFactor: 1.2,
20
- activeColor: 1,
21
- useActiveColor: true,
22
19
  behavior: Behavior.CONTEXT,
23
20
  pickable: false,
24
21
  dragable: true
@@ -3,6 +3,7 @@ import vtkActor from '../../Rendering/Core/Actor.js';
3
3
  import vtkContextRepresentation from './ContextRepresentation.js';
4
4
  import vtkMapper from '../../Rendering/Core/Mapper.js';
5
5
  import vtkPolyData from '../../Common/DataModel/PolyData.js';
6
+ import { allocateArray } from './WidgetRepresentation.js';
6
7
  import { Behavior } from './WidgetRepresentation/Constants.js';
7
8
  import { RenderingTypes } from '../Core/WidgetManager/Constants.js';
8
9
 
@@ -23,21 +24,20 @@ function vtkConvexFaceContextRepresentation(publicAPI, model) {
23
24
  model.internalPolyData.getPoints().setData(model.points, 3);
24
25
  model.internalPolyData.getPolys().setData(model.cells);
25
26
 
26
- function allocateSize(size) {
27
- if (model.cells.length - 1 !== size) {
28
- model.points = new Float32Array(size * 3);
29
- model.cells = new Uint8Array(size + 1);
30
- model.cells[0] = size;
27
+ function allocateSize(polyData, size) {
28
+ var points = allocateArray(polyData, 'points', size).getData();
29
+ var oldCellsSize = polyData.getPolys().getNumberOfValues();
30
+ var cells = allocateArray(polyData, 'polys', size + 1).getData();
31
+
32
+ if (oldCellsSize !== cells.length) {
33
+ cells[0] = size;
31
34
 
32
35
  for (var i = 0; i < size; i++) {
33
- model.cells[i + 1] = i;
36
+ cells[i + 1] = i;
34
37
  }
35
-
36
- model.internalPolyData.getPoints().setData(model.points, 3);
37
- model.internalPolyData.getPolys().setData(model.cells);
38
38
  }
39
39
 
40
- return model.points;
40
+ return points;
41
41
  } // --------------------------------------------------------------------------
42
42
  // Generic rendering pipeline
43
43
  // --------------------------------------------------------------------------
@@ -59,7 +59,7 @@ function vtkConvexFaceContextRepresentation(publicAPI, model) {
59
59
  var validState = list.filter(function (state) {
60
60
  return state.getOrigin();
61
61
  });
62
- var points = allocateSize(validState.length);
62
+ var points = allocateSize(allocateSize, validState.length);
63
63
 
64
64
  for (var i = 0; i < validState.length; i++) {
65
65
  var coords = validState[i].getOrigin();
@@ -4,6 +4,8 @@ import vtkActor from '../../Rendering/Core/Actor.js';
4
4
  import vtkContextRepresentation from './ContextRepresentation.js';
5
5
  import vtkMapper from '../../Rendering/Core/Mapper.js';
6
6
  import vtkPolyData from '../../Common/DataModel/PolyData.js';
7
+ import { origin } from './GlyphRepresentation.js';
8
+ import { allocateArray } from './WidgetRepresentation.js';
7
9
 
8
10
  var vtkErrorMacro = macro.vtkErrorMacro; // prettier-ignore
9
11
 
@@ -25,9 +27,8 @@ function vtkCroppingOutlineRepresentation(publicAPI, model) {
25
27
  model.internalPolyData = vtkPolyData.newInstance({
26
28
  mtime: 0
27
29
  });
28
- model.points = new Float32Array(8 * 3);
29
- model.internalPolyData.getPoints().setData(model.points, 3);
30
- model.internalPolyData.getLines().setData(Uint16Array.from(OUTLINE_ARRAY)); // --------------------------------------------------------------------------
30
+ allocateArray(model.internalPolyData, 'lines', OUTLINE_ARRAY.length).getData().set(OUTLINE_ARRAY);
31
+ var applyOrigin = origin(); // --------------------------------------------------------------------------
31
32
  // Generic rendering pipeline
32
33
  // --------------------------------------------------------------------------
33
34
 
@@ -50,15 +51,7 @@ function vtkCroppingOutlineRepresentation(publicAPI, model) {
50
51
  });
51
52
 
52
53
  if (list.length === 8) {
53
- var pi = 0;
54
-
55
- for (var i = 0; i < list.length; i++) {
56
- var pt = list[i].getOrigin();
57
- model.points[pi++] = pt[0];
58
- model.points[pi++] = pt[1];
59
- model.points[pi++] = pt[2];
60
- }
61
-
54
+ applyOrigin(model.internalPolyData, list);
62
55
  model.internalPolyData.getPoints().modified();
63
56
  model.internalPolyData.modified();
64
57
  outData[0] = model.internalPolyData;