@kitware/vtk.js 23.4.2 → 24.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 (153) hide show
  1. package/BREAKING_CHANGES.md +33 -0
  2. package/Common/Core/DataArray.js +4 -0
  3. package/Common/Core/Math/index.js +2 -2
  4. package/Common/Core/Math.js +1 -1
  5. package/Common/DataModel/BoundingBox.js +3 -8
  6. package/Common/DataModel/DataSetAttributes/FieldData.js +9 -5
  7. package/Common/DataModel/ITKHelper.js +2 -346
  8. package/Common/DataModel/ImageData.d.ts +23 -6
  9. package/Common/DataModel/ImageData.js +8 -1
  10. package/Common/DataModel/PolyData.d.ts +8 -1
  11. package/Common/DataModel/PolyData.js +5 -3
  12. package/Common/DataModel/Triangle.js +217 -2
  13. package/Common/Transform/LandmarkTransform.js +1 -1
  14. package/Filters/General/OBBTree/OBBNode.js +82 -0
  15. package/Filters/General/OBBTree/helper.js +92 -0
  16. package/Filters/General/OBBTree.js +1249 -0
  17. package/Filters/General/WindowedSincPolyDataFilter.js +1 -1
  18. package/Filters/General.js +2 -0
  19. package/Filters/Sources/CircleSource.js +1 -1
  20. package/Filters/Sources/PointSource.js +1 -1
  21. package/Filters/Texture/TextureMapToPlane.js +1 -1
  22. package/IO/Core/DataAccessHelper.d.ts +0 -6
  23. package/Interaction/Manipulators/KeyboardCameraManipulator.js +1 -1
  24. package/Interaction/Manipulators/MouseCameraTrackballRollManipulator.js +1 -1
  25. package/Interaction/Manipulators/MouseCameraTrackballRotateManipulator.js +1 -1
  26. package/Interaction/Manipulators/MouseCameraUnicamManipulator.js +1 -1
  27. package/Interaction/Manipulators/MouseCameraUnicamRotateManipulator.js +1 -1
  28. package/Interaction/Style/InteractorStyleImage.js +3 -3
  29. package/Interaction/Style/InteractorStyleMPRSlice.js +12 -6
  30. package/Interaction/Style/InteractorStyleManipulator.js +42 -28
  31. package/Interaction/Style/InteractorStyleRemoteMouse.js +32 -14
  32. package/Interaction/Style/InteractorStyleTrackballCamera.js +7 -7
  33. package/Interaction/Widgets/OrientationMarkerWidget.js +18 -13
  34. package/Interaction/Widgets/PiecewiseGaussianWidget.js +1 -1
  35. package/Interaction/Widgets.js +1 -35
  36. package/Proxy/Core/View2DProxy.js +1 -1
  37. package/Rendering/Core/ColorTransferFunction.js +1 -1
  38. package/Rendering/Core/Coordinate.js +1 -1
  39. package/Rendering/Core/CubeAxesActor.js +1 -1
  40. package/Rendering/Core/Glyph3DMapper.js +1 -1
  41. package/Rendering/Core/ImageMapper.js +1 -1
  42. package/Rendering/Core/InteractorObserver.js +11 -10
  43. package/Rendering/Core/InteractorStyle.js +9 -4
  44. package/Rendering/Core/Mapper.js +1 -1
  45. package/Rendering/Core/Prop.js +6 -4
  46. package/Rendering/Core/Prop3D.js +1 -1
  47. package/Rendering/Core/RenderWindowInteractor.js +24 -17
  48. package/Rendering/Core/Renderer.js +24 -19
  49. package/Rendering/Core/ScalarBarActor.js +1 -1
  50. package/Rendering/Core/Viewport.js +1 -1
  51. package/Rendering/Core/VolumeMapper.js +1 -1
  52. package/Rendering/OpenGL/Actor.js +2 -2
  53. package/Rendering/OpenGL/Actor2D.js +2 -2
  54. package/Rendering/OpenGL/BufferObject.js +6 -5
  55. package/Rendering/OpenGL/Camera.js +3 -3
  56. package/Rendering/OpenGL/CellArrayBufferObject.js +1 -1
  57. package/Rendering/OpenGL/Framebuffer.js +13 -12
  58. package/Rendering/OpenGL/Glyph3DMapper.js +10 -8
  59. package/Rendering/OpenGL/HardwareSelector.js +35 -25
  60. package/Rendering/OpenGL/ImageMapper.js +51 -45
  61. package/Rendering/OpenGL/ImageSlice.js +2 -2
  62. package/Rendering/OpenGL/PixelSpaceCallbackMapper.js +4 -2
  63. package/Rendering/OpenGL/PolyDataMapper.js +14 -11
  64. package/Rendering/OpenGL/PolyDataMapper2D.js +17 -16
  65. package/Rendering/OpenGL/Renderer.js +11 -7
  66. package/Rendering/OpenGL/ReplacementShaderMapper.js +1 -1
  67. package/Rendering/OpenGL/ScalarBarActor.js +2 -2
  68. package/Rendering/OpenGL/ShaderCache.js +7 -5
  69. package/Rendering/OpenGL/Skybox.js +11 -9
  70. package/Rendering/OpenGL/SphereMapper.js +2 -2
  71. package/Rendering/OpenGL/StickMapper.js +2 -2
  72. package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D/pingpong.js +13 -12
  73. package/Rendering/OpenGL/SurfaceLIC/LineIntegralConvolution2D.js +11 -9
  74. package/Rendering/OpenGL/SurfaceLIC/SurfaceLICInterface.js +19 -12
  75. package/Rendering/OpenGL/SurfaceLIC/SurfaceLICMapper.js +9 -6
  76. package/Rendering/OpenGL/Texture.js +44 -31
  77. package/Rendering/OpenGL/VertexArrayObject.js +7 -7
  78. package/Rendering/OpenGL/Volume.js +3 -2
  79. package/Rendering/OpenGL/VolumeMapper.js +30 -26
  80. package/Rendering/OpenGL/glsl/vtkVolumeFS.glsl.js +1 -1
  81. package/Rendering/SceneGraph/ViewNode.js +8 -7
  82. package/Rendering/WebGPU/Renderer.js +18 -10
  83. package/Widgets/Core/AbstractWidget.js +5 -4
  84. package/Widgets/Core/AbstractWidgetFactory.js +2 -1
  85. package/Widgets/Core/WidgetManager.js +66 -49
  86. package/Widgets/Manipulators/LineManipulator.js +1 -1
  87. package/Widgets/Representations/CircleContextRepresentation.js +1 -1
  88. package/Widgets/Representations/ImplicitPlaneRepresentation.js +5 -5
  89. package/Widgets/Representations/PolyLineRepresentation.js +1 -1
  90. package/Widgets/Representations/ResliceCursorContextRepresentation.js +7 -7
  91. package/Widgets/SVG/SVGLandmarkRepresentation/Constants.js +2 -2
  92. package/Widgets/SVG/SVGLandmarkRepresentation.js +21 -8
  93. package/Widgets/SVG/SVGRepresentation.js +1 -1
  94. package/Widgets/Widgets3D/AngleWidget/behavior.js +14 -6
  95. package/Widgets/Widgets3D/DistanceWidget/behavior.js +14 -6
  96. package/Widgets/Widgets3D/EllipseWidget.js +0 -1
  97. package/Widgets/Widgets3D/ImageCroppingWidget/behavior.js +6 -2
  98. package/Widgets/Widgets3D/ImplicitPlaneWidget.js +4 -2
  99. package/Widgets/Widgets3D/LabelWidget/behavior.js +138 -0
  100. package/Widgets/Widgets3D/LabelWidget/state.js +22 -0
  101. package/Widgets/Widgets3D/LabelWidget.js +79 -0
  102. package/Widgets/Widgets3D/LineWidget/behavior.js +18 -9
  103. package/Widgets/Widgets3D/LineWidget/helpers.js +1 -1
  104. package/Widgets/Widgets3D/LineWidget.js +0 -1
  105. package/Widgets/Widgets3D/PaintWidget/behavior.js +5 -3
  106. package/Widgets/Widgets3D/PolyLineWidget/behavior.js +18 -8
  107. package/Widgets/Widgets3D/RectangleWidget.js +0 -1
  108. package/Widgets/Widgets3D/ResliceCursorWidget/behavior.js +1 -1
  109. package/Widgets/Widgets3D/ResliceCursorWidget/helpers.js +1 -1
  110. package/Widgets/Widgets3D/ResliceCursorWidget.js +1 -1
  111. package/Widgets/Widgets3D/ShapeWidget/behavior.js +18 -11
  112. package/Widgets/Widgets3D/SplineWidget/behavior.js +33 -21
  113. package/index.d.ts +1 -2
  114. package/interfaces.d.ts +16 -3
  115. package/macros.d.ts +26 -1
  116. package/macros.js +51 -19
  117. package/package.json +1 -1
  118. package/types.d.ts +1 -0
  119. package/Interaction/Widgets/AbstractWidget.js +0 -104
  120. package/Interaction/Widgets/DistanceRepresentation.js +0 -116
  121. package/Interaction/Widgets/DistanceWidget.js +0 -77
  122. package/Interaction/Widgets/HandleRepresentation/Constants.js +0 -12
  123. package/Interaction/Widgets/HandleRepresentation.js +0 -100
  124. package/Interaction/Widgets/HandleWidget/Constants.js +0 -9
  125. package/Interaction/Widgets/HandleWidget.js +0 -194
  126. package/Interaction/Widgets/ImageCroppingRegionsRepresentation.js +0 -233
  127. package/Interaction/Widgets/ImageCroppingRegionsWidget/Constants.js +0 -16
  128. package/Interaction/Widgets/ImageCroppingRegionsWidget.js +0 -573
  129. package/Interaction/Widgets/LabelRepresentation/Constants.js +0 -17
  130. package/Interaction/Widgets/LabelRepresentation.js +0 -325
  131. package/Interaction/Widgets/LabelWidget.js +0 -65
  132. package/Interaction/Widgets/LineRepresentation/Constants.js +0 -21
  133. package/Interaction/Widgets/LineRepresentation.js +0 -498
  134. package/Interaction/Widgets/LineWidget/Constants.js +0 -11
  135. package/Interaction/Widgets/LineWidget.js +0 -296
  136. package/Interaction/Widgets/PointPlacer.js +0 -51
  137. package/Interaction/Widgets/ResliceCursor/ResliceCursor/Constants.js +0 -10
  138. package/Interaction/Widgets/ResliceCursor/ResliceCursor.js +0 -269
  139. package/Interaction/Widgets/ResliceCursor/ResliceCursorActor/Constants.js +0 -10
  140. package/Interaction/Widgets/ResliceCursor/ResliceCursorActor.js +0 -146
  141. package/Interaction/Widgets/ResliceCursor/ResliceCursorLineRepresentation.js +0 -332
  142. package/Interaction/Widgets/ResliceCursor/ResliceCursorPolyDataAlgorithm.js +0 -134
  143. package/Interaction/Widgets/ResliceCursor/ResliceCursorRepresentation/Constants.js +0 -16
  144. package/Interaction/Widgets/ResliceCursor/ResliceCursorRepresentation.js +0 -371
  145. package/Interaction/Widgets/ResliceCursor/ResliceCursorWidget/Constants.js +0 -10
  146. package/Interaction/Widgets/ResliceCursor/ResliceCursorWidget.js +0 -157
  147. package/Interaction/Widgets/SphereHandleRepresentation.js +0 -370
  148. package/Interaction/Widgets/WidgetRepresentation.js +0 -121
  149. package/Widgets/Representations/SphereContextRepresentation.js +0 -131
  150. package/Widgets/Widgets3D/SphereWidget/behavior.js +0 -177
  151. package/Widgets/Widgets3D/SphereWidget/state.js +0 -45
  152. package/Widgets/Widgets3D/SphereWidget.d.ts +0 -50
  153. package/Widgets/Widgets3D/SphereWidget.js +0 -62
