@cornerstonejs/core 0.13.0 → 0.13.3

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.
Files changed (57) hide show
  1. package/dist/cjs/RenderingEngine/RenderingEngine.js +21 -11
  2. package/dist/cjs/RenderingEngine/RenderingEngine.js.map +1 -1
  3. package/dist/cjs/RenderingEngine/StackViewport.d.ts +1 -0
  4. package/dist/cjs/RenderingEngine/StackViewport.js +111 -44
  5. package/dist/cjs/RenderingEngine/StackViewport.js.map +1 -1
  6. package/dist/cjs/RenderingEngine/Viewport.d.ts +1 -0
  7. package/dist/cjs/RenderingEngine/Viewport.js +12 -3
  8. package/dist/cjs/RenderingEngine/Viewport.js.map +1 -1
  9. package/dist/cjs/RenderingEngine/VolumeViewport.js +16 -2
  10. package/dist/cjs/RenderingEngine/VolumeViewport.js.map +1 -1
  11. package/dist/cjs/RenderingEngine/vtkClasses/vtkOffscreenMultiRenderWindow.js +1 -2
  12. package/dist/cjs/RenderingEngine/vtkClasses/vtkOffscreenMultiRenderWindow.js.map +1 -1
  13. package/dist/cjs/cache/classes/ImageVolume.d.ts +1 -0
  14. package/dist/cjs/cache/classes/ImageVolume.js.map +1 -1
  15. package/dist/cjs/enums/BlendModes.d.ts +4 -4
  16. package/dist/cjs/enums/BlendModes.js +4 -4
  17. package/dist/cjs/enums/BlendModes.js.map +1 -1
  18. package/dist/cjs/types/CPUIImageData.d.ts +1 -0
  19. package/dist/cjs/types/IActor.d.ts +3 -1
  20. package/dist/cjs/types/IImageData.d.ts +1 -0
  21. package/dist/cjs/types/IImageVolume.d.ts +1 -0
  22. package/dist/cjs/utilities/index.d.ts +2 -1
  23. package/dist/cjs/utilities/index.js +3 -1
  24. package/dist/cjs/utilities/index.js.map +1 -1
  25. package/dist/cjs/utilities/isImageActor.d.ts +4 -0
  26. package/dist/cjs/utilities/isImageActor.js +13 -0
  27. package/dist/cjs/utilities/isImageActor.js.map +1 -0
  28. package/dist/esm/RenderingEngine/RenderingEngine.js +21 -11
  29. package/dist/esm/RenderingEngine/RenderingEngine.js.map +1 -1
  30. package/dist/esm/RenderingEngine/StackViewport.d.ts +1 -0
  31. package/dist/esm/RenderingEngine/StackViewport.js +114 -45
  32. package/dist/esm/RenderingEngine/StackViewport.js.map +1 -1
  33. package/dist/esm/RenderingEngine/Viewport.d.ts +1 -0
  34. package/dist/esm/RenderingEngine/Viewport.js +12 -4
  35. package/dist/esm/RenderingEngine/Viewport.js.map +1 -1
  36. package/dist/esm/RenderingEngine/VolumeViewport.js +16 -2
  37. package/dist/esm/RenderingEngine/VolumeViewport.js.map +1 -1
  38. package/dist/esm/RenderingEngine/vtkClasses/vtkOffscreenMultiRenderWindow.js +1 -2
  39. package/dist/esm/RenderingEngine/vtkClasses/vtkOffscreenMultiRenderWindow.js.map +1 -1
  40. package/dist/esm/cache/classes/ImageVolume.d.ts +1 -0
  41. package/dist/esm/cache/classes/ImageVolume.js.map +1 -1
  42. package/dist/esm/enums/BlendModes.d.ts +4 -4
  43. package/dist/esm/enums/BlendModes.js +4 -4
  44. package/dist/esm/enums/BlendModes.js.map +1 -1
  45. package/dist/esm/types/CPUIImageData.d.ts +1 -0
  46. package/dist/esm/types/IActor.d.ts +3 -1
  47. package/dist/esm/types/IImageData.d.ts +1 -0
  48. package/dist/esm/types/IImageVolume.d.ts +1 -0
  49. package/dist/esm/utilities/index.d.ts +2 -1
  50. package/dist/esm/utilities/index.js +2 -1
  51. package/dist/esm/utilities/index.js.map +1 -1
  52. package/dist/esm/utilities/isImageActor.d.ts +4 -0
  53. package/dist/esm/utilities/isImageActor.js +10 -0
  54. package/dist/esm/utilities/isImageActor.js.map +1 -0
  55. package/dist/umd/index.js +1 -1
  56. package/dist/umd/index.js.map +1 -1
  57. package/package.json +4 -4
