@cornerstonejs/core 3.17.1 → 3.19.0

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.
@@ -87,7 +87,6 @@ declare class VideoViewport extends Viewport {
87
87
  setVOI(voiRange: VOIRange): void;
88
88
  setWindowLevel(windowWidth?: number, windowCenter?: number): void;
89
89
  setAverageWhite(averageWhite: [number, number, number]): void;
90
- protected setColorTransform(): void;
91
90
  setCamera(camera: ICamera): void;
92
91
  getCurrentImageId(index?: number): string;
93
92
  getViewReferenceId(specifier?: ViewReferenceSpecifier): string;
@@ -438,6 +438,10 @@ class VideoViewport extends Viewport {
438
438
  this.setProperties({
439
439
  loop: false,
440
440
  muted: true,
441
+ voiRange: {
442
+ lower: 0,
443
+ upper: 255,
444
+ },
441
445
  });
442
446
  }
443
447
  getScalarData() {
@@ -527,41 +531,18 @@ class VideoViewport extends Viewport {
527
531
  }
528
532
  setVOI(voiRange) {
529
533
  this.voiRange = voiRange;
530
- this.setColorTransform();
534
+ const feFilter = this.setColorTransform(voiRange, this.averageWhite);
535
+ this.canvas.style.filter = feFilter;
531
536
  }
532
537
  setWindowLevel(windowWidth = 256, windowCenter = 128) {
533
538
  const lower = windowCenter - windowWidth / 2;
534
539
  const upper = windowCenter + windowWidth / 2 - 1;
535
540
  this.setVOI({ lower, upper });
536
- this.setColorTransform();
541
+ this.setColorTransform({ lower, upper }, this.averageWhite);
537
542
  }
538
543
  setAverageWhite(averageWhite) {
539
544
  this.averageWhite = averageWhite;
540
- this.setColorTransform();
541
- }
542
- setColorTransform() {
543
- if (!this.voiRange && !this.averageWhite) {
544
- this.feFilter = null;
545
- return;
546
- }
547
- const white = this.averageWhite || [255, 255, 255];
548
- const maxWhite = Math.max(...white);
549
- const scaleWhite = white.map((c) => maxWhite / c);
550
- const { lower = 0, upper = 255 } = this.voiRange || {};
551
- const wlScale = (upper - lower + 1) / 255;
552
- const wlDelta = lower / 255;
553
- this.feFilter = `url('data:image/svg+xml,\
554
- <svg xmlns="http://www.w3.org/2000/svg">\
555
- <filter id="colour" color-interpolation-filters="linearRGB">\
556
- <feColorMatrix type="matrix" \
557
- values="\
558
- ${scaleWhite[0] * wlScale} 0 0 0 ${wlDelta} \
559
- 0 ${scaleWhite[1] * wlScale} 0 0 ${wlDelta} \
560
- 0 0 ${scaleWhite[2] * wlScale} 0 ${wlDelta} \
561
- 0 0 0 1 0" />\
562
- </filter>\
563
- </svg>#colour')`;
564
- this.canvas.style.filter = this.feFilter;
545
+ this.setColorTransform(this.voiRange, averageWhite);
565
546
  }
566
547
  setCamera(camera) {
567
548
  const { parallelScale, focalPoint } = camera;
@@ -53,6 +53,7 @@ declare class Viewport {
53
53
  getWidgets: () => any[];
54
54
  removeWidgets: () => void;
55
55
  setRendered(): void;
56
+ protected setColorTransform(voiRange: any, averageWhite: any): any;
56
57
  getRenderingEngine(): IRenderingEngine;
57
58
  getRenderer(): vtkRenderer;
58
59
  render(): void;
@@ -89,6 +89,30 @@ class Viewport {
89
89
  }
90
90
  this.viewportStatus = ViewportStatus.RENDERED;
91
91
  }
92
+ setColorTransform(voiRange, averageWhite) {
93
+ let feFilter = null;
94
+ if (!voiRange && !averageWhite) {
95
+ return;
96
+ }
97
+ const white = averageWhite || [255, 255, 255];
98
+ const maxWhite = Math.max(...white);
99
+ const scaleWhite = white.map((c) => maxWhite / c);
100
+ const { lower = 0, upper = 255 } = voiRange || {};
101
+ const wlScale = (upper - lower + 1) / 255;
102
+ const wlDelta = lower / 255;
103
+ feFilter = `url('data:image/svg+xml,\
104
+ <svg xmlns="http://www.w3.org/2000/svg">\
105
+ <filter id="colour" color-interpolation-filters="linearRGB">\
106
+ <feColorMatrix type="matrix" \
107
+ values="\
108
+ ${scaleWhite[0] * wlScale} 0 0 0 ${wlDelta} \
109
+ 0 ${scaleWhite[1] * wlScale} 0 0 ${wlDelta} \
110
+ 0 0 ${scaleWhite[2] * wlScale} 0 ${wlDelta} \
111
+ 0 0 0 1 0" />\
112
+ </filter>\
113
+ </svg>#colour')`;
114
+ return feFilter;
115
+ }
92
116
  getRenderingEngine() {
93
117
  return renderingEngineCache.get(this.renderingEngineId);
94
118
  }
@@ -1,5 +1,5 @@
1
1
  import { mat4 } from 'gl-matrix';
2
- import type { WSIViewportProperties, Point3, Point2, ICamera, CPUIImageData, ViewportInput } from '../types';
2
+ import type { WSIViewportProperties, Point3, Point2, ICamera, VOIRange, CPUIImageData, ViewportInput } from '../types';
3
3
  import { Transform } from './helpers/cpuFallback/rendering/transform';
4
4
  import Viewport from './Viewport';
5
5
  import type { DataSetOptions } from '../types/IViewport';
@@ -16,6 +16,8 @@ declare class WSIViewport extends Viewport {
16
16
  private internalCamera;
17
17
  private viewer;
18
18
  private voiRange;
19
+ private feFilter;
20
+ private averageWhite;
19
21
  constructor(props: ViewportInput);
20
22
  static get useCustomRenderingPipeline(): boolean;
21
23
  private addEventListeners;
@@ -26,6 +28,8 @@ declare class WSIViewport extends Viewport {
26
28
  setProperties(props: WSIViewportProperties): void;
27
29
  getProperties: () => WSIViewportProperties;
28
30
  resetProperties(): void;
31
+ setVOI(voiRange: VOIRange): void;
32
+ setAverageWhite(averageWhite: [number, number, number]): void;
29
33
  protected getScalarData(): any;
30
34
  computeTransforms(): {
31
35
  indexToWorld: mat4;
@@ -34,7 +34,9 @@ class WSIViewport extends Viewport {
34
34
  upper: 255,
35
35
  };
36
36
  this.getProperties = () => {
37
- return {};
37
+ return {
38
+ voiRange: { ...this.voiRange },
39
+ };
38
40
  };
39
41
  this.resetCamera = () => {
40
42
  return true;
@@ -184,9 +186,31 @@ class WSIViewport extends Viewport {
184
186
  async setFrameNumber(frame) {
185
187
  }
186
188
  setProperties(props) {
189
+ if (props.voiRange) {
190
+ this.setVOI(props.voiRange);
191
+ }
187
192
  }
188
193
  resetProperties() {
189
- this.setProperties({});
194
+ this.setProperties({
195
+ voiRange: {
196
+ lower: 0,
197
+ upper: 255,
198
+ },
199
+ });
200
+ }
201
+ setVOI(voiRange) {
202
+ this.voiRange = voiRange;
203
+ const feFilter = this.setColorTransform(voiRange, this.averageWhite);
204
+ const olCanvases = this.map
205
+ .getViewport()
206
+ .querySelectorAll('.ol-layers canvas');
207
+ olCanvases.forEach((canvas) => {
208
+ canvas.style.filter = feFilter;
209
+ });
210
+ }
211
+ setAverageWhite(averageWhite) {
212
+ this.averageWhite = averageWhite;
213
+ this.setColorTransform(this.voiRange, averageWhite);
190
214
  }
191
215
  getScalarData() {
192
216
  return null;
@@ -1 +1 @@
1
- export declare const version = "3.17.1";
1
+ export declare const version = "3.19.0";
@@ -1 +1 @@
1
- export const version = '3.17.1';
1
+ export const version = '3.19.0';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cornerstonejs/core",
3
- "version": "3.17.1",
3
+ "version": "3.19.0",
4
4
  "description": "Cornerstone3D Core",
5
5
  "module": "./dist/esm/index.js",
6
6
  "types": "./dist/esm/index.d.ts",
@@ -97,5 +97,5 @@
97
97
  "type": "individual",
98
98
  "url": "https://ohif.org/donate"
99
99
  },
100
- "gitHead": "6d5e8d3352bc78d14d058149efe7324de61ea41b"
100
+ "gitHead": "fe1658758c774bc78e81a8a0e5933111ee2665b4"
101
101
  }