text: /*=========================================================================
  
    Program:   Visualization Toolkit
    Module:    vtkVolumeRayCastCompositeFunction.h
  
    Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
    All rights reserved.
    See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
  
       This software is distributed WITHOUT ANY WARRANTY; without even
       the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
       PURPOSE.  See the above copyright notice for more information.
  
  =========================================================================*/
  // .NAME vtkVolumeRayCastCompositeFunction - a ray function for compositing
  
  // .SECTION Description
  // vtkVolumeRayCastCompositeFunction is a ray function that can be used
  // within a vtkVolumeRayCastMapper. This function performs compositing along
  // the ray according to the properties stored in the vtkVolumeProperty for
  // the volume.
  
  // .SECTION See Also
  // vtkVolumeRayCastMapper vtkVolumeProperty vtkVolume
  // @deprecated
  
  #ifndef vtkVolumeRayCastCompositeFunction_h
  #define vtkVolumeRayCastCompositeFunction_h
  
  #include "vtkRenderingVolumeModule.h" // For export macro
  #include "vtkVolumeRayCastFunction.h"
  
  #if !defined(VTK_LEGACY_REMOVE)
  #define VTK_COMPOSITE_CLASSIFY_FIRST 0
  #define VTK_COMPOSITE_INTERPOLATE_FIRST 1
  
  class VTKRENDERINGVOLUME_EXPORT vtkVolumeRayCastCompositeFunction : public vtkVolumeRayCastFunction
  {
  public:
    static vtkVolumeRayCastCompositeFunction *New();
    vtkTypeMacro(vtkVolumeRayCastCompositeFunction,vtkVolumeRayCastFunction);
    void PrintSelf( ostream& os, vtkIndent indent );
  
    // Description:
    // Set the CompositeMethod to either Classify First or Interpolate First
    vtkSetClampMacro( CompositeMethod, int,
          VTK_COMPOSITE_CLASSIFY_FIRST, VTK_COMPOSITE_INTERPOLATE_FIRST );
    vtkGetMacro(CompositeMethod,int);
    void SetCompositeMethodToInterpolateFirst()
      {this->SetCompositeMethod(VTK_COMPOSITE_INTERPOLATE_FIRST);}
    void SetCompositeMethodToClassifyFirst()
      {this->SetCompositeMethod(VTK_COMPOSITE_CLASSIFY_FIRST);}
    const char *GetCompositeMethodAsString(void);
  
    void CastRay( vtkVolumeRayCastDynamicInfo *dynamicInfo,
                  vtkVolumeRayCastStaticInfo *staticInfo);
  
    float GetZeroOpacityThreshold( vtkVolume *vol );
  
  protected:
    vtkVolumeRayCastCompositeFunction();
    ~vtkVolumeRayCastCompositeFunction();
  
    void SpecificFunctionInitialize( vtkRenderer *ren,
                                     vtkVolume   *vol,
                                     vtkVolumeRayCastStaticInfo *staticInfo,
                                     vtkVolumeRayCastMapper *mapper );
  
    int           CompositeMethod;
  private:
    vtkVolumeRayCastCompositeFunction(const vtkVolumeRayCastCompositeFunction&);  // Not implemented.
    void operator=(const vtkVolumeRayCastCompositeFunction&);  // Not implemented.
  };
  
  
  #endif // VTK_LEGACY_REMOVE
  #endif
  