Skip to content

Commit 1b1e756

Browse files
committed
fix(ImageSlice): typescript definitions
Fix typescript definition error when using vtkImageResliceMapper with vtkImageSlice. Change vtkImageSlice to accept vtkAbstractImageMapper. Fixes errors such as: ``` Argument of type 'vtkImageResliceMapper' is not assignable to parameter of type 'vtkImageMapper'. Type 'vtkImageResliceMapper' is missing the following properties from type 'vtkImageMapper': getSliceAtPosition, getClosestIJKAxis, getBoundsForSlice, getRenderToRectangle, and 15 more. ```
1 parent 7a7d3e7 commit 1b1e756

File tree

6 files changed

+75
-10
lines changed

6 files changed

+75
-10
lines changed

Sources/Rendering/Core/AbstractImageMapper/index.d.ts

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import vtkAbstractMapper3D, { IAbstractMapper3DInitialValues } from "../AbstractMapper3D";
22
import vtkImageData from "../../../Common/DataModel/ImageData";
3-
import { Nullable } from "../../../types";
3+
import { Bounds, Extent, Nullable, RGBAColor } from "../../../types";
44

55

66
export interface IAbstractImageMapperInitialValues extends IAbstractMapper3DInitialValues {
@@ -32,6 +32,45 @@ export interface vtkAbstractImageMapper extends vtkAbstractMapper3D {
3232
*/
3333
setSlice(slice: number): boolean;
3434

35+
/**
36+
* Get bounds for a specified slice.
37+
* To be implemented by derived classes.
38+
* @param {Number} slice The slice index. If undefined, the current slice is considered.
39+
* @param {Number} thickness The slice thickness. If undefined, 0 is considered.
40+
*/
41+
getBoundsForSlice(slice?: number, thickness?: number): Bounds;
42+
43+
/**
44+
* Return the currently set background color.
45+
*/
46+
getBackgroundColor(): RGBAColor;
47+
48+
/**
49+
* Return the currently set background color.
50+
*/
51+
getBackgroundColorByReference(): RGBAColor;
52+
53+
/**
54+
* @param r red component of background color
55+
* @param g green component of background color
56+
* @param b blue component of background color
57+
* @param a opacity component of background color
58+
*/
59+
setBackgroundColor(r: number, g: number, b: number, a: number): boolean;
60+
61+
/**
62+
*
63+
* @param color specify background color as an array of 4 values.
64+
*/
65+
setBackgroundColor(color: RGBAColor): boolean;
66+
67+
/**
68+
*
69+
* @param {RGBAColor} color specify the background color to use
70+
* in RGBA format as an array of 4 values. Values are copied.
71+
*/
72+
setBackgroundColorFrom(color: RGBAColor): boolean;
73+
3574
/**
3675
*
3776
*/
@@ -43,6 +82,16 @@ export interface vtkAbstractImageMapper extends vtkAbstractMapper3D {
4382
*/
4483
setUseCustomExtents(useCustomExtents: boolean): boolean;
4584

85+
/**
86+
*
87+
*/
88+
getCustomDisplayExtent(): Extent;
89+
90+
/**
91+
*
92+
*/
93+
getCustomDisplayExtentByReference(): Extent;
94+
4695
/**
4796
*
4897
* @param {Number} x1 The x coordinate of the first point.
@@ -54,6 +103,12 @@ export interface vtkAbstractImageMapper extends vtkAbstractMapper3D {
54103
*/
55104
setCustomDisplayExtent(x1: number, x2: number, y1: number, y2: number, z1: number, z2: number): boolean;
56105

106+
/**
107+
*
108+
* @param extents specify extents as an array of 6 values [minx, maxx, ...]
109+
*/
110+
setCustomDisplayExtent(customDisplayExtent: Extent): boolean;
111+
57112
/**
58113
*
59114
* @param customDisplayExtent

Sources/Rendering/Core/AbstractImageMapper/index.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import macro from 'vtk.js/Sources/macros';
22
import vtkAbstractMapper3D from 'vtk.js/Sources/Rendering/Core/AbstractMapper3D';
3+
import { createUninitializedBounds } from 'vtk.js/Sources/Common/Core/Math';
34

45
// ----------------------------------------------------------------------------
56
// vtkAbstractImageMapper methods
@@ -11,6 +12,13 @@ function vtkAbstractImageMapper(publicAPI, model) {
1112
publicAPI.getIsOpaque = () => true;
1213

1314
publicAPI.getCurrentImage = () => null;
15+
16+
publicAPI.getBoundsForSlice = () => {
17+
macro.vtkErrorMacro(
18+
'vtkAbstractImageMapper.getBoundsForSlice - NOT IMPLEMENTED'
19+
);
20+
return createUninitializedBounds();
21+
};
1422
}
1523

1624
// ----------------------------------------------------------------------------

Sources/Rendering/Core/AbstractMapper3D/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import macro from 'vtk.js/Sources/macros';
22
import vtkAbstractMapper from 'vtk.js/Sources/Rendering/Core/AbstractMapper';
33
import vtkBoundingBox from 'vtk.js/Sources/Common/DataModel/BoundingBox';
4+
import { createUninitializedBounds } from 'vtk.js/Sources/Common/Core/Math';
45

56
// ----------------------------------------------------------------------------
67
// vtkAbstractMapper methods
@@ -9,6 +10,7 @@ import vtkBoundingBox from 'vtk.js/Sources/Common/DataModel/BoundingBox';
910
function vtkAbstractMapper3D(publicAPI, model) {
1011
publicAPI.getBounds = () => {
1112
macro.vtkErrorMacro(`vtkAbstractMapper3D.getBounds - NOT IMPLEMENTED`);
13+
return createUninitializedBounds();
1214
};
1315

1416
publicAPI.getCenter = () => {

Sources/Rendering/Core/ImageArrayMapper/index.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ export interface vtkImageArrayMapper extends vtkAbstractImageMapper {
5252
* @param {Number} [slice] The slice index. If undefined, the current slice is considered.
5353
* @param {Number} [halfThickness] Half the slice thickness in index space (unit voxel
5454
* spacing). If undefined, 0 is considered.
55-
* @return {Number[]} The bounds for a given slice.
55+
* @return {Bounds} The bounds for a given slice.
5656
*/
57-
getBoundsForSlice(slice?: number, halfThickness?: number): number[];
57+
getBoundsForSlice(slice?: number, halfThickness?: number): Bounds;
5858

5959
/**
6060
* Get the closest IJK axis

Sources/Rendering/Core/ImageMapper/index.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ export interface vtkImageMapper extends vtkAbstractImageMapper {
4646
* @param {Number} [slice] The slice index. If undefined, the current slice is considered.
4747
* @param {Number} [halfThickness] Half the slice thickness in index space (unit voxel
4848
* spacing). If undefined, 0 is considered.
49-
* @return {Number[]} The bounds for a given slice.
49+
* @return {Bounds} The bounds for a given slice.
5050
*/
51-
getBoundsForSlice(slice?: number, halfThickness?: number): number[];
51+
getBoundsForSlice(slice?: number, halfThickness?: number): Bounds;
5252

5353
/**
5454
*

Sources/Rendering/Core/ImageSlice/index.d.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { Bounds } from "../../../types";
22
import vtkImageProperty, { IImagePropertyInitialValues } from "../ImageProperty";
3-
import vtkImageMapper from "../ImageMapper";
3+
import vtkAbstractImageMapper from "../AbstractImageMapper";
44
import vtkProp3D, { IProp3DInitialValues } from "../Prop3D";
55

66
export interface IImageSliceInitialValues extends IProp3DInitialValues{
7-
mapper?: vtkImageMapper;
7+
mapper?: vtkAbstractImageMapper;
88
property?: vtkImageProperty;
99
bounds?: Bounds;
1010
}
@@ -55,7 +55,7 @@ export interface vtkImageSlice extends vtkProp3D {
5555
/**
5656
*
5757
*/
58-
getMapper(): vtkImageMapper;
58+
getMapper(): vtkAbstractImageMapper;
5959

6060
/**
6161
* Get the minimum X bound
@@ -126,9 +126,9 @@ export interface vtkImageSlice extends vtkProp3D {
126126

127127
/**
128128
*
129-
* @param {vtkImageMapper} mapper The vtkImageMapper instance.
129+
* @param {vtkAbstractImageMapper} mapper An instance that derives from vtkAbstractImageMapper.
130130
*/
131-
setMapper(mapper: vtkImageMapper): boolean;
131+
setMapper(mapper: vtkAbstractImageMapper): boolean;
132132

133133
/**
134134
*

0 commit comments

Comments
 (0)