copper3d 1.15.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 (130) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +105 -0
  3. package/dist/Controls/Copper3dTrackballControls.d.ts +45 -0
  4. package/dist/Controls/Copper3dTrackballControls.js +543 -0
  5. package/dist/Controls/Copper3dTrackballControls.js.map +1 -0
  6. package/dist/Controls/copperControls.d.ts +17 -0
  7. package/dist/Controls/copperControls.js +36 -0
  8. package/dist/Controls/copperControls.js.map +1 -0
  9. package/dist/Loader/convet.d.ts +1 -0
  10. package/dist/Loader/convet.js +80 -0
  11. package/dist/Loader/convet.js.map +1 -0
  12. package/dist/Loader/copperDicomLoader.d.ts +7 -0
  13. package/dist/Loader/copperDicomLoader.js +113 -0
  14. package/dist/Loader/copperDicomLoader.js.map +1 -0
  15. package/dist/Loader/copperGltfLoader.d.ts +3 -0
  16. package/dist/Loader/copperGltfLoader.js +16 -0
  17. package/dist/Loader/copperGltfLoader.js.map +1 -0
  18. package/dist/Loader/copperNrrdLoader.d.ts +13 -0
  19. package/dist/Loader/copperNrrdLoader.js +424 -0
  20. package/dist/Loader/copperNrrdLoader.js.map +1 -0
  21. package/dist/Loader/copperOBJLoader.d.ts +3 -0
  22. package/dist/Loader/copperOBJLoader.js +4 -0
  23. package/dist/Loader/copperOBJLoader.js.map +1 -0
  24. package/dist/Loader/copperVtkLoader.d.ts +8 -0
  25. package/dist/Loader/copperVtkLoader.js +44 -0
  26. package/dist/Loader/copperVtkLoader.js.map +1 -0
  27. package/dist/Renderer/baseRenderer.d.ts +30 -0
  28. package/dist/Renderer/baseRenderer.js +223 -0
  29. package/dist/Renderer/baseRenderer.js.map +1 -0
  30. package/dist/Renderer/copperMSceneRenderer.d.ts +21 -0
  31. package/dist/Renderer/copperMSceneRenderer.js +115 -0
  32. package/dist/Renderer/copperMSceneRenderer.js.map +1 -0
  33. package/dist/Renderer/copperRenderer.d.ts +15 -0
  34. package/dist/Renderer/copperRenderer.js +52 -0
  35. package/dist/Renderer/copperRenderer.js.map +1 -0
  36. package/dist/Renderer/copperRendererOnDemond.d.ts +13 -0
  37. package/dist/Renderer/copperRendererOnDemond.js +44 -0
  38. package/dist/Renderer/copperRendererOnDemond.js.map +1 -0
  39. package/dist/Scene/baseScene.d.ts +38 -0
  40. package/dist/Scene/baseScene.js +180 -0
  41. package/dist/Scene/baseScene.js.map +1 -0
  42. package/dist/Scene/commonSceneMethod.d.ts +45 -0
  43. package/dist/Scene/commonSceneMethod.js +258 -0
  44. package/dist/Scene/commonSceneMethod.js.map +1 -0
  45. package/dist/Scene/copperMScene.d.ts +42 -0
  46. package/dist/Scene/copperMScene.js +325 -0
  47. package/dist/Scene/copperMScene.js.map +1 -0
  48. package/dist/Scene/copperScene.d.ts +34 -0
  49. package/dist/Scene/copperScene.js +303 -0
  50. package/dist/Scene/copperScene.js.map +1 -0
  51. package/dist/Scene/copperSceneOnDemond.d.ts +13 -0
  52. package/dist/Scene/copperSceneOnDemond.js +60 -0
  53. package/dist/Scene/copperSceneOnDemond.js.map +1 -0
  54. package/dist/Utils/add3DLabel.d.ts +18 -0
  55. package/dist/Utils/add3DLabel.js +66 -0
  56. package/dist/Utils/add3DLabel.js.map +1 -0
  57. package/dist/Utils/download.d.ts +1 -0
  58. package/dist/Utils/download.js +21 -0
  59. package/dist/Utils/download.js.map +1 -0
  60. package/dist/Utils/getVOILUT.d.ts +13 -0
  61. package/dist/Utils/getVOILUT.js +78 -0
  62. package/dist/Utils/getVOILUT.js.map +1 -0
  63. package/dist/Utils/kiwrious/configKiwrious.d.ts +4 -0
  64. package/dist/Utils/kiwrious/configKiwrious.js +59 -0
  65. package/dist/Utils/kiwrious/configKiwrious.js.map +1 -0
  66. package/dist/Utils/nrrd_tool.d.ts +187 -0
  67. package/dist/Utils/nrrd_tool.js +2173 -0
  68. package/dist/Utils/nrrd_tool.js.map +1 -0
  69. package/dist/Utils/raycaster.d.ts +9 -0
  70. package/dist/Utils/raycaster.js +75 -0
  71. package/dist/Utils/raycaster.js.map +1 -0
  72. package/dist/Utils/texture2d.d.ts +10 -0
  73. package/dist/Utils/texture2d.js +111 -0
  74. package/dist/Utils/texture2d.js.map +1 -0
  75. package/dist/Utils/utils.d.ts +8 -0
  76. package/dist/Utils/utils.js +141 -0
  77. package/dist/Utils/utils.js.map +1 -0
  78. package/dist/Utils/workers/reformatSaveDataWorker.d.ts +13 -0
  79. package/dist/Utils/workers/reformatSaveDataWorker.js +107 -0
  80. package/dist/Utils/workers/reformatSaveDataWorker.js.map +1 -0
  81. package/dist/bundle.esm.js +68951 -0
  82. package/dist/bundle.umd.js +68982 -0
  83. package/dist/css/style.css +168 -0
  84. package/dist/index.d.ts +21 -0
  85. package/dist/index.js +22 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/lib/dicom_pharser_dictionary.d.ts +1 -0
  88. package/dist/lib/dicom_pharser_dictionary.js +28116 -0
  89. package/dist/lib/dicom_pharser_dictionary.js.map +1 -0
  90. package/dist/lib/environment/index.d.ts +8 -0
  91. package/dist/lib/environment/index.js +28 -0
  92. package/dist/lib/environment/index.js.map +1 -0
  93. package/dist/lib/three-vignette.d.ts +11 -0
  94. package/dist/lib/three-vignette.js +93 -0
  95. package/dist/lib/three-vignette.js.map +1 -0
  96. package/dist/types/Controls/Copper3dTrackballControls.d.ts +45 -0
  97. package/dist/types/Controls/copperControls.d.ts +17 -0
  98. package/dist/types/Loader/convet.d.ts +1 -0
  99. package/dist/types/Loader/copperDicomLoader.d.ts +7 -0
  100. package/dist/types/Loader/copperGltfLoader.d.ts +3 -0
  101. package/dist/types/Loader/copperNrrdLoader.d.ts +13 -0
  102. package/dist/types/Loader/copperOBJLoader.d.ts +3 -0
  103. package/dist/types/Loader/copperVtkLoader.d.ts +8 -0
  104. package/dist/types/Renderer/baseRenderer.d.ts +30 -0
  105. package/dist/types/Renderer/copperMSceneRenderer.d.ts +21 -0
  106. package/dist/types/Renderer/copperRenderer.d.ts +15 -0
  107. package/dist/types/Renderer/copperRendererOnDemond.d.ts +13 -0
  108. package/dist/types/Scene/baseScene.d.ts +38 -0
  109. package/dist/types/Scene/commonSceneMethod.d.ts +45 -0
  110. package/dist/types/Scene/copperMScene.d.ts +42 -0
  111. package/dist/types/Scene/copperScene.d.ts +34 -0
  112. package/dist/types/Scene/copperSceneOnDemond.d.ts +13 -0
  113. package/dist/types/Utils/add3DLabel.d.ts +18 -0
  114. package/dist/types/Utils/download.d.ts +1 -0
  115. package/dist/types/Utils/getVOILUT.d.ts +13 -0
  116. package/dist/types/Utils/kiwrious/configKiwrious.d.ts +4 -0
  117. package/dist/types/Utils/nrrd_tool.d.ts +187 -0
  118. package/dist/types/Utils/raycaster.d.ts +9 -0
  119. package/dist/types/Utils/texture2d.d.ts +10 -0
  120. package/dist/types/Utils/utils.d.ts +8 -0
  121. package/dist/types/Utils/workers/reformatSaveDataWorker.d.ts +13 -0
  122. package/dist/types/index.d.ts +21 -0
  123. package/dist/types/lib/dicom_pharser_dictionary.d.ts +1 -0
  124. package/dist/types/lib/environment/index.d.ts +8 -0
  125. package/dist/types/lib/three-vignette.d.ts +11 -0
  126. package/dist/types/types/types.d.ts +198 -0
  127. package/dist/types/types.d.ts +198 -0
  128. package/dist/types/types.js +2 -0
  129. package/dist/types/types.js.map +1 -0
  130. package/package.json +60 -0
