ITK  5.2.0
Insight Toolkit
itkMINCImageIO.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright NumFOCUS
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  *=========================================================================*/
27 #ifndef itkMINCImageIO_h
28 #define itkMINCImageIO_h
29 
30 #include "itkImageIOBase.h"
31 
32 #include "itkMatrix.h"
33 
34 #include "ITKIOMINCExport.h"
35 
36 namespace itk
37 {
38 
39 // Structure for "Pointer to Implementation" or "Private
40 // Implementation" to hide MINC data from the ITK interface.
41 struct ITKIOMINC_HIDDEN MINCImageIOPImpl;
42 
70 class ITKIOMINC_EXPORT MINCImageIO : public ImageIOBase
71 {
72 public:
73  ITK_DISALLOW_COPY_AND_MOVE(MINCImageIO);
74 
76  using Self = MINCImageIO;
80 
82  itkNewMacro(Self);
83 
85  itkTypeMacro(MINCImageIO, Superclass);
86 
88  bool
89  SupportsDimension(unsigned long dim) override
90  {
91  return dim < 4;
92  }
93 
94  /*-------- This part of the interface deals with reading data. ------ */
95 
98  bool
99  CanReadFile(const char *) override;
100 
102  void
103  ReadImageInformation() override;
104 
106  void
107  Read(void * buffer) override;
108 
109  /*-------- This part of the interfaces deals with writing data. ----- */
110 
113  bool
114  CanWriteFile(const char *) override;
115 
118  void
119  WriteImageInformation() override;
120 
123  void
124  Write(const void * buffer) override;
125 
126 protected:
127  MINCImageIO();
128  ~MINCImageIO() override;
129 
130  void
131  PrintSelf(std::ostream & os, Indent indent) const override;
132 
133  void
134  WriteSlice(std::string & fileName, const void * buffer);
135 
136  // will assign m_NDims and allocate all internal buffers to hold the
137  // information
138  void
139  AllocateDimensions(int nDims);
140 
141  // cleanup internal buffers
142  void
143  CleanupDimensions();
144 
145  // close existing volume, cleanup internal structures
146  void
147  CloseVolume();
148 
149 private:
151 
153 
154  // complex type images, composed of complex numbers
155  // int m_Complex;
156 };
157 } // end namespace itk
158 
159 #endif // itkMINCImageIO_h
itk::ImageIOBase
Abstract superclass defines image IO interface.
Definition: itkImageIOBase.h:77
itk::MINCImageIO::m_MINCPImpl
MINCImageIOPImpl * m_MINCPImpl
Definition: itkMINCImageIO.h:150
itkMatrix.h
itk::SmartPointer< Self >
itk::Indent
Control indentation during Print() invocation.
Definition: itkIndent.h:49
itk::MINCImageIOPImpl
struct ITKIOMINC_HIDDEN MINCImageIOPImpl
Definition: itkMINCImageIO.h:41
itk::MINCImageIO::SupportsDimension
bool SupportsDimension(unsigned long dim) override
Definition: itkMINCImageIO.h:89
itk::LightObject
Light weight base class for most itk classes.
Definition: itkLightObject.h:59
itk::MINCImageIO::m_DirectionCosines
MatrixType m_DirectionCosines
Definition: itkMINCImageIO.h:152
itk::MINCImageIO
Class that defines how to read MINC file format.
Definition: itkMINCImageIO.h:70
itkImageIOBase.h
itk::Matrix< float, 3, 3 >
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnnulusOperator.h:24
itk::Object
Base class for most ITK classes.
Definition: itkObject.h:62
fileName
std::string fileName
Definition: itkTestDriverInclude.h:118