00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00046 #ifndef __vtkCompositeDataPipeline_h
00047 #define __vtkCompositeDataPipeline_h
00048
00049 #include "vtkStreamingDemandDrivenPipeline.h"
00050
00051 class vtkCompositeDataSet;
00052 class vtkInformationDoubleKey;
00053 class vtkInformationIntegerVectorKey;
00054 class vtkInformationObjectBaseKey;
00055 class vtkInformationStringKey;
00056 class vtkInformationDataObjectKey;
00057 class vtkInformationIntegerKey;
00058
00059 class VTK_FILTERING_EXPORT vtkCompositeDataPipeline : public vtkStreamingDemandDrivenPipeline
00060 {
00061 public:
00062 static vtkCompositeDataPipeline* New();
00063 vtkTypeRevisionMacro(vtkCompositeDataPipeline,vtkStreamingDemandDrivenPipeline);
00064 void PrintSelf(ostream& os, vtkIndent indent);
00065
00067
00069 virtual int ProcessRequest(vtkInformation* request,
00070 vtkInformationVector** inInfo,
00071 vtkInformationVector* outInfo);
00073
00076 vtkDataObject* GetCompositeOutputData(int port);
00077
00079
00081 vtkDataObject* GetCompositeInputData(
00082 int port, int index, vtkInformationVector **inInfoVec);
00084
00086 static vtkInformationIntegerKey* REQUIRES_TIME_DOWNSTREAM();
00087
00088 protected:
00089 vtkCompositeDataPipeline();
00090 ~vtkCompositeDataPipeline();
00091
00092 virtual int ForwardUpstream(vtkInformation* request);
00093 virtual int ForwardUpstream(int i, int j, vtkInformation* request);
00094
00095
00096 virtual void CopyDefaultInformation(vtkInformation* request, int direction,
00097 vtkInformationVector** inInfoVec,
00098 vtkInformationVector* outInfoVec);
00099
00100 virtual void CopyFromDataToInformation(
00101 vtkDataObject* dobj, vtkInformation* inInfo);
00102 virtual void PushInformation(vtkInformation*);
00103 virtual void PopInformation (vtkInformation*);
00104
00105 virtual int ExecuteDataObject(vtkInformation* request,
00106 vtkInformationVector** inInfo,
00107 vtkInformationVector* outInfo);
00108
00109 virtual int ExecuteData(vtkInformation* request,
00110 vtkInformationVector** inInfoVec,
00111 vtkInformationVector* outInfoVec);
00112
00113 virtual void ExecuteDataStart(vtkInformation* request,
00114 vtkInformationVector** inInfoVec,
00115 vtkInformationVector* outInfoVec);
00116
00117
00118 virtual int NeedToExecuteData(int outputPort,
00119 vtkInformationVector** inInfoVec,
00120 vtkInformationVector* outInfoVec);
00121
00122
00123 virtual int NeedToExecuteBasedOnTime(vtkInformation *outInfo,
00124 vtkDataObject *dataObject);
00125
00126
00127
00128 virtual int CheckCompositeData(vtkInformation *request,
00129 int port,
00130 vtkInformationVector** inInfoVec,
00131 vtkInformationVector* outInfoVec);
00132
00133
00134
00135
00136 int InLocalLoop;
00137
00138 virtual void ExecuteSimpleAlgorithm(vtkInformation* request,
00139 vtkInformationVector** inInfoVec,
00140 vtkInformationVector* outInfoVec,
00141 int compositePort);
00142 virtual void ExecuteSimpleAlgorithmTime(vtkInformation* request,
00143 vtkInformationVector** inInfoVec,
00144 vtkInformationVector* outInfoVec);
00145 vtkDataObject* ExecuteSimpleAlgorithmForBlock(
00146 vtkInformationVector** inInfoVec,
00147 vtkInformationVector* outInfoVec,
00148 vtkInformation* inInfo,
00149 vtkInformation* outInfo,
00150 vtkInformation* request,
00151 vtkDataObject* dobj);
00152
00153 bool ShouldIterateOverInput(int& compositePort);
00154 bool ShouldIterateTemporalData(vtkInformation *request,
00155 vtkInformationVector** inInfoVec,
00156 vtkInformationVector *outInfoVec);
00157 virtual int InputTypeIsValid(int port, int index,
00158 vtkInformationVector **inInfoVec);
00159
00160 vtkInformation* InformationCache;
00161
00162 vtkInformation* GenericRequest;
00163 vtkInformation* DataObjectRequest;
00164 vtkInformation* InformationRequest;
00165 vtkInformation* UpdateExtentRequest;
00166 vtkInformation* DataRequest;
00167
00168
00169
00170 int SuppressResetPipelineInformation;
00171
00172 virtual void ResetPipelineInformation(int port, vtkInformation*);
00173
00175
00182 vtkCompositeDataSet* CreateOutputCompositeDataSet(
00183 vtkCompositeDataSet* input, int compositePort);
00185
00186
00187 private:
00188 vtkCompositeDataPipeline(const vtkCompositeDataPipeline&);
00189 void operator=(const vtkCompositeDataPipeline&);
00190 };
00191
00192 #endif