00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00035 #ifndef _vtkTemporalPathLineFilter_h
00036 #define _vtkTemporalPathLineFilter_h
00037 
00038 #include "vtkPolyDataAlgorithm.h"
00039 
00040 class vtkPoints;
00041 class vtkCellArray;
00042 class vtkMergePoints;
00043 class vtkFloatArray;
00044 
00045 
00046 #include "vtkSmartPointer.h" 
00047 #include <vtkstd/set>        
00048 class ParticleTrail;
00049 class vtkTemporalPathLineFilterInternals;
00050 typedef vtkSmartPointer<ParticleTrail> TrailPointer;
00051 
00052 
00053 class VTK_GRAPHICS_EXPORT vtkTemporalPathLineFilter : public vtkPolyDataAlgorithm {
00054   public:
00056 
00057     static vtkTemporalPathLineFilter *New();
00058     vtkTypeMacro(vtkTemporalPathLineFilter,vtkPolyDataAlgorithm);
00059     void PrintSelf(ostream& os, vtkIndent indent);
00061 
00063 
00065     vtkSetMacro(MaskPoints,int);
00066     vtkGetMacro(MaskPoints,int);
00068     
00070 
00076     vtkSetMacro(MaxTrackLength,unsigned int);
00077     vtkGetMacro(MaxTrackLength,unsigned int);
00079     
00081 
00087     vtkSetStringMacro(IdChannelArray);
00088     vtkGetStringMacro(IdChannelArray);
00090 
00091     
00092     VTK_LEGACY(void SetScalarArray(const char *));
00093     VTK_LEGACY(const char *GetScalarArray());
00094 
00096 
00102     vtkSetVector3Macro(MaxStepDistance,double);
00103     vtkGetVector3Macro(MaxStepDistance,double);
00105     
00107 
00111     vtkSetMacro(KeepDeadTrails,int);
00112     vtkGetMacro(KeepDeadTrails,int);   
00114 
00117     void Flush();
00118 
00123     void SetSelectionConnection(vtkAlgorithmOutput *algOutput);
00124 
00129     void SetSelection(vtkDataSet *input);
00130 
00131   protected:
00132      vtkTemporalPathLineFilter();
00133     ~vtkTemporalPathLineFilter();
00134 
00135     
00136     
00137     
00138     virtual int FillInputPortInformation (int port, vtkInformation* info);
00139     virtual int FillOutputPortInformation(int port, vtkInformation* info);
00140 
00142 
00143     virtual int RequestInformation (vtkInformation *,
00144                                     vtkInformationVector **,
00145                                     vtkInformationVector *);
00146     
00147     virtual int RequestData(vtkInformation *request,
00148                             vtkInformationVector** inputVector,
00149                             vtkInformationVector* outputVector);
00151 
00152 
00153     TrailPointer GetTrail(vtkIdType i);
00154     void IncrementTrail(
00155       TrailPointer trail, vtkDataSet *input, vtkIdType i);
00156 
00157     
00158     int           NumberOfTimeSteps;
00159     int           MaskPoints;
00160     unsigned int  MaxTrackLength;
00161     unsigned int  LastTrackLength;
00162     int           FirstTime;
00163     char         *IdChannelArray;
00164     double        MaxStepDistance[3];
00165     double        LatestTime;
00166     int           KeepDeadTrails;
00167     int           UsingSelection;
00168     
00169 
00170     vtkSmartPointer<vtkCellArray>                       PolyLines;
00171     vtkSmartPointer<vtkCellArray>                       Vertices;
00172     vtkSmartPointer<vtkPoints>                          LineCoordinates;
00173     vtkSmartPointer<vtkPoints>                          VertexCoordinates;
00174     vtkSmartPointer<vtkFloatArray>                      TrailId;
00175     vtkSmartPointer<vtkTemporalPathLineFilterInternals> Internals;
00176     vtkstd::set<vtkIdType>                              SelectionIds;
00177 
00178     
00179   private:
00180     vtkTemporalPathLineFilter(const vtkTemporalPathLineFilter&);  
00181     void operator=(const vtkTemporalPathLineFilter&);  
00182 };
00183 
00184 #endif