/
createBidirectionalToolData.ts
60 lines (57 loc) · 1.7 KB
/
createBidirectionalToolData.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import type { Types } from '@cornerstonejs/core';
import type { Annotation } from '../../types/AnnotationTypes';
export type BidirectionalData = {
majorAxis: [Types.Point3, Types.Point3];
minorAxis: [Types.Point3, Types.Point3];
maxMajor: number;
maxMinor: number;
segmentIndex: number;
label?: string;
color?: string | number[];
referencedImageId: string;
sliceIndex: number;
};
/**
* Creates data suitable for the BidirectionalTool from the basic bidirectional
* data object.
*/
export default function createBidirectionalToolData(
bidirectionalData: BidirectionalData,
viewport
): Annotation {
const { majorAxis, minorAxis, label = '', sliceIndex } = bidirectionalData;
const [major0, major1] = majorAxis;
const [minor0, minor1] = minorAxis;
const points = [major0, major1, minor0, minor1];
const bidirectionalToolData = {
highlighted: true,
invalidated: true,
metadata: {
toolName: 'Bidirectional',
// Get a view reference for the slice this applies to, not the currently
// displayed slice. This will fill in the remaining data for that slice
...viewport.getViewReference({ sliceIndex }),
},
data: {
handles: {
points,
textBox: {
hasMoved: false,
worldPosition: [0, 0, 0] as Types.Point3,
worldBoundingBox: {
topLeft: [0, 0, 0] as Types.Point3,
topRight: [0, 0, 0] as Types.Point3,
bottomLeft: [0, 0, 0] as Types.Point3,
bottomRight: [0, 0, 0] as Types.Point3,
},
},
activeHandleIndex: null,
},
label,
cachedStats: {},
},
isLocked: false,
isVisible: true,
};
return bidirectionalToolData;
}