@@ -22,7 +22,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
22
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.getScalingParameters = exports.getImageSliceDataForVolumeViewport = exports.snapFocalPointToSlice = exports.getSliceRange = exports.imageToWorldCoords = exports.worldToImageCoords = exports.renderToCanvas = exports.loadImageToCanvas = exports.transformWorldToIndex = exports.getVolumeViewportsContainingVolumeId = exports.getVolumeViewportsContainingSameVolumes = exports.indexWithinDimensions = exports.getVolumeActorCorners = exports.getTargetVolumeAndSpacingInNormalDir = exports.getSpacingInNormalDirection = exports.getClosestImageId = exports.windowLevel = exports.createUint8SharedArray = exports.createFloat32SharedArray = exports.isOpposite = exports.isEqual = exports.getRuntimeId = exports.getMinMax = exports.planar = exports.uuidv4 = exports.calibratedPixelSpacingMetadataProvider = exports.imageIdToURI = exports.triggerEvent = exports.scaleRgbTransferFunction = exports.invertRgbTransferFunction = void 0;
25
+ exports.isImageActor = exports.getScalingParameters = exports.getImageSliceDataForVolumeViewport = exports.snapFocalPointToSlice = exports.getSliceRange = exports.imageToWorldCoords = exports.worldToImageCoords = exports.renderToCanvas = exports.loadImageToCanvas = exports.transformWorldToIndex = exports.getVolumeViewportsContainingVolumeId = exports.getVolumeViewportsContainingSameVolumes = exports.indexWithinDimensions = exports.getVolumeActorCorners = exports.getTargetVolumeAndSpacingInNormalDir = exports.getSpacingInNormalDirection = exports.getClosestImageId = exports.windowLevel = exports.createUint8SharedArray = exports.createFloat32SharedArray = exports.isOpposite = exports.isEqual = exports.getRuntimeId = exports.getMinMax = exports.planar = exports.uuidv4 = exports.calibratedPixelSpacingMetadataProvider = exports.imageIdToURI = exports.triggerEvent = exports.scaleRgbTransferFunction = exports.invertRgbTransferFunction = void 0;
26
26
  const invertRgbTransferFunction_1 = __importDefault(require("./invertRgbTransferFunction"));
27
27
  exports.invertRgbTransferFunction = invertRgbTransferFunction_1.default;
28
28
  const scaleRgbTransferFunction_1 = __importDefault(require("./scaleRgbTransferFunction"));
