@kitware/vtk.js 31.1.0 → 31.2.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.
- package/Rendering/Core/ImageArrayMapper.d.ts +7 -125
- package/Rendering/Core/ImageCPRMapper.d.ts +7 -125
- package/Rendering/Core/ImageMapper.d.ts +7 -125
- package/Rendering/Core/ImageResliceMapper.d.ts +7 -125
- package/Rendering/Core/Mapper/CoincidentTopologyHelper.d.ts +194 -0
- package/Rendering/Core/Mapper/CoincidentTopologyHelper.js +8 -8
- package/Rendering/Core/Mapper/Static.js +15 -9
- package/Rendering/Core/Mapper.d.ts +7 -114
- package/Rendering/Core/VolumeMapper/Constants.d.ts +1 -0
- package/Rendering/Core/VolumeMapper/Constants.js +2 -1
- package/Rendering/OpenGL/ImageCPRMapper.js +3 -1
- package/Rendering/OpenGL/ImageMapper.js +7 -2
- package/Rendering/OpenGL/ImageResliceMapper.js +6 -1
- package/Rendering/OpenGL/PolyDataMapper.js +6 -1
- package/Rendering/OpenGL/VolumeMapper.js +14 -4
- package/Rendering/OpenGL/glsl/vtkVolumeFS.glsl.js +1 -1
- package/Widgets/Representations/CircleContextRepresentation.js +3 -1
- package/index.d.ts +1 -0
- package/macros2.js +28 -12
- package/package.json +1 -1
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
export interface ICoincidentTopology {
|
|
2
|
+
factor: number;
|
|
3
|
+
offset: number;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export enum Resolve {
|
|
7
|
+
Off,
|
|
8
|
+
PolygonOffset,
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface StaticCoincidentTopologyMethods {
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* @param {ICoincidentTopology} params
|
|
15
|
+
*/
|
|
16
|
+
setResolveCoincidentTopologyPolygonOffsetParameters(
|
|
17
|
+
params: ICoincidentTopology
|
|
18
|
+
): boolean;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
*
|
|
22
|
+
* @param {ICoincidentTopology} params
|
|
23
|
+
*/
|
|
24
|
+
setResolveCoincidentTopologyLineOffsetParameters(
|
|
25
|
+
params: ICoincidentTopology
|
|
26
|
+
): boolean;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
*
|
|
30
|
+
* @param {ICoincidentTopology} params
|
|
31
|
+
*/
|
|
32
|
+
setResolveCoincidentTopologyPointOffsetParameters(
|
|
33
|
+
params: ICoincidentTopology
|
|
34
|
+
): boolean;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
* @param {Number} factor
|
|
39
|
+
* @param {Number} offset
|
|
40
|
+
*/
|
|
41
|
+
setResolveCoincidentTopologyPolygonOffsetParameters(
|
|
42
|
+
factor: number,
|
|
43
|
+
offset: number
|
|
44
|
+
): boolean;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
*
|
|
48
|
+
* @param {Number} factor
|
|
49
|
+
* @param {Number} offset
|
|
50
|
+
*/
|
|
51
|
+
setResolveCoincidentTopologyLineOffsetParameters(
|
|
52
|
+
factor: number,
|
|
53
|
+
offset: number
|
|
54
|
+
): boolean;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
*
|
|
58
|
+
* @param {Number} factor
|
|
59
|
+
* @param {Number} offset
|
|
60
|
+
*/
|
|
61
|
+
setResolveCoincidentTopologyPointOffsetParameters(
|
|
62
|
+
factor: number,
|
|
63
|
+
offset: number
|
|
64
|
+
): boolean;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
*
|
|
68
|
+
*/
|
|
69
|
+
getResolveCoincidentTopologyLineOffsetParameters(): ICoincidentTopology;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
*
|
|
73
|
+
*/
|
|
74
|
+
getResolveCoincidentTopologyPointOffsetParameters(): ICoincidentTopology;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
*
|
|
78
|
+
*/
|
|
79
|
+
getResolveCoincidentTopologyPolygonOffsetParameters(): ICoincidentTopology;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
*
|
|
83
|
+
*/
|
|
84
|
+
getResolveCoincidentTopologyPolygonOffsetFaces(): ICoincidentTopology;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
*
|
|
88
|
+
* @param {Number} value
|
|
89
|
+
*/
|
|
90
|
+
setResolveCoincidentTopologyPolygonOffsetFaces(value: number): boolean;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
*
|
|
94
|
+
* @param mode
|
|
95
|
+
*/
|
|
96
|
+
setResolveCoincidentTopology(mode?: Resolve): boolean;
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
*
|
|
100
|
+
*/
|
|
101
|
+
getResolveCoincidentTopology(): Resolve;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
*
|
|
105
|
+
*/
|
|
106
|
+
setResolveCoincidentTopologyToDefault(): boolean;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
*
|
|
110
|
+
*/
|
|
111
|
+
setResolveCoincidentTopologyToOff(): boolean;
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
*
|
|
115
|
+
*/
|
|
116
|
+
setResolveCoincidentTopologyToPolygonOffset(): boolean;
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
*
|
|
120
|
+
*/
|
|
121
|
+
getResolveCoincidentTopologyAsString(): string;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export default interface CoincidentTopologyHelper
|
|
125
|
+
extends StaticCoincidentTopologyMethods {
|
|
126
|
+
/**
|
|
127
|
+
*
|
|
128
|
+
* @param {ICoincidentTopology} params
|
|
129
|
+
*/
|
|
130
|
+
setRelativeCoincidentTopologyLineOffsetParameters(
|
|
131
|
+
params: ICoincidentTopology
|
|
132
|
+
): boolean;
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
*
|
|
136
|
+
* @param {ICoincidentTopology} params
|
|
137
|
+
*/
|
|
138
|
+
setRelativeCoincidentTopologyPointOffsetParameters(
|
|
139
|
+
params: ICoincidentTopology
|
|
140
|
+
): boolean;
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
*
|
|
144
|
+
* @param {ICoincidentTopology} params
|
|
145
|
+
*/
|
|
146
|
+
setRelativeCoincidentTopologyPolygonOffsetParameters(
|
|
147
|
+
params: ICoincidentTopology
|
|
148
|
+
): boolean;
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
*
|
|
152
|
+
* @param {Number} factor
|
|
153
|
+
* @param {Number} offset
|
|
154
|
+
*/
|
|
155
|
+
setRelativeCoincidentTopologyLineOffsetParameters(
|
|
156
|
+
factor: number,
|
|
157
|
+
offset: number
|
|
158
|
+
): boolean;
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
*
|
|
162
|
+
* @param {Number} factor
|
|
163
|
+
* @param {Number} offset
|
|
164
|
+
*/
|
|
165
|
+
setRelativeCoincidentTopologyPointOffsetParameters(
|
|
166
|
+
factor: number,
|
|
167
|
+
offset: number
|
|
168
|
+
): boolean;
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
*
|
|
172
|
+
* @param {Number} factor
|
|
173
|
+
* @param {Number} offset
|
|
174
|
+
*/
|
|
175
|
+
setRelativeCoincidentTopologyPolygonOffsetParameters(
|
|
176
|
+
factor: number,
|
|
177
|
+
offset: number
|
|
178
|
+
): boolean;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
*
|
|
182
|
+
*/
|
|
183
|
+
getCoincidentTopologyPolygonOffsetParameters(): ICoincidentTopology;
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
*
|
|
187
|
+
*/
|
|
188
|
+
getCoincidentTopologyLineOffsetParameters(): ICoincidentTopology;
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
*
|
|
192
|
+
*/
|
|
193
|
+
getCoincidentTopologyPointOffsetParameters(): ICoincidentTopology;
|
|
194
|
+
}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import otherStaticMethods from './Static.js';
|
|
1
|
+
import otherStaticMethods, { Resolve } from './Static.js';
|
|
2
|
+
export { Resolve } from './Static.js';
|
|
2
3
|
import { m as macro } from '../../../macros2.js';
|
|
3
4
|
|
|
4
5
|
/* eslint-disable arrow-body-style */
|
|
5
6
|
function addCoincidentTopologyMethods(publicAPI, model, nameList) {
|
|
6
7
|
nameList.forEach(item => {
|
|
7
8
|
publicAPI[`get${item.method}`] = () => model[item.key];
|
|
8
|
-
publicAPI[`set${item.method}`] = (
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
};
|
|
13
|
-
};
|
|
9
|
+
publicAPI[`set${item.method}`] = macro.objectSetterMap.object(publicAPI, model, {
|
|
10
|
+
name: item.key,
|
|
11
|
+
params: ['factor', 'offset']
|
|
12
|
+
});
|
|
14
13
|
});
|
|
15
14
|
}
|
|
16
15
|
const CATEGORIES = ['Polygon', 'Line', 'Point'];
|
|
@@ -98,7 +97,8 @@ var CoincidentTopologyHelper = {
|
|
|
98
97
|
implementCoincidentTopologyMethods,
|
|
99
98
|
staticOffsetAPI,
|
|
100
99
|
otherStaticMethods,
|
|
101
|
-
CATEGORIES
|
|
100
|
+
CATEGORIES,
|
|
101
|
+
Resolve
|
|
102
102
|
};
|
|
103
103
|
|
|
104
104
|
export { CATEGORIES, CoincidentTopologyHelper as default };
|
|
@@ -1,35 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
const Resolve = {
|
|
2
|
+
Off: 0,
|
|
3
|
+
PolygonOffset: 1
|
|
4
|
+
};
|
|
5
|
+
let resolveCoincidentTopologyPolygonOffsetFaces = Resolve.PolygonOffset;
|
|
6
|
+
let resolveCoincidentTopology = Resolve.Off;
|
|
3
7
|
const RESOLVE_COINCIDENT_TOPOLOGY_MODE = ['VTK_RESOLVE_OFF', 'VTK_RESOLVE_POLYGON_OFFSET'];
|
|
4
8
|
function getResolveCoincidentTopologyPolygonOffsetFaces() {
|
|
5
9
|
return resolveCoincidentTopologyPolygonOffsetFaces;
|
|
6
10
|
}
|
|
7
11
|
function setResolveCoincidentTopologyPolygonOffsetFaces(value) {
|
|
12
|
+
const changed = resolveCoincidentTopologyPolygonOffsetFaces === value;
|
|
8
13
|
resolveCoincidentTopologyPolygonOffsetFaces = value;
|
|
14
|
+
return changed;
|
|
9
15
|
}
|
|
10
16
|
function getResolveCoincidentTopology() {
|
|
11
17
|
return resolveCoincidentTopology;
|
|
12
18
|
}
|
|
13
19
|
function setResolveCoincidentTopology() {
|
|
14
20
|
let mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
21
|
+
const changed = resolveCoincidentTopology === mode;
|
|
15
22
|
resolveCoincidentTopology = mode;
|
|
23
|
+
return changed;
|
|
16
24
|
}
|
|
17
25
|
function setResolveCoincidentTopologyToDefault() {
|
|
18
|
-
setResolveCoincidentTopology(
|
|
26
|
+
return setResolveCoincidentTopology(Resolve.Off);
|
|
19
27
|
}
|
|
20
|
-
|
|
21
28
|
function setResolveCoincidentTopologyToOff() {
|
|
22
|
-
setResolveCoincidentTopology(
|
|
29
|
+
return setResolveCoincidentTopology(Resolve.Off);
|
|
23
30
|
}
|
|
24
|
-
|
|
25
31
|
function setResolveCoincidentTopologyToPolygonOffset() {
|
|
26
|
-
setResolveCoincidentTopology(
|
|
32
|
+
return setResolveCoincidentTopology(Resolve.PolygonOffset);
|
|
27
33
|
}
|
|
28
|
-
|
|
29
34
|
function getResolveCoincidentTopologyAsString() {
|
|
30
35
|
return RESOLVE_COINCIDENT_TOPOLOGY_MODE[resolveCoincidentTopology];
|
|
31
36
|
}
|
|
32
37
|
var otherStaticMethods = {
|
|
38
|
+
Resolve,
|
|
33
39
|
getResolveCoincidentTopologyAsString,
|
|
34
40
|
getResolveCoincidentTopologyPolygonOffsetFaces,
|
|
35
41
|
getResolveCoincidentTopology,
|
|
@@ -40,4 +46,4 @@ var otherStaticMethods = {
|
|
|
40
46
|
setResolveCoincidentTopologyToPolygonOffset
|
|
41
47
|
};
|
|
42
48
|
|
|
43
|
-
export { RESOLVE_COINCIDENT_TOPOLOGY_MODE, otherStaticMethods as default, getResolveCoincidentTopology, getResolveCoincidentTopologyAsString, getResolveCoincidentTopologyPolygonOffsetFaces, setResolveCoincidentTopology, setResolveCoincidentTopologyPolygonOffsetFaces, setResolveCoincidentTopologyToDefault, setResolveCoincidentTopologyToOff, setResolveCoincidentTopologyToPolygonOffset };
|
|
49
|
+
export { RESOLVE_COINCIDENT_TOPOLOGY_MODE, Resolve, otherStaticMethods as default, getResolveCoincidentTopology, getResolveCoincidentTopologyAsString, getResolveCoincidentTopologyPolygonOffsetFaces, setResolveCoincidentTopology, setResolveCoincidentTopologyPolygonOffsetFaces, setResolveCoincidentTopologyToDefault, setResolveCoincidentTopologyToOff, setResolveCoincidentTopologyToPolygonOffset };
|
|
@@ -4,6 +4,9 @@ import vtkAbstractMapper3D, {
|
|
|
4
4
|
} from './AbstractMapper3D';
|
|
5
5
|
import { ColorMode, GetArray, ScalarMode } from './Mapper/Constants';
|
|
6
6
|
import vtkDataArray from './../../Common/Core/DataArray';
|
|
7
|
+
import CoincidentTopologyHelper, {
|
|
8
|
+
StaticCoincidentTopologyMethods,
|
|
9
|
+
} from './Mapper/CoincidentTopologyHelper';
|
|
7
10
|
|
|
8
11
|
interface IPrimitiveCount {
|
|
9
12
|
points: number;
|
|
@@ -17,11 +20,6 @@ interface IAbstractScalars {
|
|
|
17
20
|
scalars: Nullable<vtkDataArray>;
|
|
18
21
|
}
|
|
19
22
|
|
|
20
|
-
interface ICoincidentTopology {
|
|
21
|
-
factor: number;
|
|
22
|
-
offset: number;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
23
|
interface IScalarToTextureCoordinate {
|
|
26
24
|
texCoordS: number;
|
|
27
25
|
texCoordT: number;
|
|
@@ -43,7 +41,9 @@ export interface IMapperInitialValues extends IAbstractMapper3DInitialValues {
|
|
|
43
41
|
customShaderAttributes?: any;
|
|
44
42
|
}
|
|
45
43
|
|
|
46
|
-
export interface vtkMapper
|
|
44
|
+
export interface vtkMapper
|
|
45
|
+
extends vtkAbstractMapper3D,
|
|
46
|
+
CoincidentTopologyHelper {
|
|
47
47
|
/**
|
|
48
48
|
*
|
|
49
49
|
*/
|
|
@@ -140,21 +140,6 @@ export interface vtkMapper extends vtkAbstractMapper3D {
|
|
|
140
140
|
*/
|
|
141
141
|
getBounds(): Bounds;
|
|
142
142
|
|
|
143
|
-
/**
|
|
144
|
-
*
|
|
145
|
-
*/
|
|
146
|
-
getCoincidentTopologyPolygonOffsetParameters(): ICoincidentTopology;
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
*
|
|
150
|
-
*/
|
|
151
|
-
getCoincidentTopologyLineOffsetParameters(): ICoincidentTopology;
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
*
|
|
155
|
-
*/
|
|
156
|
-
getCoincidentTopologyPointOffsetParameter(): ICoincidentTopology;
|
|
157
|
-
|
|
158
143
|
/**
|
|
159
144
|
* Get the array name to color by.
|
|
160
145
|
*/
|
|
@@ -515,10 +500,6 @@ export interface vtkMapper extends vtkAbstractMapper3D {
|
|
|
515
500
|
setInterpolateScalarsBeforeMapping(
|
|
516
501
|
interpolateScalarsBeforeMapping: boolean
|
|
517
502
|
): boolean;
|
|
518
|
-
|
|
519
|
-
setResolveCoincidentTopologyToPolygonOffset(): boolean;
|
|
520
|
-
|
|
521
|
-
setResolveCoincidentTopologyToOff(): boolean;
|
|
522
503
|
}
|
|
523
504
|
|
|
524
505
|
/**
|
|
@@ -540,80 +521,6 @@ export function extend(
|
|
|
540
521
|
*/
|
|
541
522
|
export function newInstance(initialValues?: IMapperInitialValues): vtkMapper;
|
|
542
523
|
|
|
543
|
-
/**
|
|
544
|
-
*
|
|
545
|
-
*/
|
|
546
|
-
export function getResolveCoincidentTopologyAsString(): string;
|
|
547
|
-
|
|
548
|
-
/**
|
|
549
|
-
*
|
|
550
|
-
*/
|
|
551
|
-
export function getResolveCoincidentTopologyPolygonOffsetFaces(): ICoincidentTopology;
|
|
552
|
-
|
|
553
|
-
/**
|
|
554
|
-
*
|
|
555
|
-
*/
|
|
556
|
-
export function getResolveCoincidentTopology(): ICoincidentTopology;
|
|
557
|
-
|
|
558
|
-
/**
|
|
559
|
-
*
|
|
560
|
-
* @param {Number} [mode]
|
|
561
|
-
*/
|
|
562
|
-
export function setResolveCoincidentTopology(mode?: number): boolean;
|
|
563
|
-
|
|
564
|
-
/**
|
|
565
|
-
*
|
|
566
|
-
* @param value
|
|
567
|
-
*/
|
|
568
|
-
export function setResolveCoincidentTopologyPolygonOffsetFaces(
|
|
569
|
-
value: any
|
|
570
|
-
): boolean;
|
|
571
|
-
|
|
572
|
-
/**
|
|
573
|
-
*
|
|
574
|
-
*/
|
|
575
|
-
export function setResolveCoincidentTopologyToDefault(): boolean;
|
|
576
|
-
|
|
577
|
-
/**
|
|
578
|
-
*
|
|
579
|
-
*/
|
|
580
|
-
export function setResolveCoincidentTopologyToOff(): boolean;
|
|
581
|
-
|
|
582
|
-
/**
|
|
583
|
-
*
|
|
584
|
-
*/
|
|
585
|
-
export function setResolveCoincidentTopologyToPolygonOffset(): boolean;
|
|
586
|
-
|
|
587
|
-
/**
|
|
588
|
-
*
|
|
589
|
-
*/
|
|
590
|
-
export function getRelativeCoincidentTopologyLineOffsetParameters(): ICoincidentTopology;
|
|
591
|
-
|
|
592
|
-
/**
|
|
593
|
-
*
|
|
594
|
-
*/
|
|
595
|
-
export function getRelativeCoincidentTopologyPointOffsetParameters(): ICoincidentTopology;
|
|
596
|
-
|
|
597
|
-
/**
|
|
598
|
-
*
|
|
599
|
-
*/
|
|
600
|
-
export function getRelativeCoincidentTopologyPolygonOffsetParameters(): ICoincidentTopology;
|
|
601
|
-
|
|
602
|
-
/**
|
|
603
|
-
*
|
|
604
|
-
*/
|
|
605
|
-
export function getResolveCoincidentTopologyLineOffsetParameters(): ICoincidentTopology;
|
|
606
|
-
|
|
607
|
-
/**
|
|
608
|
-
*
|
|
609
|
-
*/
|
|
610
|
-
export function getResolveCoincidentTopologyPointOffsetParameters(): ICoincidentTopology;
|
|
611
|
-
|
|
612
|
-
/**
|
|
613
|
-
*
|
|
614
|
-
*/
|
|
615
|
-
export function getResolveCoincidentTopologyPolygonOffsetParameters(): ICoincidentTopology;
|
|
616
|
-
|
|
617
524
|
/**
|
|
618
525
|
* vtkMapper is an abstract class to specify interface between data and
|
|
619
526
|
* graphics primitives. Subclasses of vtkMapper map data through a
|
|
@@ -650,22 +557,8 @@ export function getResolveCoincidentTopologyPolygonOffsetParameters(): ICoincide
|
|
|
650
557
|
export declare const vtkMapper: {
|
|
651
558
|
newInstance: typeof newInstance;
|
|
652
559
|
extend: typeof extend;
|
|
653
|
-
getResolveCoincidentTopologyAsString: typeof getResolveCoincidentTopologyAsString;
|
|
654
|
-
getResolveCoincidentTopologyPolygonOffsetFaces: typeof getResolveCoincidentTopologyPolygonOffsetFaces;
|
|
655
|
-
getResolveCoincidentTopology: typeof getResolveCoincidentTopology;
|
|
656
|
-
setResolveCoincidentTopology: typeof setResolveCoincidentTopology;
|
|
657
|
-
setResolveCoincidentTopologyPolygonOffsetFaces: typeof setResolveCoincidentTopologyPolygonOffsetFaces;
|
|
658
|
-
setResolveCoincidentTopologyToDefault: typeof setResolveCoincidentTopologyToDefault;
|
|
659
|
-
setResolveCoincidentTopologyToOff: typeof setResolveCoincidentTopologyToOff;
|
|
660
|
-
setResolveCoincidentTopologyToPolygonOffset: typeof setResolveCoincidentTopologyToPolygonOffset;
|
|
661
|
-
getRelativeCoincidentTopologyLineOffsetParameters: typeof getRelativeCoincidentTopologyLineOffsetParameters;
|
|
662
|
-
getRelativeCoincidentTopologyPointOffsetParameters: typeof getRelativeCoincidentTopologyPointOffsetParameters;
|
|
663
|
-
getRelativeCoincidentTopologyPolygonOffsetParameters: typeof getRelativeCoincidentTopologyPolygonOffsetParameters;
|
|
664
|
-
getResolveCoincidentTopologyLineOffsetParameters: typeof getResolveCoincidentTopologyLineOffsetParameters;
|
|
665
|
-
getResolveCoincidentTopologyPointOffsetParameters: typeof getResolveCoincidentTopologyPointOffsetParameters;
|
|
666
|
-
getResolveCoincidentTopologyPolygonOffsetParameters: typeof getResolveCoincidentTopologyPolygonOffsetParameters;
|
|
667
560
|
ColorMode: typeof ColorMode;
|
|
668
561
|
ScalarMode: typeof ScalarMode;
|
|
669
562
|
GetArray: typeof GetArray;
|
|
670
|
-
};
|
|
563
|
+
} & StaticCoincidentTopologyMethods;
|
|
671
564
|
export default vtkMapper;
|
|
@@ -14,6 +14,8 @@ import vtkViewNode from '../SceneGraph/ViewNode.js';
|
|
|
14
14
|
import { v as vtkPolyDataVS } from './glsl/vtkPolyDataVS.glsl.js';
|
|
15
15
|
import { v as vtkPolyDataFS } from './glsl/vtkPolyDataFS.glsl.js';
|
|
16
16
|
import { registerOverride } from './ViewNodeFactory.js';
|
|
17
|
+
import '../Core/Mapper/CoincidentTopologyHelper.js';
|
|
18
|
+
import { Resolve } from '../Core/Mapper/Static.js';
|
|
17
19
|
|
|
18
20
|
const {
|
|
19
21
|
vtkErrorMacro
|
|
@@ -68,7 +70,7 @@ function vtkOpenGLImageCPRMapper(publicAPI, model) {
|
|
|
68
70
|
}
|
|
69
71
|
};
|
|
70
72
|
publicAPI.getCoincidentParameters = (ren, actor) => {
|
|
71
|
-
if (model.renderable.getResolveCoincidentTopology()) {
|
|
73
|
+
if (model.renderable.getResolveCoincidentTopology() === Resolve.PolygonOffset) {
|
|
72
74
|
return model.renderable.getCoincidentTopologyPolygonOffsetParameters();
|
|
73
75
|
}
|
|
74
76
|
return null;
|
|
@@ -14,7 +14,9 @@ import { InterpolationType } from '../Core/ImageProperty/Constants.js';
|
|
|
14
14
|
import { v as vtkPolyDataVS } from './glsl/vtkPolyDataVS.glsl.js';
|
|
15
15
|
import { v as vtkPolyDataFS } from './glsl/vtkPolyDataFS.glsl.js';
|
|
16
16
|
import vtkReplacementShaderMapper from './ReplacementShaderMapper.js';
|
|
17
|
+
import '../Core/Mapper/CoincidentTopologyHelper.js';
|
|
17
18
|
import { registerOverride } from './ViewNodeFactory.js';
|
|
19
|
+
import { Resolve } from '../Core/Mapper/Static.js';
|
|
18
20
|
|
|
19
21
|
const {
|
|
20
22
|
vtkErrorMacro
|
|
@@ -103,7 +105,10 @@ function vtkOpenGLImageMapper(publicAPI, model) {
|
|
|
103
105
|
}
|
|
104
106
|
};
|
|
105
107
|
publicAPI.getCoincidentParameters = (ren, actor) => {
|
|
106
|
-
if (
|
|
108
|
+
if (
|
|
109
|
+
// backwards compat with code that (errorneously) set this to boolean
|
|
110
|
+
// eslint-disable-next-line eqeqeq
|
|
111
|
+
model.renderable.getResolveCoincidentTopology() == Resolve.PolygonOffset) {
|
|
107
112
|
return model.renderable.getCoincidentTopologyPolygonOffsetParameters();
|
|
108
113
|
}
|
|
109
114
|
return null;
|
|
@@ -202,7 +207,7 @@ function vtkOpenGLImageMapper(publicAPI, model) {
|
|
|
202
207
|
case 1:
|
|
203
208
|
FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::TCoord::Impl', [...splitStringOnEnter(`
|
|
204
209
|
#ifdef vtkImageLabelOutlineOn
|
|
205
|
-
vec3 centerPosIS = fragCoordToIndexSpace(gl_FragCoord);
|
|
210
|
+
vec3 centerPosIS = fragCoordToIndexSpace(gl_FragCoord);
|
|
206
211
|
float centerValue = texture2D(texture1, centerPosIS.xy).r;
|
|
207
212
|
bool pixelOnBorder = false;
|
|
208
213
|
vec3 tColor = texture2D(colorTexture1, vec2(centerValue * cscale0 + cshift0, 0.5)).rgb;
|
|
@@ -20,6 +20,8 @@ import { InterpolationType } from '../Core/ImageProperty/Constants.js';
|
|
|
20
20
|
import { Representation } from '../Core/Property/Constants.js';
|
|
21
21
|
import { VtkDataTypes } from '../../Common/Core/DataArray/Constants.js';
|
|
22
22
|
import { registerOverride } from './ViewNodeFactory.js';
|
|
23
|
+
import '../Core/Mapper/CoincidentTopologyHelper.js';
|
|
24
|
+
import { Resolve } from '../Core/Mapper/Static.js';
|
|
23
25
|
|
|
24
26
|
const {
|
|
25
27
|
vtkErrorMacro
|
|
@@ -94,7 +96,10 @@ function vtkOpenGLImageResliceMapper(publicAPI, model) {
|
|
|
94
96
|
}
|
|
95
97
|
};
|
|
96
98
|
publicAPI.getCoincidentParameters = (ren, actor) => {
|
|
97
|
-
if (
|
|
99
|
+
if (
|
|
100
|
+
// backwards compat with code that (errorneously) set this to boolean
|
|
101
|
+
// eslint-disable-next-line eqeqeq
|
|
102
|
+
model.renderable.getResolveCoincidentTopology() == Resolve.PolygonOffset) {
|
|
98
103
|
return model.renderable.getCoincidentTopologyPolygonOffsetParameters();
|
|
99
104
|
}
|
|
100
105
|
return null;
|
|
@@ -14,6 +14,8 @@ import vtkReplacementShaderMapper from './ReplacementShaderMapper.js';
|
|
|
14
14
|
import { registerOverride } from './ViewNodeFactory.js';
|
|
15
15
|
import { PassTypes } from './HardwareSelector/Constants.js';
|
|
16
16
|
import vtkDataSet from '../../Common/DataModel/DataSet.js';
|
|
17
|
+
import '../Core/Mapper/CoincidentTopologyHelper.js';
|
|
18
|
+
import { Resolve } from '../Core/Mapper/Static.js';
|
|
17
19
|
|
|
18
20
|
const {
|
|
19
21
|
FieldAssociations
|
|
@@ -391,7 +393,10 @@ function vtkOpenGLPolyDataMapper(publicAPI, model) {
|
|
|
391
393
|
offset: 0.0
|
|
392
394
|
};
|
|
393
395
|
const prop = actor.getProperty();
|
|
394
|
-
if (
|
|
396
|
+
if (
|
|
397
|
+
// backwards compat with code that (errorneously) set this to boolean
|
|
398
|
+
// eslint-disable-next-line eqeqeq
|
|
399
|
+
model.renderable.getResolveCoincidentTopology() == Resolve.PolygonOffset || prop.getEdgeVisibility() && prop.getRepresentation() === Representation.SURFACE) {
|
|
395
400
|
const primType = model.lastBoundBO.getPrimitiveType();
|
|
396
401
|
if (primType === primTypes.Points || prop.getRepresentation() === Representation.POINTS) {
|
|
397
402
|
cp = model.renderable.getCoincidentTopologyPointOffsetParameter();
|
|
@@ -175,10 +175,14 @@ function vtkOpenGLVolumeMapper(publicAPI, model) {
|
|
|
175
175
|
if (iType === InterpolationType.LINEAR) {
|
|
176
176
|
FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::TrilinearOn', '#define vtkTrilinearOn').result;
|
|
177
177
|
}
|
|
178
|
-
const vtkImageLabelOutline =
|
|
178
|
+
const vtkImageLabelOutline = publicAPI.isLabelmapOutlineRequired(actor);
|
|
179
179
|
if (vtkImageLabelOutline === true) {
|
|
180
180
|
FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::ImageLabelOutlineOn', '#define vtkImageLabelOutlineOn').result;
|
|
181
181
|
}
|
|
182
|
+
const LabelEdgeProjection = model.renderable.getBlendMode() === BlendMode.LABELMAP_EDGE_PROJECTION_BLEND;
|
|
183
|
+
if (LabelEdgeProjection) {
|
|
184
|
+
FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::LabelEdgeProjectionOn', '#define vtkLabelEdgeProjectionOn').result;
|
|
185
|
+
}
|
|
182
186
|
const numComp = model.scalarTexture.getComponents();
|
|
183
187
|
FSSource = vtkShaderProgram.substitute(FSSource, '//VTK::NumComponents', `#define vtkNumComponents ${numComp}`).result;
|
|
184
188
|
const useIndependentComps = publicAPI.useIndependentComponents(actorProps);
|
|
@@ -350,7 +354,7 @@ function vtkOpenGLVolumeMapper(publicAPI, model) {
|
|
|
350
354
|
iComps: actorProps.getIndependentComponents(),
|
|
351
355
|
colorMixPreset: actorProps.getColorMixPreset(),
|
|
352
356
|
interpolationType: actorProps.getInterpolationType(),
|
|
353
|
-
useLabelOutline:
|
|
357
|
+
useLabelOutline: publicAPI.isLabelmapOutlineRequired(actor),
|
|
354
358
|
numComp,
|
|
355
359
|
maxSamples,
|
|
356
360
|
useGradientOpacity: actorProps.getUseGradientOpacity(0),
|
|
@@ -512,6 +516,7 @@ function vtkOpenGLVolumeMapper(publicAPI, model) {
|
|
|
512
516
|
vec3.divide(vctoijk, vctoijk, vsize);
|
|
513
517
|
program.setUniform3f('vVCToIJK', vctoijk[0], vctoijk[1], vctoijk[2]);
|
|
514
518
|
program.setUniform3i('volumeDimensions', dims[0], dims[1], dims[2]);
|
|
519
|
+
program.setUniform3f('volumeSpacings', spc[0], spc[1], spc[2]);
|
|
515
520
|
if (!model._openGLRenderWindow.getWebgl2()) {
|
|
516
521
|
const volInfo = model.scalarTexture.getVolumeInfo();
|
|
517
522
|
program.setUniformf('texWidth', model.scalarTexture.getWidth());
|
|
@@ -562,7 +567,7 @@ function vtkOpenGLVolumeMapper(publicAPI, model) {
|
|
|
562
567
|
program.setUniform3f(`vPlaneNormal${i}`, normal[0], normal[1], normal[2]);
|
|
563
568
|
program.setUniformf(`vPlaneDistance${i}`, dist);
|
|
564
569
|
}
|
|
565
|
-
if (
|
|
570
|
+
if (publicAPI.isLabelmapOutlineRequired(actor)) {
|
|
566
571
|
const image = model.currentInput;
|
|
567
572
|
const worldToIndex = image.getWorldToIndex();
|
|
568
573
|
program.setUniformMatrix('vWCtoIDX', worldToIndex);
|
|
@@ -750,7 +755,7 @@ function vtkOpenGLVolumeMapper(publicAPI, model) {
|
|
|
750
755
|
program.setUniformf('goshift0', -goRange[0] * (gomax - gomin) / (goRange[1] - goRange[0]) + gomin);
|
|
751
756
|
}
|
|
752
757
|
}
|
|
753
|
-
const vtkImageLabelOutline =
|
|
758
|
+
const vtkImageLabelOutline = publicAPI.isLabelmapOutlineRequired(actor);
|
|
754
759
|
if (vtkImageLabelOutline === true) {
|
|
755
760
|
const labelOutlineOpacity = actor.getProperty().getLabelOutlineOpacity();
|
|
756
761
|
program.setUniformf('outlineOpacity', labelOutlineOpacity);
|
|
@@ -1252,6 +1257,11 @@ function vtkOpenGLVolumeMapper(publicAPI, model) {
|
|
|
1252
1257
|
model.labelOutlineThicknessTexture = lTex.oglObject;
|
|
1253
1258
|
}
|
|
1254
1259
|
};
|
|
1260
|
+
publicAPI.isLabelmapOutlineRequired = actor => {
|
|
1261
|
+
const prop = actor.getProperty();
|
|
1262
|
+
const renderable = model.renderable;
|
|
1263
|
+
return prop.getUseLabelOutline() || renderable.getBlendMode() === BlendMode.LABELMAP_EDGE_PROJECTION_BLEND;
|
|
1264
|
+
};
|
|
1255
1265
|
}
|
|
1256
1266
|
|
|
1257
1267
|
// ----------------------------------------------------------------------------
|