VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkImageMapper3D.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 =========================================================================*/ 00031 #ifndef vtkImageMapper3D_h 00032 #define vtkImageMapper3D_h 00033 00034 #include "vtkRenderingCoreModule.h" // For export macro 00035 #include "vtkAbstractMapper3D.h" 00036 00037 class vtkRenderer; 00038 class vtkProp3D; 00039 class vtkPoints; 00040 class vtkMatrix4x4; 00041 class vtkLookupTable; 00042 class vtkScalarsToColors; 00043 class vtkImageSlice; 00044 class vtkImageProperty; 00045 class vtkImageData; 00046 class vtkMultiThreader; 00047 class vtkImageToImageMapper3DFriendship; 00048 00049 class VTKRENDERINGCORE_EXPORT vtkImageMapper3D : public vtkAbstractMapper3D 00050 { 00051 public: 00052 vtkTypeMacro(vtkImageMapper3D, vtkAbstractMapper3D); 00053 void PrintSelf(ostream& os, vtkIndent indent); 00054 00056 virtual void Render(vtkRenderer *renderer, vtkImageSlice *prop) = 0; 00057 00061 virtual void ReleaseGraphicsResources(vtkWindow *) = 0; 00062 00064 00065 void SetInputData(vtkImageData *input); 00066 vtkImageData *GetInput(); 00067 vtkDataSet *GetDataSetInput(); 00068 vtkDataObject *GetDataObjectInput(); 00070 00072 00075 vtkSetMacro(Border, int); 00076 vtkBooleanMacro(Border, int); 00077 vtkGetMacro(Border, int); 00079 00081 00085 vtkSetMacro(Background, int); 00086 vtkBooleanMacro(Background, int); 00087 vtkGetMacro(Background, int); 00089 00091 00094 vtkSetMacro(SliceAtFocalPoint, int); 00095 vtkBooleanMacro(SliceAtFocalPoint, int); 00096 vtkGetMacro(SliceAtFocalPoint, int); 00098 00100 00103 vtkSetMacro(SliceFacesCamera, int); 00104 vtkBooleanMacro(SliceFacesCamera, int); 00105 vtkGetMacro(SliceFacesCamera, int); 00107 00109 00114 vtkGetObjectMacro(SlicePlane, vtkPlane); 00116 00118 00121 virtual void GetSlicePlaneInDataCoords(vtkMatrix4x4 *propMatrix, 00122 double plane[4]); 00124 00126 00127 vtkSetClampMacro(NumberOfThreads, int, 1, VTK_MAX_THREADS); 00128 vtkGetMacro(NumberOfThreads, int); 00130 00132 00139 vtkSetMacro(Streaming, int); 00140 vtkGetMacro(Streaming, int); 00141 vtkBooleanMacro(Streaming, int); 00143 00144 protected: 00145 vtkImageMapper3D(); 00146 ~vtkImageMapper3D(); 00147 00149 00150 virtual int FillInputPortInformation(int port, vtkInformation* info); 00151 virtual int FillOutputPortInformation(int port, vtkInformation* info); 00153 00155 00156 virtual int ProcessRequest(vtkInformation* request, 00157 vtkInformationVector** inInfo, 00158 vtkInformationVector* outInfo); 00160 00162 00164 static void CheckerboardRGBA( 00165 unsigned char *data, int xsize, int ysize, 00166 double originx, double originy, double spacingx, double spacingy); 00168 00170 00173 unsigned char *MakeTextureData( 00174 vtkImageProperty *property, vtkImageData *input, int extent[6], 00175 int &xsize, int &ysize, int &bytesPerPixel, bool &reuseTexture, 00176 bool &reuseData); 00178 00180 00182 void MakeTextureGeometry( 00183 const int extent[6], double coords[12], double tcoords[8]); 00185 00187 00192 virtual void ComputeTextureSize( 00193 const int extent[6], int &xdim, int &ydim, 00194 int imageSize[2], int textureSize[2]); 00196 00199 vtkRenderer *GetCurrentRenderer(); 00200 00202 vtkImageSlice *GetCurrentProp() { return this->CurrentProp; } 00203 00206 vtkMatrix4x4 *GetDataToWorldMatrix(); 00207 00210 void GetBackgroundColor(vtkImageProperty *property, double color[4]); 00211 00212 int Border; 00213 int Background; 00214 vtkScalarsToColors *DefaultLookupTable; 00215 vtkMultiThreader *Threader; 00216 int NumberOfThreads; 00217 int Streaming; 00218 00219 // The slice. 00220 vtkPlane *SlicePlane; 00221 int SliceAtFocalPoint; 00222 int SliceFacesCamera; 00223 00224 // Information about the image, updated by UpdateInformation 00225 double DataSpacing[3]; 00226 double DataOrigin[3]; 00227 int DataWholeExtent[6]; 00228 00229 // Set by vtkImageStack when doing multi-pass rendering 00230 bool MatteEnable; 00231 bool ColorEnable; 00232 bool DepthEnable; 00233 00234 private: 00235 // The prop this mapper is attached to, or zero if none. 00236 vtkImageSlice *CurrentProp; 00237 vtkRenderer *CurrentRenderer; 00238 00239 // The cached data-to-world matrix 00240 vtkMatrix4x4 *DataToWorldMatrix; 00241 00242 vtkImageMapper3D(const vtkImageMapper3D&); // Not implemented. 00243 void operator=(const vtkImageMapper3D&); // Not implemented. 00244 00245 friend class vtkImageToImageMapper3DFriendship; 00246 }; 00247 00248 #endif