@kitware/vtk.js 31.1.0 → 32.0.0

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.
@@ -1,3 +1,11 @@
1
+ ## From 31.x to 32
2
+
3
+ - **vtkMapper**: remove `mapScalarsToTexture` from the public API. The function becomes protected and its API changes. This shouldn't cause any issue in most cases.
4
+
5
+ ## From 30.x to 31
6
+
7
+ - **Picking**: write to depth buffer for translucent pass when picking. This change fixes a picking issue with multiple translucent actors overlaid on top of each other. The hardware selector would just register the propID of the last rendered prop. This was because we explicitly turn off writing to the depth buffer when rendering translucent props as OIT doesn't need it. This change enables writing to the depth buffer when picking in the translucent pass. Applications relying on picked propID would see a difference in the IDs returned by the hardware selector.
8
+
1
9
  ## From 29.x to 30
2
10
 
3
11
  - **ResliceCursorWidget.interactionEvent**: no longer pass an object of `{computeFocalPointOffset, canUpdateFocalPoint}` but simply the type of the handle that triggers the event (e.g. `InteractionMethodsName.RotateLine`). The removed values can easily be recomputed by the consumers of the event by checking the type of the handle. Regarding `computeFocalPointOffset`, it is no longer advised to compute focal point offset for each interaction, instead observing `startInteraction()` should be considered (see ResliceCursorWidget example).
@@ -60,7 +60,8 @@ function vtkLookupTable(publicAPI, model) {
60
60
  publicAPI.usingLogScale = () => false;
61
61
 
62
62
  //----------------------------------------------------------------------------
63
- publicAPI.getNumberOfAvailableColors = () => model.table.length / 4;
63
+ // Don't count special colors (min, max, NaN) as available colors
64
+ publicAPI.getNumberOfAvailableColors = () => model.table.length / 4 - 3;
64
65
 
65
66
  //----------------------------------------------------------------------------
66
67
  // Apply shift/scale to the scalar value v and return the index.
@@ -937,7 +937,9 @@ function vtkColorTransferFunction(publicAPI, model) {
937
937
  // has been called.
938
938
  return model.tableSize;
939
939
  }
940
- return 16777216; // 2^24
940
+ const nNodes = model.nodes?.length ?? 0;
941
+ // The minimum is 4094 colors so that it fills in the 4096 texels texture in `mapScalarsToTexture`
942
+ return Math.max(4094, nNodes);
941
943
  };
942
944
 
943
945
  //----------------------------------------------------------------------------
@@ -6,11 +6,9 @@ import { Bounds, Nullable } from './../../types';
6
6
  import { SlicingMode } from './ImageMapper/Constants';
7
7
  import vtkImageData from './../../Common/DataModel/ImageData';
8
8
  import vtkCollection from './../../Common/DataModel/Collection';
9
-
10
- interface ICoincidentTopology {
11
- factor: number;
12
- offset: number;
13
- }
9
+ import CoincidentTopologyHelper, {
10
+ StaticCoincidentTopologyMethods,
11
+ } from './Mapper/CoincidentTopologyHelper';
14
12
 
15
13
  interface ISliceToSubSlice {
16
14
  imageIndex: number;
@@ -23,7 +21,9 @@ export interface IImageArrayMapperInitialValues
23
21
  sliceToSubSliceMap: ISliceToSubSlice[];
24
22
  }
25
23
 
