Skip to content

Commit 968322e

Browse files
committed
feat(mesh-io): mz3 browser support
1 parent 11fcdf8 commit 968322e

37 files changed

+3416
-38
lines changed

packages/mesh-io/typescript/src/index-only.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,18 @@ export type { FreeSurferBinaryWriteMeshResult };
6262
import freeSurferBinaryWriteMesh from "./free-surfer-binary-write-mesh.js";
6363
export { freeSurferBinaryWriteMesh };
6464

65+
import Mz3ReadMeshResult from "./mz3-read-mesh-result.js";
66+
export type { Mz3ReadMeshResult };
67+
68+
import mz3ReadMesh from "./mz3-read-mesh.js";
69+
export { mz3ReadMesh };
70+
71+
import Mz3WriteMeshResult from "./mz3-write-mesh-result.js";
72+
export type { Mz3WriteMeshResult };
73+
74+
import mz3WriteMesh from "./mz3-write-mesh.js";
75+
export { mz3WriteMesh };
76+
6577
import ObjReadMeshResult from "./obj-read-mesh-result.js";
6678
export type { ObjReadMeshResult };
6779

@@ -146,6 +158,18 @@ export type { WasmZstdWriteMeshResult };
146158
import wasmZstdWriteMesh from "./wasm-zstd-write-mesh.js";
147159
export { wasmZstdWriteMesh };
148160

161+
import Mz3ReadPointSetResult from "./mz3-read-point-set-result.js";
162+
export type { Mz3ReadPointSetResult };
163+
164+
import mz3ReadPointSet from "./mz3-read-point-set.js";
165+
export { mz3ReadPointSet };
166+
167+
import Mz3WritePointSetResult from "./mz3-write-point-set-result.js";
168+
export type { Mz3WritePointSetResult };
169+
170+
import mz3WritePointSet from "./mz3-write-point-set.js";
171+
export { mz3WritePointSet };
172+
149173
import ObjReadPointSetResult from "./obj-read-point-set-result.js";
150174
export type { ObjReadPointSetResult };
151175

packages/mesh-io/typescript/src/point-set-io-index-node.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import vtkPolyDataReadPointSetNode from "./vtk-poly-data-read-point-set-node.js";
22
import vtkPolyDataWritePointSetNode from "./vtk-poly-data-write-point-set-node.js";
3+
import mz3ReadPointSetNode from "./mz3-read-point-set-node.js";
4+
import mz3WritePointSetNode from "./mz3-write-point-set-node.js";
35
import objReadPointSetNode from "./obj-read-point-set-node.js";
46
import objWritePointSetNode from "./obj-write-point-set-node.js";
57
import offReadPointSetNode from "./off-read-point-set-node.js";
@@ -11,6 +13,7 @@ import wasmZstdWritePointSetNode from "./wasm-zstd-write-point-set-node.js";
1113

