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 @@
1
+ {"version":3,"file":"nrrd_tool.js","sourceRoot":"","sources":["../../src/Utils/nrrd_tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import * as THREE from "three";
2
+ import { mouseMovePositionType } from "../types/types";
3
+ export declare function pickModelDefault(camera: THREE.PerspectiveCamera, container: HTMLDivElement, pickableObjects: THREE.Mesh[], callback: (selectMesh: THREE.Mesh | undefined) => void): void;
4
+ export declare function throttle(callback: (event: MouseEvent) => void, wait: number): (event: MouseEvent) => void;
5
+ export declare function isPickedModel(camera: THREE.PerspectiveCamera, container: HTMLDivElement, pickableObjects: THREE.Mesh[], mouseMovePosition: mouseMovePositionType): {
6
+ intersectedObject: THREE.Object3D<THREE.Event> | null;
7
+ intersects: THREE.Intersection<THREE.Object3D<THREE.Event>>[];
8
+ };
9
+ export declare function dragImage(): void;
@@ -0,0 +1,75 @@
1
+ import * as THREE from "three";
2
+ let raycaster = new THREE.Raycaster();
3
+ let intersects;
4
+ let intersectedObject;
5
+ export function pickModelDefault(camera, container, pickableObjects, callback) {
6
+ const highlightedMaterial = new THREE.MeshBasicMaterial({
7
+ wireframe: true,
8
+ color: 0x00ff66,
9
+ });
10
+ const originalMaterials = {};
11
+ let oldName = "";
12
+ pickableObjects.forEach((m) => {
13
+ originalMaterials[m.name] = m.material;
14
+ });
15
+ const onDocumentMouseMove = (event) => {
16
+ const mouseMovePosition = new THREE.Vector2(event.offsetX, event.offsetY);
17
+ intersects = baseRaycaster(camera, container, pickableObjects, mouseMovePosition.x, mouseMovePosition.y);
18
+ if (intersects.length > 0) {
19
+ intersectedObject = intersects[0].object;
20
+ }
21
+ else {
22
+ intersectedObject = null;
23
+ oldName = "";
24
+ callback(undefined);
25
+ }
26
+ pickableObjects.forEach((o, i) => {
27
+ if (intersectedObject && intersectedObject.name === o.name) {
28
+ if (oldName != o.name) {
29
+ oldName = o.name;
30
+ pickableObjects[i].material = highlightedMaterial;
31
+ callback(pickableObjects[i]);
32
+ }
33
+ }
34
+ else {
35
+ pickableObjects[i].material = originalMaterials[o.name];
36
+ }
37
+ });
38
+ };
39
+ container.addEventListener("mousemove", throttle(onDocumentMouseMove, 80), false);
40
+ }
41
+ export function throttle(callback, wait) {
42
+ let start = 0;
43
+ return function (event) {
44
+ const current = Date.now();
45
+ if (current - start > wait) {
46
+ callback.call(null, event);
47
+ start = current;
48
+ }
49
+ };
50
+ }
51
+ function baseRaycaster(camera, container, pickableObjects, mouse_x, mouse_y) {
52
+ const coords = new THREE.Vector2((mouse_x / container.clientWidth) * 2 - 1, -(mouse_y / container.clientHeight) * 2 + 1);
53
+ raycaster.setFromCamera(coords, camera);
54
+ intersects = raycaster.intersectObjects(pickableObjects, false);
55
+ return intersects;
56
+ }
57
+ export function isPickedModel(camera, container, pickableObjects, mouseMovePosition) {
58
+ intersects = baseRaycaster(camera, container, pickableObjects, mouseMovePosition.x, mouseMovePosition.y);
59
+ if (intersects.length > 0) {
60
+ intersectedObject = intersects[0].object;
61
+ }
62
+ else {
63
+ intersectedObject = null;
64
+ }
65
+ return { intersectedObject, intersects };
66
+ }
67
+ export function dragImage() {
68
+ document.addEventListener("keydown", (ev) => {
69
+ console.log(ev);
70
+ });
71
+ document.addEventListener("keyup", (ev) => {
72
+ console.log(ev);
73
+ });
74
+ }
75
+ //# sourceMappingURL=raycaster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raycaster.js","sourceRoot":"","sources":["../../src/Utils/raycaster.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import * as THREE from "three";
2
+ import { copperVolumeType } from "../types/types";
3
+ import { GUI } from "dat.gui";
4
+ export declare function createTexture2D_Zip(url: string, scene: THREE.Scene): void;
5
+ export declare function createTexture2D_NRRD(data: Uint8Array, width: number, height: number, depth: number, callback: (mesh: THREE.Mesh) => void): void;
6
+ export declare function createTexture2D_Array(copperVolume: copperVolumeType, depth: number, scene: THREE.Scene, gui?: GUI): {
7
+ mesh: THREE.Mesh<THREE.PlaneGeometry, THREE.ShaderMaterial>;
8
+ copperVolume: copperVolumeType;
9
+ updateTexture: (copperVolumeUp: copperVolumeType) => void;
10
+ };
@@ -0,0 +1,111 @@
1
+ import * as THREE from "three";
2
+ import { unzipSync } from "fflate";
3
+ import { getLut } from "../Loader/copperDicomLoader";
4
+ import vert_2d from "../lib/shader/texture2d_vertex.glsl";
5
+ import frag_2d from "../lib/shader/texture2d_frag.glsl";
6
+ let planeWidth = 80;
7
+ let planeHeight = 80;
8
+ export function createTexture2D_Zip(url, scene) {
9
+ new THREE.FileLoader()
10
+ .setResponseType("arraybuffer")
11
+ .load(url, function (data) {
12
+ const zip = unzipSync(new Uint8Array(data));
13
+ const array = new Uint8Array(zip["head256x256x109"].buffer);
14
+ const texture = new THREE.DataArrayTexture(array, 256, 256, 109);
15
+ texture.format = THREE.RedFormat;
16
+ texture.needsUpdate = true;
17
+ const material = new THREE.ShaderMaterial({
18
+ uniforms: {
19
+ diffuse: { value: texture },
20
+ depth: { value: 1 },
21
+ size: { value: new THREE.Vector2(planeWidth, planeHeight) },
22
+ },
23
+ vertexShader: vert_2d,
24
+ fragmentShader: frag_2d,
25
+ glslVersion: THREE.GLSL3,
26
+ side: THREE.DoubleSide,
27
+ });
28
+ const geometry = new THREE.PlaneGeometry(planeWidth, planeHeight);
29
+ const mesh = new THREE.Mesh(geometry, material);
30
+ mesh.name = "texture2d_mesh_zip";
31
+ scene.add(mesh);
32
+ });
33
+ }
34
+ export function createTexture2D_NRRD(data, width, height, depth, callback) {
35
+ const texture = new THREE.DataArrayTexture(data, width, height, depth);
36
+ texture.format = THREE.RedFormat;
37
+ texture.needsUpdate = true;
38
+ const material = new THREE.ShaderMaterial({
39
+ uniforms: {
40
+ diffuse: { value: texture },
41
+ depth: { value: 1 },
42
+ size: { value: new THREE.Vector2(planeWidth, planeHeight) },
43
+ },
44
+ vertexShader: vert_2d,
45
+ fragmentShader: frag_2d,
46
+ glslVersion: THREE.GLSL3,
47
+ side: THREE.DoubleSide,
48
+ });
49
+ const geometry = new THREE.PlaneGeometry(planeWidth, planeHeight);
50
+ const mesh = new THREE.Mesh(geometry, material);
51
+ mesh.name = "texture2d_mesh_zip";
52
+ callback(mesh);
53
+ }
54
+ export function createTexture2D_Array(copperVolume, depth, scene, gui) {
55
+ planeWidth = copperVolume.width / 2;
56
+ planeHeight = copperVolume.height / 2;
57
+ const state = {
58
+ windowWidth: copperVolume.windowWidth,
59
+ windowCenter: copperVolume.windowCenter,
60
+ };
61
+ const texture = new THREE.DataArrayTexture(copperVolume.uint8, copperVolume.width, copperVolume.height, depth);
62
+ texture.format = THREE.RedFormat;
63
+ texture.needsUpdate = true;
64
+ if (gui) {
65
+ gui
66
+ .add(copperVolume, "windowWidth")
67
+ .min(1)
68
+ .max(copperVolume.windowWidth * 2)
69
+ .step(1)
70
+ .onChange((value) => {
71
+ copperVolume.windowWidth = value;
72
+ updateTexture(copperVolume);
73
+ });
74
+ gui
75
+ .add(copperVolume, "windowCenter")
76
+ .min(1)
77
+ .max(copperVolume.windowCenter * 2)
78
+ .step(1)
79
+ .onChange((value) => {
80
+ copperVolume.windowCenter = value;
81
+ updateTexture(copperVolume);
82
+ });
83
+ }
84
+ const material = new THREE.ShaderMaterial({
85
+ uniforms: {
86
+ diffuse: { value: texture },
87
+ depth: { value: 1 },
88
+ size: { value: new THREE.Vector2(planeWidth, planeHeight) },
89
+ },
90
+ vertexShader: vert_2d,
91
+ fragmentShader: frag_2d,
92
+ glslVersion: THREE.GLSL3,
93
+ side: THREE.DoubleSide,
94
+ });
95
+ const geometry = new THREE.PlaneGeometry(planeWidth, planeHeight);
96
+ const mesh = new THREE.Mesh(geometry, material);
97
+ scene.add(mesh);
98
+ mesh.name = "texture2d_mesh_array";
99
+ function updateTexture(copperVolumeUp) {
100
+ if (!!copperVolumeUp) {
101
+ let voiLUT;
102
+ let lut = getLut(copperVolumeUp.uint16, copperVolumeUp.windowWidth, copperVolumeUp.windowCenter, copperVolumeUp.invert, voiLUT);
103
+ for (let i = 0, len = copperVolumeUp.uint16.length; i < len; i++) {
104
+ copperVolumeUp.uint8[i] = lut.lutArray[copperVolumeUp.uint16[i]];
105
+ }
106
+ texture.needsUpdate = true;
107
+ }
108
+ }
109
+ return { mesh, copperVolume, updateTexture };
110
+ }
111
+ //# sourceMappingURL=texture2d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texture2d.js","sourceRoot":"","sources":["../../src/Utils/texture2d.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function fullScreenListenner(container: HTMLDivElement | HTMLCanvasElement): void;
2
+ export declare function isIOS(): boolean;
3
+ export declare function traverseMaterials(object: THREE.Group, callback: (material: any) => void): void;
4
+ export declare function loading(): {
5
+ loadingContainer: HTMLDivElement;
6
+ progress: HTMLDivElement;
7
+ };
8
+ export declare function switchEraserSize(size: number, urls?: string[]): string;
@@ -0,0 +1,141 @@
1
+ export function fullScreenListenner(container) {
2
+ const fullscreenElement = document.fullscreenElement || document.webkitFullscreenElement;
3
+ if (!fullscreenElement) {
4
+ if (container.requestFullscreen) {
5
+ container.requestFullscreen();
6
+ }
7
+ else if (container.webkitRequestFullscreen) {
8
+ container.webkitRequestFullscreen();
9
+ }
10
+ }
11
+ else {
12
+ if (document.exitFullscreen) {
13
+ document.exitFullscreen();
14
+ }
15
+ else if (document.webkitExitFullscreen) {
16
+ document.webkitExitFullscreen();
17
+ }
18
+ }
19
+ }
20
+ export function isIOS() {
21
+ return ([
22
+ "iPad Simulator",
23
+ "iPhone Simulator",
24
+ "iPod Simulator",
25
+ "iPad",
26
+ "iPhone",
27
+ "iPod",
28
+ ].includes(navigator.platform) ||
29
+ (navigator.userAgent.includes("Mac") && "ontouchend" in document));
30
+ }
31
+ export function traverseMaterials(object, callback) {
32
+ object.traverse((node) => {
33
+ if (!node.isMesh)
34
+ return;
35
+ if (Array.isArray(node.material)) {
36
+ callback(node.material);
37
+ }
38
+ else {
39
+ [node.material].forEach(callback);
40
+ }
41
+ });
42
+ }
43
+ export function loading() {
44
+ let loadingContainer = document.createElement("div");
45
+ const loadingDiv = document.createElement("div");
46
+ let progress = document.createElement("div");
47
+ loadingContainer.style.position = "relative";
48
+ // loadingContainer.style.top = "50%";
49
+ // loadingContainer.style.left = "50%";
50
+ loadingContainer.style.display = "none";
51
+ progress.style.color = "#000";
52
+ loadingContainer.style.zIndex = "1000";
53
+ loadingContainer.className = "copper3D_flex-center";
54
+ loadingDiv.className = "copper3D_three-balls-bounce";
55
+ progress.className = "copper3D_loading_progress";
56
+ loadingDiv.innerHTML = `<div class='copper3D_circle'></div><div class='copper3D_circle'></div><div class='copper3D_circle'></div><div class='copper3D_shadow'></div><div class='copper3D_shadow'></div><div class='copper3D_shadow'></div>`;
57
+ loadingContainer.appendChild(loadingDiv);
58
+ loadingContainer.appendChild(progress);
59
+ return { loadingContainer, progress };
60
+ }
61
+ export function switchEraserSize(size, urls) {
62
+ let url = "";
63
+ if (!!urls && urls.length > 0) {
64
+ if (size <= 3) {
65
+ url = `url(${urls[0]}) 3 3, crosshair`;
66
+ }
67
+ else if (3 < size && size <= 8) {
68
+ url = `url(${urls[1]}) 8 8, crosshair`;
69
+ }
70
+ else if (8 < size && size <= 13) {
71
+ url = `url(${urls[2]}) 13 13, crosshair`;
72
+ }
73
+ else if (13 < size && size <= 18) {
74
+ url = `url(${urls[3]}) 18 18, crosshair`;
75
+ }
76
+ else if (18 < size && size <= 23) {
77
+ url = `url(${urls[4]}) 23 23, crosshair`;
78
+ }
79
+ else if (23 < size && size <= 28) {
80
+ url = `url(${urls[5]}) 28 28, crosshair`;
81
+ }
82
+ else if (28 < size && size <= 33) {
83
+ url = `url(${urls[6]}) 33 33, crosshair`;
84
+ }
85
+ else if (33 < size && size <= 38) {
86
+ url = `url(${urls[7]}) 38 38, crosshair`;
87
+ }
88
+ else if (38 < size && size <= 43) {
89
+ url = `url(${urls[8]}) 43 43, crosshair`;
90
+ }
91
+ else if (43 < size && size <= 48) {
92
+ url = `url(${urls[9]}) 48 48, crosshair`;
93
+ }
94
+ else if (48 < size && size <= 53) {
95
+ url = `url(${urls[10]}) 52 52, crosshair`;
96
+ }
97
+ else {
98
+ url = `url(${urls[11]}) 52 52, crosshair`;
99
+ }
100
+ }
101
+ else {
102
+ if (size <= 3) {
103
+ url = `url(https://raw.githubusercontent.com/LinkunGao/copper3d-datasets/main/icons/eraser/circular-cursor_3.png) 3 3, crosshair`;
104
+ }
105
+ else if (3 < size && size <= 8) {
106
+ url = `url(https://raw.githubusercontent.com/LinkunGao/copper3d-datasets/main/icons/eraser/circular-cursor_8.png) 8 8, crosshair`;
107
+ }
108
+ else if (8 < size && size <= 13) {
109
+ url = `url(https://raw.githubusercontent.com/LinkunGao/copper3d-datasets/main/icons/eraser/circular-cursor_13.png) 13 13, crosshair`;
110
+ }
111
+ else if (13 < size && size <= 18) {
112
+ url = `url(https://raw.githubusercontent.com/LinkunGao/copper3d-datasets/main/icons/eraser/circular-cursor_18.png) 18 18, crosshair`;
113
+ }
114
+ else if (18 < size && size <= 23) {
115
+ url = `url(https://raw.githubusercontent.com/LinkunGao/copper3d-datasets/main/icons/eraser/circular-cursor_23.png) 23 23, crosshair`;
116
+ }
117
+ else if (23 < size && size <= 28) {
118
+ url = `url(https://raw.githubusercontent.com/LinkunGao/copper3d-datasets/main/icons/eraser/circular-cursor_28.png) 28 28, crosshair`;
119
+ }
120
+ else if (28 < size && size <= 33) {
121
+ url = `url(https://raw.githubusercontent.com/LinkunGao/copper3d-datasets/main/icons/eraser/circular-cursor_33.png) 33 33, crosshair`;
122
+ }
123
+ else if (33 < size && size <= 38) {
124
+ url = `url(https://raw.githubusercontent.com/LinkunGao/copper3d-datasets/main/icons/eraser/circular-cursor_38.png) 38 38, crosshair`;
125
+ }
126
+ else if (38 < size && size <= 43) {
127
+ url = `url(https://raw.githubusercontent.com/LinkunGao/copper3d-datasets/main/icons/eraser/circular-cursor_43.png) 43 43, crosshair`;
128
+ }
129
+ else if (43 < size && size <= 48) {
130
+ url = `url(https://raw.githubusercontent.com/LinkunGao/copper3d-datasets/main/icons/eraser/circular-cursor_48.png) 48 48, crosshair`;
131
+ }
132
+ else if (48 < size && size <= 53) {
133
+ url = `url(https://raw.githubusercontent.com/LinkunGao/copper3d-datasets/main/icons/eraser/circular-cursor_52.png) 52 52, crosshair`;
134
+ }
135
+ else {
136
+ url = `url(https://raw.githubusercontent.com/LinkunGao/copper3d-datasets/main/icons/eraser/circular-cursor_52.png) 52 52, crosshair`;
137
+ }
138
+ }
139
+ return url;
140
+ }
141
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/Utils/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { paintImageType } from "../../types/types";
2
+ declare function pruningData(originArr: paintImageType[]): Uint8ClampedArray[];
3
+ declare function restructData(originArr: paintImageType[], len: number, width: number, height: number): {
4
+ sliceIndex: number;
5
+ dataFormat: string;
6
+ width: number;
7
+ height: number;
8
+ voxelSpacing: number;
9
+ spaceOrigin: number;
10
+ data: never[];
11
+ }[];
12
+ declare function convertReformatDataToBlob(maskData: any): false | Blob;
13
+ export { pruningData, restructData, convertReformatDataToBlob };