@@ -79,6 +79,8 @@ const getImageSliceDataForVolumeViewport_1 = __importDefault(require("./getImage
79
79
  exports.getImageSliceDataForVolumeViewport = getImageSliceDataForVolumeViewport_1.default;
80
80
  const getScalingParameters_1 = __importDefault(require("./getScalingParameters"));
81
81
  exports.getScalingParameters = getScalingParameters_1.default;
82
+ const isImageActor_1 = __importDefault(require("./isImageActor"));
83
+ exports.isImageActor = isImageActor_1.default;
82
84
  const planar = __importStar(require("./planar"));
83
85
  exports.planar = planar;
84
86
  const windowLevel = __importStar(require("./windowLevel"));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4FAAkD;AAkCrC,oCAlCN,mCAAO,CAkCwB;AAjCtC,0FAAkE;AAkChE,mCAlCK,kCAAwB,CAkCL;AAjC1B,kEAA0C;AAkCxC,uBAlCK,sBAAY,CAkCL;AAjCd,sDAA8B;AAoC5B,iBApCK,gBAAM,CAoCL;AAnCR,4DAAoC;AAqClC,oBArCK,mBAAS,CAqCL;AApCX,kEAA0C;AAqCxC,uBArCK,sBAAY,CAqCL;AApCd,kEAA0C;AA+BxC,uBA/BK,sBAAY,CA+BL;AA9Bd,sHAA8F;AA+B5F,iDA/BK,gDAAsC,CA+BL;AA9BxC,wDAAgC;AAmC9B,kBAnCK,iBAAO,CAmCL;AAlCT,8DAAsC;AAmCpC,qBAnCK,oBAAU,CAmCL;AAlCZ,sFAA8D;AAoC5D,iCApCK,gCAAsB,CAoCL;AAnCxB,0FAAkE;AAkChE,mCAlCK,kCAAwB,CAkCL;AAjC1B,4EAAoD;AAoClD,4BApCK,2BAAiB,CAoCL;AAnCnB,gGAAwE;AAoCtE,sCApCK,qCAA2B,CAoCL;AAnC7B,kHAA0F;AAoCxF,+CApCK,8CAAoC,CAoCL;AAnCtC,oFAA4D;AAoC1D,gCApCK,+BAAqB,CAoCL;AAnCvB,oFAA4D;AAoC1D,gCApCK,+BAAqB,CAoCL;AAnCvB,wHAAgG;AAoC9F,kDApCK,iDAAuC,CAoCL;AAnCzC,kHAA0F;AAoCxF,+CApCK,8CAAoC,CAoCL;AAnCtC,oFAA4D;AAoC1D,gCApCK,+BAAqB,CAoCL;AAnCvB,4EAAoD;AAoClD,4BApCK,2BAAiB,CAoCL;AAnCnB,sEAA8C;AAoC5C,yBApCK,wBAAc,CAoCL;AAnChB,8EAAsD;AAoCpD,6BApCK,4BAAkB,CAoCL;AAnCpB,8EAAsD;AAoCpD,6BApCK,4BAAkB,CAoCL;AAnCpB,oEAA4C;AAoC1C,wBApCK,uBAAa,CAoCL;AAnCf,oFAA4D;AAoC1D,gCApCK,+BAAqB,CAoCL;AAnCvB,8GAAsF;AAoCpF,6CApCK,4CAAkC,CAoCL;AAnCpC,kFAA0D;AAoCxD,+BApCK,8BAAoB,CAoCL;AAjCtB,iDAAmC;AAUjC,wBAAM;AATR,2DAA6C;AAgB3C,kCAAW"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4FAAkD;AAmCrC,oCAnCN,mCAAO,CAmCwB;AAlCtC,0FAAkE;AAmChE,mCAnCK,kCAAwB,CAmCL;AAlC1B,kEAA0C;AAmCxC,uBAnCK,sBAAY,CAmCL;AAlCd,sDAA8B;AAqC5B,iBArCK,gBAAM,CAqCL;AApCR,4DAAoC;AAsClC,oBAtCK,mBAAS,CAsCL;AArCX,kEAA0C;AAsCxC,uBAtCK,sBAAY,CAsCL;AArCd,kEAA0C;AAgCxC,uBAhCK,sBAAY,CAgCL;AA/Bd,sHAA8F;AAgC5F,iDAhCK,gDAAsC,CAgCL;AA/BxC,wDAAgC;AAoC9B,kBApCK,iBAAO,CAoCL;AAnCT,8DAAsC;AAoCpC,qBApCK,oBAAU,CAoCL;AAnCZ,sFAA8D;AAqC5D,iCArCK,gCAAsB,CAqCL;AApCxB,0FAAkE;AAmChE,mCAnCK,kCAAwB,CAmCL;AAlC1B,4EAAoD;AAqClD,4BArCK,2BAAiB,CAqCL;AApCnB,gGAAwE;AAqCtE,sCArCK,qCAA2B,CAqCL;AApC7B,kHAA0F;AAqCxF,+CArCK,8CAAoC,CAqCL;AApCtC,oFAA4D;AAqC1D,gCArCK,+BAAqB,CAqCL;AApCvB,oFAA4D;AAqC1D,gCArCK,+BAAqB,CAqCL;AApCvB,wHAAgG;AAqC9F,kDArCK,iDAAuC,CAqCL;AApCzC,kHAA0F;AAqCxF,+CArCK,8CAAoC,CAqCL;AApCtC,oFAA4D;AAqC1D,gCArCK,+BAAqB,CAqCL;AApCvB,4EAAoD;AAqClD,4BArCK,2BAAiB,CAqCL;AApCnB,sEAA8C;AAqC5C,yBArCK,wBAAc,CAqCL;AApChB,8EAAsD;AAqCpD,6BArCK,4BAAkB,CAqCL;AApCpB,8EAAsD;AAqCpD,6BArCK,4BAAkB,CAqCL;AApCpB,oEAA4C;AAqC1C,wBArCK,uBAAa,CAqCL;AApCf,oFAA4D;AAqC1D,gCArCK,+BAAqB,CAqCL;AApCvB,8GAAsF;AAqCpF,6CArCK,4CAAkC,CAqCL;AApCpC,kFAA0D;AAqCxD,+BArCK,8BAAoB,CAqCL;AApCtB,kEAA0C;AAqCxC,uBArCK,sBAAY,CAqCL;AAlCd,iDAAmC;AAUjC,wBAAM;AATR,2DAA6C;AAgB3C,kCAAW"}
@@ -0,0 +1,4 @@
1
+ import type vtkActor from '@kitware/vtk.js/Rendering/Core/Actor';
2
+ import type vtkImageSlice from '@kitware/vtk.js/Rendering/Core/ImageSlice';
3
+ import type vtkVolume from '@kitware/vtk.js/Rendering/Core/Volume';
4
+ export default function isImageActor(actor: vtkActor | vtkVolume | vtkImageSlice): boolean;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function isImageActor(actor) {
4
+ if (actor.isA('vtkVolume')) {
5
+ return true;
6
+ }
7
+ if (actor.isA('vtkImageSlice')) {
8
+ return true;
9
+ }
10
+ return false;
11
+ }
12
+ exports.default = isImageActor;
13
+ //# sourceMappingURL=isImageActor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isImageActor.js","sourceRoot":"","sources":["../../../src/utilities/isImageActor.ts"],"names":[],"mappings":";;AAUA,SAAwB,YAAY,CAClC,KAA2C;IAE3C,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;QAC1B,OAAO,IAAI,CAAC;KACb;IAED,IAAI,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;QAC9B,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAZD,+BAYC"}
@@ -260,6 +260,10 @@ class RenderingEngine {
260
260
  const canvasesDrivenByVtkJs = viewportsDrivenByVtkJs.map((vp) => vp.canvas);
261
261
  const canvas = getOrCreateCanvas(viewportInputEntry.element);
262
262
  canvasesDrivenByVtkJs.push(canvas);
263
+ const devicePixelRatio = window.devicePixelRatio || 1;
264
+ const rect = canvas.getBoundingClientRect();
265
+ canvas.width = rect.width * devicePixelRatio;
266
+ canvas.height = rect.height * devicePixelRatio;
263
267
  const { offScreenCanvasWidth, offScreenCanvasHeight } = this._resizeOffScreenCanvas(canvasesDrivenByVtkJs);
264
268
  const xOffset = this._resize(viewportsDrivenByVtkJs, offScreenCanvasWidth, offScreenCanvasHeight);
265
269
  const internalViewportEntry = { ...viewportInputEntry, canvas };
@@ -366,6 +370,12 @@ class RenderingEngine {
366
370
  setVtkjsDrivenViewports(viewportInputEntries) {
367
371
  if (viewportInputEntries.length) {
368
372
  const vtkDrivenCanvases = viewportInputEntries.map((vp) => getOrCreateCanvas(vp.element));
373
+ vtkDrivenCanvases.forEach((canvas) => {
374
+ const devicePixelRatio = window.devicePixelRatio || 1;
375
+ const rect = canvas.getBoundingClientRect();
376
+ canvas.width = rect.width * devicePixelRatio;
377
+ canvas.height = rect.height * devicePixelRatio;
378
+ });
369
379
  const { offScreenCanvasWidth, offScreenCanvasHeight } = this._resizeOffScreenCanvas(vtkDrivenCanvases);
370
380
  let xOffset = 0;
371
381
  for (let i = 0; i < viewportInputEntries.length; i++) {
@@ -380,16 +390,17 @@ class RenderingEngine {
380
390
  offScreenCanvasHeight,
381
391
  xOffset,
382
392
  });
383
- xOffset += canvas.clientWidth;
393
+ xOffset += canvas.width;
384
394
  }
385
395
  }
386
396
  }
387
397
  _resizeOffScreenCanvas(canvasesDrivenByVtkJs) {
388
398
  const { offScreenCanvasContainer, offscreenMultiRenderWindow } = this;
389
- const offScreenCanvasHeight = Math.max(...canvasesDrivenByVtkJs.map((canvas) => canvas.clientHeight));
399
+ const devicePixelRatio = window.devicePixelRatio || 1;
400
+ const offScreenCanvasHeight = Math.max(...canvasesDrivenByVtkJs.map((canvas) => canvas.clientHeight * devicePixelRatio));
390
401
  let offScreenCanvasWidth = 0;
391
402
  canvasesDrivenByVtkJs.forEach((canvas) => {
392
- offScreenCanvasWidth += canvas.clientWidth;
403
+ offScreenCanvasWidth += canvas.clientWidth * devicePixelRatio;
393
404
  });
394
405
  offScreenCanvasContainer.width = offScreenCanvasWidth;
395
406
  offScreenCanvasContainer.height = offScreenCanvasHeight;
@@ -401,7 +412,7 @@ class RenderingEngine {
401
412
  for (let i = 0; i < viewportsDrivenByVtkJs.length; i++) {
402
413
  const viewport = viewportsDrivenByVtkJs[i];
403
414
  const { sxStartDisplayCoords, syStartDisplayCoords, sxEndDisplayCoords, syEndDisplayCoords, sx, sy, sWidth, sHeight, } = this._getViewportCoordsOnOffScreenCanvas(viewport, offScreenCanvasWidth, offScreenCanvasHeight, _xOffset);
404
- _xOffset += viewport.element.clientWidth;
415
+ _xOffset += viewport.canvas.width;
405
416
  viewport.sx = sx;
406
417
  viewport.sy = sy;
407
418
  viewport.sWidth = sWidth;
@@ -419,16 +430,15 @@ class RenderingEngine {
419
430
  _getViewportCoordsOnOffScreenCanvas(viewport, offScreenCanvasWidth, offScreenCanvasHeight, _xOffset) {
420
431
  const { canvas } = viewport;
421
432
  const { clientWidth, clientHeight } = canvas;
422
- if (canvas.width !== clientWidth || canvas.height !== clientHeight) {
423
- canvas.width = clientWidth;
424
- canvas.height = clientHeight;
425
- }
433
+ const devicePixelRatio = window.devicePixelRatio || 1;
434
+ const height = clientHeight * devicePixelRatio;
435
+ const width = clientWidth * devicePixelRatio;
426
436
  const sx = _xOffset;
427
437
  const sy = 0;
428
- const sWidth = clientWidth;
429
- const sHeight = clientHeight;
438
+ const sWidth = width;
439
+ const sHeight = height;
430
440
  const sxStartDisplayCoords = sx / offScreenCanvasWidth;
431
- const syStartDisplayCoords = sy + (offScreenCanvasHeight - clientHeight) / offScreenCanvasHeight;
441
+ const syStartDisplayCoords = sy + (offScreenCanvasHeight - height) / offScreenCanvasHeight;
432
442
  const sWidthDisplayCoords = sWidth / offScreenCanvasWidth;
433
443
  const sHeightDisplayCoords = sHeight / offScreenCanvasHeight;
434
444
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"RenderingEngine.js","sourceRoot":"","sources":["../../../src/RenderingEngine/RenderingEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RenderingEngine.js","sourceRoot":"","sources":["../../../src/RenderingEngine/RenderingEngine.ts"],"names":[],"mappings":"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"}
@@ -116,5 +116,6 @@ declare class StackViewport extends Viewport implements IStackViewport {
116
116
  private setColormapCPU;
117
117
  private setColormapGPU;
118
118
  private unsetColormapGPU;
119
+ private _getImagePlaneModule;
119
120
  }
120
121
  export default StackViewport;
@@ -1,15 +1,16 @@
1
1
  import vtkDataArray from '@kitware/vtk.js/Common/Core/DataArray';
2
2
  import vtkImageData from '@kitware/vtk.js/Common/DataModel/ImageData';
3
- import vtkVolume from '@kitware/vtk.js/Rendering/Core/Volume';
4
- import vtkVolumeMapper from '@kitware/vtk.js/Rendering/Core/VolumeMapper';
5
3
  import _cloneDeep from 'lodash.clonedeep';
6
4
  import vtkCamera from '@kitware/vtk.js/Rendering/Core/Camera';
7
5
  import { vec2, vec3, mat4 } from 'gl-matrix';
6
+ import vtkImageMapper from '@kitware/vtk.js/Rendering/Core/ImageMapper';
7
+ import vtkImageSlice from '@kitware/vtk.js/Rendering/Core/ImageSlice';
8
+ import vtkColorTransferFunction from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction';
8
9
  import * as metaData from '../metaData';
9
10
  import Viewport from './Viewport';
10
11
  import eventTarget from '../eventTarget';
11
12
  import Events from '../enums/Events';
12
- import { triggerEvent, isEqual, invertRgbTransferFunction, windowLevel as windowLevelUtil, imageIdToURI, } from '../utilities';
13
+ import { triggerEvent, isEqual, invertRgbTransferFunction, windowLevel as windowLevelUtil, imageIdToURI, isImageActor, } from '../utilities';
13
14
  import drawImageSync from './helpers/cpuFallback/drawImageSync';
14
15
  import { getColormap } from './helpers/cpuFallback/colors/index';
15
16
  import { loadAndCacheImage } from '../imageLoader';
@@ -59,18 +60,10 @@ class StackViewport extends Viewport {
59
60
  return imagePlaneModule.frameOfReferenceUID;
60
61
  };
61
62
  this.createActorMapper = (imageData) => {
62
- const mapper = vtkVolumeMapper.newInstance();
63
+ const mapper = vtkImageMapper.newInstance();
63
64
  mapper.setInputData(imageData);
64
- const actor = vtkVolume.newInstance();
65
+ const actor = vtkImageSlice.newInstance();
65
66
  actor.setMapper(mapper);
66
- const [xSize, ySize, zSize] = imageData.getDimensions();
67
- const [xSpacing, ySpacing, zSpacing] = imageData.getSpacing();
68
- const vSize = vec3.length([
69
- xSize * xSpacing,
70
- ySize * ySpacing,
71
- zSize * zSpacing,
72
- ]);
73
- mapper.setSampleDistance(vSize / mapper.getMaximumSamplesPerRay());
74
67
  if (imageData.getPointData().getNumberOfComponents() > 1) {
75
68
  actor.getProperty().setIndependentComponents(false);
76
69
  }
@@ -123,17 +116,34 @@ class StackViewport extends Viewport {
123
116
  };
124
117
  this.canvasToWorldGPU = (canvasPos) => {
125
118
  const renderer = this.getRenderer();
119
+ const vtkCamera = this.getVtkActiveCamera();
120
+ const crange = vtkCamera.getClippingRange();
121
+ const distance = vtkCamera.getDistance();
122
+ vtkCamera.setClippingRange(distance, distance + 0.1);
126
123
  const offscreenMultiRenderWindow = this.getRenderingEngine().offscreenMultiRenderWindow;
127
124
  const openGLRenderWindow = offscreenMultiRenderWindow.getOpenGLRenderWindow();
128
125
  const size = openGLRenderWindow.getSize();
129
- const displayCoord = [canvasPos[0] + this.sx, canvasPos[1] + this.sy];
126
+ const devicePixelRatio = window.devicePixelRatio || 1;
127
+ const canvasPosWithDPR = [
128
+ canvasPos[0] * devicePixelRatio,
129
+ canvasPos[1] * devicePixelRatio,
130
+ ];
131
+ const displayCoord = [
132
+ canvasPosWithDPR[0] + this.sx,
133
+ canvasPosWithDPR[1] + this.sy,
134
+ ];
130
135
  displayCoord[1] = size[1] - displayCoord[1];
131
136
  let worldCoord = openGLRenderWindow.displayToWorld(displayCoord[0], displayCoord[1], 0, renderer);
137
+ vtkCamera.setClippingRange(crange[0], crange[1]);
132
138
  worldCoord = this.applyFlipTx(worldCoord);
133
139
  return worldCoord;
134
140
  };
135
141
  this.worldToCanvasGPU = (worldPos) => {
136
142
  const renderer = this.getRenderer();
143
+ const vtkCamera = this.getVtkActiveCamera();
144
+ const crange = vtkCamera.getClippingRange();
145
+ const distance = vtkCamera.getDistance();
146
+ vtkCamera.setClippingRange(distance, distance + 0.1);
137
147
  const offscreenMultiRenderWindow = this.getRenderingEngine().offscreenMultiRenderWindow;
138
148
  const openGLRenderWindow = offscreenMultiRenderWindow.getOpenGLRenderWindow();
139
149
  const size = openGLRenderWindow.getSize();
@@ -143,7 +153,13 @@ class StackViewport extends Viewport {
143
153
  displayCoord[0] - this.sx,
144
154
  displayCoord[1] - this.sy,
145
155
  ];
146
- return canvasCoord;
156
+ vtkCamera.setClippingRange(crange[0], crange[1]);
157
+ const devicePixelRatio = window.devicePixelRatio || 1;
158
+ const canvasCoordWithDPR = [
159
+ canvasCoord[0] / devicePixelRatio,
160
+ canvasCoord[1] / devicePixelRatio,
161
+ ];
162
+ return canvasCoordWithDPR;
147
163
  };
148
164
  this.getCurrentImageIdIndex = () => {
149
165
  return this.currentImageIdIndex;
@@ -240,7 +256,7 @@ class StackViewport extends Viewport {
240
256
  return;
241
257
  }
242
258
  const { actor } = defaultActor;
243
- if (!actor.isA('vtkVolume')) {
259
+ if (!isImageActor(actor)) {
244
260
  return;
245
261
  }
246
262
  const vtkImageData = actor.getMapper().getInputData();
@@ -253,6 +269,7 @@ class StackViewport extends Viewport {
253
269
  imageData: actor.getMapper().getInputData(),
254
270
  metadata: { Modality: this.modality },
255
271
  scaling: this.scaling,
272
+ hasPixelSpacing: this.hasPixelSpacing,
256
273
  };
257
274
  }
258
275
  getImageDataCPU() {
@@ -284,6 +301,7 @@ class StackViewport extends Viewport {
284
301
  },
285
302
  },
286
303
  scalarData: this.cpuImagePixelData,
304
+ hasPixelSpacing: this.hasPixelSpacing,
287
305
  };
288
306
  }
289
307
  buildMetadata(imageId) {
@@ -306,6 +324,7 @@ class StackViewport extends Viewport {
306
324
  }
307
325
  this.modality = modality;
308
326
  let imagePlaneModule = metaData.get('imagePlaneModule', imageId);
327
+ imagePlaneModule = this._getImagePlaneModule(imagePlaneModule);
309
328
  if (!this.useCPURendering) {
310
329
  imagePlaneModule = this.calibrateIfNecessary(imageId, imagePlaneModule);
311
330
  }
@@ -511,10 +530,14 @@ class StackViewport extends Viewport {
511
530
  }
512
531
  setFlipCPU({ flipHorizontal, flipVertical }) {
513
532
  const { viewport } = this._cpuFallbackEnabledElement;
514
- viewport.hflip = flipHorizontal;
515
- this.flipHorizontal = viewport.hflip;
516
- viewport.vflip = flipVertical;
517
- this.flipVertical = viewport.vflip;
533
+ if (flipHorizontal !== undefined) {
534
+ viewport.hflip = flipHorizontal;
535
+ this.flipHorizontal = viewport.hflip;
536
+ }
537
+ if (flipVertical !== undefined) {
538
+ viewport.vflip = flipVertical;
539
+ this.flipVertical = viewport.vflip;
540
+ }
518
541
  }
519
542
  setVOI(voiRange, suppressEvents) {
520
543
  if (this.useCPURendering) {
@@ -574,7 +597,7 @@ class StackViewport extends Viewport {
574
597
  return;
575
598
  }
576
599
  const { actor } = defaultActor;
577
- if (!actor.isA('vtkVolume')) {
600
+ if (!isImageActor(actor)) {
578
601
  return;
579
602
  }
580
603
  const volumeProperty = actor.getProperty();
@@ -605,15 +628,25 @@ class StackViewport extends Viewport {
605
628
  return;
606
629
  }
607
630
  const { actor } = defaultActor;
608
- if (!actor.isA('vtkVolume')) {
631
+ if (!isImageActor(actor)) {
609
632
  return;
610
633
  }
611
- const volumeActor = actor;
612
- const tfunc = volumeActor.getProperty().getRGBTransferFunction(0);
613
- if ((!this.invert && invert) || (this.invert && !invert)) {
614
- invertRgbTransferFunction(tfunc);
634
+ if (actor.isA('vtkVolume')) {
635
+ const volumeActor = actor;
636
+ const tfunc = volumeActor.getProperty().getRGBTransferFunction(0);
637
+ if ((!this.invert && invert) || (this.invert && !invert)) {
638
+ invertRgbTransferFunction(tfunc);
639
+ }
640
+ this.invert = invert;
641
+ }
642
+ else if (actor.isA('vtkImageSlice')) {
643
+ const imageSliceActor = actor;
644
+ const tfunc = imageSliceActor.getProperty().getRGBTransferFunction(0);
645
+ if ((!this.invert && invert) || (this.invert && !invert)) {
646
+ invertRgbTransferFunction(tfunc);
647
+ }
648
+ this.invert = invert;
615
649
  }
616
- this.invert = invert;
617
650
  }
618
651
  setVOICPU(voiRange, suppressEvents) {
619
652
  const { viewport, image } = this._cpuFallbackEnabledElement;
@@ -659,26 +692,24 @@ class StackViewport extends Viewport {
659
692
  return;
660
693
  }
661
694
  const { actor } = defaultActor;
662
- if (!actor.isA('vtkVolume')) {
695
+ if (!isImageActor(actor)) {
663
696
  return;
664
697
  }
665
- const volumeActor = actor;
666
- const tfunc = volumeActor.getProperty().getRGBTransferFunction(0);
667
- if (typeof voiRange === 'undefined') {
668
- const imageData = volumeActor.getMapper().getInputData();
698
+ const imageActor = actor;
699
+ let voiRangeToUse = voiRange;
700
+ if (typeof voiRangeToUse === 'undefined') {
701
+ const imageData = imageActor.getMapper().getInputData();
669
702
  const range = imageData.getPointData().getScalars().getRange();
670
- tfunc.setRange(range[0], range[1]);
671
- voiRange = { lower: range[0], upper: range[1] };
672
- }
673
- else {
674
- const { lower, upper } = voiRange;
675
- tfunc.setRange(lower, upper);
703
+ voiRangeToUse = { lower: range[0], upper: range[1] };
676
704
  }
705
+ const { windowWidth, windowCenter } = windowLevelUtil.toWindowLevel(voiRangeToUse.lower, voiRangeToUse.upper);
706
+ imageActor.getProperty().setColorWindow(windowWidth);
707
+ imageActor.getProperty().setColorLevel(windowCenter);
677
708
  this.voiApplied = true;
678
- this.voiRange = voiRange;
709
+ this.voiRange = voiRangeToUse;
679
710
  const eventDetail = {
680
711
  viewportId: this.id,
681
- range: voiRange,
712
+ range: voiRangeToUse,
682
713
  };
683
714
  if (!suppressEvents) {
684
715
  triggerEvent(this.element, Events.VOI_MODIFIED, eventDetail);
@@ -814,8 +845,8 @@ class StackViewport extends Viewport {
814
845
  if (!imageData) {
815
846
  return false;
816
847
  }
817
- const [xSpacing, ySpacing, zSpacing] = imageData.getSpacing();
818
- const [xVoxels, yVoxels, zVoxels] = imageData.getDimensions();
848
+ const [xSpacing, ySpacing] = imageData.getSpacing();
849
+ const [xVoxels, yVoxels] = imageData.getDimensions();
819
850
  const imagePlaneModule = metaData.get('imagePlaneModule', image.imageId);
820
851
  const direction = imageData.getDirection();
821
852
  const rowCosines = direction.slice(0, 3);
@@ -1018,9 +1049,6 @@ class StackViewport extends Viewport {
1018
1049
  const previousCameraProps = _cloneDeep(this.getCamera());
1019
1050
  if (sameImageData && !this.stackInvalidated) {
1020
1051
  this._updateVTKImageDataFromCornerstoneImage(image);
1021
- const direction = this._imageData.getDirection();
1022
- const { viewPlaneNormal, viewUp } = this._getCameraOrientation(direction);
1023
- this.setCameraNoEvent({ viewUp, viewPlaneNormal });
1024
1052
  const cameraProps = this.getCamera();
1025
1053
  this.panCache[0] = this.cameraPosOnRender[0] - cameraProps.position[0];
1026
1054
  this.panCache[1] = this.cameraPosOnRender[1] - cameraProps.position[1];
@@ -1064,6 +1092,18 @@ class StackViewport extends Viewport {
1064
1092
  }
1065
1093
  this.initialVOIRange = voiRange;
1066
1094
  this.setProperties({ voiRange });
1095
+ const cfun = vtkColorTransferFunction.newInstance();
1096
+ let lower = 0;
1097
+ let upper = 1024;
1098
+ if (voiRange &&
1099
+ voiRange.lower !== undefined &&
1100
+ voiRange.upper !== undefined) {
1101
+ lower = voiRange.lower;
1102
+ upper = voiRange.upper;
1103
+ }
1104
+ cfun.addRGBPoint(lower, 0.0, 0.0, 0.0);
1105
+ cfun.addRGBPoint(upper, 1.0, 1.0, 1.0);
1106
+ actor.getProperty().setRGBTransferFunction(0, cfun);
1067
1107
  const { position } = this.getCamera();
1068
1108
  this.cameraPosOnRender = position;
1069
1109
  this.stackInvalidated = false;
@@ -1076,6 +1116,7 @@ class StackViewport extends Viewport {
1076
1116
  throw new Error(`ImageIdIndex provided ${imageIdIndex} is invalid, the stack only has ${this.imageIds.length} elements`);
1077
1117
  }
1078
1118
  this.currentImageIdIndex = imageIdIndex;
1119
+ this.hasPixelSpacing = true;
1079
1120
  const imageId = await this._loadAndDisplayImage(this.imageIds[imageIdIndex], imageIdIndex);
1080
1121
  return imageId;
1081
1122
  }
@@ -1301,6 +1342,34 @@ class StackViewport extends Viewport {
1301
1342
  unsetColormapGPU() {
1302
1343
  throw new Error('unsetColormapGPU not implemented.');
1303
1344
  }
1345
+ _getImagePlaneModule(imagePlaneModule) {
1346
+ const newImagePlaneModule = {
1347
+ ...imagePlaneModule,
1348
+ };
1349
+ if (!newImagePlaneModule.columnPixelSpacing) {
1350
+ newImagePlaneModule.columnPixelSpacing = 1;
1351
+ this.hasPixelSpacing = false;
1352
+ }
1353
+ if (!newImagePlaneModule.rowPixelSpacing) {
1354
+ newImagePlaneModule.rowPixelSpacing = 1;
1355
+ this.hasPixelSpacing = false;
1356
+ }
1357
+ if (!newImagePlaneModule.columnCosines) {
1358
+ newImagePlaneModule.columnCosines = [0, 1, 0];
1359
+ }
1360
+ if (!newImagePlaneModule.rowCosines) {
1361
+ newImagePlaneModule.rowCosines = [1, 0, 0];
1362
+ }
1363
+ if (!newImagePlaneModule.imagePositionPatient) {
1364
+ newImagePlaneModule.imagePositionPatient = [0, 0, 0];
1365
+ }
1366
+ if (!newImagePlaneModule.imageOrientationPatient) {
1367
+ newImagePlaneModule.imageOrientationPatient = new Float32Array([
1368
+ 1, 0, 0, 0, 1, 0,
1369
+ ]);
1370
+ }
1371
+ return newImagePlaneModule;
1372
+ }
1304
1373
  }
1305
1374
  export default StackViewport;
1306
1375
  //# sourceMappingURL=StackViewport.js.map