@@ -0,0 +1,80 @@
1
+ export function resize3dnrrd(pixels, dimOrigin, dimTarget) {
2
+ // Original dimensions
3
+ const width = dimOrigin[0];
4
+ const height = dimOrigin[1];
5
+ const depth = dimOrigin[2];
6
+ // New dimensions
7
+ const newWidth = dimTarget[0];
8
+ const newHeight = dimTarget[1];
9
+ const newDepth = dimTarget[2];
10
+ // Resampling factors
11
+ const scaleX = newWidth / width;
12
+ const scaleY = newHeight / height;
13
+ const scaleZ = newDepth / depth;
14
+ // Create new pixel array
15
+ const newPixels = new Float32Array(newWidth * newHeight * newDepth);
16
+ // Interpolate and resample pixel data
17
+ for (let z = 0; z < newDepth; z++) {
18
+ for (let y = 0; y < newHeight; y++) {
19
+ for (let x = 0; x < newWidth; x++) {
20
+ const srcX = x / scaleX;
21
+ const srcY = y / scaleY;
22
+ const srcZ = z / scaleZ;
23
+ const srcIdx = Math.floor(srcZ) * width * height +
24
+ Math.floor(srcY) * width +
25
+ Math.floor(srcX);
26
+ const x2 = Math.ceil(srcX);
27
+ const y2 = Math.ceil(srcY);
28
+ const z2 = Math.ceil(srcZ);
29
+ const muX = srcX - Math.floor(srcX);
30
+ const muY = srcY - Math.floor(srcY);
31
+ const muZ = srcZ - Math.floor(srcZ);
32
+ const srcVal000 = pixels[srcIdx];
33
+ const srcVal001 = z2 >= depth || y2 >= height || x2 >= width
34
+ ? 0
35
+ : pixels[Math.floor(srcZ) * width * height + y2 * width + x2];
36
+ const srcVal010 = z2 >= depth || y2 >= height
37
+ ? 0
38
+ : pixels[Math.floor(srcZ) * width * height +
39
+ y2 * width +
40
+ Math.floor(srcX)];
41
+ const srcVal011 = z2 >= depth || y2 >= height || x2 >= width
42
+ ? 0
43
+ : pixels[Math.floor(srcZ) * width * height + y2 * width + x2];
44
+ const srcVal100 = z2 >= depth || x2 >= width
45
+ ? 0
46
+ : pixels[Math.floor(srcZ) * width * height +
47
+ Math.floor(srcY) * width +
48
+ x2];
49
+ const srcVal101 = z2 >= depth || x2 >= width
50
+ ? 0
51
+ : pixels[Math.floor(srcZ) * width * height +
52
+ Math.floor(srcY) * width +
53
+ Math.ceil(srcX)];
54
+ const srcVal110 = z2 >= depth
55
+ ? 0
56
+ : pixels[Math.floor(srcZ) * width * height +
57
+ Math.floor(srcY) * width +
58
+ Math.floor(srcX)];
59
+ const srcVal111 = z2 >= depth || x2 >= width
60
+ ? 0
61
+ : pixels[Math.floor(srcZ) * width * height +
62
+ Math.floor(srcY) * width +
63
+ x2];
64
+ const val = (1 - muX) * (1 - muY) * (1 - muZ) * srcVal000 +
65
+ (1 - muX) * (1 - muY) * muZ * srcVal001 +
66
+ (1 - muX) * muY * (1 - muZ) * srcVal010 +
67
+ (1 - muX) * muY * muZ * srcVal011 +
68
+ muX * (1 - muY) * (1 - muZ) * srcVal100 +
69
+ muX * (1 - muY) * muZ * srcVal101 +
70
+ muX * muY * (1 - muZ) * srcVal110 +
71
+ muX * muY * muZ * srcVal111;
72
+ const dstIdx = z * newWidth * newHeight + y * newWidth + x;
73
+ newPixels[dstIdx] = val;
74
+ }
75
+ }
76
+ }
77
+ // Use the newPixels array for your calculations
78
+ return newPixels;
79
+ }
80
+ //# sourceMappingURL=convet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convet.js","sourceRoot":"","sources":["../../src/Loader/convet.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAC1B,MAAoB,EACpB,SAAwB,EACxB,SAAwB;IAExB,sBAAsB;IACtB,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3B,iBAAiB;IACjB,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC9B,qBAAqB;IACrB,MAAM,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAChC,MAAM,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;IAClC,MAAM,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAChC,yBAAyB;IACzB,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC;IACpE,sCAAsC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;gBACjC,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC;gBACxB,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC;gBACxB,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC;gBACxB,MAAM,MAAM,GACV,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,MAAM;oBACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK;oBACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnB,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM,SAAS,GACb,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,KAAK;oBACxC,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,MAAM,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC;gBAClE,MAAM,SAAS,GACb,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,MAAM;oBACzB,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,MAAM,CACJ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,MAAM;wBAC/B,EAAE,GAAG,KAAK;wBACV,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CACnB,CAAC;gBACR,MAAM,SAAS,GACb,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,KAAK;oBACxC,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,MAAM,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC;gBAClE,MAAM,SAAS,GACb,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK;oBACxB,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,MAAM,CACJ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,MAAM;wBAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK;wBACxB,EAAE,CACL,CAAC;gBACR,MAAM,SAAS,GACb,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK;oBACxB,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,MAAM,CACJ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,MAAM;wBAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK;wBACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAClB,CAAC;gBACR,MAAM,SAAS,GACb,EAAE,IAAI,KAAK;oBACT,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,MAAM,CACJ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,MAAM;wBAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK;wBACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CACnB,CAAC;gBACR,MAAM,SAAS,GACb,EAAE,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK;oBACxB,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,MAAM,CACJ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,MAAM;wBAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK;wBACxB,EAAE,CACL,CAAC;gBACR,MAAM,GAAG,GACP,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,SAAS;oBAC7C,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,SAAS;oBACvC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,SAAS;oBACvC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,SAAS;oBACjC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,SAAS;oBACvC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,SAAS;oBACjC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,SAAS;oBACjC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,SAAS,CAAC;gBAC9B,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,GAAG,SAAS,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;gBAC3D,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;aACzB;SACF;KACF;IACD,gDAAgD;IAChD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { copperVolumeType } from "../types/types";
2
+ export declare function copperDicomLoader(url: string, callback?: (copperVolume: copperVolumeType) => void): void;
3
+ export declare function getLut(data: Uint16Array, windowWidth: number, windowCenter: number, invert: boolean, voiLUT: any): {
4
+ minPixelValue: number;
5
+ maxPixelValue: number;
6
+ lutArray: Uint8ClampedArray;
7
+ };
@@ -0,0 +1,113 @@
1
+ import * as THREE from "three";
2
+ import getVOILUT from "../Utils/getVOILUT";
3
+ import dicomParser from "dicom-parser";
4
+ // import { TAG_DICT } from "../lib/dicom_pharser_dictionary";
5
+ const loader = new THREE.FileLoader().setResponseType("arraybuffer");
6
+ export function copperDicomLoader(url, callback) {
7
+ loader.load(url, (arrayBuffer) => {
8
+ var dicomFileAsBuffer = new Uint8Array(arrayBuffer);
9
+ const dataSet = dicomParser.parseDicom(dicomFileAsBuffer);
10
+ // console.log(dataSet1);
11
+ // const dataSet = dicomParser.parseDicom(dicomFileAsBuffer, {
12
+ // vrCallback(tag) {
13
+ // const formatted = `(${tag.substring(1, 5)},${tag.substring(5, 9)})`;
14
+ // // console.log(!!TAG_DICT[formatted] ? TAG_DICT[formatted].vr : undefined);
15
+ // return !!TAG_DICT[formatted] ? TAG_DICT[formatted].vr : undefined;
16
+ // },
17
+ // });
18
+ let tags = null;
19
+ let w;
20
+ let h;
21
+ let invert;
22
+ let windowCenter;
23
+ let windowWidth;
24
+ let order = 0;
25
+ try {
26
+ tags = dicomParser.explicitDataSetToJS(dataSet);
27
+ if (dataSet.elements.x00181060) {
28
+ order = parseInt(tags["x00181060"]);
29
+ }
30
+ else if (dataSet.elements.x00201041) {
31
+ order = parseInt(tags["x00201041"]);
32
+ }
33
+ w = parseInt(tags["x00280011"]); //width
34
+ h = parseInt(tags["x00280010"]); //height
35
+ invert = tags["x00280004"] === "MONOCHROME1" ? true : false; //is invert?
36
+ windowCenter = parseInt(tags["x00281050"]); //window center
37
+ windowWidth = parseInt(tags["x00281051"]); //window width
38
+ }
39
+ catch (_a) {
40
+ w = dataSet.uint16("x00280011");
41
+ h = dataSet.uint16("x00280010");
42
+ invert = dataSet.string("x00280004") === "MONOCHROME1" ? true : false;
43
+ windowCenter = parseInt(dataSet.string("x00281050"));
44
+ windowWidth = parseInt(dataSet.string("x00281051"));
45
+ if (dataSet.elements.x00181060) {
46
+ order = parseInt(dataSet.string("x00181060"));
47
+ }
48
+ else if (dataSet.elements.x00201041) {
49
+ order = parseInt(dataSet.string("x00201041"));
50
+ }
51
+ }
52
+ if (windowCenter == 0 || windowWidth == 0) {
53
+ windowCenter = 226;
54
+ windowWidth = 537;
55
+ }
56
+ let pixelData = dataSet.elements.x7fe00010;
57
+ let uint16 = convertImplicitElement(pixelData, dicomFileAsBuffer);
58
+ let voiLUT;
59
+ let lut = getLut(uint16, windowWidth, windowCenter, invert, voiLUT);
60
+ let uint8 = new Uint8ClampedArray(uint16.length);
61
+ for (let i = 0, len = uint16.length; i < len; i++) {
62
+ uint8[i] = lut.lutArray[uint16[i]];
63
+ }
64
+ const copperVolume = {
65
+ tags,
66
+ width: w,
67
+ height: h,
68
+ windowCenter,
69
+ windowWidth,
70
+ invert,
71
+ uint16,
72
+ uint8,
73
+ order,
74
+ };
75
+ callback && callback(copperVolume);
76
+ });
77
+ }
78
+ function convertImplicitElement(elementData, dicomFileAsBuffer) {
79
+ let w1Buffer = dicomParser.sharedCopy(dicomFileAsBuffer, elementData.dataOffset, elementData.length);
80
+ let unit16 = new Uint16Array(w1Buffer.buffer, w1Buffer.byteOffset, w1Buffer.byteLength / Uint16Array.BYTES_PER_ELEMENT);
81
+ return unit16;
82
+ }
83
+ export function getLut(data, windowWidth, windowCenter, invert, voiLUT) {
84
+ let minPixelValue = 0;
85
+ let maxPixelValue = 0;
86
+ for (let i = 0, len = data.length; i < len; i++) {
87
+ if (minPixelValue > data[i]) {
88
+ minPixelValue = data[i];
89
+ }
90
+ if (maxPixelValue < data[i]) {
91
+ maxPixelValue = data[i];
92
+ }
93
+ }
94
+ let offset = Math.min(minPixelValue, 0);
95
+ let lutArray = new Uint8ClampedArray(maxPixelValue - offset + 1);
96
+ const vlutfn = getVOILUT(windowWidth, windowCenter, voiLUT, true);
97
+ if (invert === true) {
98
+ for (let storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {
99
+ lutArray[storedValue + -offset] = 255 - vlutfn(storedValue);
100
+ }
101
+ }
102
+ else {
103
+ for (let storedValue = minPixelValue; storedValue <= maxPixelValue; storedValue++) {
104
+ lutArray[storedValue + -offset] = vlutfn(storedValue);
105
+ }
106
+ }
107
+ return {
108
+ minPixelValue: minPixelValue,
109
+ maxPixelValue: maxPixelValue,
110
+ lutArray: lutArray,
111
+ };
112
+ }
113
+ //# sourceMappingURL=copperDicomLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copperDicomLoader.js","sourceRoot":"","sources":["../../src/Loader/copperDicomLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import * as THREE from "three";
2
+ import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader";
3
+ export declare function copperGltfLoader(renderer: THREE.WebGLRenderer): GLTFLoader;
@@ -0,0 +1,16 @@
1
+ import * as THREE from "three";
2
+ import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader";
3
+ import { KTX2Loader } from "three/examples/jsm/loaders/KTX2Loader.js";
4
+ import { DRACOLoader } from "three/examples/jsm/loaders/DRACOLoader.js";
5
+ const THREE_PATH = `https://unpkg.com/three@0.${THREE.REVISION}.x`;
6
+ const MANAGER = new THREE.LoadingManager();
7
+ const DRACO_LOADER = new DRACOLoader(MANAGER).setDecoderPath(`${THREE_PATH}/examples/js/libs/draco/gltf/`);
8
+ const KTX2_LOADER = new KTX2Loader(MANAGER).setTranscoderPath(`${THREE_PATH}/examples/js/libs/basis`);
9
+ export function copperGltfLoader(renderer) {
10
+ const loader = new GLTFLoader(MANAGER)
11
+ .setCrossOrigin("anonymous")
12
+ .setDRACOLoader(DRACO_LOADER)
13
+ .setKTX2Loader(KTX2_LOADER.detectSupport(renderer));
14
+ return loader;
15
+ }
16
+ //# sourceMappingURL=copperGltfLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copperGltfLoader.js","sourceRoot":"","sources":["../../src/Loader/copperGltfLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAQ,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAExE,MAAM,UAAU,GAAG,6BAA6B,KAAK,CAAC,QAAQ,IAAI,CAAC;AACnE,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;AAC3C,MAAM,YAAY,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,cAAc,CAC1D,GAAG,UAAU,+BAA+B,CAC7C,CAAC;AACF,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAC3D,GAAG,UAAU,yBAAyB,CACvC,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,QAA6B;IAC5D,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC;SACnC,cAAc,CAAC,WAAW,CAAC;SAC3B,cAAc,CAAC,YAAY,CAAC;SAC5B,aAAa,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import * as THREE from "three";
2
+ import copperScene from "../Scene/copperScene";
3
+ import { GUI } from "dat.gui";
4
+ import { nrrdMeshesType, nrrdSliceType, loadingBarType } from "../types/types";
5
+ import { Copper3dTrackballControls } from "../Controls/Copper3dTrackballControls";
6
+ export interface optsType {
7
+ openGui: boolean;
8
+ container?: HTMLDivElement;
9
+ }
10
+ export declare function copperNrrdLoader(url: string, loadingBar: loadingBarType, segmentation: boolean, callback?: (volume: any, nrrdMeshes: nrrdMeshesType, nrrdSlices: nrrdSliceType, gui?: GUI) => void, opts?: optsType): void;
11
+ export declare function copperNrrdTexture3dLoader(url: string, scene: THREE.Scene, container: HTMLDivElement, callback?: (volume: any, gui?: GUI) => void): void;
12
+ export declare function getWholeSlices(nrrdSlices: nrrdSliceType, scene: THREE.Scene, gui: GUI, controls: Copper3dTrackballControls): void;
13
+ export declare function addBoxHelper(scene: copperScene, volume: any, boxCube?: THREE.Object3D<THREE.Event>): void;