00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00050 #ifndef __vtkVolume16Reader_h
00051 #define __vtkVolume16Reader_h
00052
00053 #include "vtkVolumeReader.h"
00054
00055 class vtkTransform;
00056 class vtkUnsignedCharArray;
00057 class vtkUnsignedShortArray;
00058
00059 #define VTK_FILE_BYTE_ORDER_BIG_ENDIAN 0
00060 #define VTK_FILE_BYTE_ORDER_LITTLE_ENDIAN 1
00061
00062 class VTK_IO_EXPORT vtkVolume16Reader : public vtkVolumeReader
00063 {
00064 public:
00065 vtkTypeRevisionMacro(vtkVolume16Reader,vtkVolumeReader);
00066 void PrintSelf(ostream& os, vtkIndent indent);
00067
00071 static vtkVolume16Reader *New();
00072
00074
00075 vtkSetVector2Macro(DataDimensions,int);
00076 vtkGetVectorMacro(DataDimensions,int,2);
00078
00080
00082 vtkSetMacro(DataMask,unsigned short);
00083 vtkGetMacro(DataMask,unsigned short);
00085
00087
00088 vtkSetMacro(HeaderSize,int);
00089 vtkGetMacro(HeaderSize,int);
00091
00093
00103 void SetDataByteOrderToBigEndian();
00104 void SetDataByteOrderToLittleEndian();
00105 int GetDataByteOrder();
00106 void SetDataByteOrder(int);
00107 const char *GetDataByteOrderAsString();
00109
00111
00112 vtkSetMacro(SwapBytes,int);
00113 vtkGetMacro(SwapBytes,int);
00114 vtkBooleanMacro(SwapBytes,int);
00116
00118
00121 virtual void SetTransform(vtkTransform*);
00122 vtkGetObjectMacro(Transform,vtkTransform);
00124
00126 vtkImageData *GetImage(int ImageNumber);
00127
00128 protected:
00129 vtkVolume16Reader();
00130 ~vtkVolume16Reader();
00131
00132 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00133 virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
00134 int DataDimensions[2];
00135 unsigned short DataMask;
00136 int SwapBytes;
00137 int HeaderSize;
00138 vtkTransform *Transform;
00139
00140 void TransformSlice (unsigned short *slice, unsigned short *pixels, int k, int dimensions[3], int bounds[3]);
00141 void ComputeTransformedDimensions(int dimensions[3]);
00142 void ComputeTransformedBounds(int bounds[6]);
00143 void ComputeTransformedSpacing(double Spacing[3]);
00144 void ComputeTransformedOrigin(double origin[3]);
00145 void AdjustSpacingAndOrigin(int dimensions[3], double Spacing[3], double origin[3]);
00146 void ReadImage(int ImageNumber, vtkUnsignedShortArray *);
00147 void ReadVolume(int FirstImage, int LastImage, vtkUnsignedShortArray *);
00148 int Read16BitImage(FILE *fp, unsigned short *pixels, int xsize, int ysize,
00149 int skip, int swapBytes);
00150
00151 private:
00152 vtkVolume16Reader(const vtkVolume16Reader&);
00153 void operator=(const vtkVolume16Reader&);
00154 };
00155
00156 #endif
00157
00158