@@ -61,15 +61,15 @@ function vtkViewNode(publicAPI, model) {
61
61
  };
62
62
 
63
63
  publicAPI.getFirstAncestorOfType = function (type) {
64
- if (!model.parent) {
64
+ if (!model._parent) {
65
65
  return null;
66
66
  }
67
67
 
68
- if (model.parent.isA(type)) {
69
- return model.parent;
68
+ if (model._parent.isA(type)) {
69
+ return model._parent;
70
70
  }
71
71
 
72
- return model.parent.getFirstAncestorOfType(type);
72
+ return model._parent.getFirstAncestorOfType(type);
73
73
  };
74
74
 
75
75
  publicAPI.addMissingNode = function (dobj) {
@@ -188,7 +188,7 @@ function vtkViewNode(publicAPI, model) {
188
188
 
189
189
 
190
190
  var DEFAULT_VALUES = {
191
- parent: null,
191
+ // _parent: null,
192
192
  renderable: null,
193
193
  myFactory: null,
194
194
  children: [],
@@ -203,8 +203,9 @@ function extend(publicAPI, model) {
203
203
  macro.event(publicAPI, model, 'event');
204
204
  model._renderableChildMap = new Map();
205
205
  macro.get(publicAPI, model, ['visited']);
206
- macro.setGet(publicAPI, model, ['parent', 'renderable', 'myFactory']);
207
- macro.getArray(publicAPI, model, ['children']); // Object methods
206
+ macro.setGet(publicAPI, model, ['_parent', 'renderable', 'myFactory']);
207
+ macro.getArray(publicAPI, model, ['children']);
208
+ macro.moveToProtected(publicAPI, model, ['parent']); // Object methods
208
209
 
209
210
  vtkViewNode(publicAPI, model);
210
211
  } // ----------------------------------------------------------------------------
@@ -116,7 +116,7 @@ function vtkWebGPURenderer(publicAPI, model) {
116
116
  // has the camera changed?
117
117
  var utime = model.UBO.getSendTime();
118
118
 
119
- if (model.parent.getMTime() > utime || publicAPI.getMTime() > utime || model.camera.getMTime() > utime || model.renderable.getMTime() > utime) {
119
+ if (model._parent.getMTime() > utime || publicAPI.getMTime() > utime || model.camera.getMTime() > utime || model.renderable.getMTime() > utime) {
120
120
  var keyMats = model.webgpuCamera.getKeyMatrices(publicAPI);
121
121
  model.UBO.setArray('WCVCMatrix', keyMats.wcvc);
122
122
  model.UBO.setArray('SCPCMatrix', keyMats.scpc);
@@ -127,7 +127,9 @@ function vtkWebGPURenderer(publicAPI, model) {
127
127
  var tsize = publicAPI.getYInvertedTiledSizeAndOrigin();
128
128
  model.UBO.setArray('viewportSize', [tsize.usize, tsize.vsize]);
129
129
  model.UBO.setValue('cameraParallel', model.camera.getParallelProjection());
130
- var device = model.parent.getDevice();
130
+
131
+ var device = model._parent.getDevice();
132
+
131
133
  model.UBO.sendIfNeeded(device);
132
134
  }
133
135
  };
@@ -148,7 +150,7 @@ function vtkWebGPURenderer(publicAPI, model) {
148
150
  if (prepass) {
149
151
  // clear last pipelines
150
152
  model.pipelineCallbacks = [];
151
- model.renderEncoder.begin(model.parent.getCommandEncoder());
153
+ model.renderEncoder.begin(model._parent.getCommandEncoder());
152
154
  publicAPI.updateUBO();
153
155
  } else {
154
156
  publicAPI.scissorAndViewport(model.renderEncoder);
@@ -174,7 +176,7 @@ function vtkWebGPURenderer(publicAPI, model) {
174
176
  return;
175
177
  }
176
178
 
177
- var device = model.parent.getDevice();
179
+ var device = model._parent.getDevice();
178
180
 
179
181
  if (!model.clearFSQ) {
180
182
  model.clearFSQ = vtkWebGPUFullScreenQuad.newInstance();
@@ -198,7 +200,7 @@ function vtkWebGPURenderer(publicAPI, model) {
198
200
  if (prepass) {
199
201
  // clear last pipelines
200
202
  model.pipelineCallbacks = [];
201
- model.renderEncoder.begin(model.parent.getCommandEncoder());
203
+ model.renderEncoder.begin(model._parent.getCommandEncoder());
202
204
  } else {
203
205
  publicAPI.scissorAndViewport(model.renderEncoder); // loop over registered pipelines
204
206
 
@@ -221,7 +223,7 @@ function vtkWebGPURenderer(publicAPI, model) {
221
223
  if (prepass) {
222
224
  // clear last pipelines
223
225
  model.pipelineCallbacks = [];
224
- model.renderEncoder.begin(model.parent.getCommandEncoder());
226
+ model.renderEncoder.begin(model._parent.getCommandEncoder());
225
227
  } else {
226
228
  publicAPI.scissorAndViewport(model.renderEncoder); // loop over registered pipelines
227
229
 
@@ -241,7 +243,8 @@ function vtkWebGPURenderer(publicAPI, model) {
241
243
  };
242
244
 
243
245
  publicAPI.getAspectRatio = function () {
244
- var size = model.parent.getSizeByReference();
246
+ var size = model._parent.getSizeByReference();
247
+
245
248
  var viewport = model.renderable.getViewportByReference();
246
249
  return size[0] * (viewport[2] - viewport[0]) / ((viewport[3] - viewport[1]) * size[1]);
247
250
  };
@@ -252,7 +255,9 @@ function vtkWebGPURenderer(publicAPI, model) {
252
255
 
253
256
  publicAPI.getYInvertedTiledSizeAndOrigin = function () {
254
257
  var res = publicAPI.getTiledSizeAndOrigin();
255
- var size = model.parent.getSizeByReference();
258
+
259
+ var size = model._parent.getSizeByReference();
260
+
256
261
  res.lowerLeftV = size[1] - res.vsize - res.lowerLeftV;
257
262
  return res;
258
263
  };
@@ -266,16 +271,19 @@ function vtkWebGPURenderer(publicAPI, model) {
266
271
  var vpu = vport[0] - tileViewPort[0];
267
272
  var vpv = vport[1] - tileViewPort[1]; // store the result as a pixel value
268
273
 
269
- var ndvp = model.parent.normalizedDisplayToDisplay(vpu, vpv);
274
+ var ndvp = model._parent.normalizedDisplayToDisplay(vpu, vpv);
275
+
270
276
  var lowerLeftU = Math.round(ndvp[0]);
271
277
  var lowerLeftV = Math.round(ndvp[1]); // find the upper right corner of the viewport, taking into account the
272
278
  // lower left boundary of this tile
273
279
 
274
280
  var vpu2 = vport[2] - tileViewPort[0];
275
281
  var vpv2 = vport[3] - tileViewPort[1];
276
- var ndvp2 = model.parent.normalizedDisplayToDisplay(vpu2, vpv2); // now compute the size of the intersection of the viewport with the
282
+
283
+ var ndvp2 = model._parent.normalizedDisplayToDisplay(vpu2, vpv2); // now compute the size of the intersection of the viewport with the
277
284
  // current tile
278
285
 
286
+
279
287
  var usize = Math.round(ndvp2[0]) - lowerLeftU;
280
288
  var vsize = Math.round(ndvp2[1]) - lowerLeftV;
281
289
 
@@ -87,8 +87,8 @@ function vtkAbstractWidget(publicAPI, model) {
87
87
  };
88
88
 
89
89
  publicAPI.getViewWidgets = function () {
90
- return model.factory.getViewIds().map(function (viewId) {
91
- return model.factory.getWidgetForView({
90
+ return model._factory.getViewIds().map(function (viewId) {
91
+ return model._factory.getWidgetForView({
92
92
  viewId: viewId
93
93
  });
94
94
  });
@@ -110,7 +110,7 @@ var DEFAULT_VALUES = {
110
110
  * @param {*} publicAPI public methods to populate
111
111
  * @param {*} model internal values to populate
112
112
  * @param {object} initialValues Contains at least
113
- * {viewType, renderer, camera, openGLRenderWindow, factory}
113
+ * {viewType, _renderer, _camera, _openGLRenderWindow, _factory}
114
114
  */
115
115
 
116
116
  function extend(publicAPI, model) {
@@ -118,8 +118,9 @@ function extend(publicAPI, model) {
118
118
  Object.assign(model, DEFAULT_VALUES, initialValues);
119
119
  vtkProp.extend(publicAPI, model, initialValues);
120
120
  vtkInteractorObserver.extend(publicAPI, model, initialValues);
121
- macro.setGet(publicAPI, model, ['contextVisibility', 'handleVisibility', 'widgetManager']);
121
+ macro.setGet(publicAPI, model, ['contextVisibility', 'handleVisibility', '_widgetManager']);
122
122
  macro.get(publicAPI, model, ['representations', 'widgetState']);
123
+ macro.moveToProtected(publicAPI, model, ['widgetManager']);
123
124
  macro.event(publicAPI, model, 'ActivateHandle');
124
125
  vtkAbstractWidget(publicAPI, model);
125
126
  } // ----------------------------------------------------------------------------
@@ -48,6 +48,7 @@ function vtkAbstractWidgetFactory(publicAPI, model) {
48
48
  apiSpecificRenderWindow: apiSpecificRenderWindow,
49
49
  factory: publicAPI
50
50
  });
51
+ macro.moveToProtected(widgetPublicAPI, widgetModel, ['renderer', 'camera', 'apiSpecificRenderWindow', 'factory']);
51
52
  macro.safeArrays(widgetModel);
52
53
  vtkAbstractWidget.extend(widgetPublicAPI, widgetModel, initialValues); // Create representations for that view
53
54
 
@@ -60,7 +61,7 @@ function vtkAbstractWidgetFactory(publicAPI, model) {
60
61
  labels = _ref2.labels,
61
62
  initialValues = _ref2.initialValues;
62
63
  return builder.newInstance(_objectSpread(_objectSpread({
63
- parentProp: widgetPublicAPI,
64
+ _parentProp: widgetPublicAPI,
64
65
  labels: labels
65
66
  }, initialValues), widgetInitialValues));
66
67
  });
@@ -92,8 +92,10 @@ function vtkWidgetManager(publicAPI, model) {
92
92
  var pendingSvgRenders = new WeakMap();
93
93
 
94
94
  function enableSvgLayer() {
95
- var container = model.apiSpecificRenderWindow.getReferenceByName('el');
96
- var canvas = model.apiSpecificRenderWindow.getCanvas();
95
+ var container = model._apiSpecificRenderWindow.getReferenceByName('el');
96
+
97
+ var canvas = model._apiSpecificRenderWindow.getCanvas();
98
+
97
99
  container.insertBefore(model.svgRoot, canvas.nextSibling);
98
100
  var containerStyles = window.getComputedStyle(container);
99
101
 
@@ -103,7 +105,8 @@ function vtkWidgetManager(publicAPI, model) {
103
105
  }
104
106
 
105
107
  function disableSvgLayer() {
106
- var container = model.apiSpecificRenderWindow.getReferenceByName('el');
108
+ var container = model._apiSpecificRenderWindow.getReferenceByName('el');
109
+
107
110
  container.removeChild(model.svgRoot);
108
111
  }
109
112
 
@@ -118,10 +121,10 @@ function vtkWidgetManager(publicAPI, model) {
118
121
  }
119
122
 
120
123
  function setSvgSize() {
121
- var _model$apiSpecificRen = model.apiSpecificRenderWindow.getSize(),
122
- _model$apiSpecificRen2 = _slicedToArray(_model$apiSpecificRen, 2),
123
- cwidth = _model$apiSpecificRen2[0],
124
- cheight = _model$apiSpecificRen2[1];
124
+ var _model$_apiSpecificRe = model._apiSpecificRenderWindow.getSize(),
125
+ _model$_apiSpecificRe2 = _slicedToArray(_model$_apiSpecificRe, 2),
126
+ cwidth = _model$_apiSpecificRe2[0],
127
+ cheight = _model$_apiSpecificRe2[1];
125
128
 
126
129
  var ratio = window.devicePixelRatio || 1;
127
130
  var bwidth = String(cwidth / ratio);
@@ -215,17 +218,17 @@ function vtkWidgetManager(publicAPI, model) {
215
218
 
216
219
 
217
220
  function updateDisplayScaleParams() {
218
- var apiSpecificRenderWindow = model.apiSpecificRenderWindow,
219
- camera = model.camera,
220
- renderer = model.renderer;
221
+ var _apiSpecificRenderWindow = model._apiSpecificRenderWindow,
222
+ _camera = model._camera,
223
+ _renderer = model._renderer;
221
224
 
222
- if (renderer && apiSpecificRenderWindow && camera) {
223
- var _apiSpecificRenderWin = apiSpecificRenderWindow.getSize(),
225
+ if (_renderer && _apiSpecificRenderWindow && _camera) {
226
+ var _apiSpecificRenderWin = _apiSpecificRenderWindow.getSize(),
224
227
  _apiSpecificRenderWin2 = _slicedToArray(_apiSpecificRenderWin, 2),
225
228
  rwW = _apiSpecificRenderWin2[0],
226
229
  rwH = _apiSpecificRenderWin2[1];
227
230
 
228
- var _renderer$getViewport = renderer.getViewport(),
231
+ var _renderer$getViewport = _renderer.getViewport(),
229
232
  _renderer$getViewport2 = _slicedToArray(_renderer$getViewport, 4),
230
233
  vxmin = _renderer$getViewport2[0],
231
234
  vymin = _renderer$getViewport2[1],
@@ -233,10 +236,14 @@ function vtkWidgetManager(publicAPI, model) {
233
236
  vymax = _renderer$getViewport2[3];
234
237
 
235
238
  var rendererPixelDims = [rwW * (vxmax - vxmin), rwH * (vymax - vymin)];
236
- var cameraPosition = camera.getPosition();
237
- var cameraDir = camera.getDirectionOfProjection();
238
- var isParallel = camera.getParallelProjection();
239
- var dispHeightFactor = isParallel ? 2 * camera.getParallelScale() : 2 * Math.tan(radiansFromDegrees(camera.getViewAngle()) / 2);
239
+
240
+ var cameraPosition = _camera.getPosition();
241
+
242
+ var cameraDir = _camera.getDirectionOfProjection();
243
+
244
+ var isParallel = _camera.getParallelProjection();
245
+
246
+ var dispHeightFactor = isParallel ? 2 * _camera.getParallelScale() : 2 * Math.tan(radiansFromDegrees(_camera.getViewAngle()) / 2);
240
247
  model.widgets.forEach(function (w) {
241
248
  w.getNestedProps().forEach(function (r) {
242
249
  if (r.getScaleInPixels()) {
@@ -292,7 +299,7 @@ function vtkWidgetManager(publicAPI, model) {
292
299
  renderPickingBuffer();
293
300
  model._capturedBuffers = null;
294
301
  _context3.next = 7;
295
- return model.selector.getSourceDataAsync(model.renderer, x1, y1, x2, y2);
302
+ return model._selector.getSourceDataAsync(model._renderer, x1, y1, x2, y2);
296
303
 
297
304
  case 7:
298
305
  model._capturedBuffers = _context3.sent;
@@ -317,10 +324,10 @@ function vtkWidgetManager(publicAPI, model) {
317
324
 
318
325
  publicAPI.renderWidgets = function () {
319
326
  if (model.pickingEnabled && model.captureOn === CaptureOn.MOUSE_RELEASE) {
320
- var _model$apiSpecificRen3 = model.apiSpecificRenderWindow.getSize(),
321
- _model$apiSpecificRen4 = _slicedToArray(_model$apiSpecificRen3, 2),
322
- w = _model$apiSpecificRen4[0],
323
- h = _model$apiSpecificRen4[1];
327
+ var _model$_apiSpecificRe3 = model._apiSpecificRenderWindow.getSize(),
328
+ _model$_apiSpecificRe4 = _slicedToArray(_model$_apiSpecificRe3, 2),
329
+ w = _model$_apiSpecificRe4[0],
330
+ h = _model$_apiSpecificRe4[1];
324
331
 
325
332
  captureBuffers(0, 0, w, h);
326
333
  }
@@ -334,28 +341,32 @@ function vtkWidgetManager(publicAPI, model) {
334
341
  };
335
342
 
336
343
  publicAPI.setRenderer = function (renderer) {
337
- Object.assign(model, extractRenderingComponents(renderer));
344
+ var renderingComponents = extractRenderingComponents(renderer);
345
+ Object.assign(model, renderingComponents);
346
+ macro.moveToProtected({}, model, Object.keys(renderingComponents));
338
347
 
339
348
  while (subscriptions.length) {
340
349
  subscriptions.pop().unsubscribe();
341
350
  }
342
351
 
343
- model.selector = model.apiSpecificRenderWindow.createSelector();
344
- model.selector.setFieldAssociation(FieldAssociations.FIELD_ASSOCIATION_POINTS);
345
- subscriptions.push(model.interactor.onRenderEvent(updateSvg));
346
- subscriptions.push(model.apiSpecificRenderWindow.onModified(setSvgSize));
352
+ model._selector = model._apiSpecificRenderWindow.createSelector();
353
+
354
+ model._selector.setFieldAssociation(FieldAssociations.FIELD_ASSOCIATION_POINTS);
355
+
356
+ subscriptions.push(model._interactor.onRenderEvent(updateSvg));
357
+ subscriptions.push(model._apiSpecificRenderWindow.onModified(setSvgSize));
347
358
  setSvgSize();
348
- subscriptions.push(model.apiSpecificRenderWindow.onModified(updateDisplayScaleParams));
349
- subscriptions.push(model.camera.onModified(updateDisplayScaleParams));
359
+ subscriptions.push(model._apiSpecificRenderWindow.onModified(updateDisplayScaleParams));
360
+ subscriptions.push(model._camera.onModified(updateDisplayScaleParams));
350
361
  updateDisplayScaleParams();
351
- subscriptions.push(model.interactor.onStartAnimation(function () {
362
+ subscriptions.push(model._interactor.onStartAnimation(function () {
352
363
  model.isAnimating = true;
353
364
  }));
354
- subscriptions.push(model.interactor.onEndAnimation(function () {
365
+ subscriptions.push(model._interactor.onEndAnimation(function () {
355
366
  model.isAnimating = false;
356
367
  publicAPI.renderWidgets();
357
368
  }));
358
- subscriptions.push(model.interactor.onMouseMove( /*#__PURE__*/function () {
369
+ subscriptions.push(model._interactor.onMouseMove( /*#__PURE__*/function () {
359
370
  var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref) {
360
371
  var position, _yield$publicAPI$getS, requestCount, selectedState, representation, widget, i, w;
361
372
 
@@ -394,7 +405,7 @@ function vtkWidgetManager(publicAPI, model) {
394
405
 
395
406
  case 14:
396
407
  // Default cursor behavior
397
- model.apiSpecificRenderWindow.setCursor(widget ? 'pointer' : 'default');
408
+ model._apiSpecificRenderWindow.setCursor(widget ? 'pointer' : 'default');
398
409
 
399
410
  if (model.widgetInFocus === widget && widget.hasFocus()) {
400
411
  widget.activateHandle({
@@ -402,8 +413,9 @@ function vtkWidgetManager(publicAPI, model) {
402
413
  representation: representation
403
414
  }); // Ken FIXME
404
415
 
405
- model.interactor.render();
406
- model.interactor.render();
416
+ model._interactor.render();
417
+
418
+ model._interactor.render();
407
419
  } else {
408
420
  for (i = 0; i < model.widgets.length; i++) {
409
421
  w = model.widgets[i];
@@ -420,8 +432,9 @@ function vtkWidgetManager(publicAPI, model) {
420
432
  } // Ken FIXME
421
433
 
422
434
 
423
- model.interactor.render();
424
- model.interactor.render();
435
+ model._interactor.render();
436
+
437
+ model._interactor.render();
425
438
  }
426
439
 
427
440
  case 16:
@@ -452,25 +465,25 @@ function vtkWidgetManager(publicAPI, model) {
452
465
  updateWidgetWeakMap(viewWidget);
453
466
  updateDisplayScaleParams(); // Register to renderer
454
467
 
455
- model.renderer.addActor(viewWidget);
468
+ model._renderer.addActor(viewWidget);
456
469
  }
457
470
 
458
471
  publicAPI.addWidget = function (widget, viewType, initialValues) {
459
- if (!model.renderer) {
472
+ if (!model._renderer) {
460
473
  vtkErrorMacro('Widget manager MUST BE link to a view before registering widgets');
461
474
  return null;
462
475
  }
463
476
 
464
477
  var viewId = model.viewId,
465
- renderer = model.renderer;
478
+ _renderer = model._renderer;
466
479
  var w = widget.getWidgetForView({
467
480
  viewId: viewId,
468
- renderer: renderer,
481
+ renderer: _renderer,
469
482
  viewType: viewType || ViewTypes.DEFAULT,
470
483
  initialValues: initialValues
471
484
  });
472
485
 
473
- if (model.widgets.indexOf(w) === -1) {
486
+ if (w != null && model.widgets.indexOf(w) === -1) {
474
487
  model.widgets.push(w);
475
488
  addWidgetInternal(w);
476
489
  publicAPI.modified();
@@ -480,13 +493,15 @@ function vtkWidgetManager(publicAPI, model) {
480
493
  };
481
494
 
482
495
  function removeWidgetInternal(viewWidget) {
483
- model.renderer.removeActor(viewWidget);
496
+ model._renderer.removeActor(viewWidget);
497
+
484
498
  removeFromSvgLayer(viewWidget);
485
499
  viewWidget.delete();
486
500
  }
487
501
 
488
502
  function onWidgetRemoved() {
489
- model.renderer.getRenderWindow().getInteractor().render();
503
+ model._renderer.getRenderWindow().getInteractor().render();
504
+
490
505
  publicAPI.renderWidgets();
491
506
  }
492
507
 
@@ -631,10 +646,10 @@ function vtkWidgetManager(publicAPI, model) {
631
646
  var pageX = event.pageX,
632
647
  pageY = event.pageY;
633
648
 
634
- var _model$apiSpecificRen5 = model.apiSpecificRenderWindow.getCanvas().getBoundingClientRect(),
635
- top = _model$apiSpecificRen5.top,
636
- left = _model$apiSpecificRen5.left,
637
- height = _model$apiSpecificRen5.height;
649
+ var _model$_apiSpecificRe5 = model._apiSpecificRenderWindow.getCanvas().getBoundingClientRect(),
650
+ top = _model$_apiSpecificRe5.top,
651
+ left = _model$_apiSpecificRe5.left,
652
+ height = _model$_apiSpecificRe5.height;
638
653
 
639
654
  var x = pageX - left;
640
655
  var y = height - (pageY - top);
@@ -709,7 +724,7 @@ function vtkWidgetManager(publicAPI, model) {
709
724
  if (useSvgLayer !== model.useSvgLayer) {
710
725
  model.useSvgLayer = useSvgLayer;
711
726
 
712
- if (model.renderer) {
727
+ if (model._renderer) {
713
728
  if (useSvgLayer) {
714
729
  enableSvgLayer(); // force a render so svg widgets can be drawn
715
730
 
@@ -740,6 +755,8 @@ function vtkWidgetManager(publicAPI, model) {
740
755
 
741
756
 
742
757
  var DEFAULT_VALUES = {
758
+ // _camera: null,
759
+ // _selector: null,
743
760
  viewId: null,
744
761
  widgets: [],
745
762
  renderer: null,
@@ -1,5 +1,5 @@
1
1
  import macro from '../../macros.js';
2
- import { g as subtract, j as cross, d as dot, t as multiplyScalar, k as add } from '../../Common/Core/Math/index.js';
2
+ import { g as subtract, j as cross, d as dot, x as multiplyScalar, k as add } from '../../Common/Core/Math/index.js';
3
3
 
4
4
  function projectDisplayToLine(x, y, lineOrigin, lineDirection, renderer, glRenderWindow) {
5
5
  var near = glRenderWindow.displayToWorld(x, y, 0, renderer);
@@ -65,7 +65,7 @@ function vtkCircleContextRepresentation(publicAPI, model) {
65
65
  }),
66
66
  actor: vtkActor.newInstance({
67
67
  pickable: false,
68
- parentProp: publicAPI
68
+ _parentProp: publicAPI
69
69
  })
70
70
  }
71
71
  };
@@ -98,7 +98,7 @@ function vtkImplicitPlaneRepresentation(publicAPI, model) {
98
98
  mapper: vtkMapper.newInstance(),
99
99
  actor: vtkActor.newInstance({
100
100
  pickable: false,
101
- parentProp: publicAPI
101
+ _parentProp: publicAPI
102
102
  })
103
103
  };
104
104
  model.pipelines.plane = {
@@ -106,7 +106,7 @@ function vtkImplicitPlaneRepresentation(publicAPI, model) {
106
106
  mapper: vtkMapper.newInstance(),
107
107
  actor: vtkActor.newInstance({
108
108
  pickable: true,
109
- parentProp: publicAPI
109
+ _parentProp: publicAPI
110
110
  })
111
111
  };
112
112
  model.pipelines.origin = {
@@ -114,7 +114,7 @@ function vtkImplicitPlaneRepresentation(publicAPI, model) {
114
114
  mapper: vtkMapper.newInstance(),
115
115
  actor: vtkActor.newInstance({
116
116
  pickable: true,
117
- parentProp: publicAPI
117
+ _parentProp: publicAPI
118
118
  })
119
119
  };
120
120
  model.pipelines.normal = {
@@ -122,7 +122,7 @@ function vtkImplicitPlaneRepresentation(publicAPI, model) {
122
122
  mapper: vtkMapper.newInstance(),
123
123
  actor: vtkActor.newInstance({
124
124
  pickable: true,
125
- parentProp: publicAPI
125
+ _parentProp: publicAPI
126
126
  })
127
127
  };
128
128
  model.pipelines.display2D = {
@@ -130,7 +130,7 @@ function vtkImplicitPlaneRepresentation(publicAPI, model) {
130
130
  mapper: vtkPixelSpaceCallbackMapper.newInstance(),
131
131
  actor: vtkActor.newInstance({
132
132
  pickable: false,
133
- parentProp: publicAPI
133
+ _parentProp: publicAPI
134
134
  })
135
135
  }; // Plane generation pipeline
136
136
 
@@ -2,7 +2,7 @@ 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 vtkMapper from '../../Rendering/Core/Mapper.js';
5
- import { z as areEquals, f as distance2BetweenPoints } from '../../Common/Core/Math/index.js';
5
+ import { B as areEquals, f as distance2BetweenPoints } from '../../Common/Core/Math/index.js';
6
6
  import vtkBoundingBox from '../../Common/DataModel/BoundingBox.js';
7
7
  import vtkPolyData from '../../Common/DataModel/PolyData.js';
8
8
  import vtkTubeFilter from '../../Filters/General/TubeFilter.js';
@@ -1,7 +1,7 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
3
3
  import macro from '../../macros.js';
4
- import { g as subtract, Q as multiplyAccumulate, l as normalize, j as cross } from '../../Common/Core/Math/index.js';
4
+ import { g as subtract, m as multiplyAccumulate, l as normalize, j as cross } from '../../Common/Core/Math/index.js';
5
5
  import vtkActor from '../../Rendering/Core/Actor.js';
6
6
  import vtkCylinderSource from '../../Filters/Sources/CylinderSource.js';
7
7
  import vtkMapper from '../../Rendering/Core/Mapper.js';
@@ -51,7 +51,7 @@ function vtkResliceCursorContextRepresentation(publicAPI, model) {
51
51
  mapper: vtkMapper.newInstance(),
52
52
  actor: vtkActor.newInstance({
53
53
  pickable: true,
54
- parentProp: publicAPI
54
+ _parentProp: publicAPI
55
55
  })
56
56
  };
57
57
  axis1.rotation1 = {
@@ -59,7 +59,7 @@ function vtkResliceCursorContextRepresentation(publicAPI, model) {
59
59
  mapper: vtkMapper.newInstance(),
60
60
  actor: vtkActor.newInstance({
61
61
  pickable: true,
62
- parentProp: publicAPI
62
+ _parentProp: publicAPI
63
63
  })
64
64
  };
65
65
  axis1.rotation2 = {
@@ -67,7 +67,7 @@ function vtkResliceCursorContextRepresentation(publicAPI, model) {
67
67
  mapper: vtkMapper.newInstance(),
68
68
  actor: vtkActor.newInstance({
69
69
  pickable: true,
70
- parentProp: publicAPI
70
+ _parentProp: publicAPI
71
71
  })
72
72
  }; // Create axis 2
73
73
 
@@ -77,7 +77,7 @@ function vtkResliceCursorContextRepresentation(publicAPI, model) {
77
77
  mapper: vtkMapper.newInstance(),
78
78
  actor: vtkActor.newInstance({
79
79
  pickable: true,
80
- parentProp: publicAPI
80
+ _parentProp: publicAPI
81
81
  })
82
82
  };
83
83
  axis2.rotation1 = {
@@ -85,7 +85,7 @@ function vtkResliceCursorContextRepresentation(publicAPI, model) {
85
85
  mapper: vtkMapper.newInstance(),
86
86
  actor: vtkActor.newInstance({
87
87
  pickable: true,
88
- parentProp: publicAPI
88
+ _parentProp: publicAPI
89
89
  })
90
90
  };
91
91
  axis2.rotation2 = {
@@ -93,7 +93,7 @@ function vtkResliceCursorContextRepresentation(publicAPI, model) {
93
93
  mapper: vtkMapper.newInstance(),
94
94
  actor: vtkActor.newInstance({
95
95
  pickable: true,
96
- parentProp: publicAPI
96
+ _parentProp: publicAPI
97
97
  })
98
98
  };
99
99
  model.pipelines.axes.push(axis1);
@@ -17,9 +17,9 @@ function fontSizeToPixels(fontProperties) {
17
17
  if (fontProperties.fontSize.slice(-2) === 'px') {
18
18
  return window.devicePixelRatio * parseInt(fontProperties.fontSize, 10);
19
19
  }
20
- } else {
21
- return window.devicePixelRatio * fontProperties.fontSize;
22
20
  }
21
+
22
+ return window.devicePixelRatio * fontProperties.fontSize;
23
23
  }
24
24
 
25
25
  return window.devicePixelRatio * defaultFontSize;
@@ -24,6 +24,8 @@ function vtkSVGLandmarkRepresentation(publicAPI, model) {
24
24
  texts.push(state.getText ? state.getText() : "L".concat(index));
25
25
  }
26
26
  });
27
+ var state = list[0];
28
+ var isActive = state.getActive();
27
29
  return publicAPI.worldPointsToPixelSpace(coords).then(function (pixelSpace) {
28
30
  var points2d = pixelSpace.coords;
29
31
  var winHeight = pixelSpace.windowSize[1];
@@ -39,7 +41,7 @@ function vtkSVGLandmarkRepresentation(publicAPI, model) {
39
41
  var x = xy[0];
40
42
  var y = winHeight - xy[1];
41
43
 
42
- if (model.showCircle === true) {
44
+ if (model.circleProps && model.circleProps.visible) {
43
45
  var circle = publicAPI.createListenableSvgElement('circle', i);
44
46
  Object.keys(model.circleProps || {}).forEach(function (prop) {
45
47
  return circle.setAttribute(prop, model.circleProps[prop]);
@@ -83,10 +85,22 @@ function vtkSVGLandmarkRepresentation(publicAPI, model) {
83
85
  text.setAttribute('dy', dy);
84
86
  text.setAttribute('font-size', fontSize);
85
87
 
86
- if (model.fontProperties != null) {
88
+ if (model.fontProperties && model.fontProperties.fontFamily) {
87
89
  text.setAttribute('font-family', model.fontProperties.fontFamily);
90
+ } else if (isActive && model.strokeFontProperties && model.strokeFontProperties.fontFamily) {
91
+ text.setAttribute('font-family', model.strokeFontProperties.fontFamily);
92
+ }
93
+
94
+ if (model.fontProperties && model.fontProperties.fontStyle) {
88
95
  text.setAttribute('font-weight', model.fontProperties.fontStyle);
96
+ } else if (isActive && model.strokeFontProperties && model.strokeFontProperties.fontStyle) {
97
+ text.setAttribute('font-weight', model.strokeFontProperties.fontStyle);
98
+ }
99
+
100
+ if (model.fontProperties && model.fontProperties.fontColor) {
89
101
  text.setAttribute('fill', model.fontProperties.fontColor);
102
+ } else if (isActive && model.strokeFontProperties && model.strokeFontProperties.fontColor) {
103
+ text.setAttribute('fill', model.strokeFontProperties.fontColor);
90
104
  }
91
105
 
92
106
  text.textContent = subText;
@@ -110,21 +124,20 @@ function vtkSVGLandmarkRepresentation(publicAPI, model) {
110
124
  /**
111
125
  * textProps can contain any "svg" attribute (e.g. text-anchor, text-align,
112
126
  * alignment-baseline...)
113
- * @param {*} initialValues
114
- * @returns
115
127
  */
116
128
 
117
129
 
118
130
  function defaultValues(initialValues) {
119
131
  return _objectSpread(_objectSpread({}, initialValues), {}, {
120
132
  circleProps: _objectSpread({
133
+ visible: false,
121
134
  r: 5,
122
135
  stroke: 'red',
123
136
  fill: 'red'
124
137
  }, initialValues.circleProps),
125
- textProps: _objectSpread({
126
- fill: 'white'
127
- }, initialValues.textProps)
138
+ fontProperties: _objectSpread({
139
+ fontColor: 'white'
140
+ }, initialValues.fontProperties)
128
141
  });
129
142
  } // ----------------------------------------------------------------------------
130
143
 
@@ -132,7 +145,7 @@ function defaultValues(initialValues) {
132
145
  function extend(publicAPI, model) {
133
146
  var initialValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
134
147
  vtkSVGRepresentation.extend(publicAPI, model, defaultValues(initialValues));
135
- macro.setGet(publicAPI, model, ['circleProps', 'fontProperties', 'name', 'textProps']); // Object specific methods
148
+ macro.setGet(publicAPI, model, ['circleProps', 'fontProperties', 'strokeFontProperties', 'textProps']); // Object specific methods
136
149
 
137
150
  vtkSVGLandmarkRepresentation(publicAPI, model);
138
151
  } // ----------------------------------------------------------------------------