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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | import { utilities as csUtils } from '@cornerstonejs/core';
import { annotation, utilities as cstUtils } from '@cornerstonejs/tools';
export function addMockContourSegmentation({
segmentationId,
contours,
viewport,
}) {
contours = Array.isArray(contours) ? contours : [contours];
contours.forEach((contour) => {
const {
segmentIndex = 1,
radius = 100,
resolution = 100,
centerOffset = [0, 0],
} = contour;
// get the circle annotation that would draw if we pick the center
// as the circle center and the radius as the distance from the center
// to the edge of the viewport
const centerInCanvas = [
viewport.canvas.width / 2 + centerOffset[0],
viewport.canvas.height / 2 + centerOffset[1],
];
const radiusInCanvas = radius;
const polyline = Array.from(Array(resolution).keys()).map((i) => {
const angle = (i * 2 * Math.PI) / resolution;
const x = centerInCanvas[0] + radiusInCanvas * Math.cos(angle);
const y = centerInCanvas[1] + radiusInCanvas * Math.sin(angle);
const world = viewport.canvasToWorld([
x / window?.devicePixelRatio || 1,
y / window?.devicePixelRatio || 1,
]);
return world;
});
const FrameOfReferenceUID = viewport.getFrameOfReferenceUID();
const camera = viewport.getCamera();
const contourSegmentationAnnotation = {
annotationUID: csUtils.uuidv4(),
data: {
contour: {
closed: true,
polyline,
},
segmentation: {
segmentationId,
segmentIndex,
},
handles: {},
},
handles: {},
highlighted: false,
autoGenerated: false,
invalidated: false,
isLocked: false,
isVisible: true,
metadata: {
referencedImageId: viewport.getCurrentImageId(),
toolName: 'PlanarFreehandContourSegmentationTool',
FrameOfReferenceUID: FrameOfReferenceUID,
viewPlaneNormal: camera.viewPlaneNormal,
},
};
const annotationGroupSelector = viewport.element;
annotation.state.addAnnotation(
contourSegmentationAnnotation,
annotationGroupSelector
);
cstUtils.contourSegmentation.addContourSegmentationAnnotation(
contourSegmentationAnnotation
);
cstUtils.triggerAnnotationRenderForViewportIds(
viewport.getRenderingEngine(),
[viewport.id]
);
});
}
|