00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00034 #ifndef __vtkVolumeRayCastCompositeFunction_h
00035 #define __vtkVolumeRayCastCompositeFunction_h
00036
00037 #include "vtkVolumeRayCastFunction.h"
00038
00039 #define VTK_COMPOSITE_CLASSIFY_FIRST 0
00040 #define VTK_COMPOSITE_INTERPOLATE_FIRST 1
00041
00042 class VTK_VOLUMERENDERING_EXPORT vtkVolumeRayCastCompositeFunction : public vtkVolumeRayCastFunction
00043 {
00044 public:
00045 static vtkVolumeRayCastCompositeFunction *New();
00046 vtkTypeMacro(vtkVolumeRayCastCompositeFunction,vtkVolumeRayCastFunction);
00047 void PrintSelf( ostream& os, vtkIndent indent );
00048
00050
00051 vtkSetClampMacro( CompositeMethod, int,
00052 VTK_COMPOSITE_CLASSIFY_FIRST, VTK_COMPOSITE_INTERPOLATE_FIRST );
00053 vtkGetMacro(CompositeMethod,int);
00054 void SetCompositeMethodToInterpolateFirst()
00055 {this->SetCompositeMethod(VTK_COMPOSITE_INTERPOLATE_FIRST);}
00056 void SetCompositeMethodToClassifyFirst()
00057 {this->SetCompositeMethod(VTK_COMPOSITE_CLASSIFY_FIRST);}
00058 const char *GetCompositeMethodAsString(void);
00060
00061
00062 void CastRay( vtkVolumeRayCastDynamicInfo *dynamicInfo,
00063 vtkVolumeRayCastStaticInfo *staticInfo);
00064
00065 float GetZeroOpacityThreshold( vtkVolume *vol );
00066
00067
00068 protected:
00069 vtkVolumeRayCastCompositeFunction();
00070 ~vtkVolumeRayCastCompositeFunction();
00071
00072
00073 void SpecificFunctionInitialize( vtkRenderer *ren,
00074 vtkVolume *vol,
00075 vtkVolumeRayCastStaticInfo *staticInfo,
00076 vtkVolumeRayCastMapper *mapper );
00077
00078
00079 int CompositeMethod;
00080 private:
00081 vtkVolumeRayCastCompositeFunction(const vtkVolumeRayCastCompositeFunction&);
00082 void operator=(const vtkVolumeRayCastCompositeFunction&);
00083 };
00084
00085
00086 #endif