Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

Rendering/vtkVolumeMapper.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkVolumeMapper.h,v $
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 =========================================================================*/
00027 #ifndef __vtkVolumeMapper_h
00028 #define __vtkVolumeMapper_h
00029 
00030 #include "vtkAbstractVolumeMapper.h"
00031 
00032 class vtkRenderer;
00033 class vtkVolume;
00034 class vtkImageData;
00035 
00036 #define VTK_CROP_SUBVOLUME              0x0002000
00037 #define VTK_CROP_FENCE                  0x2ebfeba
00038 #define VTK_CROP_INVERTED_FENCE         0x5140145
00039 #define VTK_CROP_CROSS                  0x0417410
00040 #define VTK_CROP_INVERTED_CROSS         0x7be8bef
00041 
00042 class vtkWindow;
00043 class vtkImageClip;
00044 
00045 class VTK_RENDERING_EXPORT vtkVolumeMapper : public vtkAbstractVolumeMapper
00046 {
00047 public:
00048   vtkTypeRevisionMacro(vtkVolumeMapper,vtkAbstractVolumeMapper);
00049   void PrintSelf( ostream& os, vtkIndent indent );
00050 
00052 
00053   virtual void SetInput( vtkImageData * );
00054   virtual void SetInput( vtkDataSet * );
00055   vtkImageData *GetInput();
00057 
00059 
00061   vtkSetClampMacro(Cropping,int,0,1);
00062   vtkGetMacro(Cropping,int);
00063   vtkBooleanMacro(Cropping,int);
00065 
00067 
00070   vtkSetVector6Macro( CroppingRegionPlanes, double );
00071   vtkGetVectorMacro(  CroppingRegionPlanes, double, 6 );
00073 
00075 
00077   vtkGetVectorMacro( VoxelCroppingRegionPlanes, double, 6 );
00079   
00081 
00090   vtkSetClampMacro( CroppingRegionFlags, int, 0x0, 0x7ffffff );
00091   vtkGetMacro( CroppingRegionFlags, int );
00092   void SetCroppingRegionFlagsToSubVolume() 
00093     {this->SetCroppingRegionFlags( VTK_CROP_SUBVOLUME );};
00094   void SetCroppingRegionFlagsToFence() 
00095     {this->SetCroppingRegionFlags( VTK_CROP_FENCE );};
00096   void SetCroppingRegionFlagsToInvertedFence() 
00097     {this->SetCroppingRegionFlags( VTK_CROP_INVERTED_FENCE );};
00098   void SetCroppingRegionFlagsToCross() 
00099     {this->SetCroppingRegionFlags( VTK_CROP_CROSS );};
00100   void SetCroppingRegionFlagsToInvertedCross() 
00101     {this->SetCroppingRegionFlags( VTK_CROP_INVERTED_CROSS );};
00103 
00104 //BTX  
00105 
00108   virtual void Render(vtkRenderer *ren, vtkVolume *vol)=0;
00109 
00114   virtual void ReleaseGraphicsResources(vtkWindow *) {};
00115   
00116 //ETX
00117 
00119 
00121   virtual void SetUseImageClipper(int);
00122   vtkGetMacro(UseImageClipper, int );
00123   vtkBooleanMacro(UseImageClipper, int );
00125   
00126 protected:
00127   vtkVolumeMapper();
00128   ~vtkVolumeMapper();
00129 
00130   // Cropping variables, and a method for converting the world
00131   // coordinate cropping region planes to voxel coordinates
00132   int                  Cropping;
00133   double               CroppingRegionPlanes[6];
00134   double               VoxelCroppingRegionPlanes[6];
00135   int                  CroppingRegionFlags;
00136   void ConvertCroppingRegionPlanesToVoxels();
00137   
00138   // Clipper used on input to ensure it is the right size
00139   int UseImageClipper;
00140   vtkImageClip        *ImageClipper;
00141   
00142   
00143 private:
00144   vtkVolumeMapper(const vtkVolumeMapper&);  // Not implemented.
00145   void operator=(const vtkVolumeMapper&);  // Not implemented.
00146 };
00147 
00148 
00149 #endif
00150 
00151