Skip to content

Commit 017a63e

Browse files
committed
feat(formats): Add LSM support
1 parent f8e00b1 commit 017a63e

12 files changed

Lines changed: 129 additions & 4 deletions

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ set(BridgeJavaScript_IOModules
1414
"ITKIOVTK"
1515
"ITKIOBMP"
1616
"ITKIOHDF5"
17+
"ITKIOLSM"
1718
"ITKIOBioRad"
1819
"ITKIOGIPL"
1920
"ITKIOGE"
@@ -25,6 +26,7 @@ set(imageios_ITKIOHDF5 itkHDF5ImageIO)
2526
set(imageios_ITKIOGE itkGEAdwImageIO itkGE4ImageIO itkGE5ImageIO)
2627
set(imageios_ITKIOGIPL itkGiplImageIO)
2728
set(imageios_ITKIOPNG itkPNGImageIO)
29+
set(imageios_ITKIOLSM itkLSMImageIO)
2830
set(imageios_ITKIOMeta itkMetaImageIO)
2931
set(imageios_ITKIONIFTI itkNiftiImageIO)
3032
set(imageios_ITKIONRRD itkNrrdImageIO)

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Supported file formats
1717
- [JPEG](https://en.wikipedia.org/wiki/JPEG_File_Interchange_Format)
1818
- [GE4,GE5,GEAdw](http://www3.gehealthcare.com)
1919
- [Gipl (Guys Image Processing Lab)](https://www.ncbi.nlm.nih.gov/pubmed/12956259)
20+
- [LSM](http://www.openwetware.org/wiki/Dissecting_LSM_files)
2021
- [MetaImage](https://itk.org/Wiki/ITK/MetaIO/Documentation)
2122
- [NifTi](https://nifti.nimh.nih.gov/nifti-1)
2223
- [NRRD](http://teem.sourceforge.net/nrrd/format.html)

src/extensionToIO.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ extensionToIO['JPG'] = 'itkJPEGImageIOJSBinding'
1616
extensionToIO['jpeg'] = 'itkJPEGImageIOJSBinding'
1717
extensionToIO['JPEG'] = 'itkJPEGImageIOJSBinding'
1818

19+
extensionToIO['lsm'] = 'itkLSMImageIOJSBinding'
20+
1921
extensionToIO['mha'] = 'itkMetaImageIOJSBinding'
2022
extensionToIO['mhd'] = 'itkMetaImageIOJSBinding'
2123

src/itkGE4ImageIOJSBinding.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
typedef itk::ImageIOBaseJSBinding< itk::GE4ImageIO > GE4ImageIOJSBindingType;
2727

28-
EMSCRIPTEN_BINDINGS(itk_vtk_image_io_js_binding) {
28+
EMSCRIPTEN_BINDINGS(itk_ge4_image_io_js_binding) {
2929
emscripten::register_vector<double>("AxisDirectionType");
3030
emscripten::enum_<GE4ImageIOJSBindingType::IOPixelType>("IOPixelType")
3131
.value("UNKNOWNPIXELTYPE", itk::ImageIOBase::UNKNOWNPIXELTYPE)

src/itkGE5ImageIOJSBinding.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
typedef itk::ImageIOBaseJSBinding< itk::GE5ImageIO > GE5ImageIOJSBindingType;
2727

28-
EMSCRIPTEN_BINDINGS(itk_vtk_image_io_js_binding) {
28+
EMSCRIPTEN_BINDINGS(itk_ge5_image_io_js_binding) {
2929
emscripten::register_vector<double>("AxisDirectionType");
3030
emscripten::enum_<GE5ImageIOJSBindingType::IOPixelType>("IOPixelType")
3131
.value("UNKNOWNPIXELTYPE", itk::ImageIOBase::UNKNOWNPIXELTYPE)

src/itkGEAdwImageIOJSBinding.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
typedef itk::ImageIOBaseJSBinding< itk::GEAdwImageIO > GEAdwImageIOJSBindingType;
2727

28-
EMSCRIPTEN_BINDINGS(itk_vtk_image_io_js_binding) {
28+
EMSCRIPTEN_BINDINGS(itk_geadw_image_io_js_binding) {
2929
emscripten::register_vector<double>("AxisDirectionType");
3030
emscripten::enum_<GEAdwImageIOJSBindingType::IOPixelType>("IOPixelType")
3131
.value("UNKNOWNPIXELTYPE", itk::ImageIOBase::UNKNOWNPIXELTYPE)

src/itkHDF5ImageIOJSBinding.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
typedef itk::ImageIOBaseJSBinding< itk::HDF5ImageIO > HDF5ImageIOJSBindingType;
2727

28-
EMSCRIPTEN_BINDINGS(itk_biorad_image_io_js_binding) {
28+
EMSCRIPTEN_BINDINGS(itk_hdf5_image_io_js_binding) {
2929
emscripten::register_vector<double>("AxisDirectionType");
3030
emscripten::enum_<HDF5ImageIOJSBindingType::IOPixelType>("IOPixelType")
3131
.value("UNKNOWNPIXELTYPE", itk::ImageIOBase::UNKNOWNPIXELTYPE)

src/itkLSMImageIOJSBinding.cxx

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
/*=========================================================================
2+
*
3+
* Copyright Insight Software Consortium
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0.txt
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*
17+
*=========================================================================*/
18+
19+
#include <emscripten.h>
20+
#include <emscripten/bind.h>
21+
22+
#include "itkLSMImageIO.h"
23+
24+
#include "itkImageIOBaseJSBinding.h"
25+
26+
typedef itk::ImageIOBaseJSBinding< itk::LSMImageIO > LSMImageIOJSBindingType;
27+
28+
EMSCRIPTEN_BINDINGS(itk_lsm_image_io_js_binding) {
29+
emscripten::register_vector<double>("AxisDirectionType");
30+
emscripten::enum_<LSMImageIOJSBindingType::IOPixelType>("IOPixelType")
31+
.value("UNKNOWNPIXELTYPE", itk::ImageIOBase::UNKNOWNPIXELTYPE)
32+
.value("SCALAR", itk::ImageIOBase::SCALAR)
33+
.value("RGB", itk::ImageIOBase::RGB)
34+
.value("RGBA", itk::ImageIOBase::RGBA)
35+
.value("OFFSET", itk::ImageIOBase::OFFSET)
36+
.value("VECTOR", itk::ImageIOBase::VECTOR)
37+
.value("POINT", itk::ImageIOBase::POINT)
38+
.value("COVARIANTVECTOR", itk::ImageIOBase::COVARIANTVECTOR)
39+
.value("SYMMETRICSECONDRANKTENSOR", itk::ImageIOBase::SYMMETRICSECONDRANKTENSOR)
40+
.value("POINT", itk::ImageIOBase::POINT)
41+
.value("COVARIANTVECTOR", itk::ImageIOBase::COVARIANTVECTOR)
42+
.value("SYMMETRICSECONDRANKTENSOR", itk::ImageIOBase::SYMMETRICSECONDRANKTENSOR)
43+
.value("DIFFUSIONTENSOR3D", itk::ImageIOBase::DIFFUSIONTENSOR3D)
44+
.value("COMPLEX", itk::ImageIOBase::COMPLEX)
45+
.value("FIXEDARRAY", itk::ImageIOBase::FIXEDARRAY)
46+
.value("MATRIX", itk::ImageIOBase::MATRIX)
47+
;
48+
emscripten::enum_<LSMImageIOJSBindingType::IOComponentType>("IOComponentType")
49+
.value("UNKNOWNCOMPONENTTYPE", itk::ImageIOBase::UNKNOWNCOMPONENTTYPE)
50+
.value("UCHAR", itk::ImageIOBase::UCHAR)
51+
.value("CHAR", itk::ImageIOBase::CHAR)
52+
.value("USHORT", itk::ImageIOBase::USHORT)
53+
.value("SHORT", itk::ImageIOBase::SHORT)
54+
.value("UINT", itk::ImageIOBase::UINT)
55+
.value("INT", itk::ImageIOBase::INT)
56+
.value("ULONG", itk::ImageIOBase::ULONG)
57+
.value("LONG", itk::ImageIOBase::LONG)
58+
.value("FLOAT", itk::ImageIOBase::FLOAT)
59+
.value("DOUBLE", itk::ImageIOBase::DOUBLE)
60+
;
61+
emscripten::class_<LSMImageIOJSBindingType>("ITKImageIO")
62+
.constructor<>()
63+
.function("SetNumberOfDimensions", &LSMImageIOJSBindingType::SetNumberOfDimensions)
64+
.function("GetNumberOfDimensions", &LSMImageIOJSBindingType::GetNumberOfDimensions)
65+
.function("SetFileName", &LSMImageIOJSBindingType::SetFileName)
66+
.function("GetFileName", &LSMImageIOJSBindingType::GetFileName)
67+
.function("CanReadFile", &LSMImageIOJSBindingType::CanReadFile)
68+
.function("ReadImageInformation", &LSMImageIOJSBindingType::ReadImageInformation)
69+
.function("SetDimensions", &LSMImageIOJSBindingType::SetDimensions)
70+
.function("GetDimensions", &LSMImageIOJSBindingType::GetDimensions)
71+
.function("SetOrigin", &LSMImageIOJSBindingType::SetOrigin)
72+
.function("GetOrigin", &LSMImageIOJSBindingType::GetOrigin)
73+
.function("SetSpacing", &LSMImageIOJSBindingType::SetSpacing)
74+
.function("GetSpacing", &LSMImageIOJSBindingType::GetSpacing)
75+
.function("SetDirection", &LSMImageIOJSBindingType::SetDirection)
76+
.function("GetDirection", &LSMImageIOJSBindingType::GetDirection)
77+
.function("GetDefaultDirection", &LSMImageIOJSBindingType::GetDefaultDirection)
78+
.function("SetPixelType", &LSMImageIOJSBindingType::SetPixelType)
79+
.function("GetPixelType", &LSMImageIOJSBindingType::GetPixelType)
80+
.function("SetComponentType", &LSMImageIOJSBindingType::SetComponentType)
81+
.function("GetComponentType", &LSMImageIOJSBindingType::GetComponentType)
82+
.class_function("GetPixelTypeAsString", &LSMImageIOJSBindingType::GetPixelTypeAsString)
83+
.class_function("GetComponentTypeAsString", &LSMImageIOJSBindingType::GetComponentTypeAsString)
84+
.function("GetImageSizeInPixels", &LSMImageIOJSBindingType::GetImageSizeInPixels)
85+
.function("GetImageSizeInBytes", &LSMImageIOJSBindingType::GetImageSizeInBytes)
86+
.function("GetImageSizeInComponents", &LSMImageIOJSBindingType::GetImageSizeInComponents)
87+
.function("SetNumberOfComponents", &LSMImageIOJSBindingType::SetNumberOfComponents)
88+
.function("GetNumberOfComponents", &LSMImageIOJSBindingType::GetNumberOfComponents)
89+
.function("Read", &LSMImageIOJSBindingType::Read)
90+
;
91+
}

test/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,5 @@ ExternalData_Expand_Arguments(
3434
DATA{Input/I.001}
3535
DATA{Input/ramp.gipl}
3636
DATA{Input/ITKImage.hdf5}
37+
DATA{Input/cthead1.lsm}
3738
)

test/Input/cthead1.lsm.md5

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
276e992e6768f3905cbdb8bcf0b80269

0 commit comments

Comments
 (0)