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