All files / packages/tools/src/utilities/segmentation createBidirectionalToolData.ts

0% Statements 0/6
0% Branches 0/1
0% Functions 0/1
0% Lines 0/6

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 61                                                                                                                         
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;
}