@kitware/vtk.js 34.11.0 → 34.11.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.
- package/Common/Core/DataArray.js +2 -1
- package/Common/Core/Points.d.ts +11 -1
- package/Common/Core/Points.js +33 -18
- package/Common/DataModel/BoundingBox.d.ts +18 -4
- package/Common/DataModel/BoundingBox.js +10 -3
- package/Common/DataModel/Cell.js +4 -34
- package/Common/DataModel/DataSet.d.ts +7 -0
- package/Common/DataModel/DataSet.js +6 -0
- package/Common/DataModel/DataSetAttributes/FieldData.d.ts +6 -2
- package/Common/DataModel/DataSetAttributes.d.ts +2 -1
- package/Common/DataModel/ImageData.d.ts +8 -0
- package/Common/DataModel/ImageData.js +14 -1
- package/Common/DataModel/PointSet.d.ts +6 -0
- package/Common/DataModel/PointSet.js +10 -0
- package/Common/DataModel/PolyData.d.ts +6 -0
- package/Common/DataModel/PolyData.js +7 -0
- package/Filters/Core/Cutter.js +1 -1
- package/Filters/Core/PolyDataNormals.js +1 -1
- package/Filters/Core/ThresholdPoints.js +1 -2
- package/Filters/General/AppendPolyData.js +1 -1
- package/Filters/General/Calculator.js +1 -1
- package/Filters/General/ClipClosedSurface.js +2 -2
- package/Filters/General/ClosedPolyLineToSurfaceFilter.js +1 -1
- package/Filters/General/ContourLoopExtraction.js +2 -4
- package/Filters/General/ContourTriangulator.js +1 -2
- package/Filters/General/ImageCropFilter.js +7 -10
- package/Filters/General/ImageMarchingCubes.js +1 -1
- package/Filters/General/ImageMarchingSquares.js +1 -1
- package/Filters/General/ImageOutlineFilter.js +2 -1
- package/Filters/General/ImageSliceFilter.js +2 -1
- package/Filters/General/ImageStreamline.js +1 -1
- package/Filters/General/LineFilter.js +1 -1
- package/Filters/General/MoleculeToRepresentation.js +2 -2
- package/Filters/General/OutlineFilter.js +1 -1
- package/Filters/General/ScalarToRGBA.js +2 -1
- package/Filters/General/ShrinkPolyData.js +1 -1
- package/Filters/General/TransformPolyDataFilter.js +1 -1
- package/Filters/General/TriangleFilter.js +1 -1
- package/Filters/General/TubeFilter.js +1 -2
- package/Filters/General/WarpScalar.js +1 -1
- package/Filters/General/WindowedSincPolyDataFilter.js +1 -1
- package/Filters/Sources/ArcSource.js +1 -1
- package/Filters/Sources/Arrow2DSource.js +6 -9
- package/Filters/Sources/ArrowSource.js +2 -8
- package/Filters/Sources/CircleSource.js +3 -10
- package/Filters/Sources/ConcentricCylinderSource.js +5 -8
- package/Filters/Sources/ConeSource.js +3 -10
- package/Filters/Sources/CubeSource.js +3 -9
- package/Filters/Sources/Cursor3D.js +1 -4
- package/Filters/Sources/CylinderSource.js +3 -10
- package/Filters/Sources/DiskSource.js +1 -5
- package/Filters/Sources/EllipseArcSource.js +1 -1
- package/Filters/Sources/ImageGridSource.js +0 -3
- package/Filters/Sources/LineSource.js +1 -4
- package/Filters/Sources/PlaneSource.js +1 -4
- package/Filters/Sources/PlatonicSolidSource.js +1 -1
- package/Filters/Sources/PointSource.js +1 -4
- package/Filters/Sources/RTAnalyticSource.js +0 -3
- package/Filters/Sources/SLICSource.js +1 -4
- package/Filters/Sources/SphereSource.js +1 -4
- package/Filters/Sources/ViewFinderSource.js +1 -1
- package/Filters/Texture/TextureMapToPlane.js +1 -4
- package/Filters/Texture/TextureMapToSphere.js +1 -4
- package/Imaging/Core/ImageReslice.js +1 -1
- package/Imaging/Hybrid/SampleFunction.js +1 -1
- package/Rendering/Core/VectorText.js +4 -3
- package/Rendering/Core/Viewport.d.ts +8 -3
- package/Widgets/Representations/ImplicitPlaneRepresentation.js +1 -1
- package/Widgets/Representations/RectangleContextRepresentation.js +0 -3
- package/Widgets/Representations/SplineContextRepresentation.js +1 -5
- package/macros2.js +1 -1
- package/package.json +2 -2
|
@@ -9,7 +9,7 @@ function vtkLineFilter(publicAPI, model) {
|
|
|
9
9
|
// Set our classname
|
|
10
10
|
model.classHierarchy.push('vtkLineFilter');
|
|
11
11
|
publicAPI.requestData = (inData, outData) => {
|
|
12
|
-
const dataset = vtkPolyData.newInstance();
|
|
12
|
+
const dataset = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
13
13
|
dataset.getPoints().setData(inData[0].getPoints().getData());
|
|
14
14
|
dataset.getLines().setData(inData[0].getLines().getData());
|
|
15
15
|
outData[0] = dataset;
|
|
@@ -54,8 +54,8 @@ function vtkMoleculeToRepresentation(publicAPI, model) {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
// output
|
|
57
|
-
const SphereData = vtkPolyData.newInstance();
|
|
58
|
-
const StickData = vtkPolyData.newInstance();
|
|
57
|
+
const SphereData = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
58
|
+
const StickData = outData[1]?.initialize() || vtkPolyData.newInstance();
|
|
59
59
|
|
|
60
60
|
// Fetch from input molecule data
|
|
61
61
|
let numPts = 0;
|
|
@@ -41,7 +41,7 @@ function vtkOutlineFilter(publicAPI, model) {
|
|
|
41
41
|
return;
|
|
42
42
|
}
|
|
43
43
|
const bounds = input.getBounds();
|
|
44
|
-
const output = vtkPolyData.newInstance();
|
|
44
|
+
const output = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
45
45
|
output.getPoints().setData(Float32Array.from(BOUNDS_MAP.map(idx => bounds[idx])), 3);
|
|
46
46
|
output.getLines().setData(Uint16Array.from(LINE_ARRAY));
|
|
47
47
|
outData[0] = output;
|
|
@@ -52,7 +52,8 @@ function vtkScalarToRGBA(publicAPI, model) {
|
|
|
52
52
|
values: rgbaArray
|
|
53
53
|
});
|
|
54
54
|
const datasetDefinition = input.get('extent', 'spacing', 'origin', 'direction');
|
|
55
|
-
const output = vtkImageData.newInstance(
|
|
55
|
+
const output = outData[0]?.initialize() || vtkImageData.newInstance();
|
|
56
|
+
output.set(datasetDefinition);
|
|
56
57
|
output.getPointData().setScalars(colorArray);
|
|
57
58
|
outData[0] = output;
|
|
58
59
|
};
|
|
@@ -258,7 +258,7 @@ function vtkShrinkPolyData(publicAPI, model) {
|
|
|
258
258
|
}
|
|
259
259
|
publicAPI.requestData = (inData, outData) => {
|
|
260
260
|
const input = inData[0];
|
|
261
|
-
const output = outData[0] || vtkPolyData.newInstance();
|
|
261
|
+
const output = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
262
262
|
if (!input) {
|
|
263
263
|
vtkErrorMacro('No input!');
|
|
264
264
|
return;
|
|
@@ -143,7 +143,7 @@ function vtkTransformPolyDataFilter(publicAPI, model) {
|
|
|
143
143
|
}
|
|
144
144
|
publicAPI.requestData = (inData, outData) => {
|
|
145
145
|
const input = inData[0];
|
|
146
|
-
const output = outData[0] || vtkPolyData.newInstance();
|
|
146
|
+
const output = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
147
147
|
if (transformPolyData(input, output)) {
|
|
148
148
|
outData[0] = output;
|
|
149
149
|
} else {
|
|
@@ -72,7 +72,7 @@ function vtkTriangleFilter(publicAPI, model) {
|
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
-
const dataset = vtkPolyData.newInstance();
|
|
75
|
+
const dataset = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
76
76
|
dataset.getPoints().setData(macro.newTypedArrayFrom(pointsDataType, newPoints));
|
|
77
77
|
dataset.getPolys().setData(macro.newTypedArrayFrom(cellsDataType, newCells));
|
|
78
78
|
outData[0] = dataset;
|
|
@@ -535,7 +535,7 @@ function vtkTubeFilter(publicAPI, model) {
|
|
|
535
535
|
publicAPI.requestData = (inData, outData) => {
|
|
536
536
|
// implement requestData
|
|
537
537
|
// pass through for now
|
|
538
|
-
const output = vtkPolyData.newInstance();
|
|
538
|
+
const output = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
539
539
|
outData[0] = output;
|
|
540
540
|
const input = inData[0];
|
|
541
541
|
if (!input) {
|
|
@@ -733,7 +733,6 @@ function vtkTubeFilter(publicAPI, model) {
|
|
|
733
733
|
output.setStrips(newStrips);
|
|
734
734
|
output.setPointData(outPD);
|
|
735
735
|
outPD.setNormals(newNormals);
|
|
736
|
-
outData[0] = output;
|
|
737
736
|
};
|
|
738
737
|
}
|
|
739
738
|
|
|
@@ -69,7 +69,7 @@ function vtkWarpScalar(publicAPI, model) {
|
|
|
69
69
|
newPtsData[ptOffset + 1] = inPoints[ptOffset + 1] + model.scaleFactor * s * n[1];
|
|
70
70
|
newPtsData[ptOffset + 2] = inPoints[ptOffset + 2] + model.scaleFactor * s * n[2];
|
|
71
71
|
}
|
|
72
|
-
const newDataSet = vtk({
|
|
72
|
+
const newDataSet = outData[0] && outData[0] !== inData[0] ? outData[0].initialize() : vtk({
|
|
73
73
|
vtkClass: input.getClassName()
|
|
74
74
|
});
|
|
75
75
|
newDataSet.shallowCopy(input);
|
|
@@ -513,7 +513,7 @@ function vtkWindowedSincPolyDataFilter(publicAPI, model) {
|
|
|
513
513
|
if (!input) {
|
|
514
514
|
return;
|
|
515
515
|
}
|
|
516
|
-
const output = vtkPolyData.newInstance();
|
|
516
|
+
const output = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
517
517
|
const outputPoints = publicAPI.vtkWindowedSincPolyDataFilterExecute(input.getPoints(), input, output);
|
|
518
518
|
output.setPointData(input.getPointData());
|
|
519
519
|
output.setCellData(input.getCellData());
|
|
@@ -21,7 +21,7 @@ function vtkArcSource(publicAPI, model) {
|
|
|
21
21
|
const numLines = model.resolution;
|
|
22
22
|
const numPts = model.resolution + 1;
|
|
23
23
|
const tc = [0.0, 0.0];
|
|
24
|
-
const output = outData[0] || vtkPolyData.newInstance();
|
|
24
|
+
const output = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
25
25
|
let angle = 0.0;
|
|
26
26
|
let radius = 0.5;
|
|
27
27
|
const perpendicular = [0, 0, 0];
|
|
@@ -11,8 +11,7 @@ const {
|
|
|
11
11
|
// vtkArrow2DSource methods
|
|
12
12
|
// ----------------------------------------------------------------------------
|
|
13
13
|
|
|
14
|
-
function vtkStarSource(publicAPI, model) {
|
|
15
|
-
const dataset = vtkPolyData.newInstance();
|
|
14
|
+
function vtkStarSource(publicAPI, model, dataset) {
|
|
16
15
|
const points = macro.newTypedArray(model.pointType, 10 * 3);
|
|
17
16
|
const edges = new Uint32Array(11);
|
|
18
17
|
edges[0] = 10;
|
|
@@ -27,8 +26,7 @@ function vtkStarSource(publicAPI, model) {
|
|
|
27
26
|
dataset.getPolys().setData(edges, 1);
|
|
28
27
|
return dataset;
|
|
29
28
|
}
|
|
30
|
-
function vtk6PointsArrow(publicAPI, model) {
|
|
31
|
-
const dataset = vtkPolyData.newInstance();
|
|
29
|
+
function vtk6PointsArrow(publicAPI, model, dataset) {
|
|
32
30
|
const points = macro.newTypedArray(model.pointType, 6 * 3);
|
|
33
31
|
const thickOp = model.height * 0.5 * model.thickness;
|
|
34
32
|
const offsetOp = model.height * 0.5 - thickOp;
|
|
@@ -58,8 +56,7 @@ function vtk6PointsArrow(publicAPI, model) {
|
|
|
58
56
|
dataset.getPolys().setData(cells, 1);
|
|
59
57
|
return dataset;
|
|
60
58
|
}
|
|
61
|
-
function vtk4PointsArrow(publicAPI, model) {
|
|
62
|
-
const dataset = vtkPolyData.newInstance();
|
|
59
|
+
function vtk4PointsArrow(publicAPI, model, dataset) {
|
|
63
60
|
const points = macro.newTypedArray(model.pointType, 4 * 3);
|
|
64
61
|
const thickOp = model.height / 3 * model.thickness;
|
|
65
62
|
const offsetOp = model.height / 3 - thickOp;
|
|
@@ -81,8 +78,7 @@ function vtk4PointsArrow(publicAPI, model) {
|
|
|
81
78
|
dataset.getPolys().setData(cells, 1);
|
|
82
79
|
return dataset;
|
|
83
80
|
}
|
|
84
|
-
function vtkTriangleSource(publicAPI, model) {
|
|
85
|
-
const dataset = vtkPolyData.newInstance();
|
|
81
|
+
function vtkTriangleSource(publicAPI, model, dataset) {
|
|
86
82
|
const points = macro.newTypedArray(model.pointType, 3 * 3);
|
|
87
83
|
const baseOffsetOp = model.height * (1 - model.base);
|
|
88
84
|
points[0] = model.width / 2 * -1;
|
|
@@ -107,7 +103,8 @@ function vtkArrow2DSource(publicAPI, model) {
|
|
|
107
103
|
[ShapeType.ARROW_6]: vtk6PointsArrow
|
|
108
104
|
};
|
|
109
105
|
publicAPI.requestData = (inData, outData) => {
|
|
110
|
-
outData[0]
|
|
106
|
+
const dataset = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
107
|
+
outData[0] = shapeToSource[model.shape](publicAPI, model, dataset);
|
|
111
108
|
vtkMatrixBuilder.buildFromRadian().translate(...model.center).rotateFromDirections([1, 0, 0], model.direction).apply(outData[0].getPoints().getData());
|
|
112
109
|
};
|
|
113
110
|
}
|
|
@@ -11,10 +11,7 @@ import vtkMatrixBuilder from '../../Common/Core/MatrixBuilder.js';
|
|
|
11
11
|
function vtkArrowSource(publicAPI, model) {
|
|
12
12
|
// Set our className
|
|
13
13
|
model.classHierarchy.push('vtkArrowSource');
|
|
14
|
-
|
|
15
|
-
if (model.deleted) {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
14
|
+
publicAPI.requestData = (inData, outData) => {
|
|
18
15
|
const cylinder = vtkCylinderSource.newInstance({
|
|
19
16
|
capping: true
|
|
20
17
|
});
|
|
@@ -57,10 +54,7 @@ function vtkArrowSource(publicAPI, model) {
|
|
|
57
54
|
// Update output
|
|
58
55
|
outData[0] = append.getOutputData();
|
|
59
56
|
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// Expose methods
|
|
63
|
-
publicAPI.requestData = requestData;
|
|
57
|
+
};
|
|
64
58
|
}
|
|
65
59
|
|
|
66
60
|
// ----------------------------------------------------------------------------
|
|
@@ -10,11 +10,8 @@ import { x as multiplyScalar } from '../../Common/Core/Math/index.js';
|
|
|
10
10
|
function vtkCircleSource(publicAPI, model) {
|
|
11
11
|
// Set our classname
|
|
12
12
|
model.classHierarchy.push('vtkCircleSource');
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
let dataset = outData[0];
|
|
13
|
+
publicAPI.requestData = (inData, outData) => {
|
|
14
|
+
const dataset = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
18
15
|
|
|
19
16
|
// Points
|
|
20
17
|
const points = macro.newTypedArray(model.pointType, model.resolution * 3);
|
|
@@ -36,7 +33,6 @@ function vtkCircleSource(publicAPI, model) {
|
|
|
36
33
|
|
|
37
34
|
// connect endpoints
|
|
38
35
|
edges[edges.length - 1] = edges[1];
|
|
39
|
-
dataset = vtkPolyData.newInstance();
|
|
40
36
|
dataset.getPoints().setData(points, 3);
|
|
41
37
|
if (model.lines) {
|
|
42
38
|
dataset.getLines().setData(edges, 1);
|
|
@@ -50,10 +46,7 @@ function vtkCircleSource(publicAPI, model) {
|
|
|
50
46
|
|
|
51
47
|
// Update output
|
|
52
48
|
outData[0] = dataset;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// Expose methods
|
|
56
|
-
publicAPI.requestData = requestData;
|
|
49
|
+
};
|
|
57
50
|
}
|
|
58
51
|
|
|
59
52
|
// ----------------------------------------------------------------------------
|
|
@@ -64,14 +64,14 @@ function vtkConcentricCylinderSource(publicAPI, model) {
|
|
|
64
64
|
}
|
|
65
65
|
};
|
|
66
66
|
publicAPI.getMaskLayer = index => index === undefined ? model.mask : model.mask[index];
|
|
67
|
-
|
|
68
|
-
if (
|
|
67
|
+
publicAPI.requestData = (inData, outData) => {
|
|
68
|
+
if (!model.radius.length) {
|
|
69
|
+
macro.vtkErrorMacro('No radius defined');
|
|
69
70
|
return;
|
|
70
71
|
}
|
|
71
72
|
|
|
72
73
|
// Make sure we have consistency
|
|
73
74
|
validateCellFields();
|
|
74
|
-
let dataset = outData[0];
|
|
75
75
|
const numLayers = model.radius.length;
|
|
76
76
|
const zRef = model.height / 2.0;
|
|
77
77
|
|
|
@@ -324,7 +324,7 @@ function vtkConcentricCylinderSource(publicAPI, model) {
|
|
|
324
324
|
|
|
325
325
|
// Apply transformation to the point coordinates
|
|
326
326
|
vtkMatrixBuilder.buildFromRadian().translate(...model.center).rotateFromDirections([0, 0, 1], model.direction).apply(points);
|
|
327
|
-
dataset = vtkPolyData.newInstance();
|
|
327
|
+
const dataset = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
328
328
|
dataset.getPoints().setData(points, 3);
|
|
329
329
|
dataset.getPolys().setData(polys, 1);
|
|
330
330
|
dataset.getCellData().setScalars(vtkDataArray.newInstance({
|
|
@@ -334,10 +334,7 @@ function vtkConcentricCylinderSource(publicAPI, model) {
|
|
|
334
334
|
|
|
335
335
|
// Update output
|
|
336
336
|
outData[0] = dataset;
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
// Expose methods
|
|
340
|
-
publicAPI.requestData = requestData;
|
|
337
|
+
};
|
|
341
338
|
}
|
|
342
339
|
|
|
343
340
|
// ----------------------------------------------------------------------------
|
|
@@ -9,11 +9,7 @@ import vtkMatrixBuilder from '../../Common/Core/MatrixBuilder.js';
|
|
|
9
9
|
function vtkConeSource(publicAPI, model) {
|
|
10
10
|
// Set our className
|
|
11
11
|
model.classHierarchy.push('vtkConeSource');
|
|
12
|
-
|
|
13
|
-
if (model.deleted) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
|
-
let dataset = outData[0];
|
|
12
|
+
publicAPI.requestData = (inData, outData) => {
|
|
17
13
|
const angle = 2 * Math.PI / model.resolution;
|
|
18
14
|
const xbot = -model.height / 2.0;
|
|
19
15
|
const numberOfPoints = model.resolution + 1;
|
|
@@ -60,16 +56,13 @@ function vtkConeSource(publicAPI, model) {
|
|
|
60
56
|
|
|
61
57
|
// Apply transformation to the points coordinates
|
|
62
58
|
vtkMatrixBuilder.buildFromRadian().translate(...model.center).rotateFromDirections([1, 0, 0], model.direction).apply(points);
|
|
63
|
-
dataset = vtkPolyData.newInstance();
|
|
59
|
+
const dataset = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
64
60
|
dataset.getPoints().setData(points, 3);
|
|
65
61
|
dataset.getPolys().setData(polys, 1);
|
|
66
62
|
|
|
67
63
|
// Update output
|
|
68
64
|
outData[0] = dataset;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Expose methods
|
|
72
|
-
publicAPI.requestData = requestData;
|
|
65
|
+
};
|
|
73
66
|
}
|
|
74
67
|
|
|
75
68
|
// ----------------------------------------------------------------------------
|
|
@@ -17,11 +17,8 @@ const POLY_ARRAY = [4, 0, 1, 3, 2, 4, 4, 6, 7, 5, 4, 8, 10, 11, 9, 4, 12, 13, 15
|
|
|
17
17
|
function vtkCubeSource(publicAPI, model) {
|
|
18
18
|
// Set our className
|
|
19
19
|
model.classHierarchy.push('vtkCubeSource');
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
const polyData = vtkPolyData.newInstance();
|
|
20
|
+
publicAPI.requestData = (inData, outData) => {
|
|
21
|
+
const polyData = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
25
22
|
outData[0] = polyData;
|
|
26
23
|
const numberOfPoints = 24;
|
|
27
24
|
|
|
@@ -183,7 +180,7 @@ function vtkCubeSource(publicAPI, model) {
|
|
|
183
180
|
polyData.getLines().initialize();
|
|
184
181
|
}
|
|
185
182
|
polyData.modified();
|
|
186
|
-
}
|
|
183
|
+
};
|
|
187
184
|
publicAPI.setBounds = function () {
|
|
188
185
|
let boundsArray = [];
|
|
189
186
|
if (Array.isArray(arguments.length <= 0 ? undefined : arguments[0])) {
|
|
@@ -201,9 +198,6 @@ function vtkCubeSource(publicAPI, model) {
|
|
|
201
198
|
publicAPI.setZLength(boundsArray[5] - boundsArray[4]);
|
|
202
199
|
publicAPI.setCenter([(boundsArray[0] + boundsArray[1]) / 2.0, (boundsArray[2] + boundsArray[3]) / 2.0, (boundsArray[4] + boundsArray[5]) / 2.0]);
|
|
203
200
|
};
|
|
204
|
-
|
|
205
|
-
// Expose methods
|
|
206
|
-
publicAPI.requestData = requestData;
|
|
207
201
|
}
|
|
208
202
|
|
|
209
203
|
// ----------------------------------------------------------------------------
|
|
@@ -72,9 +72,6 @@ function vtkCursor3D(publicAPI, model) {
|
|
|
72
72
|
publicAPI.setAll(false);
|
|
73
73
|
};
|
|
74
74
|
publicAPI.requestData = (inData, outData) => {
|
|
75
|
-
if (model.deleted) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
75
|
let numPts = 0;
|
|
79
76
|
let numLines = 0;
|
|
80
77
|
// Check bounding box and origin
|
|
@@ -112,7 +109,7 @@ function vtkCursor3D(publicAPI, model) {
|
|
|
112
109
|
if (numPts === 0) {
|
|
113
110
|
return;
|
|
114
111
|
}
|
|
115
|
-
const polyData = vtkPolyData.newInstance();
|
|
112
|
+
const polyData = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
116
113
|
const newPts = vtkPoints.newInstance({
|
|
117
114
|
size: numPts * 3
|
|
118
115
|
});
|
|
@@ -10,11 +10,7 @@ import vtkMatrixBuilder from '../../Common/Core/MatrixBuilder.js';
|
|
|
10
10
|
function vtkCylinderSource(publicAPI, model) {
|
|
11
11
|
// Set our classname
|
|
12
12
|
model.classHierarchy.push('vtkCylinderSource');
|
|
13
|
-
|
|
14
|
-
if (model.deleted) {
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
let dataset = outData[0];
|
|
13
|
+
publicAPI.requestData = (inData, outData) => {
|
|
18
14
|
const angle = 2.0 * Math.PI / model.resolution;
|
|
19
15
|
let numberOfPoints = 2 * model.resolution;
|
|
20
16
|
let numberOfPolys = 5 * model.resolution;
|
|
@@ -147,7 +143,7 @@ function vtkCylinderSource(publicAPI, model) {
|
|
|
147
143
|
|
|
148
144
|
// Apply transformation to the points coordinates
|
|
149
145
|
vtkMatrixBuilder.buildFromRadian().translate(...model.center).rotateFromDirections([0, 1, 0], model.direction).translate(...model.center.map(c => c * -1)).apply(points);
|
|
150
|
-
dataset = vtkPolyData.newInstance();
|
|
146
|
+
const dataset = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
151
147
|
dataset.getPoints().setData(points, 3);
|
|
152
148
|
dataset.getPolys().setData(polys, 1);
|
|
153
149
|
dataset.getPointData().setNormals(normals);
|
|
@@ -155,10 +151,7 @@ function vtkCylinderSource(publicAPI, model) {
|
|
|
155
151
|
|
|
156
152
|
// Update output
|
|
157
153
|
outData[0] = dataset;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
// Expose methods
|
|
161
|
-
publicAPI.requestData = requestData;
|
|
154
|
+
};
|
|
162
155
|
}
|
|
163
156
|
|
|
164
157
|
// ----------------------------------------------------------------------------
|
|
@@ -25,10 +25,6 @@ function vtkDiskSource(publicAPI, model) {
|
|
|
25
25
|
circumferentialResolution,
|
|
26
26
|
pointType
|
|
27
27
|
} = model;
|
|
28
|
-
if (model.deleted) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
let dataset = outData[0];
|
|
32
28
|
|
|
33
29
|
// Points
|
|
34
30
|
const points = vtkPoints.newInstance({
|
|
@@ -83,7 +79,7 @@ function vtkDiskSource(publicAPI, model) {
|
|
|
83
79
|
}
|
|
84
80
|
}
|
|
85
81
|
polys.setData(cellData, cellCount, 1);
|
|
86
|
-
dataset = vtkPolyData.newInstance();
|
|
82
|
+
const dataset = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
87
83
|
dataset.setPoints(points);
|
|
88
84
|
dataset.setPolys(polys);
|
|
89
85
|
|
|
@@ -26,7 +26,7 @@ function vtkEllipseArcSource(publicAPI, model) {
|
|
|
26
26
|
const numLines = resolution;
|
|
27
27
|
const numPts = resolution + 1;
|
|
28
28
|
const tc = [0.0, 0.0];
|
|
29
|
-
const output = outData[0] || vtkPolyData.newInstance();
|
|
29
|
+
const output = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
30
30
|
|
|
31
31
|
// Make sure the normal vector is normalized
|
|
32
32
|
const normal = [...model.normal];
|
|
@@ -10,9 +10,6 @@ function vtkImageGridSource(publicAPI, model) {
|
|
|
10
10
|
// Set our className
|
|
11
11
|
model.classHierarchy.push('vtkImageGridSource');
|
|
12
12
|
publicAPI.requestData = (inData, outData) => {
|
|
13
|
-
if (model.deleted) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
13
|
const state = {};
|
|
17
14
|
const dataset = {
|
|
18
15
|
type: 'vtkImageData',
|
|
@@ -14,14 +14,11 @@ function vtkLineSource(publicAPI, model) {
|
|
|
14
14
|
// Set our className
|
|
15
15
|
model.classHierarchy.push('vtkLineSource');
|
|
16
16
|
publicAPI.requestData = (inData, outData) => {
|
|
17
|
-
if (model.deleted) {
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
17
|
const dataset = outData[0];
|
|
21
18
|
|
|
22
19
|
// Check input
|
|
23
20
|
const pointDataType = dataset ? dataset.getPoints().getDataType() : model.pointType;
|
|
24
|
-
const pd = vtkPolyData.newInstance();
|
|
21
|
+
const pd = dataset?.initialize() || vtkPolyData.newInstance();
|
|
25
22
|
const v21 = [];
|
|
26
23
|
subtract(model.point2, model.point1, v21);
|
|
27
24
|
if (norm(v21) <= 0.0) {
|
|
@@ -18,14 +18,11 @@ function vtkPlaneSource(publicAPI, model) {
|
|
|
18
18
|
// Set our className
|
|
19
19
|
model.classHierarchy.push('vtkPlaneSource');
|
|
20
20
|
publicAPI.requestData = (inData, outData) => {
|
|
21
|
-
if (model.deleted) {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
21
|
const dataset = outData[0];
|
|
25
22
|
|
|
26
23
|
// Check input
|
|
27
24
|
const pointDataType = dataset ? dataset.getPoints().getDataType() : model.pointType;
|
|
28
|
-
const pd = vtkPolyData.newInstance();
|
|
25
|
+
const pd = dataset?.initialize() || vtkPolyData.newInstance();
|
|
29
26
|
const v10 = [];
|
|
30
27
|
const v20 = [];
|
|
31
28
|
subtract(model.point1, model.origin, v10);
|
|
@@ -63,7 +63,7 @@ function vtkPlatonicSolidSource(publicAPI, model) {
|
|
|
63
63
|
// Set our className
|
|
64
64
|
model.classHierarchy.push('vtkPlatonicSolidSource');
|
|
65
65
|
publicAPI.requestData = (inData, outData) => {
|
|
66
|
-
const output = outData[0] || vtkPolyData.newInstance();
|
|
66
|
+
const output = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
67
67
|
let solidData;
|
|
68
68
|
switch (model.solidType) {
|
|
69
69
|
case SolidType.VTK_SOLID_TETRAHEDRON:
|
|
@@ -10,14 +10,11 @@ function vtkPointSource(publicAPI, model) {
|
|
|
10
10
|
// Set our className
|
|
11
11
|
model.classHierarchy.push('vtkPointSource');
|
|
12
12
|
publicAPI.requestData = (inData, outData) => {
|
|
13
|
-
if (model.deleted) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
13
|
const dataset = outData[0];
|
|
17
14
|
|
|
18
15
|
// Check input
|
|
19
16
|
const pointDataType = dataset ? dataset.getPoints().getDataType() : model.pointType;
|
|
20
|
-
const pd = vtkPolyData.newInstance();
|
|
17
|
+
const pd = dataset?.initialize() || vtkPolyData.newInstance();
|
|
21
18
|
|
|
22
19
|
// hand create a point cloud
|
|
23
20
|
const numPts = model.numberOfPoints;
|
|
@@ -8,9 +8,6 @@ function vtkRTAnalyticSource(publicAPI, model) {
|
|
|
8
8
|
// Set our className
|
|
9
9
|
model.classHierarchy.push('vtkRTAnalyticSource');
|
|
10
10
|
publicAPI.requestData = (inData, outData) => {
|
|
11
|
-
if (model.deleted) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
11
|
const state = {};
|
|
15
12
|
const dataset = {
|
|
16
13
|
type: 'vtkImageData',
|
|
@@ -60,11 +60,8 @@ function vtkSLICSource(publicAPI, model) {
|
|
|
60
60
|
};
|
|
61
61
|
publicAPI.getNumberOfClusters = () => model.clusters.length;
|
|
62
62
|
publicAPI.requestData = (inData, outData) => {
|
|
63
|
-
if (model.deleted) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
63
|
const dataSize = model.dimensions[0] * model.dimensions[1] * model.dimensions[2];
|
|
67
|
-
const imageData = vtkImageData.newInstance();
|
|
64
|
+
const imageData = outData[0]?.initialize() || vtkImageData.newInstance();
|
|
68
65
|
imageData.setSpacing(...model.spacing);
|
|
69
66
|
imageData.setExtent(0, model.dimensions[0] - 1, 0, model.dimensions[1] - 1, 0, model.dimensions[2] - 1);
|
|
70
67
|
imageData.setOrigin(...model.origin);
|
|
@@ -10,12 +10,9 @@ function vtkSphereSource(publicAPI, model) {
|
|
|
10
10
|
// Set our className
|
|
11
11
|
model.classHierarchy.push('vtkSphereSource');
|
|
12
12
|
publicAPI.requestData = (inData, outData) => {
|
|
13
|
-
if (model.deleted) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
16
13
|
let dataset = outData[0];
|
|
17
14
|
const pointDataType = dataset ? dataset.getPoints().getDataType() : model.pointType;
|
|
18
|
-
dataset = vtkPolyData.newInstance();
|
|
15
|
+
dataset = dataset?.initialize() || vtkPolyData.newInstance();
|
|
19
16
|
|
|
20
17
|
// ----------------------------------------------------------------------
|
|
21
18
|
let numPoles = 0;
|
|
@@ -4,7 +4,7 @@ import vtkPolyData from '../../Common/DataModel/PolyData.js';
|
|
|
4
4
|
|
|
5
5
|
function vtkViewFinderSource(publicAPI, model) {
|
|
6
6
|
publicAPI.requestData = (inData, outData) => {
|
|
7
|
-
const dataset = vtkPolyData.newInstance();
|
|
7
|
+
const dataset = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
8
8
|
const points = macro.newTypedArray(model.pointType, 3 * 16);
|
|
9
9
|
points[0] = model.radius;
|
|
10
10
|
points[1] = model.radius / model.width;
|
|
@@ -90,16 +90,13 @@ function vtkTextureMapToPlane(publicAPI, model) {
|
|
|
90
90
|
model.normal[2] = -1.0;
|
|
91
91
|
}
|
|
92
92
|
publicAPI.requestData = (inData, outData) => {
|
|
93
|
-
if (model.deleted) {
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
93
|
const input = inData[0];
|
|
97
94
|
const nbPoints = input.getPoints().getNumberOfPoints();
|
|
98
95
|
if (nbPoints < 3 && model.automaticPlaneGeneration) {
|
|
99
96
|
vtkErrorMacro("Can't generate texture coordinates without points");
|
|
100
97
|
return;
|
|
101
98
|
}
|
|
102
|
-
const output = vtkPolyData.newInstance();
|
|
99
|
+
const output = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
103
100
|
output.getPoints().setData(new Float32Array(input.getPoints().getData()), 3);
|
|
104
101
|
output.getPolys().setData(new Uint32Array(input.getPolys().getData()));
|
|
105
102
|
const tcoordsData = [];
|
|
@@ -15,9 +15,6 @@ function vtkTextureMapToSphere(publicAPI, model) {
|
|
|
15
15
|
// Set our className
|
|
16
16
|
model.classHierarchy.push('vtkTextureMapToSphere');
|
|
17
17
|
publicAPI.requestData = (inData, outData) => {
|
|
18
|
-
if (model.deleted) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
18
|
const input = inData[0];
|
|
22
19
|
const nbPoints = input.getPoints().getNumberOfPoints();
|
|
23
20
|
if (nbPoints <= 1) {
|
|
@@ -108,7 +105,7 @@ function vtkTextureMapToSphere(publicAPI, model) {
|
|
|
108
105
|
size: nbPoints,
|
|
109
106
|
values: tcoordsData
|
|
110
107
|
});
|
|
111
|
-
const output = vtkPolyData.newInstance();
|
|
108
|
+
const output = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
112
109
|
output.getPoints().setData(new Float32Array(input.getPoints().getData()), 3);
|
|
113
110
|
output.getPolys().setData(new Uint32Array(input.getPolys().getData()));
|
|
114
111
|
output.getPointData().setTCoords(tCoords);
|
|
@@ -206,7 +206,7 @@ function vtkImageReslice(publicAPI, model) {
|
|
|
206
206
|
});
|
|
207
207
|
|
|
208
208
|
// Update output
|
|
209
|
-
const output = vtkImageData.newInstance();
|
|
209
|
+
const output = outData[0]?.initialize() || vtkImageData.newInstance();
|
|
210
210
|
output.setDimensions(outDims);
|
|
211
211
|
output.setOrigin(outOrigin);
|
|
212
212
|
output.setSpacing(outSpacing);
|
|
@@ -39,7 +39,7 @@ function vtkSampleFunction(publicAPI, model) {
|
|
|
39
39
|
vtkErrorMacro('Bad volume dimensions');
|
|
40
40
|
return;
|
|
41
41
|
}
|
|
42
|
-
const volume = vtkImageData.newInstance();
|
|
42
|
+
const volume = outData[0]?.initialize() || vtkImageData.newInstance();
|
|
43
43
|
const origin = [model.modelBounds[0], model.modelBounds[2], model.modelBounds[4]];
|
|
44
44
|
const spacing = [(model.modelBounds[1] - model.modelBounds[0]) / (dims[0] - 1), (model.modelBounds[3] - model.modelBounds[2]) / (dims[1] - 1), (model.modelBounds[5] - model.modelBounds[4]) / (dims[2] - 1)];
|
|
45
45
|
const sliceSize = dims[0] * dims[1];
|
|
@@ -241,11 +241,10 @@ function vtkVectorText(publicAPI, model) {
|
|
|
241
241
|
* Creates a vtkPolyData from the processed shapes
|
|
242
242
|
* @returns {Object} vtkPolyData instance
|
|
243
243
|
*/
|
|
244
|
-
function buildPolyData() {
|
|
244
|
+
function buildPolyData(polyData) {
|
|
245
245
|
model.verticesArray = [];
|
|
246
246
|
model.uvArray = [];
|
|
247
247
|
model.colorArray = [];
|
|
248
|
-
const polyData = vtkPolyData.newInstance();
|
|
249
248
|
const cells = vtkCellArray.newInstance();
|
|
250
249
|
const pointData = polyData.getPointData();
|
|
251
250
|
|
|
@@ -328,7 +327,9 @@ function vtkVectorText(publicAPI, model) {
|
|
|
328
327
|
return;
|
|
329
328
|
}
|
|
330
329
|
buildShape();
|
|
331
|
-
outData[0]
|
|
330
|
+
const polyData = outData[0]?.initialize() || vtkPolyData.newInstance();
|
|
331
|
+
buildPolyData(polyData);
|
|
332
|
+
outData[0] = polyData;
|
|
332
333
|
};
|
|
333
334
|
}
|
|
334
335
|
|
|
@@ -63,14 +63,19 @@ export interface vtkViewport extends vtkObject {
|
|
|
63
63
|
getSize(): Size;
|
|
64
64
|
|
|
65
65
|
/**
|
|
66
|
-
*
|
|
66
|
+
* Viewport for the Viewport to draw in the rendering window.
|
|
67
|
+
* Coordinates are expressed as (xmin,ymin,xmax,ymax), where each
|
|
68
|
+
* coordinate is 0 <= coordinate <= 1.0.
|
|
69
|
+
* @returns {Number[]}
|
|
70
|
+
* @see getViewportByReference()
|
|
71
|
+
* @see setViewport()
|
|
67
72
|
*/
|
|
68
|
-
getViewport():
|
|
73
|
+
getViewport(): [number, number, number, number];
|
|
69
74
|
|
|
70
75
|
/**
|
|
71
76
|
*
|
|
72
77
|
*/
|
|
73
|
-
getViewportByReference():
|
|
78
|
+
getViewportByReference(): [number, number, number, number];
|
|
74
79
|
|
|
75
80
|
/**
|
|
76
81
|
*
|