VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkVolume16Reader.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00053 #ifndef __vtkVolume16Reader_h 00054 #define __vtkVolume16Reader_h 00055 00056 #include "vtkIOImageModule.h" // For export macro 00057 #include "vtkVolumeReader.h" 00058 00059 class vtkTransform; 00060 class vtkUnsignedCharArray; 00061 class vtkUnsignedShortArray; 00062 00063 #define VTK_FILE_BYTE_ORDER_BIG_ENDIAN 0 00064 #define VTK_FILE_BYTE_ORDER_LITTLE_ENDIAN 1 00065 00066 class VTKIOIMAGE_EXPORT vtkVolume16Reader : public vtkVolumeReader 00067 { 00068 public: 00069 vtkTypeMacro(vtkVolume16Reader,vtkVolumeReader); 00070 void PrintSelf(ostream& os, vtkIndent indent); 00071 00075 static vtkVolume16Reader *New(); 00076 00078 00079 vtkSetVector2Macro(DataDimensions,int); 00080 vtkGetVectorMacro(DataDimensions,int,2); 00082 00084 00086 vtkSetMacro(DataMask,unsigned short); 00087 vtkGetMacro(DataMask,unsigned short); 00089 00091 00092 vtkSetMacro(HeaderSize,int); 00093 vtkGetMacro(HeaderSize,int); 00095 00097 00107 void SetDataByteOrderToBigEndian(); 00108 void SetDataByteOrderToLittleEndian(); 00109 int GetDataByteOrder(); 00110 void SetDataByteOrder(int); 00111 const char *GetDataByteOrderAsString(); 00113 00115 00116 vtkSetMacro(SwapBytes,int); 00117 vtkGetMacro(SwapBytes,int); 00118 vtkBooleanMacro(SwapBytes,int); 00120 00122 00125 virtual void SetTransform(vtkTransform*); 00126 vtkGetObjectMacro(Transform,vtkTransform); 00128 00130 vtkImageData *GetImage(int ImageNumber); 00131 00132 protected: 00133 vtkVolume16Reader(); 00134 ~vtkVolume16Reader(); 00135 00136 virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00137 virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00138 int DataDimensions[2]; 00139 unsigned short DataMask; 00140 int SwapBytes; 00141 int HeaderSize; 00142 vtkTransform *Transform; 00143 00144 void TransformSlice (unsigned short *slice, unsigned short *pixels, int k, int dimensions[3], int bounds[3]); 00145 void ComputeTransformedDimensions(int dimensions[3]); 00146 void ComputeTransformedBounds(int bounds[6]); 00147 void ComputeTransformedSpacing(double Spacing[3]); 00148 void ComputeTransformedOrigin(double origin[3]); 00149 void AdjustSpacingAndOrigin(int dimensions[3], double Spacing[3], double origin[3]); 00150 void ReadImage(int ImageNumber, vtkUnsignedShortArray *); 00151 void ReadVolume(int FirstImage, int LastImage, vtkUnsignedShortArray *); 00152 int Read16BitImage(FILE *fp, unsigned short *pixels, int xsize, int ysize, 00153 int skip, int swapBytes); 00154 00155 private: 00156 vtkVolume16Reader(const vtkVolume16Reader&); // Not implemented. 00157 void operator=(const vtkVolume16Reader&); // Not implemented. 00158 }; 00159 00160 #endif 00161 00162