VTK  9.5.2
vtkDICOMImageReader.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
79
80#ifndef vtkDICOMImageReader_h
81#define vtkDICOMImageReader_h
82
83#include "vtkIOImageModule.h" // For export macro
84#include "vtkImageReader2.h"
85
86VTK_ABI_NAMESPACE_BEGIN
87class vtkDICOMImageReaderVector;
88class DICOMParser;
89class DICOMAppHelper;
90
91class VTKIOIMAGE_EXPORT vtkDICOMImageReader : public vtkImageReader2
92{
93public:
95
101
105 void PrintSelf(ostream& os, vtkIndent indent) override;
106
108
112 void SetFileName(VTK_FILEPATH const char* fn) override
113 {
114 delete[] this->DirectoryName;
115 delete[] this->FileName;
116 this->DirectoryName = nullptr;
117 this->FileName = nullptr;
119 }
120
121
131 void SetDirectoryName(VTK_FILEPATH const char* dn);
132
134
139
147
151 int GetWidth();
152
157
164
171
176
183
189
193 const char* GetTransferSyntaxUID();
194
199
204
208 const char* GetPatientName();
209
213 const char* GetStudyUID();
214
218 const char* GetStudyID();
219
224
225 //
226 // Can I read the file?
227 //
228 int CanReadFile(VTK_FILEPATH const char* fname) override;
229
230 //
231 // What file extensions are supported?
232 //
233 const char* GetFileExtensions() override { return ".dcm"; }
234
238 const char* GetDescriptiveName() override { return "DICOM"; }
239
240protected:
241 //
242 // Setup the volume size
243 //
244 void SetupOutputInformation(int num_slices);
245
246 void ExecuteInformation() override;
248
249 //
250 // Constructor
251 //
253
254 //
255 // Destructor
256 //
258
259 //
260 // Instance of the parser used to parse the file.
261 //
262 DICOMParser* Parser;
263
264 //
265 // Instance of the callbacks that get the data from the file.
266 //
267 DICOMAppHelper* AppHelper;
268
269 //
270 // vtkDICOMImageReaderVector wants to be a PIMPL and it will be, but not quite yet.
271 //
272 vtkDICOMImageReaderVector* DICOMFileNames;
274
276 char* StudyUID;
277 char* StudyID;
279
280 // DICOMFileNames accessor methods for subclasses:
282 VTK_FILEPATH const char* GetDICOMFileName(int index);
283
284private:
286 void operator=(const vtkDICOMImageReader&) = delete;
287};
288
289VTK_ABI_NAMESPACE_END
290#endif
const char * GetDescriptiveName() override
Return a descriptive name for the file format that might be useful in a GUI.
void ExecuteInformation() override
int CanReadFile(VTK_FILEPATH const char *fname) override
const char * GetStudyUID()
Get the study uid for the last image processed.
void SetupOutputInformation(int num_slices)
static vtkDICOMImageReader * New()
Static method for construction.
const char * GetStudyID()
Get the Study ID for the last image processed.
vtkDICOMImageReaderVector * DICOMFileNames
DICOMAppHelper * AppHelper
float GetGantryAngle()
Get the gantry angle for the last image processed.
int GetHeight()
Returns the image height.
int GetNumberOfComponents()
Get the number of components of the image data for the last image processed.
float * GetImagePositionPatient()
Get the (DICOM) x,y,z coordinates of the first pixel in the image (upper left hand corner) of the las...
int GetPixelRepresentation()
Get the pixel representation of the last image processed by the DICOMParser.
float GetRescaleOffset()
Get the rescale offset for the pixel data.
int GetBitsAllocated()
Get the number of bits allocated for each pixel in the file.
const char * GetFileExtensions() override
Get the file extensions for this format.
double * GetPixelSpacing()
Returns the pixel spacing (in X, Y, Z).
float GetRescaleSlope()
Get the rescale slope for the pixel data.
void SetDirectoryName(VTK_FILEPATH const char *dn)
Set the directory name for the reader to look in for DICOM files.
int GetWidth()
Returns the image width.
float * GetImageOrientationPatient()
Get the (DICOM) directions cosines.
void SetFileName(VTK_FILEPATH const char *fn) override
Set the filename for the file to read.
const char * GetTransferSyntaxUID()
Get the transfer syntax UID for the last image processed.
int GetNumberOfDICOMFileNames()
void ExecuteDataWithInformation(vtkDataObject *out, vtkInformation *outInfo) override
This is a convenience method that is implemented in many subclasses instead of RequestData.
void PrintSelf(ostream &os, vtkIndent indent) override
Prints the ivars.
~vtkDICOMImageReader() override
const char * GetPatientName()
Get the patient name for the last image processed.
VTK_FILEPATH const char * GetDICOMFileName(int index)
vtkGetFilePathMacro(DirectoryName)
Returns the directory name.
general representation of visualization data
virtual void SetFileName(VTK_FILEPATH const char *)
Specify file name for the image file.
vtkImageReader2()
Return a descriptive name for the file format that might be useful in a GUI.
a simple class to control print indentation
Definition vtkIndent.h:108
Store vtkAlgorithm input/output information.
#define VTK_FILEPATH
#define VTK_SIZEHINT(...)