@cornerstonejs/tools 1.23.4 → 1.25.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.
- package/dist/cjs/utilities/getVOIMultipliers.d.ts +5 -0
- package/dist/cjs/utilities/getVOIMultipliers.js +23 -0
- package/dist/cjs/utilities/getVOIMultipliers.js.map +1 -0
- package/dist/cjs/utilities/index.d.ts +2 -1
- package/dist/cjs/utilities/index.js +3 -1
- package/dist/cjs/utilities/index.js.map +1 -1
- package/dist/cjs/utilities/math/vec3/interpolateVec3.d.ts +2 -0
- package/dist/cjs/utilities/math/vec3/interpolateVec3.js +13 -0
- package/dist/cjs/utilities/math/vec3/interpolateVec3.js.map +1 -0
- package/dist/cjs/utilities/viewport/isViewportPreScaled.js +2 -1
- package/dist/cjs/utilities/viewport/isViewportPreScaled.js.map +1 -1
- package/dist/cjs/utilities/voi/colorbar/Colorbar.d.ts +44 -0
- package/dist/cjs/utilities/voi/colorbar/Colorbar.js +251 -0
- package/dist/cjs/utilities/voi/colorbar/Colorbar.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/ColorbarCanvas.d.ts +29 -0
- package/dist/cjs/utilities/voi/colorbar/ColorbarCanvas.js +187 -0
- package/dist/cjs/utilities/voi/colorbar/ColorbarCanvas.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/ColorbarTicks.d.ts +46 -0
- package/dist/cjs/utilities/voi/colorbar/ColorbarTicks.js +286 -0
- package/dist/cjs/utilities/voi/colorbar/ColorbarTicks.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/ViewportColorbar.d.ts +23 -0
- package/dist/cjs/utilities/voi/colorbar/ViewportColorbar.js +126 -0
- package/dist/cjs/utilities/voi/colorbar/ViewportColorbar.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/common/areColorbarRangesEqual.d.ts +3 -0
- package/dist/cjs/utilities/voi/colorbar/common/areColorbarRangesEqual.js +9 -0
- package/dist/cjs/utilities/voi/colorbar/common/areColorbarRangesEqual.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/common/areColorbarSizesEqual.d.ts +3 -0
- package/dist/cjs/utilities/voi/colorbar/common/areColorbarSizesEqual.js +9 -0
- package/dist/cjs/utilities/voi/colorbar/common/areColorbarSizesEqual.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/common/index.d.ts +4 -0
- package/dist/cjs/utilities/voi/colorbar/common/index.js +12 -0
- package/dist/cjs/utilities/voi/colorbar/common/index.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/common/isColorbarSizeValid.d.ts +3 -0
- package/dist/cjs/utilities/voi/colorbar/common/isColorbarSizeValid.js +9 -0
- package/dist/cjs/utilities/voi/colorbar/common/isColorbarSizeValid.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/common/isRangeTextPositionValid.d.ts +3 -0
- package/dist/cjs/utilities/voi/colorbar/common/isRangeTextPositionValid.js +14 -0
- package/dist/cjs/utilities/voi/colorbar/common/isRangeTextPositionValid.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/common/isRangeValid.d.ts +3 -0
- package/dist/cjs/utilities/voi/colorbar/common/isRangeValid.js +9 -0
- package/dist/cjs/utilities/voi/colorbar/common/isRangeValid.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/enums/ColorbarRangeTextPosition.d.ts +6 -0
- package/dist/cjs/utilities/voi/colorbar/enums/ColorbarRangeTextPosition.js +11 -0
- package/dist/cjs/utilities/voi/colorbar/enums/ColorbarRangeTextPosition.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/enums/index.d.ts +1 -0
- package/dist/cjs/utilities/voi/colorbar/enums/index.js +6 -0
- package/dist/cjs/utilities/voi/colorbar/enums/index.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/index.d.ts +6 -0
- package/dist/cjs/utilities/voi/colorbar/index.js +33 -0
- package/dist/cjs/utilities/voi/colorbar/index.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarCanvasProps.d.ts +12 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarCanvasProps.js +3 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarCanvasProps.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarCommonProps.d.ts +11 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarCommonProps.js +3 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarCommonProps.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarImageRange.d.ts +4 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarImageRange.js +3 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarImageRange.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarProps.d.ts +7 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarProps.js +3 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarProps.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarSize.d.ts +4 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarSize.js +3 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarSize.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarTicksProps.d.ts +7 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarTicksProps.js +3 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarTicksProps.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarTicksStyle.d.ts +8 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarTicksStyle.js +3 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarTicksStyle.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarVOIRange.d.ts +2 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarVOIRange.js +3 -0
- package/dist/cjs/utilities/voi/colorbar/types/ColorbarVOIRange.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/types/ViewportColorbarProps.d.ts +5 -0
- package/dist/cjs/utilities/voi/colorbar/types/ViewportColorbarProps.js +3 -0
- package/dist/cjs/utilities/voi/colorbar/types/ViewportColorbarProps.js.map +1 -0
- package/dist/cjs/utilities/voi/colorbar/types/index.d.ts +8 -0
- package/dist/cjs/utilities/voi/colorbar/types/index.js +3 -0
- package/dist/cjs/utilities/voi/colorbar/types/index.js.map +1 -0
- package/dist/cjs/utilities/voi/index.d.ts +2 -0
- package/dist/cjs/utilities/voi/index.js +29 -0
- package/dist/cjs/utilities/voi/index.js.map +1 -0
- package/dist/cjs/widgets/Widget.d.ts +17 -0
- package/dist/cjs/widgets/Widget.js +71 -0
- package/dist/cjs/widgets/Widget.js.map +1 -0
- package/dist/cjs/widgets/types/WidgetProps.d.ts +4 -0
- package/dist/cjs/widgets/types/WidgetProps.js +3 -0
- package/dist/cjs/widgets/types/WidgetProps.js.map +1 -0
- package/dist/cjs/widgets/types/WidgetSize.d.ts +4 -0
- package/dist/cjs/widgets/types/WidgetSize.js +3 -0
- package/dist/cjs/widgets/types/WidgetSize.js.map +1 -0
- package/dist/cjs/widgets/types/index.d.ts +2 -0
- package/dist/cjs/widgets/types/index.js +3 -0
- package/dist/cjs/widgets/types/index.js.map +1 -0
- package/dist/esm/utilities/getVOIMultipliers.d.ts +5 -0
- package/dist/esm/utilities/getVOIMultipliers.js +19 -0
- package/dist/esm/utilities/getVOIMultipliers.js.map +1 -0
- package/dist/esm/utilities/index.d.ts +2 -1
- package/dist/esm/utilities/index.js +2 -1
- package/dist/esm/utilities/index.js.map +1 -1
- package/dist/esm/utilities/math/vec3/interpolateVec3.d.ts +2 -0
- package/dist/esm/utilities/math/vec3/interpolateVec3.js +9 -0
- package/dist/esm/utilities/math/vec3/interpolateVec3.js.map +1 -0
- package/dist/esm/utilities/viewport/isViewportPreScaled.js +2 -1
- package/dist/esm/utilities/viewport/isViewportPreScaled.js.map +1 -1
- package/dist/esm/utilities/voi/colorbar/Colorbar.d.ts +44 -0
- package/dist/esm/utilities/voi/colorbar/Colorbar.js +243 -0
- package/dist/esm/utilities/voi/colorbar/Colorbar.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/ColorbarCanvas.d.ts +29 -0
- package/dist/esm/utilities/voi/colorbar/ColorbarCanvas.js +180 -0
- package/dist/esm/utilities/voi/colorbar/ColorbarCanvas.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/ColorbarTicks.d.ts +46 -0
- package/dist/esm/utilities/voi/colorbar/ColorbarTicks.js +281 -0
- package/dist/esm/utilities/voi/colorbar/ColorbarTicks.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/ViewportColorbar.d.ts +23 -0
- package/dist/esm/utilities/voi/colorbar/ViewportColorbar.js +122 -0
- package/dist/esm/utilities/voi/colorbar/ViewportColorbar.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/common/areColorbarRangesEqual.d.ts +3 -0
- package/dist/esm/utilities/voi/colorbar/common/areColorbarRangesEqual.js +5 -0
- package/dist/esm/utilities/voi/colorbar/common/areColorbarRangesEqual.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/common/areColorbarSizesEqual.d.ts +3 -0
- package/dist/esm/utilities/voi/colorbar/common/areColorbarSizesEqual.js +5 -0
- package/dist/esm/utilities/voi/colorbar/common/areColorbarSizesEqual.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/common/index.d.ts +4 -0
- package/dist/esm/utilities/voi/colorbar/common/index.js +5 -0
- package/dist/esm/utilities/voi/colorbar/common/index.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/common/isColorbarSizeValid.d.ts +3 -0
- package/dist/esm/utilities/voi/colorbar/common/isColorbarSizeValid.js +5 -0
- package/dist/esm/utilities/voi/colorbar/common/isColorbarSizeValid.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/common/isRangeTextPositionValid.d.ts +3 -0
- package/dist/esm/utilities/voi/colorbar/common/isRangeTextPositionValid.js +10 -0
- package/dist/esm/utilities/voi/colorbar/common/isRangeTextPositionValid.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/common/isRangeValid.d.ts +3 -0
- package/dist/esm/utilities/voi/colorbar/common/isRangeValid.js +5 -0
- package/dist/esm/utilities/voi/colorbar/common/isRangeValid.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/enums/ColorbarRangeTextPosition.d.ts +6 -0
- package/dist/esm/utilities/voi/colorbar/enums/ColorbarRangeTextPosition.js +8 -0
- package/dist/esm/utilities/voi/colorbar/enums/ColorbarRangeTextPosition.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/enums/index.d.ts +1 -0
- package/dist/esm/utilities/voi/colorbar/enums/index.js +2 -0
- package/dist/esm/utilities/voi/colorbar/enums/index.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/index.d.ts +6 -0
- package/dist/esm/utilities/voi/colorbar/index.js +5 -0
- package/dist/esm/utilities/voi/colorbar/index.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarCanvasProps.d.ts +12 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarCanvasProps.js +2 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarCanvasProps.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarCommonProps.d.ts +11 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarCommonProps.js +2 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarCommonProps.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarImageRange.d.ts +4 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarImageRange.js +2 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarImageRange.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarProps.d.ts +7 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarProps.js +2 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarProps.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarSize.d.ts +4 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarSize.js +2 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarSize.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksProps.d.ts +7 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksProps.js +2 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksProps.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksStyle.d.ts +8 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksStyle.js +2 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksStyle.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarVOIRange.d.ts +2 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarVOIRange.js +2 -0
- package/dist/esm/utilities/voi/colorbar/types/ColorbarVOIRange.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/types/ViewportColorbarProps.d.ts +5 -0
- package/dist/esm/utilities/voi/colorbar/types/ViewportColorbarProps.js +2 -0
- package/dist/esm/utilities/voi/colorbar/types/ViewportColorbarProps.js.map +1 -0
- package/dist/esm/utilities/voi/colorbar/types/index.d.ts +8 -0
- package/dist/esm/utilities/voi/colorbar/types/index.js +2 -0
- package/dist/esm/utilities/voi/colorbar/types/index.js.map +1 -0
- package/dist/esm/utilities/voi/index.d.ts +2 -0
- package/dist/esm/utilities/voi/index.js +3 -0
- package/dist/esm/utilities/voi/index.js.map +1 -0
- package/dist/esm/widgets/Widget.d.ts +17 -0
- package/dist/esm/widgets/Widget.js +67 -0
- package/dist/esm/widgets/Widget.js.map +1 -0
- package/dist/esm/widgets/types/WidgetProps.d.ts +4 -0
- package/dist/esm/widgets/types/WidgetProps.js +2 -0
- package/dist/esm/widgets/types/WidgetProps.js.map +1 -0
- package/dist/esm/widgets/types/WidgetSize.d.ts +4 -0
- package/dist/esm/widgets/types/WidgetSize.js +2 -0
- package/dist/esm/widgets/types/WidgetSize.js.map +1 -0
- package/dist/esm/widgets/types/index.d.ts +2 -0
- package/dist/esm/widgets/types/index.js +2 -0
- package/dist/esm/widgets/types/index.js.map +1 -0
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.map +1 -1
- package/package.json +3 -3
- package/src/utilities/getVOIMultipliers.ts +33 -0
- package/src/utilities/index.ts +2 -0
- package/src/utilities/math/vec3/interpolateVec3.ts +20 -0
- package/src/utilities/viewport/isViewportPreScaled.ts +3 -1
- package/src/utilities/voi/colorbar/Colorbar.ts +366 -0
- package/src/utilities/voi/colorbar/ColorbarCanvas.ts +290 -0
- package/src/utilities/voi/colorbar/ColorbarTicks.ts +500 -0
- package/src/utilities/voi/colorbar/ViewportColorbar.ts +194 -0
- package/src/utilities/voi/colorbar/common/areColorbarRangesEqual.ts +10 -0
- package/src/utilities/voi/colorbar/common/areColorbarSizesEqual.ts +7 -0
- package/src/utilities/voi/colorbar/common/index.ts +4 -0
- package/src/utilities/voi/colorbar/common/isColorbarSizeValid.ts +7 -0
- package/src/utilities/voi/colorbar/common/isRangeTextPositionValid.ts +16 -0
- package/src/utilities/voi/colorbar/common/isRangeValid.ts +7 -0
- package/src/utilities/voi/colorbar/enums/ColorbarRangeTextPosition.ts +11 -0
- package/src/utilities/voi/colorbar/enums/index.ts +1 -0
- package/src/utilities/voi/colorbar/index.ts +8 -0
- package/src/utilities/voi/colorbar/types/ColorbarCanvasProps.ts +14 -0
- package/src/utilities/voi/colorbar/types/ColorbarCommonProps.ts +23 -0
- package/src/utilities/voi/colorbar/types/ColorbarImageRange.ts +4 -0
- package/src/utilities/voi/colorbar/types/ColorbarProps.ts +8 -0
- package/src/utilities/voi/colorbar/types/ColorbarSize.ts +4 -0
- package/src/utilities/voi/colorbar/types/ColorbarTicksProps.ts +8 -0
- package/src/utilities/voi/colorbar/types/ColorbarTicksStyle.ts +8 -0
- package/src/utilities/voi/colorbar/types/ColorbarVOIRange.ts +3 -0
- package/src/utilities/voi/colorbar/types/ViewportColorbarProps.ts +6 -0
- package/src/utilities/voi/colorbar/types/index.ts +8 -0
- package/src/utilities/voi/index.ts +3 -0
- package/src/widgets/Widget.ts +169 -0
- package/src/widgets/types/WidgetProps.ts +4 -0
- package/src/widgets/types/WidgetSize.ts +4 -0
- package/src/widgets/types/index.ts +2 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ColorbarRangeTextPosition } from '../enums';
|
|
2
|
+
|
|
3
|
+
function isRangeTextPositionValid(
|
|
4
|
+
colorbarWidth: number,
|
|
5
|
+
colorbarHeight: number,
|
|
6
|
+
rangeTextPosition: ColorbarRangeTextPosition
|
|
7
|
+
) {
|
|
8
|
+
const isHorizontal = colorbarWidth >= colorbarHeight;
|
|
9
|
+
const validRangeTextPositions = isHorizontal
|
|
10
|
+
? [ColorbarRangeTextPosition.Top, ColorbarRangeTextPosition.Bottom]
|
|
11
|
+
: [ColorbarRangeTextPosition.Left, ColorbarRangeTextPosition.Right];
|
|
12
|
+
|
|
13
|
+
return validRangeTextPositions.includes(rangeTextPosition);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { isRangeTextPositionValid as default, isRangeTextPositionValid };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Specify the position of the text/ticks.
|
|
3
|
+
* Left/Right are the valid options for a vertical colorbars and Top/Bottom
|
|
4
|
+
* for the horizontal ones.
|
|
5
|
+
*/
|
|
6
|
+
export enum ColorbarRangeTextPosition {
|
|
7
|
+
Top = 'top',
|
|
8
|
+
Left = 'left',
|
|
9
|
+
Bottom = 'bottom',
|
|
10
|
+
Right = 'right',
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ColorbarRangeTextPosition } from './ColorbarRangeTextPosition';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IColorMapPreset } from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction/ColorMaps';
|
|
2
|
+
import type { ColorbarImageRange } from './ColorbarImageRange';
|
|
3
|
+
import type { ColorbarSize } from './ColorbarSize';
|
|
4
|
+
import type { ColorbarVOIRange } from './ColorbarVOIRange';
|
|
5
|
+
|
|
6
|
+
export interface ColorbarCanvasProps {
|
|
7
|
+
colormap: IColorMapPreset;
|
|
8
|
+
size?: ColorbarSize;
|
|
9
|
+
imageRange?: ColorbarImageRange;
|
|
10
|
+
voiRange?: ColorbarVOIRange;
|
|
11
|
+
|
|
12
|
+
container?: HTMLElement;
|
|
13
|
+
showFullPixelValueRange?: boolean;
|
|
14
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ColorbarRangeTextPosition } from '../enums/ColorbarRangeTextPosition';
|
|
2
|
+
import type {
|
|
3
|
+
ColorbarImageRange,
|
|
4
|
+
ColorbarTicksStyle,
|
|
5
|
+
ColorbarVOIRange,
|
|
6
|
+
} from '.';
|
|
7
|
+
|
|
8
|
+
export type ColorbarCommonProps = {
|
|
9
|
+
// Image range from minPixelValue (lower) to maxPixelValue (upper)
|
|
10
|
+
imageRange?: ColorbarImageRange;
|
|
11
|
+
// VOI Range that is related to Window Width and Window Center
|
|
12
|
+
voiRange?: ColorbarVOIRange;
|
|
13
|
+
// Ticks props
|
|
14
|
+
ticks?: {
|
|
15
|
+
// Position where the range text (tiks) should be displayed related to the ticks bar
|
|
16
|
+
position?: ColorbarRangeTextPosition;
|
|
17
|
+
// Ticks style
|
|
18
|
+
style?: ColorbarTicksStyle;
|
|
19
|
+
};
|
|
20
|
+
// The color bar shall show a range from `imageRange.lower` to `imageRange.upper`
|
|
21
|
+
// when it is set to `true` or from `voiRange.lower` to `voiRange.upper` otherwise.
|
|
22
|
+
showFullPixelValueRange?: boolean;
|
|
23
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IColorMapPreset } from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction/ColorMaps';
|
|
2
|
+
import { WidgetProps } from '../../../../widgets/types';
|
|
3
|
+
import { ColorbarCommonProps } from '.';
|
|
4
|
+
|
|
5
|
+
export type ColorbarProps = (WidgetProps & ColorbarCommonProps) & {
|
|
6
|
+
colormaps: IColorMapPreset[];
|
|
7
|
+
activeColormapName?: string;
|
|
8
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type { ColorbarCommonProps } from './ColorbarCommonProps';
|
|
2
|
+
export type { ColorbarProps } from './ColorbarProps';
|
|
3
|
+
export type { ColorbarImageRange } from './ColorbarImageRange';
|
|
4
|
+
export type { ColorbarVOIRange } from './ColorbarVOIRange';
|
|
5
|
+
export type { ColorbarSize } from './ColorbarSize';
|
|
6
|
+
export type { ColorbarTicksProps } from './ColorbarTicksProps';
|
|
7
|
+
export type { ColorbarTicksStyle } from './ColorbarTicksStyle';
|
|
8
|
+
export type { ViewportColorbarProps } from './ViewportColorbarProps';
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import type { WidgetProps, WidgetSize } from './types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Base class for any widget that can be added to cornerstone. Currently it is
|
|
5
|
+
* responsible only for holding the `rootElement`, contains a method that allows
|
|
6
|
+
* adding it to the DOM and it also listens to container's size changes when the
|
|
7
|
+
* widget is already added to the DOM. `dispose` must be called to destroy the
|
|
8
|
+
* widget because it removes the widget from the DOM and stop listening to
|
|
9
|
+
* container changes.
|
|
10
|
+
*
|
|
11
|
+
* You can apply some styles to widgets using the widget id or the `widget` class.
|
|
12
|
+
*
|
|
13
|
+
* Example:
|
|
14
|
+
* type ColorPickerProps = WidgetProps & {
|
|
15
|
+
* selectedColor: string;
|
|
16
|
+
* }
|
|
17
|
+
*
|
|
18
|
+
* class ColorPicker extends Widget {
|
|
19
|
+
* constructor(props: ColorPickerProps) {
|
|
20
|
+
* super(props);
|
|
21
|
+
* // [code]
|
|
22
|
+
* }
|
|
23
|
+
*
|
|
24
|
+
* public show() {
|
|
25
|
+
* console.log('Show color picker');
|
|
26
|
+
* }
|
|
27
|
+
*
|
|
28
|
+
* protected containerResized() {
|
|
29
|
+
* console.log('New container size: ', this.containerSize);
|
|
30
|
+
* }
|
|
31
|
+
* }
|
|
32
|
+
*
|
|
33
|
+
* const colorPicker = new ColorPicker({
|
|
34
|
+
* container: document.body,
|
|
35
|
+
* selectedColor: '#000';
|
|
36
|
+
* });
|
|
37
|
+
*
|
|
38
|
+
* // another way to add the color picker to the DOM
|
|
39
|
+
* colorPicker.appendTo(document.body)
|
|
40
|
+
*
|
|
41
|
+
* // Show color picker
|
|
42
|
+
* colorPicker.show();
|
|
43
|
+
*/
|
|
44
|
+
abstract class Widget {
|
|
45
|
+
private _id: string;
|
|
46
|
+
private _rootElement: HTMLElement;
|
|
47
|
+
private _containerSize: WidgetSize;
|
|
48
|
+
private _containerResizeObserver: ResizeObserver;
|
|
49
|
+
|
|
50
|
+
constructor({ id, container }: WidgetProps) {
|
|
51
|
+
this._id = id;
|
|
52
|
+
this._containerSize = { width: 0, height: 0 };
|
|
53
|
+
this._rootElement = this.createRootElement(id);
|
|
54
|
+
this._containerResizeObserver = new ResizeObserver(
|
|
55
|
+
this._containerResizeCallback
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
if (container) {
|
|
59
|
+
this.appendTo(container);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Widget id
|
|
65
|
+
*/
|
|
66
|
+
public get id() {
|
|
67
|
+
return this._id;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Widget's root element
|
|
72
|
+
*/
|
|
73
|
+
public get rootElement(): HTMLElement {
|
|
74
|
+
return this._rootElement;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Append the widget to a parent element
|
|
79
|
+
* @param container - HTML element where the widget should be added to
|
|
80
|
+
*/
|
|
81
|
+
public appendTo(container: HTMLElement) {
|
|
82
|
+
const {
|
|
83
|
+
_rootElement: rootElement,
|
|
84
|
+
_containerResizeObserver: resizeObserver,
|
|
85
|
+
} = this;
|
|
86
|
+
const { parentElement: currentContainer } = rootElement;
|
|
87
|
+
|
|
88
|
+
if (!container || container === currentContainer) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (currentContainer) {
|
|
93
|
+
resizeObserver.unobserve(currentContainer);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
container.appendChild(rootElement);
|
|
97
|
+
resizeObserver.observe(container);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Removes the widget from the DOM and stop listening to DOM events
|
|
102
|
+
*/
|
|
103
|
+
public destroy() {
|
|
104
|
+
const {
|
|
105
|
+
_rootElement: rootElement,
|
|
106
|
+
_containerResizeObserver: resizeObserver,
|
|
107
|
+
} = this;
|
|
108
|
+
const { parentElement } = rootElement;
|
|
109
|
+
|
|
110
|
+
parentElement?.removeChild(rootElement);
|
|
111
|
+
resizeObserver.disconnect();
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
protected get containerSize(): WidgetSize {
|
|
115
|
+
// Returns a copy to prevent any external change
|
|
116
|
+
return { ...this._containerSize };
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Creates the root element which is a div by default
|
|
121
|
+
* @param id - Root element id
|
|
122
|
+
* @returns A new HTML element where all other elements should be added to
|
|
123
|
+
*/
|
|
124
|
+
protected createRootElement(id: string): HTMLElement {
|
|
125
|
+
const rootElement = document.createElement('div');
|
|
126
|
+
|
|
127
|
+
rootElement.id = id;
|
|
128
|
+
rootElement.classList.add('widget');
|
|
129
|
+
|
|
130
|
+
Object.assign(rootElement.style, {
|
|
131
|
+
width: '100%',
|
|
132
|
+
height: '100%',
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
return rootElement;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Method called every time widget's container is resize giving the
|
|
140
|
+
* opportunity to children classes to act when that happens.
|
|
141
|
+
*/
|
|
142
|
+
protected onContainerResize() {
|
|
143
|
+
// no-op
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
private _containerResizeCallback = (entries: ResizeObserverEntry[]): void => {
|
|
147
|
+
let width;
|
|
148
|
+
let height;
|
|
149
|
+
|
|
150
|
+
const { contentRect, contentBoxSize } = entries[0];
|
|
151
|
+
|
|
152
|
+
// `contentRect` is better supported than `borderBoxSize` or `contentBoxSize`,
|
|
153
|
+
// but it is left over from an earlier implementation of the Resize Observer API
|
|
154
|
+
// and may be deprecated in future versions.
|
|
155
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry/contentRect
|
|
156
|
+
if (contentRect) {
|
|
157
|
+
width = contentRect.width;
|
|
158
|
+
height = contentRect.height;
|
|
159
|
+
} else if (contentBoxSize?.length) {
|
|
160
|
+
width = contentBoxSize[0].inlineSize;
|
|
161
|
+
height = contentBoxSize[0].blockSize;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
this._containerSize = { width, height };
|
|
165
|
+
this.onContainerResize();
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export { Widget as default, Widget };
|