@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.
Files changed (225) hide show
  1. package/dist/cjs/utilities/getVOIMultipliers.d.ts +5 -0
  2. package/dist/cjs/utilities/getVOIMultipliers.js +23 -0
  3. package/dist/cjs/utilities/getVOIMultipliers.js.map +1 -0
  4. package/dist/cjs/utilities/index.d.ts +2 -1
  5. package/dist/cjs/utilities/index.js +3 -1
  6. package/dist/cjs/utilities/index.js.map +1 -1
  7. package/dist/cjs/utilities/math/vec3/interpolateVec3.d.ts +2 -0
  8. package/dist/cjs/utilities/math/vec3/interpolateVec3.js +13 -0
  9. package/dist/cjs/utilities/math/vec3/interpolateVec3.js.map +1 -0
  10. package/dist/cjs/utilities/viewport/isViewportPreScaled.js +2 -1
  11. package/dist/cjs/utilities/viewport/isViewportPreScaled.js.map +1 -1
  12. package/dist/cjs/utilities/voi/colorbar/Colorbar.d.ts +44 -0
  13. package/dist/cjs/utilities/voi/colorbar/Colorbar.js +251 -0
  14. package/dist/cjs/utilities/voi/colorbar/Colorbar.js.map +1 -0
  15. package/dist/cjs/utilities/voi/colorbar/ColorbarCanvas.d.ts +29 -0
  16. package/dist/cjs/utilities/voi/colorbar/ColorbarCanvas.js +187 -0
  17. package/dist/cjs/utilities/voi/colorbar/ColorbarCanvas.js.map +1 -0
  18. package/dist/cjs/utilities/voi/colorbar/ColorbarTicks.d.ts +46 -0
  19. package/dist/cjs/utilities/voi/colorbar/ColorbarTicks.js +286 -0
  20. package/dist/cjs/utilities/voi/colorbar/ColorbarTicks.js.map +1 -0
  21. package/dist/cjs/utilities/voi/colorbar/ViewportColorbar.d.ts +23 -0
  22. package/dist/cjs/utilities/voi/colorbar/ViewportColorbar.js +126 -0
  23. package/dist/cjs/utilities/voi/colorbar/ViewportColorbar.js.map +1 -0
  24. package/dist/cjs/utilities/voi/colorbar/common/areColorbarRangesEqual.d.ts +3 -0
  25. package/dist/cjs/utilities/voi/colorbar/common/areColorbarRangesEqual.js +9 -0
  26. package/dist/cjs/utilities/voi/colorbar/common/areColorbarRangesEqual.js.map +1 -0
  27. package/dist/cjs/utilities/voi/colorbar/common/areColorbarSizesEqual.d.ts +3 -0
  28. package/dist/cjs/utilities/voi/colorbar/common/areColorbarSizesEqual.js +9 -0
  29. package/dist/cjs/utilities/voi/colorbar/common/areColorbarSizesEqual.js.map +1 -0
  30. package/dist/cjs/utilities/voi/colorbar/common/index.d.ts +4 -0
  31. package/dist/cjs/utilities/voi/colorbar/common/index.js +12 -0
  32. package/dist/cjs/utilities/voi/colorbar/common/index.js.map +1 -0
  33. package/dist/cjs/utilities/voi/colorbar/common/isColorbarSizeValid.d.ts +3 -0
  34. package/dist/cjs/utilities/voi/colorbar/common/isColorbarSizeValid.js +9 -0
  35. package/dist/cjs/utilities/voi/colorbar/common/isColorbarSizeValid.js.map +1 -0
  36. package/dist/cjs/utilities/voi/colorbar/common/isRangeTextPositionValid.d.ts +3 -0
  37. package/dist/cjs/utilities/voi/colorbar/common/isRangeTextPositionValid.js +14 -0
  38. package/dist/cjs/utilities/voi/colorbar/common/isRangeTextPositionValid.js.map +1 -0
  39. package/dist/cjs/utilities/voi/colorbar/common/isRangeValid.d.ts +3 -0
  40. package/dist/cjs/utilities/voi/colorbar/common/isRangeValid.js +9 -0
  41. package/dist/cjs/utilities/voi/colorbar/common/isRangeValid.js.map +1 -0
  42. package/dist/cjs/utilities/voi/colorbar/enums/ColorbarRangeTextPosition.d.ts +6 -0
  43. package/dist/cjs/utilities/voi/colorbar/enums/ColorbarRangeTextPosition.js +11 -0
  44. package/dist/cjs/utilities/voi/colorbar/enums/ColorbarRangeTextPosition.js.map +1 -0
  45. package/dist/cjs/utilities/voi/colorbar/enums/index.d.ts +1 -0
  46. package/dist/cjs/utilities/voi/colorbar/enums/index.js +6 -0
  47. package/dist/cjs/utilities/voi/colorbar/enums/index.js.map +1 -0
  48. package/dist/cjs/utilities/voi/colorbar/index.d.ts +6 -0
  49. package/dist/cjs/utilities/voi/colorbar/index.js +33 -0
  50. package/dist/cjs/utilities/voi/colorbar/index.js.map +1 -0
  51. package/dist/cjs/utilities/voi/colorbar/types/ColorbarCanvasProps.d.ts +12 -0
  52. package/dist/cjs/utilities/voi/colorbar/types/ColorbarCanvasProps.js +3 -0
  53. package/dist/cjs/utilities/voi/colorbar/types/ColorbarCanvasProps.js.map +1 -0
  54. package/dist/cjs/utilities/voi/colorbar/types/ColorbarCommonProps.d.ts +11 -0
  55. package/dist/cjs/utilities/voi/colorbar/types/ColorbarCommonProps.js +3 -0
  56. package/dist/cjs/utilities/voi/colorbar/types/ColorbarCommonProps.js.map +1 -0
  57. package/dist/cjs/utilities/voi/colorbar/types/ColorbarImageRange.d.ts +4 -0
  58. package/dist/cjs/utilities/voi/colorbar/types/ColorbarImageRange.js +3 -0
  59. package/dist/cjs/utilities/voi/colorbar/types/ColorbarImageRange.js.map +1 -0
  60. package/dist/cjs/utilities/voi/colorbar/types/ColorbarProps.d.ts +7 -0
  61. package/dist/cjs/utilities/voi/colorbar/types/ColorbarProps.js +3 -0
  62. package/dist/cjs/utilities/voi/colorbar/types/ColorbarProps.js.map +1 -0
  63. package/dist/cjs/utilities/voi/colorbar/types/ColorbarSize.d.ts +4 -0
  64. package/dist/cjs/utilities/voi/colorbar/types/ColorbarSize.js +3 -0
  65. package/dist/cjs/utilities/voi/colorbar/types/ColorbarSize.js.map +1 -0
  66. package/dist/cjs/utilities/voi/colorbar/types/ColorbarTicksProps.d.ts +7 -0
  67. package/dist/cjs/utilities/voi/colorbar/types/ColorbarTicksProps.js +3 -0
  68. package/dist/cjs/utilities/voi/colorbar/types/ColorbarTicksProps.js.map +1 -0
  69. package/dist/cjs/utilities/voi/colorbar/types/ColorbarTicksStyle.d.ts +8 -0
  70. package/dist/cjs/utilities/voi/colorbar/types/ColorbarTicksStyle.js +3 -0
  71. package/dist/cjs/utilities/voi/colorbar/types/ColorbarTicksStyle.js.map +1 -0
  72. package/dist/cjs/utilities/voi/colorbar/types/ColorbarVOIRange.d.ts +2 -0
  73. package/dist/cjs/utilities/voi/colorbar/types/ColorbarVOIRange.js +3 -0
  74. package/dist/cjs/utilities/voi/colorbar/types/ColorbarVOIRange.js.map +1 -0
  75. package/dist/cjs/utilities/voi/colorbar/types/ViewportColorbarProps.d.ts +5 -0
  76. package/dist/cjs/utilities/voi/colorbar/types/ViewportColorbarProps.js +3 -0
  77. package/dist/cjs/utilities/voi/colorbar/types/ViewportColorbarProps.js.map +1 -0
  78. package/dist/cjs/utilities/voi/colorbar/types/index.d.ts +8 -0
  79. package/dist/cjs/utilities/voi/colorbar/types/index.js +3 -0
  80. package/dist/cjs/utilities/voi/colorbar/types/index.js.map +1 -0
  81. package/dist/cjs/utilities/voi/index.d.ts +2 -0
  82. package/dist/cjs/utilities/voi/index.js +29 -0
  83. package/dist/cjs/utilities/voi/index.js.map +1 -0
  84. package/dist/cjs/widgets/Widget.d.ts +17 -0
  85. package/dist/cjs/widgets/Widget.js +71 -0
  86. package/dist/cjs/widgets/Widget.js.map +1 -0
  87. package/dist/cjs/widgets/types/WidgetProps.d.ts +4 -0
  88. package/dist/cjs/widgets/types/WidgetProps.js +3 -0
  89. package/dist/cjs/widgets/types/WidgetProps.js.map +1 -0
  90. package/dist/cjs/widgets/types/WidgetSize.d.ts +4 -0
  91. package/dist/cjs/widgets/types/WidgetSize.js +3 -0
  92. package/dist/cjs/widgets/types/WidgetSize.js.map +1 -0
  93. package/dist/cjs/widgets/types/index.d.ts +2 -0
  94. package/dist/cjs/widgets/types/index.js +3 -0
  95. package/dist/cjs/widgets/types/index.js.map +1 -0
  96. package/dist/esm/utilities/getVOIMultipliers.d.ts +5 -0
  97. package/dist/esm/utilities/getVOIMultipliers.js +19 -0
  98. package/dist/esm/utilities/getVOIMultipliers.js.map +1 -0
  99. package/dist/esm/utilities/index.d.ts +2 -1
  100. package/dist/esm/utilities/index.js +2 -1
  101. package/dist/esm/utilities/index.js.map +1 -1
  102. package/dist/esm/utilities/math/vec3/interpolateVec3.d.ts +2 -0
  103. package/dist/esm/utilities/math/vec3/interpolateVec3.js +9 -0
  104. package/dist/esm/utilities/math/vec3/interpolateVec3.js.map +1 -0
  105. package/dist/esm/utilities/viewport/isViewportPreScaled.js +2 -1
  106. package/dist/esm/utilities/viewport/isViewportPreScaled.js.map +1 -1
  107. package/dist/esm/utilities/voi/colorbar/Colorbar.d.ts +44 -0
  108. package/dist/esm/utilities/voi/colorbar/Colorbar.js +243 -0
  109. package/dist/esm/utilities/voi/colorbar/Colorbar.js.map +1 -0
  110. package/dist/esm/utilities/voi/colorbar/ColorbarCanvas.d.ts +29 -0
  111. package/dist/esm/utilities/voi/colorbar/ColorbarCanvas.js +180 -0
  112. package/dist/esm/utilities/voi/colorbar/ColorbarCanvas.js.map +1 -0
  113. package/dist/esm/utilities/voi/colorbar/ColorbarTicks.d.ts +46 -0
  114. package/dist/esm/utilities/voi/colorbar/ColorbarTicks.js +281 -0
  115. package/dist/esm/utilities/voi/colorbar/ColorbarTicks.js.map +1 -0
  116. package/dist/esm/utilities/voi/colorbar/ViewportColorbar.d.ts +23 -0
  117. package/dist/esm/utilities/voi/colorbar/ViewportColorbar.js +122 -0
  118. package/dist/esm/utilities/voi/colorbar/ViewportColorbar.js.map +1 -0
  119. package/dist/esm/utilities/voi/colorbar/common/areColorbarRangesEqual.d.ts +3 -0
  120. package/dist/esm/utilities/voi/colorbar/common/areColorbarRangesEqual.js +5 -0
  121. package/dist/esm/utilities/voi/colorbar/common/areColorbarRangesEqual.js.map +1 -0
  122. package/dist/esm/utilities/voi/colorbar/common/areColorbarSizesEqual.d.ts +3 -0
  123. package/dist/esm/utilities/voi/colorbar/common/areColorbarSizesEqual.js +5 -0
  124. package/dist/esm/utilities/voi/colorbar/common/areColorbarSizesEqual.js.map +1 -0
  125. package/dist/esm/utilities/voi/colorbar/common/index.d.ts +4 -0
  126. package/dist/esm/utilities/voi/colorbar/common/index.js +5 -0
  127. package/dist/esm/utilities/voi/colorbar/common/index.js.map +1 -0
  128. package/dist/esm/utilities/voi/colorbar/common/isColorbarSizeValid.d.ts +3 -0
  129. package/dist/esm/utilities/voi/colorbar/common/isColorbarSizeValid.js +5 -0
  130. package/dist/esm/utilities/voi/colorbar/common/isColorbarSizeValid.js.map +1 -0
  131. package/dist/esm/utilities/voi/colorbar/common/isRangeTextPositionValid.d.ts +3 -0
  132. package/dist/esm/utilities/voi/colorbar/common/isRangeTextPositionValid.js +10 -0
  133. package/dist/esm/utilities/voi/colorbar/common/isRangeTextPositionValid.js.map +1 -0
  134. package/dist/esm/utilities/voi/colorbar/common/isRangeValid.d.ts +3 -0
  135. package/dist/esm/utilities/voi/colorbar/common/isRangeValid.js +5 -0
  136. package/dist/esm/utilities/voi/colorbar/common/isRangeValid.js.map +1 -0
  137. package/dist/esm/utilities/voi/colorbar/enums/ColorbarRangeTextPosition.d.ts +6 -0
  138. package/dist/esm/utilities/voi/colorbar/enums/ColorbarRangeTextPosition.js +8 -0
  139. package/dist/esm/utilities/voi/colorbar/enums/ColorbarRangeTextPosition.js.map +1 -0
  140. package/dist/esm/utilities/voi/colorbar/enums/index.d.ts +1 -0
  141. package/dist/esm/utilities/voi/colorbar/enums/index.js +2 -0
  142. package/dist/esm/utilities/voi/colorbar/enums/index.js.map +1 -0
  143. package/dist/esm/utilities/voi/colorbar/index.d.ts +6 -0
  144. package/dist/esm/utilities/voi/colorbar/index.js +5 -0
  145. package/dist/esm/utilities/voi/colorbar/index.js.map +1 -0
  146. package/dist/esm/utilities/voi/colorbar/types/ColorbarCanvasProps.d.ts +12 -0
  147. package/dist/esm/utilities/voi/colorbar/types/ColorbarCanvasProps.js +2 -0
  148. package/dist/esm/utilities/voi/colorbar/types/ColorbarCanvasProps.js.map +1 -0
  149. package/dist/esm/utilities/voi/colorbar/types/ColorbarCommonProps.d.ts +11 -0
  150. package/dist/esm/utilities/voi/colorbar/types/ColorbarCommonProps.js +2 -0
  151. package/dist/esm/utilities/voi/colorbar/types/ColorbarCommonProps.js.map +1 -0
  152. package/dist/esm/utilities/voi/colorbar/types/ColorbarImageRange.d.ts +4 -0
  153. package/dist/esm/utilities/voi/colorbar/types/ColorbarImageRange.js +2 -0
  154. package/dist/esm/utilities/voi/colorbar/types/ColorbarImageRange.js.map +1 -0
  155. package/dist/esm/utilities/voi/colorbar/types/ColorbarProps.d.ts +7 -0
  156. package/dist/esm/utilities/voi/colorbar/types/ColorbarProps.js +2 -0
  157. package/dist/esm/utilities/voi/colorbar/types/ColorbarProps.js.map +1 -0
  158. package/dist/esm/utilities/voi/colorbar/types/ColorbarSize.d.ts +4 -0
  159. package/dist/esm/utilities/voi/colorbar/types/ColorbarSize.js +2 -0
  160. package/dist/esm/utilities/voi/colorbar/types/ColorbarSize.js.map +1 -0
  161. package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksProps.d.ts +7 -0
  162. package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksProps.js +2 -0
  163. package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksProps.js.map +1 -0
  164. package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksStyle.d.ts +8 -0
  165. package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksStyle.js +2 -0
  166. package/dist/esm/utilities/voi/colorbar/types/ColorbarTicksStyle.js.map +1 -0
  167. package/dist/esm/utilities/voi/colorbar/types/ColorbarVOIRange.d.ts +2 -0
  168. package/dist/esm/utilities/voi/colorbar/types/ColorbarVOIRange.js +2 -0
  169. package/dist/esm/utilities/voi/colorbar/types/ColorbarVOIRange.js.map +1 -0
  170. package/dist/esm/utilities/voi/colorbar/types/ViewportColorbarProps.d.ts +5 -0
  171. package/dist/esm/utilities/voi/colorbar/types/ViewportColorbarProps.js +2 -0
  172. package/dist/esm/utilities/voi/colorbar/types/ViewportColorbarProps.js.map +1 -0
  173. package/dist/esm/utilities/voi/colorbar/types/index.d.ts +8 -0
  174. package/dist/esm/utilities/voi/colorbar/types/index.js +2 -0
  175. package/dist/esm/utilities/voi/colorbar/types/index.js.map +1 -0
  176. package/dist/esm/utilities/voi/index.d.ts +2 -0
  177. package/dist/esm/utilities/voi/index.js +3 -0
  178. package/dist/esm/utilities/voi/index.js.map +1 -0
  179. package/dist/esm/widgets/Widget.d.ts +17 -0
  180. package/dist/esm/widgets/Widget.js +67 -0
  181. package/dist/esm/widgets/Widget.js.map +1 -0
  182. package/dist/esm/widgets/types/WidgetProps.d.ts +4 -0
  183. package/dist/esm/widgets/types/WidgetProps.js +2 -0
  184. package/dist/esm/widgets/types/WidgetProps.js.map +1 -0
  185. package/dist/esm/widgets/types/WidgetSize.d.ts +4 -0
  186. package/dist/esm/widgets/types/WidgetSize.js +2 -0
  187. package/dist/esm/widgets/types/WidgetSize.js.map +1 -0
  188. package/dist/esm/widgets/types/index.d.ts +2 -0
  189. package/dist/esm/widgets/types/index.js +2 -0
  190. package/dist/esm/widgets/types/index.js.map +1 -0
  191. package/dist/umd/index.js +1 -1
  192. package/dist/umd/index.js.map +1 -1
  193. package/package.json +3 -3
  194. package/src/utilities/getVOIMultipliers.ts +33 -0
  195. package/src/utilities/index.ts +2 -0
  196. package/src/utilities/math/vec3/interpolateVec3.ts +20 -0
  197. package/src/utilities/viewport/isViewportPreScaled.ts +3 -1
  198. package/src/utilities/voi/colorbar/Colorbar.ts +366 -0
  199. package/src/utilities/voi/colorbar/ColorbarCanvas.ts +290 -0
  200. package/src/utilities/voi/colorbar/ColorbarTicks.ts +500 -0
  201. package/src/utilities/voi/colorbar/ViewportColorbar.ts +194 -0
  202. package/src/utilities/voi/colorbar/common/areColorbarRangesEqual.ts +10 -0
  203. package/src/utilities/voi/colorbar/common/areColorbarSizesEqual.ts +7 -0
  204. package/src/utilities/voi/colorbar/common/index.ts +4 -0
  205. package/src/utilities/voi/colorbar/common/isColorbarSizeValid.ts +7 -0
  206. package/src/utilities/voi/colorbar/common/isRangeTextPositionValid.ts +16 -0
  207. package/src/utilities/voi/colorbar/common/isRangeValid.ts +7 -0
  208. package/src/utilities/voi/colorbar/enums/ColorbarRangeTextPosition.ts +11 -0
  209. package/src/utilities/voi/colorbar/enums/index.ts +1 -0
  210. package/src/utilities/voi/colorbar/index.ts +8 -0
  211. package/src/utilities/voi/colorbar/types/ColorbarCanvasProps.ts +14 -0
  212. package/src/utilities/voi/colorbar/types/ColorbarCommonProps.ts +23 -0
  213. package/src/utilities/voi/colorbar/types/ColorbarImageRange.ts +4 -0
  214. package/src/utilities/voi/colorbar/types/ColorbarProps.ts +8 -0
  215. package/src/utilities/voi/colorbar/types/ColorbarSize.ts +4 -0
  216. package/src/utilities/voi/colorbar/types/ColorbarTicksProps.ts +8 -0
  217. package/src/utilities/voi/colorbar/types/ColorbarTicksStyle.ts +8 -0
  218. package/src/utilities/voi/colorbar/types/ColorbarVOIRange.ts +3 -0
  219. package/src/utilities/voi/colorbar/types/ViewportColorbarProps.ts +6 -0
  220. package/src/utilities/voi/colorbar/types/index.ts +8 -0
  221. package/src/utilities/voi/index.ts +3 -0
  222. package/src/widgets/Widget.ts +169 -0
  223. package/src/widgets/types/WidgetProps.ts +4 -0
  224. package/src/widgets/types/WidgetSize.ts +4 -0
  225. package/src/widgets/types/index.ts +2 -0
