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 | 146x 146x 146x 146x 146x 292x 438x 146x 146x | import type { vtkImageData } from '@kitware/vtk.js/Common/DataModel/ImageData';
import { getOrCreateCanvas } from '@cornerstonejs/core';
function canvasPointsToPagePoints(DomCanvasElement, canvasPoint) {
const rect = DomCanvasElement.getBoundingClientRect();
return [
canvasPoint[0] + rect.left + window.pageXOffset,
canvasPoint[1] + rect.top + window.pageYOffset,
];
}
/**
* This function uses the imageData being displayed on the viewport (the default image) and
* an index (IJK) on the image to normalize the mouse event details.
* It should be noted that the normalization is required since client and page XY
* cannot accept a float. Therefore, for the requested index, canvas coordinate
* will get calculated and normalized (rounded) to enable normalized client/page XY
*
* @param {vtkImageData} imageData
* @param {[number, number,number]} index - IJK index of the point to click
* @param {HTMLDivElement} element - the canvas to be clicked on
* @param {IStackViewport|IVolumeViewport} viewport
* @returns pageX, pageY, clientX, clientY, worldCoordinate
*/
function createNormalizedMouseEvent(
imageData: vtkImageData,
index,
element,
viewport
) {
const canvas = getOrCreateCanvas(element);
const tempWorld1 = imageData.indexToWorld(index);
const tempCanvasPoint1 = viewport.worldToCanvas(tempWorld1);
const canvasPoint1 = tempCanvasPoint1.map((p) => Math.round(p));
const [pageX, pageY] = canvasPointsToPagePoints(canvas, canvasPoint1);
const worldCoord = viewport.canvasToWorld(canvasPoint1);
return {
pageX,
pageY,
clientX: pageX,
clientY: pageY,
worldCoord,
};
}
export { createNormalizedMouseEvent };
|