00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00057
#ifndef __vtkVolume16Reader_h
00058
#define __vtkVolume16Reader_h
00059
00060
#include "vtkVolumeReader.h"
00061
00062
class vtkTransform;
00063
class vtkUnsignedCharArray;
00064
class vtkUnsignedShortArray;
00065
00066 #define VTK_FILE_BYTE_ORDER_BIG_ENDIAN 0
00067 #define VTK_FILE_BYTE_ORDER_LITTLE_ENDIAN 1
00068
00069 class VTK_IO_EXPORT vtkVolume16Reader :
public vtkVolumeReader
00070 {
00071
public:
00072 vtkTypeRevisionMacro(vtkVolume16Reader,
vtkVolumeReader);
00073
void PrintSelf(ostream& os,
vtkIndent indent);
00074
00078
static vtkVolume16Reader *
New();
00079
00081
00082 vtkSetVector2Macro(DataDimensions,
int);
00083 vtkGetVectorMacro(DataDimensions,
int,2);
00085
00087
00089 vtkSetMacro(DataMask,
unsigned short);
00090 vtkGetMacro(DataMask,
unsigned short);
00092
00094
00095 vtkSetMacro(HeaderSize,
int);
00096 vtkGetMacro(HeaderSize,
int);
00098
00100
00110
void SetDataByteOrderToBigEndian();
00111
void SetDataByteOrderToLittleEndian();
00112
int GetDataByteOrder();
00113
void SetDataByteOrder(
int);
00114
const char *GetDataByteOrderAsString();
00116
00118
00119 vtkSetMacro(SwapBytes,
int);
00120 vtkGetMacro(SwapBytes,
int);
00121 vtkBooleanMacro(SwapBytes,
int);
00123
00125
00128
virtual void SetTransform(
vtkTransform*);
00129 vtkGetObjectMacro(Transform,
vtkTransform);
00131
00133
vtkImageData *
GetImage(
int ImageNumber);
00134
00135
protected:
00136 vtkVolume16Reader();
00137 ~vtkVolume16Reader();
00138
00139
virtual void ExecuteData(
vtkDataObject *);
00140
virtual void ExecuteInformation();
00141 int DataDimensions[2];
00142 unsigned short DataMask;
00143 int SwapBytes;
00144 int HeaderSize;
00145 vtkTransform *Transform;
00146
00147
void TransformSlice (
unsigned short *slice,
unsigned short *pixels,
int k,
int dimensions[3],
int bounds[3]);
00148
void ComputeTransformedDimensions(
int dimensions[3]);
00149
void ComputeTransformedBounds(
int bounds[6]);
00150
void ComputeTransformedSpacing(
float Spacing[3]);
00151
void ComputeTransformedOrigin(
float origin[3]);
00152
void AdjustSpacingAndOrigin(
int dimensions[3],
float Spacing[3],
float origin[3]);
00153
void ReadImage(
int ImageNumber,
vtkUnsignedShortArray *);
00154
void ReadVolume(
int FirstImage,
int LastImage,
vtkUnsignedShortArray *);
00155
int Read16BitImage(FILE *fp,
unsigned short *pixels,
int xsize,
int ysize,
00156
int skip,
int swapBytes);
00157
00158
private:
00159 vtkVolume16Reader(
const vtkVolume16Reader&);
00160
void operator=(
const vtkVolume16Reader&);
00161 };
00162
00163
#endif
00164
00165