VTK
/Users/kitware/Dashboards/MyTests/VTK_BLD_Release_docs/Utilities/Doxygen/dox/Rendering/Core/vtkImageMapper3D.h
Go to the documentation of this file.
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