00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00078 #ifndef __vtkLineIntegralConvolution2D_h
00079 #define __vtkLineIntegralConvolution2D_h
00080 
00081 #include "vtkObject.h"
00082 
00083 class vtkRenderWindow;
00084 class vtkTextureObject;
00085 
00086 class VTK_RENDERING_EXPORT vtkLineIntegralConvolution2D : public vtkObject
00087 {
00088 public:
00089 
00090   static vtkLineIntegralConvolution2D * New();
00091   vtkTypeMacro( vtkLineIntegralConvolution2D, vtkObject );
00092   void PrintSelf( ostream & os, vtkIndent indent );
00093   
00095 
00101   vtkSetMacro( EnhancedLIC, int );
00102   vtkGetMacro( EnhancedLIC, int );
00103   vtkBooleanMacro( EnhancedLIC, int );
00105   
00107 
00109   vtkSetMacro( LICForSurface, int );
00110   vtkGetMacro( LICForSurface, int );
00111   vtkBooleanMacro( LICForSurface, int );
00113   
00115 
00117   vtkSetMacro( NumberOfSteps, int );
00118   vtkGetMacro( NumberOfSteps, int );
00120   
00122 
00128   vtkSetClampMacro( LICStepSize, double, 0.0, 1.0 );
00129   vtkGetMacro( LICStepSize, double );
00131   
00133 
00134   void SetNoise( vtkTextureObject * noise );
00135   vtkGetObjectMacro( Noise, vtkTextureObject );
00137   
00139 
00140   void SetVectorField( vtkTextureObject * vectorField );
00141   vtkGetObjectMacro( VectorField, vtkTextureObject );
00143   
00145 
00148   vtkSetVector2Macro( ComponentIds, int );
00149   vtkGetVector2Macro( ComponentIds, int );
00151 
00153 
00160   vtkSetVector2Macro( GridSpacings, double );
00161   vtkGetVector2Macro( GridSpacings, double );
00163   
00165 
00169   vtkSetClampMacro( TransformVectors, int, 0, 1 );
00170   vtkBooleanMacro( TransformVectors, int );
00171   vtkGetMacro( TransformVectors, int );
00173   
00175 
00176   vtkSetClampMacro( Magnification, int, 1, VTK_INT_MAX );
00177   vtkGetMacro( Magnification, int );
00179   
00181 
00184   void SetVectorShiftScale( double shift, double scale )
00185     {
00186     this->VectorShift = shift;
00187     this->VectorScale = scale;
00188     this->Modified();
00189     }
00191     
00193   static bool IsSupported( vtkRenderWindow * renWin );
00194   
00196   int Execute();
00197 
00199 
00203   int Execute( unsigned int extent[4] );
00204   int Execute( int extent[4] );
00206   
00208 
00209   void SetLIC( vtkTextureObject * lic );
00210   vtkGetObjectMacro( LIC, vtkTextureObject );
00212  
00213 protected:
00214    vtkLineIntegralConvolution2D();
00215   ~vtkLineIntegralConvolution2D();
00216  
00217   int     Magnification;
00218   int     NumberOfSteps;
00219   int     LICForSurface;
00220   int     EnhancedLIC;
00221   double  LICStepSize;
00222   double  VectorShift;
00223   double  VectorScale;
00224   
00225   int     TransformVectors;
00226   int     ComponentIds[2];
00227   double  GridSpacings[2];
00228   
00229   vtkTextureObject * VectorField;
00230   vtkTextureObject * Noise;
00231   vtkTextureObject * LIC;
00232   
00233 private:
00234   vtkLineIntegralConvolution2D( const vtkLineIntegralConvolution2D & ); 
00235   void operator = ( const vtkLineIntegralConvolution2D & );             
00236 
00237 };
00238 
00239 #endif