26
- export interface vtkImageArrayMapper extends vtkAbstractImageMapper {
24
+ export interface vtkImageArrayMapper
25
+ extends vtkAbstractImageMapper,
26
+ CoincidentTopologyHelper {
27
27
  /**
28
28
  *
29
29
  * @param inputData set input as a vtkCollection of vtkImageData objects.
@@ -101,124 +101,6 @@ export interface vtkImageArrayMapper extends vtkAbstractImageMapper {
101
101
  */
102
102
  getSubSlice(slice?: number): number;
103
103
 
104
- /**
105
- *
106
- */
107
- getResolveCoincidentTopology(): ICoincidentTopology;
108
-
109
- /**
110
- *
111
- */
112
- getResolveCoincidentTopologyAsString(): ICoincidentTopology;
113
-
114
- /**
115
- *
116
- */
117
- getResolveCoincidentTopologyLineOffsetParameters(): ICoincidentTopology;
118
-
119
- /**
120
- *
121
- */
122
- getResolveCoincidentTopologyPointOffsetParameters(): ICoincidentTopology;
123
-
124
- /**
125
- *
126
- */
127
- getResolveCoincidentTopologyPolygonOffsetFaces(): ICoincidentTopology;
128
-
129
- /**
130
- *
131
- */
132
- getResolveCoincidentTopologyPolygonOffsetParameters(): ICoincidentTopology;
133
-
134
- /**
135
- *
136
- * @param {Number} factor
137
- * @param {Number} offset
138
- */
139
- setRelativeCoincidentTopologyLineOffsetParameters(
140
- factor: number,
141
- offset: number
142
- ): boolean;
143
-
144
- /**
145
- *
146
- * @param {Number} factor
147
- * @param {Number} offset
148
- */
149
- setRelativeCoincidentTopologyPointOffsetParameters(
150
- factor: number,
151
- offset: number
152
- ): boolean;
153
-
154
- /**
155
- *
156
- * @param {Number} factor
157
- * @param {Number} offset
158
- */
159
- setRelativeCoincidentTopologyPolygonOffsetParameters(
160
- factor: number,
161
- offset: number
162
- ): boolean;
163
-
164
- /**
165
- *
166
- * @param resolveCoincidentTopology
167
- * @default false
168
- */
169
- setResolveCoincidentTopology(resolveCoincidentTopology: boolean): boolean;
170
-
171
- /**
172
- *
173
- * @param {Number} factor
174
- * @param {Number} offset
175
- */
176
- setResolveCoincidentTopologyLineOffsetParameters(
177
- factor: number,
178
- offset: number
179
- ): boolean;
180
-
181
- /**
182
- *
183
- * @param {Number} factor
184
- * @param {Number} offset
185
- */
186
- setResolveCoincidentTopologyPointOffsetParameters(
187
- factor: number,
188
- offset: number
189
- ): boolean;
190
-
191
- /**
192
- *
193
- * @param value
194
- */
195
- setResolveCoincidentTopologyPolygonOffsetFaces(value: number): boolean;
196
-
197
- /**
198
- *
199
- * @param {Number} factor
200
- * @param {Number} offset
201
- */
202
- setResolveCoincidentTopologyPolygonOffsetParameters(
203
- factor: number,
204
- offset: number
205
- ): boolean;
206
-
207
- /**
208
- *
209
- */
210
- setResolveCoincidentTopologyToDefault(): boolean;
211
-
212
- /**
213
- *
214
- */
215
- setResolveCoincidentTopologyToOff(): boolean;
216
-
217
- /**
218
- *
219
- */
220
- setResolveCoincidentTopologyToPolygonOffset(): boolean;
221
-
222
104
  /**
223
105
  * Set the slicing mode.
224
106
  * @param {Number} mode The slicing mode.
@@ -273,5 +155,5 @@ export declare const vtkImageArrayMapper: {
273
155
  newInstance: typeof newInstance;
274
156
  extend: typeof extend;
275
157
  SlicingMode: typeof SlicingMode;
276
- };
158
+ } & StaticCoincidentTopologyMethods;
277
159
  export default vtkImageArrayMapper;
@@ -9,11 +9,9 @@ import vtkImageData from './../../Common/DataModel/ImageData';
9
9
  import vtkPolyData from './../../Common/DataModel/PolyData';
10
10
  import vtkPolyLine from './../../Common/DataModel/PolyLine';
11
11
  import { ProjectionMode } from './ImageCPRMapper/Constants';
12
-
13
- interface ICoincidentTopology {
14
- factor: number;
15
- offset: number;
16
- }
12
+ import CoincidentTopologyHelper, {
13
+ StaticCoincidentTopologyMethods,
14
+ } from './Mapper/CoincidentTopologyHelper';
17
15
 
18
16
  type TOrientation = mat4 | mat3 | quat | vec3;
19
17
 
@@ -29,7 +27,9 @@ export interface IImageCPRMapperInitialValues
29
27
  normalDirection: vec3;
30
28
  }
31
29
 
32
- export interface vtkImageCPRMapper extends vtkAbstractMapper3D {
30
+ export interface vtkImageCPRMapper
31
+ extends vtkAbstractMapper3D,
32
+ CoincidentTopologyHelper {
33
33
  /**
34
34
  * @returns the width of the image in model coordinates of the input volume
35
35
  */
@@ -307,124 +307,6 @@ export interface vtkImageCPRMapper extends vtkAbstractMapper3D {
307
307
  * @param imageData
308
308
  */
309
309
  setImageConnection(imageData: vtkOutputPort): void;
310
-
311
- /**
312
- *
313
- */
314
- getResolveCoincidentTopology(): ICoincidentTopology;
315
-
316
- /**
317
- *
318
- */
319
- getResolveCoincidentTopologyAsString(): ICoincidentTopology;
320
-
321
- /**
322
- *
323
- */
324
- getResolveCoincidentTopologyLineOffsetParameters(): ICoincidentTopology;
325
-
326
- /**
327
- *
328
- */
329
- getResolveCoincidentTopologyPointOffsetParameters(): ICoincidentTopology;
330
-
331
- /**
332
- *
333
- */
334
- getResolveCoincidentTopologyPolygonOffsetFaces(): ICoincidentTopology;
335
-
336
- /**
337
- *
338
- */
339
- getResolveCoincidentTopologyPolygonOffsetParameters(): ICoincidentTopology;
340
-
341
- /**
342
- *
343
- * @param {Number} factor
344
- * @param {Number} offset
345
- */
346
- setRelativeCoincidentTopologyLineOffsetParameters(
347
- factor: number,
348
- offset: number
349
- ): boolean;
350
-
351
- /**
352
- *
353
- * @param {Number} factor
354
- * @param {Number} offset
355
- */
356
- setRelativeCoincidentTopologyPointOffsetParameters(
357
- factor: number,
358
- offset: number
359
- ): boolean;
360
-
361
- /**
362
- *
363
- * @param {Number} factor
364
- * @param {Number} offset
365
- */
366
- setRelativeCoincidentTopologyPolygonOffsetParameters(
367
- factor: number,
368
- offset: number
369
- ): boolean;
370
-
371
- /**
372
- *
373
- * @param resolveCoincidentTopology
374
- * @default false
375
- */
376
- setResolveCoincidentTopology(resolveCoincidentTopology: boolean): boolean;
377
-
378
- /**
379
- *
380
- * @param {Number} factor
381
- * @param {Number} offset
382
- */
383
- setResolveCoincidentTopologyLineOffsetParameters(
384
- factor: number,
385
- offset: number
386
- ): boolean;
387
-
388
- /**
389
- *
390
- * @param {Number} factor
391
- * @param {Number} offset
392
- */
393
- setResolveCoincidentTopologyPointOffsetParameters(
394
- factor: number,
395
- offset: number
396
- ): boolean;
397
-
398
- /**
399
- *
400
- * @param value
401
- */
402
- setResolveCoincidentTopologyPolygonOffsetFaces(value: number): boolean;
403
-
404
- /**
405
- *
406
- * @param {Number} factor
407
- * @param {Number} offset
408
- */
409
- setResolveCoincidentTopologyPolygonOffsetParameters(
410
- factor: number,
411
- offset: number
412
- ): boolean;
413
-
414
- /**
415
- *
416
- */
417
- setResolveCoincidentTopologyToDefault(): boolean;
418
-
419
- /**
420
- *
421
- */
422
- setResolveCoincidentTopologyToOff(): boolean;
423
-
424
- /**
425
- *
426
- */
427
- setResolveCoincidentTopologyToPolygonOffset(): boolean;
428
310
  }
429
311
 
430
312
  /**
@@ -483,5 +365,5 @@ export function newInstance(
483
365
  export declare const vtkImageCPRMapper: {
484
366
  newInstance: typeof newInstance;
485
367
  extend: typeof extend;
486
- };
368
+ } & StaticCoincidentTopologyMethods;
487
369
  export default vtkImageCPRMapper;
@@ -5,17 +5,15 @@ import vtkAbstractImageMapper, {
5
5
  import { Bounds, Nullable, Vector3 } from './../../types';
6
6
  import { SlicingMode } from './ImageMapper/Constants';
7
7
  import vtkImageData from './../../Common/DataModel/ImageData';
8
+ import CoincidentTopologyHelper, {
9
+ StaticCoincidentTopologyMethods,
10
+ } from './Mapper/CoincidentTopologyHelper';
8
11
 
9
12
  interface IClosestIJKAxis {
10
13
  ijkMode: SlicingMode;
11
14
  flip: boolean;
12
15
  }
13
16
 
14
- interface ICoincidentTopology {
15
- factor: number;
16
- offset: number;
17
- }
18
-
19
17
  export interface IImageMapperInitialValues
20
18
  extends IAbstractImageMapperInitialValues {
21
19
  closestIJKAxis?: IClosestIJKAxis;
@@ -23,7 +21,9 @@ export interface IImageMapperInitialValues
23
21
  sliceAtFocalPoint?: boolean;
24
22
  }
25
23
 
26
- export interface vtkImageMapper extends vtkAbstractImageMapper {
24
+ export interface vtkImageMapper
25
+ extends vtkAbstractImageMapper,
26
+ CoincidentTopologyHelper {
27
27
  /**
28
28
  * Returns the IJK slice value from a world position or XYZ slice value
29
29
  * @param {Vector3 | number} [pos] World point or XYZ slice value
@@ -61,36 +61,6 @@ export interface vtkImageMapper extends vtkAbstractImageMapper {
61
61
  */
62
62
  getRenderToRectangle(): boolean;
63
63
 
64
- /**
65
- *
66
- */
67
- getResolveCoincidentTopology(): ICoincidentTopology;
68
-
69
- /**
70
- *
71
- */
72
- getResolveCoincidentTopologyAsString(): ICoincidentTopology;
73
-
74
- /**
75
- *
76
- */
77
- getResolveCoincidentTopologyLineOffsetParameters(): ICoincidentTopology;
78
-
79
- /**
80
- *
81
- */
82
- getResolveCoincidentTopologyPointOffsetParameters(): ICoincidentTopology;
83
-
84
- /**
85
- *
86
- */
87
- getResolveCoincidentTopologyPolygonOffsetFaces(): ICoincidentTopology;
88
-
89
- /**
90
- *
91
- */
92
- getResolveCoincidentTopologyPolygonOffsetParameters(): ICoincidentTopology;
93
-
94
64
  /**
95
65
  * Return currently active image. By default, there can only be one image
96
66
  * for this mapper, if an input is set.
@@ -122,94 +92,6 @@ export interface vtkImageMapper extends vtkAbstractImageMapper {
122
92
  */
123
93
  setClosestIJKAxis(closestIJKAxis: IClosestIJKAxis): boolean;
124
94
 
125
- /**
126
- *
127
- * @param {Number} factor
128
- * @param {Number} offset
129
- */
130
- setRelativeCoincidentTopologyLineOffsetParameters(
131
- factor: number,
132
- offset: number
133
- ): boolean;
134
-
135
- /**
136
- *
137
- * @param {Number} factor
138
- * @param {Number} offset
139
- */
140
- setRelativeCoincidentTopologyPointOffsetParameters(
141
- factor: number,
142
- offset: number
143
- ): boolean;
144
-
145
- /**
146
- *
147
- * @param {Number} factor
148
- * @param {Number} offset
149
- */
150
- setRelativeCoincidentTopologyPolygonOffsetParameters(
151
- factor: number,
152
- offset: number
153
- ): boolean;
154
-
155
- /**
156
- *
157
- * @param resolveCoincidentTopology
158
- * @default false
159
- */
160
- setResolveCoincidentTopology(resolveCoincidentTopology: boolean): boolean;
161
-
162
- /**
163
- *
164
- * @param {Number} factor
165
- * @param {Number} offset
166
- */
167
- setResolveCoincidentTopologyLineOffsetParameters(
168
- factor: number,
169
- offset: number
170
- ): boolean;
171
-
172
- /**
173
- *
174
- * @param {Number} factor
175
- * @param {Number} offset
176
- */
177
- setResolveCoincidentTopologyPointOffsetParameters(
178
- factor: number,
179
- offset: number
180
- ): boolean;
181
-
182
- /**
183
- *
184
- * @param value
185
- */
186
- setResolveCoincidentTopologyPolygonOffsetFaces(value: number): boolean;
187
-
188
- /**
189
- *
190
- * @param {Number} factor
191
- * @param {Number} offset
192
- */
193
- setResolveCoincidentTopologyPolygonOffsetParameters(
194
- factor: number,
195
- offset: number
196
- ): boolean;
197
-
198
- /**
199
- *
200
- */
201
- setResolveCoincidentTopologyToDefault(): boolean;
202
-
203
- /**
204
- *
205
- */
206
- setResolveCoincidentTopologyToOff(): boolean;
207
-
208
- /**
209
- *
210
- */
211
- setResolveCoincidentTopologyToPolygonOffset(): boolean;
212
-
213
95
  /**
214
96
  *
215
97
  * @param {Boolean} renderToRectangle
@@ -329,5 +211,5 @@ export declare const vtkImageMapper: {
329
211
  newInstance: typeof newInstance;
330
212
  extend: typeof extend;
331
213
  SlicingMode: typeof SlicingMode;
332
- };
214
+ } & StaticCoincidentTopologyMethods;
333
215
  export default vtkImageMapper;
@@ -6,11 +6,9 @@ import vtkPlane from './../../Common/DataModel/Plane';
6
6
  import vtkPolyData from './../../Common/DataModel/PolyData';
7
7
  import { Bounds, Nullable, Vector3 } from './../../types';
8
8
  import { SlabTypes } from './ImageResliceMapper/Constants';
9
-
10
- interface ICoincidentTopology {
11
- factor: number;
12
- offset: number;
13
- }
9
+ import CoincidentTopologyHelper, {
10
+ StaticCoincidentTopologyMethods,
11
+ } from './Mapper/CoincidentTopologyHelper';
14
12
 
15
13
  export interface IImageResliceMapperInitialValues
16
14
  extends IAbstractImageMapperInitialValues {
@@ -21,7 +19,9 @@ export interface IImageResliceMapperInitialValues
21
19
  slicePolyData?: vtkPolyData;
22
20
  }
23
21
 
24
- export interface vtkImageResliceMapper extends vtkAbstractImageMapper {
22
+ export interface vtkImageResliceMapper
23
+ extends vtkAbstractImageMapper,
24
+ CoincidentTopologyHelper {
25
25
  /**
26
26
  * Get the bounds for this mapper as [xmin, xmax, ymin, ymax,zmin, zmax].
27
27
  * @return {Bounds} The bounds for the mapper.
@@ -33,36 +33,6 @@ export interface vtkImageResliceMapper extends vtkAbstractImageMapper {
33
33
  */
34
34
  getIsOpaque(): boolean;
35
35
 
36
- /**
37
- *
38
- */
39
- getResolveCoincidentTopology(): ICoincidentTopology;
40
-
41
- /**
42
- *
43
- */
44
- getResolveCoincidentTopologyAsString(): ICoincidentTopology;
45
-
46
- /**
47
- *
48
- */
49
- getResolveCoincidentTopologyLineOffsetParameters(): ICoincidentTopology;
50
-
51
- /**
52
- *
53
- */
54
- getResolveCoincidentTopologyPointOffsetParameters(): ICoincidentTopology;
55
-
56
- /**
57
- *
58
- */
59
- getResolveCoincidentTopologyPolygonOffsetFaces(): ICoincidentTopology;
60
-
61
- /**
62
- *
63
- */
64
- getResolveCoincidentTopologyPolygonOffsetParameters(): ICoincidentTopology;
65
-
66
36
  /**
67
37
  *
68
38
  * Get the slab thickness in world space (mm).
@@ -93,94 +63,6 @@ export interface vtkImageResliceMapper extends vtkAbstractImageMapper {
93
63
  */
94
64
  getSlicePolyData(): vtkPolyData;
95
65
 
96
- /**
97
- *
98
- * @param {Number} factor
99
- * @param {Number} offset
100
- */
101
- setRelativeCoincidentTopologyLineOffsetParameters(
102
- factor: number,
103
- offset: number
104
- ): boolean;
105
-
106
- /**
107
- *
108
- * @param {Number} factor
109
- * @param {Number} offset
110
- */
111
- setRelativeCoincidentTopologyPointOffsetParameters(
112
- factor: number,
113
- offset: number
114
- ): boolean;
115
-
116
- /**
117
- *
118
- * @param {Number} factor
119
- * @param {Number} offset
120
- */
121
- setRelativeCoincidentTopologyPolygonOffsetParameters(
122
- factor: number,
123
- offset: number
124
- ): boolean;
125
-
126
- /**
127
- *
128
- * @param resolveCoincidentTopology
129
- * @default false
130
- */
131
- setResolveCoincidentTopology(resolveCoincidentTopology: boolean): boolean;
132
-
133
- /**
134
- *
135
- * @param {Number} factor
136
- * @param {Number} offset
137
- */
138
- setResolveCoincidentTopologyLineOffsetParameters(
139
- factor: number,
140
- offset: number
141
- ): boolean;
142
-
143
- /**
144
- *
145
- * @param {Number} factor
146
- * @param {Number} offset
147
- */
148
- setResolveCoincidentTopologyPointOffsetParameters(
149
- factor: number,
150
- offset: number
151
- ): boolean;
152
-
153
- /**
154
- *
155
- * @param value
156
- */
157
- setResolveCoincidentTopologyPolygonOffsetFaces(value: number): boolean;
158
-
159
- /**
160
- *
161
- * @param {Number} factor
162
- * @param {Number} offset
163
- */
164
- setResolveCoincidentTopologyPolygonOffsetParameters(
165
- factor: number,
166
- offset: number
167
- ): boolean;
168
-
169
- /**
170
- *
171
- */
172
- setResolveCoincidentTopologyToDefault(): boolean;
173
-
174
- /**
175
- *
176
- */
177
- setResolveCoincidentTopologyToOff(): boolean;
178
-
179
- /**
180
- *
181
- */
182
- setResolveCoincidentTopologyToPolygonOffset(): boolean;
183
-
184
66
  /**
185
67
  *
186
68
  * Enable slab slicing mode and set the slab thickness in world space (mm).
@@ -266,5 +148,5 @@ export function newInstance(
266
148
  export declare const vtkImageResliceMapper: {
267
149
  newInstance: typeof newInstance;
268
150
  extend: typeof extend;
269
- };
151
+ } & StaticCoincidentTopologyMethods;
270
152
  export default vtkImageResliceMapper;