00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00049 #ifndef __vtkCompositeDataPipeline_h
00050 #define __vtkCompositeDataPipeline_h
00051
00052 #include "vtkStreamingDemandDrivenPipeline.h"
00053
00054 class vtkCompositeDataSet;
00055 class vtkInformationDoubleKey;
00056 class vtkInformationIntegerVectorKey;
00057 class vtkInformationObjectBaseKey;
00058 class vtkInformationStringKey;
00059 class vtkInformationDataObjectKey;
00060 class vtkInformationIntegerKey;
00061
00062 class VTK_FILTERING_EXPORT vtkCompositeDataPipeline : public vtkStreamingDemandDrivenPipeline
00063 {
00064 public:
00065 static vtkCompositeDataPipeline* New();
00066 vtkTypeMacro(vtkCompositeDataPipeline,vtkStreamingDemandDrivenPipeline);
00067 void PrintSelf(ostream& os, vtkIndent indent);
00068
00070
00072 virtual int ProcessRequest(vtkInformation* request,
00073 vtkInformationVector** inInfo,
00074 vtkInformationVector* outInfo);
00076
00079 vtkDataObject* GetCompositeOutputData(int port);
00080
00082
00084 vtkDataObject* GetCompositeInputData(
00085 int port, int index, vtkInformationVector **inInfoVec);
00087
00089 static vtkInformationIntegerKey* REQUIRES_TIME_DOWNSTREAM();
00090
00096 static vtkInformationObjectBaseKey* COMPOSITE_DATA_META_DATA();
00097
00106 static vtkInformationIntegerVectorKey* UPDATE_COMPOSITE_INDICES();
00107
00113 static vtkInformationIntegerVectorKey* COMPOSITE_INDICES();
00114
00115 protected:
00116 vtkCompositeDataPipeline();
00117 ~vtkCompositeDataPipeline();
00118
00119 virtual int ForwardUpstream(vtkInformation* request);
00120 virtual int ForwardUpstream(int i, int j, vtkInformation* request);
00121
00122
00123 virtual void CopyDefaultInformation(vtkInformation* request, int direction,
00124 vtkInformationVector** inInfoVec,
00125 vtkInformationVector* outInfoVec);
00126
00127 virtual void CopyFromDataToInformation(
00128 vtkDataObject* dobj, vtkInformation* inInfo);
00129 virtual void PushInformation(vtkInformation*);
00130 virtual void PopInformation (vtkInformation*);
00131
00132 virtual int ExecuteDataObject(vtkInformation* request,
00133 vtkInformationVector** inInfo,
00134 vtkInformationVector* outInfo);
00135
00136 virtual int ExecuteData(vtkInformation* request,
00137 vtkInformationVector** inInfoVec,
00138 vtkInformationVector* outInfoVec);
00139
00140 virtual void ExecuteDataStart(vtkInformation* request,
00141 vtkInformationVector** inInfoVec,
00142 vtkInformationVector* outInfoVec);
00143
00144
00145 virtual int NeedToExecuteData(int outputPort,
00146 vtkInformationVector** inInfoVec,
00147 vtkInformationVector* outInfoVec);
00148
00149
00150 virtual int NeedToExecuteBasedOnTime(vtkInformation *outInfo,
00151 vtkDataObject *dataObject);
00152
00153
00154
00155 virtual int CheckCompositeData(vtkInformation *request,
00156 int port,
00157 vtkInformationVector** inInfoVec,
00158 vtkInformationVector* outInfoVec);
00159
00160
00161
00162
00163 int InLocalLoop;
00164
00165 virtual void ExecuteSimpleAlgorithm(vtkInformation* request,
00166 vtkInformationVector** inInfoVec,
00167 vtkInformationVector* outInfoVec,
00168 int compositePort);
00169 virtual void ExecuteSimpleAlgorithmTime(vtkInformation* request,
00170 vtkInformationVector** inInfoVec,
00171 vtkInformationVector* outInfoVec);
00172 vtkDataObject* ExecuteSimpleAlgorithmForBlock(
00173 vtkInformationVector** inInfoVec,
00174 vtkInformationVector* outInfoVec,
00175 vtkInformation* inInfo,
00176 vtkInformation* outInfo,
00177 vtkInformation* request,
00178 vtkDataObject* dobj);
00179
00180 bool ShouldIterateOverInput(int& compositePort);
00181 bool ShouldIterateTemporalData(vtkInformation *request,
00182 vtkInformationVector** inInfoVec,
00183 vtkInformationVector *outInfoVec);
00184 virtual int InputTypeIsValid(int port, int index,
00185 vtkInformationVector **inInfoVec);
00186
00187 vtkInformation* InformationCache;
00188
00189 vtkInformation* GenericRequest;
00190 vtkInformation* DataObjectRequest;
00191 vtkInformation* InformationRequest;
00192 vtkInformation* UpdateExtentRequest;
00193 vtkInformation* DataRequest;
00194
00195
00196
00197 int SuppressResetPipelineInformation;
00198
00199 virtual void ResetPipelineInformation(int port, vtkInformation*);
00200
00202
00209 vtkCompositeDataSet* CreateOutputCompositeDataSet(
00210 vtkCompositeDataSet* input, int compositePort);
00212
00213
00214 virtual void MarkOutputsGenerated(vtkInformation* request,
00215 vtkInformationVector** inInfoVec,
00216 vtkInformationVector* outInfoVec);
00217
00218 int NeedToExecuteBasedOnCompositeIndices(vtkInformation* outInfo);
00219
00220 private:
00221 vtkCompositeDataPipeline(const vtkCompositeDataPipeline&);
00222 void operator=(const vtkCompositeDataPipeline&);
00223 };
00224
00225 #endif