You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

118 lines
3.3 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkVolumeReader.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/**
* @class vtkVolumeReader
* @brief read image files
*
* vtkVolumeReader is a source object that reads image files.
*
* VolumeReader creates structured point datasets. The dimension of the
* dataset depends upon the number of files read. Reading a single file
* results in a 2D image, while reading more than one file results in a
* 3D volume.
*
* File names are created using FilePattern and FilePrefix as follows:
* snprintf (filename, sizeof(filename), FilePattern, FilePrefix, number);
* where number is in the range ImageRange[0] to ImageRange[1]. If
* ImageRange[1] <= ImageRange[0], then slice number ImageRange[0] is
* read. Thus to read an image set ImageRange[0] = ImageRange[1] = slice
* number. The default behavior is to read a single file (i.e., image slice 1).
*
* The DataMask instance variable is used to read data files with embedded
* connectivity or segmentation information. For example, some data has
* the high order bit set to indicate connected surface. The DataMask allows
* you to select this data. Other important ivars include HeaderSize, which
* allows you to skip over initial info, and SwapBytes, which turns on/off
* byte swapping. Consider using vtkImageReader as a replacement.
*
* @sa
* vtkSliceCubes vtkMarchingCubes vtkPNMReader vtkVolume16Reader
* vtkImageReader
*/
#ifndef vtkVolumeReader_h
#define vtkVolumeReader_h
#include "vtkIOImageModule.h" // For export macro
#include "vtkImageAlgorithm.h"
class VTKIOIMAGE_EXPORT vtkVolumeReader : public vtkImageAlgorithm
{
public:
vtkTypeMacro(vtkVolumeReader, vtkImageAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
//@{
/**
* Specify file prefix for the image file(s).
*/
vtkSetStringMacro(FilePrefix);
vtkGetStringMacro(FilePrefix);
//@}
//@{
/**
* The snprintf format used to build filename from FilePrefix and number.
*/
vtkSetStringMacro(FilePattern);
vtkGetStringMacro(FilePattern);
//@}
//@{
/**
* Set the range of files to read.
*/
vtkSetVector2Macro(ImageRange, int);
vtkGetVectorMacro(ImageRange, int, 2);
//@}
//@{
/**
* Specify the spacing for the data.
*/
vtkSetVector3Macro(DataSpacing, double);
vtkGetVectorMacro(DataSpacing, double, 3);
//@}
//@{
/**
* Specify the origin for the data.
*/
vtkSetVector3Macro(DataOrigin, double);
vtkGetVectorMacro(DataOrigin, double, 3);
//@}
/**
* Other objects make use of this method.
*/
virtual vtkImageData* GetImage(int ImageNumber) = 0;
protected:
vtkVolumeReader();
~vtkVolumeReader() override;
char* FilePrefix;
char* FilePattern;
int ImageRange[2];
double DataSpacing[3];
double DataOrigin[3];
private:
vtkVolumeReader(const vtkVolumeReader&) = delete;
void operator=(const vtkVolumeReader&) = delete;
};
#endif