1214
const pointSetIoIndexNode = new Map([
1315
["vtk", [vtkPolyDataReadPointSetNode, vtkPolyDataWritePointSetNode]],
16+
["mz3", [mz3ReadPointSetNode, mz3WritePointSetNode]],
1417
["obj", [objReadPointSetNode, objWritePointSetNode]],
1518
["off", [offReadPointSetNode, offWritePointSetNode]],
1619
["wasm", [wasmReadPointSetNode, wasmWritePointSetNode]],

packages/mesh-io/typescript/src/point-set-io-index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import vtkPolyDataReadPointSet from "./vtk-poly-data-read-point-set.js";
22
import vtkPolyDataWritePointSet from "./vtk-poly-data-write-point-set.js";
3+
import mz3ReadPointSet from "./mz3-read-point-set.js";
4+
import mz3WritePointSet from "./mz3-write-point-set.js";
35
import objReadPointSet from "./obj-read-point-set.js";
46
import objWritePointSet from "./obj-write-point-set.js";
57
import offReadPointSet from "./off-read-point-set.js";
@@ -11,6 +13,7 @@ import wasmZstdWritePointSet from "./wasm-zstd-write-point-set.js";
1113

1214
const pointSetIoIndex = new Map([
1315
["vtk", [vtkPolyDataReadPointSet, vtkPolyDataWritePointSet]],
16+
["mz3", [mz3ReadPointSet, mz3WritePointSet]],
1417
["obj", [objReadPointSet, objWritePointSet]],
1518
["off", [offReadPointSet, offWritePointSet]],
1619
["wasm", [wasmReadPointSet, wasmWritePointSet]],

packages/mesh-io/typescript/test/browser/demo-app/index.html

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ <h3>👨‍💻 Live API Demo ✨</h3>
5353
<sl-tab slot="nav" panel="freeSurferAsciiWriteMesh-panel">freeSurferAsciiWriteMesh</sl-tab>
5454
<sl-tab slot="nav" panel="freeSurferBinaryReadMesh-panel">freeSurferBinaryReadMesh</sl-tab>
5555
<sl-tab slot="nav" panel="freeSurferBinaryWriteMesh-panel">freeSurferBinaryWriteMesh</sl-tab>
56+
<sl-tab slot="nav" panel="mz3ReadMesh-panel">mz3ReadMesh</sl-tab>
57+
<sl-tab slot="nav" panel="mz3WriteMesh-panel">mz3WriteMesh</sl-tab>
5658
<sl-tab slot="nav" panel="objReadMesh-panel">objReadMesh</sl-tab>
5759
<sl-tab slot="nav" panel="objWriteMesh-panel">objWriteMesh</sl-tab>
5860
<sl-tab slot="nav" panel="offReadMesh-panel">offReadMesh</sl-tab>
@@ -111,6 +113,7 @@ <h3>👨‍💻 Live API Demo ✨</h3>
111113
<sl-option value="fsb">fsb</sl-option>
112114
<sl-option value="obj">obj</sl-option>
113115
<sl-option value="off">off</sl-option>
116+
<sl-option value="mz3">mz3</sl-option>
114117
<sl-option value="stl">stl</sl-option>
115118
<sl-option value="swc">swc</sl-option>
116119
</sl-select>
@@ -213,6 +216,7 @@ <h3>👨‍💻 Live API Demo ✨</h3>
213216
<sl-option value="fsb">fsb</sl-option>
214217
<sl-option value="obj">obj</sl-option>
215218
<sl-option value="off">off</sl-option>
219+
<sl-option value="mz3">mz3</sl-option>
216220
<sl-option value="stl">stl</sl-option>
217221
<sl-option value="swc">swc</sl-option>
218222
</sl-select>
@@ -326,6 +330,7 @@ <h3>👨‍💻 Live API Demo ✨</h3>
326330
<sl-option value="fsb">fsb</sl-option>
327331
<sl-option value="obj">obj</sl-option>
328332
<sl-option value="off">off</sl-option>
333+
<sl-option value="mz3">mz3</sl-option>
329334
<sl-option value="stl">stl</sl-option>
330335
<sl-option value="swc">swc</sl-option>
331336
</sl-select>
@@ -433,6 +438,7 @@ <h3>👨‍💻 Live API Demo ✨</h3>
433438
<sl-option value="fsb">fsb</sl-option>
434439
<sl-option value="obj">obj</sl-option>
435440
<sl-option value="off">off</sl-option>
441+
<sl-option value="mz3">mz3</sl-option>
436442
<sl-option value="stl">stl</sl-option>
437443
<sl-option value="swc">swc</sl-option>
438444
</sl-select>
@@ -540,6 +546,7 @@ <h3>👨‍💻 Live API Demo ✨</h3>
540546
<sl-option value="fsb">fsb</sl-option>
541547
<sl-option value="obj">obj</sl-option>
542548
<sl-option value="off">off</sl-option>
549+
<sl-option value="mz3">mz3</sl-option>
543550
<sl-option value="stl">stl</sl-option>
544551
<sl-option value="swc">swc</sl-option>
545552
</sl-select>
@@ -601,6 +608,114 @@ <h3>👨‍💻 Live API Demo ✨</h3>
601608
</sl-tab-panel>
602609

603610

611+
<sl-tab-panel name="mz3ReadMesh-panel">
612+
613+
<small><i>Read a mesh file format and convert it to the itk-wasm file
614+
format</i></small><br /><br />
615+
616+
<div id="mz3ReadMeshInputs">
617+
<form action="">
618+
<sl-tooltip
619+
content="Use the Upload button to provide the serializedMesh"><sl-details
620+
id="mz3ReadMesh-serialized-mesh-details"
621+
summary="serializedMesh: Input mesh serialized in the file format"
622+
disabled></sl-details></sl-tooltip>
623+
<label for="serialized-mesh-file"><sl-button name="serialized-mesh-file-button"
624+
required variant="primary" outline
625+
onclick="this.parentElement.nextElementSibling.click()">Upload</sl-button></label><input
626+
type="file" name="serialized-mesh-file" style="display: none" />
627+
<br /><br />
628+
<sl-checkbox name="information-only">informationOnly - <i>Only read image metadata
629+
-- do not read pixel data.</i></sl-checkbox>
630+
<br /><br />
631+
<sl-divider></sl-divider>
632+
<br /><sl-tooltip
633+
content="Load example input data. This will overwrite data any existing input data."><sl-button
634+
name="loadSampleInputs" variant="default" style="display: none;">Load
635+
sample inputs</sl-button></sl-tooltip>
636+
<sl-button type="button" variant="success" name="run">Run</sl-button><br /><br />
637+
638+
</form>
639+
</div>
640+
<sl-divider></sl-divider>
641+
642+
<div id="mz3ReadMeshOutputs">
643+
<sl-details disabled id="mz3ReadMesh-could-read-details"
644+
summary="couldRead: Whether the input could be read. If false, the output mesh is not valid."></sl-details>
645+
<sl-button variant="neutral" outline name="could-read-download"
646+
disabled>Download</sl-button>
647+
<br /><br />
648+
<sl-details disabled id="mz3ReadMesh-mesh-details"
649+
summary="mesh: Output mesh"></sl-details>
650+
<sl-select id="mz3ReadMesh-mesh-output-format" placeholder="Format">
651+
<sl-option value="vtk">vtk</sl-option>
652+
<sl-option value="byu">byu</sl-option>
653+
<sl-option value="fsa">fsa</sl-option>
654+
<sl-option value="fsb">fsb</sl-option>
655+
<sl-option value="obj">obj</sl-option>
656+
<sl-option value="off">off</sl-option>
657+
<sl-option value="mz3">mz3</sl-option>
658+
<sl-option value="stl">stl</sl-option>
659+
<sl-option value="swc">swc</sl-option>
660+
</sl-select>
661+
<sl-button variant="neutral" outline name="mesh-download" disabled>Download</sl-button>
662+
<br /><br />
663+
</div>
664+
665+
</sl-tab-panel>
666+
667+
668+
<sl-tab-panel name="mz3WriteMesh-panel">
669+
670+
<small><i>Write an itk-wasm file format converted to an mesh file format</i></small><br /><br />
671+
672+
<div id="mz3WriteMeshInputs">
673+
<form action="">
674+
<sl-tooltip content="Use the Upload button to provide the mesh"><sl-details
675+
id="mz3WriteMesh-mesh-details" summary="mesh: Input mesh"
676+
disabled></sl-details></sl-tooltip>
677+
<label for="mesh-file"><sl-button name="mesh-file-button" variant="primary" outline
678+
onclick="this.parentElement.nextElementSibling.click()">Upload</sp-button></label><input
679+
type="file" name="mesh-file" style="display: none" />
680+
<br /><br />
681+
<sl-checkbox name="information-only">informationOnly - <i>Only write image metadata
682+
-- do not write pixel data.</i></sl-checkbox>
683+
<br /><br />
684+
<sl-checkbox name="use-compression">useCompression - <i>Use compression in the
685+
written file, if supported</i></sl-checkbox>
686+
<br /><br />
687+
<sl-checkbox name="binary-file-type">binaryFileType - <i>Use a binary file type in
688+
the written file, if supported</i></sl-checkbox>
689+
<br /><br />
690+
<sl-input required name="serialized-mesh" type="text" label="serializedMesh"
691+
help-text="Output mesh"></sl-input>
692+
<sl-divider></sl-divider>
693+
<br /><sl-tooltip
694+
content="Load example input data. This will overwrite data any existing input data."><sl-button
695+
name="loadSampleInputs" variant="default" style="display: none;">Load
696+
sample inputs</sl-button></sl-tooltip>
697+
<sl-button type="button" variant="success" name="run">Run</sl-button><br /><br />
698+
699+
</form>
700+
</div>
701+
<sl-divider></sl-divider>
702+
703+
<div id="mz3WriteMeshOutputs">
704+
<sl-details disabled id="mz3WriteMesh-could-write-details"
705+
summary="couldWrite: Whether the input could be written. If false, the output mesh is not valid."></sl-details>
706+
<sl-button variant="neutral" outline name="could-write-download"
707+
disabled>Download</sl-button>
708+
<br /><br />
709+
<sl-details disabled id="mz3WriteMesh-serialized-mesh-details"
710+
summary="serializedMesh: Output mesh"></sl-details>
711+
<sl-button variant="neutral" outline name="serialized-mesh-download"
712+
disabled>Download</sl-button>
713+
<br /><br />
714+
</div>
715+
716+
</sl-tab-panel>
717+
718+
604719
<sl-tab-panel name="objReadMesh-panel">
605720

606721
<small><i>Read a mesh file format and convert it to the itk-wasm file
@@ -647,6 +762,7 @@ <h3>👨‍💻 Live API Demo ✨</h3>
647762
<sl-option value="fsb">fsb</sl-option>
648763
<sl-option value="obj">obj</sl-option>
649764
<sl-option value="off">off</sl-option>
765+
<sl-option value="mz3">mz3</sl-option>
650766
<sl-option value="stl">stl</sl-option>
651767
<sl-option value="swc">swc</sl-option>
652768
</sl-select>
@@ -754,6 +870,7 @@ <h3>👨‍💻 Live API Demo ✨</h3>
754870
<sl-option value="fsb">fsb</sl-option>
755871
<sl-option value="obj">obj</sl-option>
756872
<sl-option value="off">off</sl-option>
873+
<sl-option value="mz3">mz3</sl-option>
757874
<sl-option value="stl">stl</sl-option>
758875
<sl-option value="swc">swc</sl-option>
759876
</sl-select>
@@ -1075,6 +1192,7 @@ <h3>👨‍💻 Live API Demo ✨</h3>
10751192
<sl-option value="fsb">fsb</sl-option>
10761193
<sl-option value="obj">obj</sl-option>
10771194
<sl-option value="off">off</sl-option>
1195+
<sl-option value="mz3">mz3</sl-option>
10781196
<sl-option value="stl">stl</sl-option>
10791197
<sl-option value="swc">swc</sl-option>
10801198
</sl-select>
@@ -1182,6 +1300,7 @@ <h3>👨‍💻 Live API Demo ✨</h3>
11821300
<sl-option value="fsb">fsb</sl-option>
11831301
<sl-option value="obj">obj</sl-option>
11841302
<sl-option value="off">off</sl-option>
1303+
<sl-option value="mz3">mz3</sl-option>
11851304
<sl-option value="stl">stl</sl-option>
11861305
<sl-option value="swc">swc</sl-option>
11871306
</sl-select>
@@ -1289,6 +1408,7 @@ <h3>👨‍💻 Live API Demo ✨</h3>
12891408
<sl-option value="fsb">fsb</sl-option>
12901409
<sl-option value="obj">obj</sl-option>
12911410
<sl-option value="off">off</sl-option>
1411+
<sl-option value="mz3">mz3</sl-option>
12921412
<sl-option value="stl">stl</sl-option>
12931413
<sl-option value="swc">swc</sl-option>
12941414
</sl-select>
@@ -1396,6 +1516,7 @@ <h3>👨‍💻 Live API Demo ✨</h3>
13961516
<sl-option value="fsb">fsb</sl-option>
13971517
<sl-option value="obj">obj</sl-option>
13981518
<sl-option value="off">off</sl-option>
1519+
<sl-option value="mz3">mz3</sl-option>
13991520
<sl-option value="stl">stl</sl-option>
14001521
<sl-option value="swc">swc</sl-option>
14011522
</sl-select>

0 commit comments

Comments
 (0)