@@ -0,0 +1,7 @@
1
+ import type { ColorbarSize } from '../types/ColorbarSize';
2
+
3
+ const isColorbarSizeValid = (size: ColorbarSize) => {
4
+ return !!size && size.width > 0 && size.height > 0;
5
+ };
6
+
7
+ export { isColorbarSizeValid as default, isColorbarSizeValid };
@@ -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,7 @@
1
+ import type { ColorbarImageRange } from '../types/ColorbarImageRange';
2
+
3
+ const isRangeValid = (range: ColorbarImageRange) => {
4
+ return range && range.upper > range.lower;
5
+ };
6
+
7
+ export { isRangeValid as default, isRangeValid };
@@ -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,8 @@
1
+ import * as Enums from './enums';
2
+ import type * as Types from './types';
3
+
4
+ export type { Types };
5
+ export { Enums };
6
+
7
+ export { Colorbar } from './Colorbar';
8
+ export { ViewportColorbar } from './ViewportColorbar';
@@ -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,4 @@
1
+ export type ColorbarImageRange = {
2
+ lower: number;
3
+ upper: number;
4
+ };
@@ -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,4 @@
1
+ export type ColorbarSize = {
2
+ width: number;
3
+ height: number;
4
+ };
@@ -0,0 +1,8 @@
1
+ import type { ColorbarCommonProps, ColorbarSize } from '.';
2
+
3
+ export type ColorbarTicksProps = ColorbarCommonProps & {
4
+ top?: number;
5
+ left?: number;
6
+ size?: ColorbarSize;
7
+ container?: HTMLElement;
8
+ };
@@ -0,0 +1,8 @@
1
+ export type ColorbarTicksStyle = {
2
+ font?: string;
3
+ color?: string;
4
+ tickSize?: number;
5
+ tickWidth?: number;
6
+ labelMargin?: number;
7
+ maxNumTicks?: number;
8
+ };
@@ -0,0 +1,3 @@
1
+ import type { ColorbarImageRange } from './ColorbarImageRange';
2
+
3
+ export type ColorbarVOIRange = ColorbarImageRange;
@@ -0,0 +1,6 @@
1
+ import type { ColorbarProps } from './ColorbarProps';
2
+
3
+ export type ViewportColorbarProps = ColorbarProps & {
4
+ element: HTMLDivElement;
5
+ volumeId?: string;
6
+ };
@@ -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,3 @@
1
+ import * as colorbar from './colorbar';
2
+
3
+ export { colorbar };
@@ -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 };
@@ -0,0 +1,4 @@
1
+ export type WidgetProps = {
2
+ id: string;
3
+ container?: HTMLElement;
4
+ };
@@ -0,0 +1,4 @@
1
+ export type WidgetSize = {
2
+ width: number;
3
+ height: number;
4
+ };
@@ -0,0 +1,2 @@
1
+ export { WidgetProps } from './WidgetProps';
2
+ export { WidgetSize } from './WidgetSize';