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

Rendering/vtkVolumeProperty.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkVolumeProperty.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 =========================================================================*/
00016 
00065 #ifndef __vtkVolumeProperty_h
00066 #define __vtkVolumeProperty_h
00067 
00068 #include "vtkObject.h"
00069 
00070 class vtkPiecewiseFunction;
00071 class vtkTimeStamp;
00072 class vtkColorTransferFunction;
00073 
00074 class VTK_RENDERING_EXPORT vtkVolumeProperty : public vtkObject
00075 {
00076 public:
00077   static vtkVolumeProperty *New();
00078   vtkTypeRevisionMacro(vtkVolumeProperty,vtkObject);
00079   void PrintSelf(ostream& os, vtkIndent indent);
00080 
00083   unsigned long GetMTime();
00084   
00085 
00087 
00088   vtkSetClampMacro( InterpolationType, int,
00089         VTK_NEAREST_INTERPOLATION, VTK_LINEAR_INTERPOLATION);
00090   vtkGetMacro(InterpolationType,int);
00091   void SetInterpolationTypeToNearest() 
00092         {this->SetInterpolationType(VTK_NEAREST_INTERPOLATION);};
00093   void SetInterpolationTypeToLinear() 
00094         {this->SetInterpolationType(VTK_LINEAR_INTERPOLATION);};
00095   const char *GetInterpolationTypeAsString(void);
00097 
00099 
00102   void SetColor( int index, vtkPiecewiseFunction *function );
00103   void SetColor( vtkPiecewiseFunction *f ){this->SetColor(0,f);};
00105   
00106       
00108 
00111   void SetColor( int index, vtkColorTransferFunction *function );
00112   void SetColor( vtkColorTransferFunction *f ){this->SetColor(0,f);};
00114   
00116 
00118   int GetColorChannels( int index );
00119   int GetColorChannels(){return this->GetColorChannels(0);};
00121   
00123 
00124   vtkPiecewiseFunction *GetGrayTransferFunction( int index );
00125   vtkPiecewiseFunction *GetGrayTransferFunction()
00126     {return this->GetGrayTransferFunction(0);};
00128   
00130 
00131   vtkColorTransferFunction *GetRGBTransferFunction( int index );
00132   vtkColorTransferFunction *GetRGBTransferFunction()
00133     {return this->GetRGBTransferFunction(0);};
00135   
00137 
00139   void SetScalarOpacity( int index, vtkPiecewiseFunction *function );
00140   void SetScalarOpacity( vtkPiecewiseFunction *f )
00141     {this->SetScalarOpacity(0,f);};
00143   
00145 
00146   vtkPiecewiseFunction *GetScalarOpacity( int index );
00147   vtkPiecewiseFunction *GetScalarOpacity()
00148     {return this->GetScalarOpacity(0);};
00150   
00151       
00153 
00155   void SetGradientOpacity( int index, vtkPiecewiseFunction *function );
00156   void SetGradientOpacity( vtkPiecewiseFunction *function )
00157     {this->SetGradientOpacity(0,function);}
00159   
00161 
00163   vtkPiecewiseFunction *GetGradientOpacity( int index );
00164   vtkPiecewiseFunction *GetGradientOpacity()
00165     {return this->GetGradientOpacity( 0 );}
00167   
00169 
00177   void SetShade( int index, int value );
00178   void SetShade( int value ) {this->SetShade(0,value);}
00179   int GetShade( int index );
00180   int GetShade() {return this->GetShade(0);}
00181   void ShadeOn( int index );
00182   void ShadeOn() {this->ShadeOn(0);}
00183   void ShadeOff( int index );
00184   void ShadeOff() {this->ShadeOff(0);}
00186   
00187 
00189 
00190   void SetAmbient( int index, float value );
00191   void SetAmbient( float value ) {this->SetAmbient( 0, value );}
00192   float GetAmbient( int index );
00193   float GetAmbient() {return this->GetAmbient(0);}
00195   
00196 
00198 
00199   void SetDiffuse( int index, float value );
00200   void SetDiffuse( float value ) {this->SetDiffuse( 0, value );}
00201   float GetDiffuse( int index );
00202   float GetDiffuse() {return this->GetDiffuse(0);}
00204 
00206 
00207   void SetSpecular( int index, float value );
00208   void SetSpecular( float value ) {this->SetSpecular( 0, value );}
00209   float GetSpecular( int index );
00210   float GetSpecular() {return this->GetSpecular(0);}
00212 
00214 
00215   void SetSpecularPower( int index, float value );
00216   void SetSpecularPower( float value ) {this->SetSpecularPower( 0, value );}
00217   float GetSpecularPower( int index );
00218   float GetSpecularPower() {return this->GetSpecularPower(0);}
00220 
00221 //BTX
00226   void UpdateMTimes(); 
00227 
00229 
00231   vtkTimeStamp GetGradientOpacityMTime( int index );
00232   vtkTimeStamp GetGradientOpacityMTime()
00233     { return this->GetGradientOpacityMTime(0); }  
00235       
00237 
00239   vtkTimeStamp GetScalarOpacityMTime( int index );
00240   vtkTimeStamp GetScalarOpacityMTime()
00241     { return this->GetScalarOpacityMTime(0); }  
00243 
00245 
00247   vtkTimeStamp GetRGBTransferFunctionMTime( int index );
00248   vtkTimeStamp GetRGBTransferFunctionMTime()
00249     { return this->GetRGBTransferFunctionMTime(0); }  
00251 
00253 
00255   vtkTimeStamp GetGrayTransferFunctionMTime( int index );
00256   vtkTimeStamp GetGrayTransferFunctionMTime()
00257     { return this->GetGrayTransferFunctionMTime(0); }  
00259 //ETX
00260 
00261 
00262 protected:
00263   vtkVolumeProperty();
00264   ~vtkVolumeProperty();
00265 
00266   int                           InterpolationType;
00267 
00268   int                           ColorChannels[VTK_MAX_VRCOMP];
00269 
00270   vtkPiecewiseFunction          *GrayTransferFunction[VTK_MAX_VRCOMP];
00271   vtkTimeStamp                  GrayTransferFunctionMTime[VTK_MAX_VRCOMP];
00272 
00273   vtkColorTransferFunction      *RGBTransferFunction[VTK_MAX_VRCOMP];
00274   vtkTimeStamp                  RGBTransferFunctionMTime[VTK_MAX_VRCOMP];
00275 
00276   vtkPiecewiseFunction          *ScalarOpacity[VTK_MAX_VRCOMP];
00277   vtkTimeStamp                  ScalarOpacityMTime[VTK_MAX_VRCOMP];
00278 
00279   vtkPiecewiseFunction          *GradientOpacity[VTK_MAX_VRCOMP];
00280   vtkTimeStamp                  GradientOpacityMTime[VTK_MAX_VRCOMP];
00281 
00282   int                           Shade[VTK_MAX_VRCOMP];
00283   float                         Ambient[VTK_MAX_VRCOMP];
00284   float                         Diffuse[VTK_MAX_VRCOMP];
00285   float                         Specular[VTK_MAX_VRCOMP];
00286   float                         SpecularPower[VTK_MAX_VRCOMP];
00287 
00288 private:
00289   vtkVolumeProperty(const vtkVolumeProperty&);  // Not implemented.
00290   void operator=(const vtkVolumeProperty&);  // Not implemented.
00291 };
00292 
00294 inline const char *vtkVolumeProperty::GetInterpolationTypeAsString(void)
00295 {
00296   if( this->InterpolationType == VTK_NEAREST_INTERPOLATION )
00297     {
00298     return "Nearest Neighbor";
00299     }
00300   else if( this->InterpolationType == VTK_LINEAR_INTERPOLATION )
00301     {
00302     return "Linear";
00303     }
00304   else
00305     {
00306     return "Unknown";
00307     }
00308 }
00309 
00310 #endif