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

dox/Rendering/vtkVolumeProMapper.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkVolumeProMapper.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 00015 =========================================================================*/ 00051 #ifndef __vtkVolumeProMapper_h 00052 #define __vtkVolumeProMapper_h 00053 00054 #include "vtkVolumeMapper.h" 00055 #include "vtkToolkits.h" // Needed for VTK_HAVE_VP1000 00056 #include "vtkVersion.h" // Needed for VTK_*_VERSION 00057 00058 //BTX 00059 #if defined (VTK_HAVE_VP1000) || defined (VTK_FORCE_COMPILE_VP1000) 00060 namespace vli3 { 00061 #endif 00062 class VLIContext; 00063 class VLIVolume; 00064 class VLILookupTable; 00065 class VLILight; 00066 class VLICutPlane; 00067 #if defined (VTK_HAVE_VP1000) || defined (VTK_FORCE_COMPILE_VP1000) 00068 } 00069 using namespace vli3; 00070 #endif 00071 //ETX 00072 00073 #define VTK_BLEND_MODE_COMPOSITE 0 00074 #define VTK_BLEND_MODE_MAX_INTENSITY 1 00075 #define VTK_BLEND_MODE_MIN_INTENSITY 2 00076 00077 #define VTK_CURSOR_TYPE_CROSSHAIR 0 00078 #define VTK_CURSOR_TYPE_PLANE 1 00079 00080 #define VTK_VOLUME_8BIT 0 00081 #define VTK_VOLUME_12BIT_UPPER 1 00082 #define VTK_VOLUME_12BIT_LOWER 2 00083 //BTX 00084 #if ((VTK_MAJOR_VERSION == 3)&&(VTK_MINOR_VERSION == 2)) 00085 #define VTK_VOLUME_PRO_MAPPER_EXPORT VTK_EXPORT 00086 #else 00087 #define VTK_VOLUME_PRO_MAPPER_EXPORT VTK_RENDERING_EXPORT 00088 #endif 00089 //ETX 00090 00091 class VTK_VOLUME_PRO_MAPPER_EXPORT vtkVolumeProMapper : public vtkVolumeMapper 00092 { 00093 public: 00094 vtkTypeRevisionMacro(vtkVolumeProMapper,vtkVolumeMapper); 00095 void PrintSelf( ostream& os, vtkIndent indent ); 00096 00098 static vtkVolumeProMapper *New(); 00099 00101 virtual void Render( vtkRenderer *, vtkVolume * ) {} 00102 00104 00105 vtkSetClampMacro( BlendMode, int, 00106 VTK_BLEND_MODE_COMPOSITE, VTK_BLEND_MODE_MIN_INTENSITY ); 00107 vtkGetMacro(BlendMode,int); 00108 void SetBlendModeToComposite() 00109 {this->SetBlendMode(VTK_BLEND_MODE_COMPOSITE);}; 00110 void SetBlendModeToMaximumIntensity() 00111 {this->SetBlendMode(VTK_BLEND_MODE_MAX_INTENSITY);}; 00112 void SetBlendModeToMinimumIntensity() 00113 {this->SetBlendMode(VTK_BLEND_MODE_MIN_INTENSITY);}; 00114 const char *GetBlendModeAsString(void); 00116 00118 00119 vtkSetVector6Macro( SubVolume, int ); 00120 vtkGetVectorMacro( SubVolume, int, 6 ); 00122 00124 00125 vtkSetClampMacro( Cursor, int, 0, 1 ); 00126 vtkGetMacro( Cursor, int ); 00127 vtkBooleanMacro( Cursor, int ); 00129 00131 00132 vtkSetClampMacro( CursorType, int, 00133 VTK_CURSOR_TYPE_CROSSHAIR, VTK_CURSOR_TYPE_PLANE ); 00134 vtkGetMacro( CursorType, int ); 00135 void SetCursorTypeToCrossHair() 00136 { this->SetCursorType( VTK_CURSOR_TYPE_CROSSHAIR ); }; 00137 void SetCursorTypeToPlane() 00138 { this->SetCursorType( VTK_CURSOR_TYPE_PLANE ); }; 00139 const char *GetCursorTypeAsString( void ); 00141 00143 00144 vtkSetVector3Macro( CursorPosition, double ); 00145 vtkGetVectorMacro( CursorPosition, double, 3 ); 00147 00149 00150 vtkSetVector3Macro( CursorXAxisColor, double ); 00151 vtkGetVectorMacro( CursorXAxisColor, double, 3 ); 00152 vtkSetVector3Macro( CursorYAxisColor, double ); 00153 vtkGetVectorMacro( CursorYAxisColor, double, 3 ); 00154 vtkSetVector3Macro( CursorZAxisColor, double ); 00155 vtkGetVectorMacro( CursorZAxisColor, double, 3 ); 00157 00159 00160 vtkSetClampMacro( SuperSampling, int, 0, 1 ); 00161 vtkGetMacro( SuperSampling, int ); 00162 vtkBooleanMacro( SuperSampling, int ); 00164 00166 00167 void SetSuperSamplingFactor( double x, double y, double z ); 00168 void SetSuperSamplingFactor( double f[3] ) 00169 { this->SetSuperSamplingFactor( f[0], f[1], f[2] ); }; 00170 vtkGetVectorMacro( SuperSamplingFactor, double, 3 ); 00172 00174 00175 vtkSetClampMacro( CutPlane, int, 0, 1 ); 00176 vtkGetMacro( CutPlane, int ); 00177 vtkBooleanMacro( CutPlane, int ); 00179 00181 00182 vtkSetVector4Macro( CutPlaneEquation, double ); 00183 vtkGetVectorMacro( CutPlaneEquation, double, 4 ); 00185 00187 00188 vtkSetClampMacro( CutPlaneThickness, double, 0.0, 9.99e10 ); 00189 vtkGetMacro( CutPlaneThickness, double ); 00191 00193 00194 vtkSetClampMacro( CutPlaneFallOffDistance, int, 0, 16 ); 00195 vtkGetMacro( CutPlaneFallOffDistance, int ); 00197 00199 00200 vtkSetClampMacro( GradientOpacityModulation, int, 0, 1 ); 00201 vtkGetMacro( GradientOpacityModulation, int ); 00202 vtkBooleanMacro( GradientOpacityModulation, int ); 00204 00206 00207 vtkSetClampMacro( GradientDiffuseModulation, int, 0, 1 ); 00208 vtkGetMacro( GradientDiffuseModulation, int ); 00209 vtkBooleanMacro( GradientDiffuseModulation, int ); 00211 00213 00214 vtkSetClampMacro( GradientSpecularModulation, int, 0, 1 ); 00215 vtkGetMacro( GradientSpecularModulation, int ); 00216 vtkBooleanMacro( GradientSpecularModulation, int ); 00218 00220 00221 vtkGetMacro( NoHardware, int ); 00222 vtkGetMacro( WrongVLIVersion, int ); 00224 00226 00227 vtkGetMacro( NumberOfBoards, int ); 00228 vtkGetMacro( MajorBoardVersion, int ); 00229 vtkGetMacro( MinorBoardVersion, int ); 00230 virtual int GetAvailableBoardMemory() { return 0; } 00231 virtual void GetLockSizesForBoardMemory( unsigned int vtkNotUsed(type), 00232 unsigned int * vtkNotUsed(xSize), 00233 unsigned int * vtkNotUsed(ySize), 00234 unsigned int * vtkNotUsed(zSize)) {}; 00236 00238 00240 vtkSetClampMacro(IntermixIntersectingGeometry, int, 0, 1); 00241 vtkGetMacro(IntermixIntersectingGeometry, int); 00242 vtkBooleanMacro(IntermixIntersectingGeometry, int); 00244 00245 protected: 00246 vtkVolumeProMapper(); 00247 ~vtkVolumeProMapper(); 00248 // Make sure everything is OK for rendering 00249 int StatusOK(); 00250 00251 // The volume context - create it once and keep it around 00252 VLIContext *Context; 00253 00254 // The Volume, and the Input that was used to build the volume 00255 // and the time at which it was last built. 00256 VLIVolume *Volume; 00257 vtkImageData *VolumeInput; 00258 vtkTimeStamp *VolumeBuildTime; 00259 00260 // The type of data in the volume - 8bit, 12bit upper, or 12bit lower 00261 int VolumeDataType; 00262 00263 // The lookup table for RGBA - create it once then modify it as 00264 // necessary 00265 VLILookupTable *LookupTable; 00266 00267 // The blending mode to use 00268 int BlendMode; 00269 00270 // The lights, and how many of them there are. Not all of them 00271 // are turned on or used. 00272 VLILight **Lights; 00273 int NumberOfLights; 00274 00275 // The subvolume extent (xmin, xmax, ymin, ymax, zmin, zmax) 00276 int SubVolume[6]; 00277 00278 // The cursor parameters 00279 int Cursor; 00280 int CursorType; 00281 double CursorPosition[3]; 00282 double CursorXAxisColor[3]; 00283 double CursorYAxisColor[3]; 00284 double CursorZAxisColor[3]; 00285 00286 // The cut plane parameters 00287 int CutPlane; 00288 VLICutPlane *Cut; 00289 double CutPlaneEquation[4]; 00290 double CutPlaneThickness; 00291 int CutPlaneFallOffDistance; 00292 00293 // The supersampling parameters 00294 int SuperSampling; 00295 double SuperSamplingFactor[3]; 00296 00297 // The gradient modulation flags 00298 int GradientOpacityModulation; 00299 int GradientDiffuseModulation; 00300 int GradientSpecularModulation; 00301 00302 // Some board properties 00303 int NumberOfBoards; 00304 int MajorBoardVersion; 00305 int MinorBoardVersion; 00306 int GradientTableSize; 00307 00308 // Some error conditions that may occur during initialization 00309 int NoHardware; 00310 int WrongVLIVersion; 00311 int DisplayedMessage; 00312 00313 // The embedded geometry flag 00314 int IntermixIntersectingGeometry; 00315 00316 //BTX 00317 #if ((VTK_MAJOR_VERSION == 3)&&(VTK_MINOR_VERSION == 2)) 00318 // WARNING: INTERNAL METHOD - NOT FOR GENERAL USE 00319 virtual int GetMapperType() {return VTK_FRAMEBUFFER_VOLUME_MAPPER;}; 00320 #endif 00321 //ETX 00322 00323 private: 00324 vtkVolumeProMapper(const vtkVolumeProMapper&); // Not implemented. 00325 void operator=(const vtkVolumeProMapper&); // Not implemented. 00326 }; 00327 00329 inline const char *vtkVolumeProMapper::GetBlendModeAsString() 00330 { 00331 switch ( this->BlendMode ) 00332 { 00333 case VTK_BLEND_MODE_COMPOSITE: 00334 return "Composite"; 00335 case VTK_BLEND_MODE_MAX_INTENSITY: 00336 return "Maximum Intensity"; 00337 case VTK_BLEND_MODE_MIN_INTENSITY: 00338 return "Minimum Intensity"; 00339 default: 00340 return "Unknown Blend Mode"; 00341 } 00342 } 00343 00345 inline const char *vtkVolumeProMapper::GetCursorTypeAsString() 00346 { 00347 switch ( this->CursorType ) 00348 { 00349 case VTK_CURSOR_TYPE_CROSSHAIR: 00350 return "Crosshair"; 00351 case VTK_CURSOR_TYPE_PLANE: 00352 return "Plane"; 00353 default: 00354 return "Unknown Cursor Type"; 00355 } 00356 } 00357 00358 #endif 00359