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
00093 static vtkInformationObjectBaseKey* COMPOSITE_DATA_META_DATA();
00094
00103 static vtkInformationIntegerVectorKey* UPDATE_COMPOSITE_INDICES();
00104
00110 static vtkInformationIntegerVectorKey* COMPOSITE_INDICES();
00111
00112 protected:
00113 vtkCompositeDataPipeline();
00114 ~vtkCompositeDataPipeline();
00115
00116 virtual int ForwardUpstream(vtkInformation* request);
00117 virtual int ForwardUpstream(int i, int j, vtkInformation* request);
00118
00119
00120 virtual void CopyDefaultInformation(vtkInformation* request, int direction,
00121 vtkInformationVector** inInfoVec,
00122 vtkInformationVector* outInfoVec);
00123
00124 virtual void CopyFromDataToInformation(
00125 vtkDataObject* dobj, vtkInformation* inInfo);
00126 virtual void PushInformation(vtkInformation*);
00127 virtual void PopInformation (vtkInformation*);
00128
00129 virtual int ExecuteDataObject(vtkInformation* request,
00130 vtkInformationVector** inInfo,
00131 vtkInformationVector* outInfo);
00132
00133 virtual int ExecuteData(vtkInformation* request,
00134 vtkInformationVector** inInfoVec,
00135 vtkInformationVector* outInfoVec);
00136
00137 virtual void ExecuteDataStart(vtkInformation* request,
00138 vtkInformationVector** inInfoVec,
00139 vtkInformationVector* outInfoVec);
00140
00141
00142 virtual int NeedToExecuteData(int outputPort,
00143 vtkInformationVector** inInfoVec,
00144 vtkInformationVector* outInfoVec);
00145
00146
00147 virtual int NeedToExecuteBasedOnTime(vtkInformation *outInfo,
00148 vtkDataObject *dataObject);
00149
00150
00151
00152 virtual int CheckCompositeData(vtkInformation *request,
00153 int port,
00154 vtkInformationVector** inInfoVec,
00155 vtkInformationVector* outInfoVec);
00156
00157
00158
00159
00160 int InLocalLoop;
00161
00162 virtual void ExecuteSimpleAlgorithm(vtkInformation* request,
00163 vtkInformationVector** inInfoVec,
00164 vtkInformationVector* outInfoVec,
00165 int compositePort);
00166 virtual void ExecuteSimpleAlgorithmTime(vtkInformation* request,
00167 vtkInformationVector** inInfoVec,
00168 vtkInformationVector* outInfoVec);
00169 vtkDataObject* ExecuteSimpleAlgorithmForBlock(
00170 vtkInformationVector** inInfoVec,
00171 vtkInformationVector* outInfoVec,
00172 vtkInformation* inInfo,
00173 vtkInformation* outInfo,
00174 vtkInformation* request,
00175 vtkDataObject* dobj);
00176
00177 bool ShouldIterateOverInput(int& compositePort);
00178 bool ShouldIterateTemporalData(vtkInformation *request,
00179 vtkInformationVector** inInfoVec,
00180 vtkInformationVector *outInfoVec);
00181 virtual int InputTypeIsValid(int port, int index,
00182 vtkInformationVector **inInfoVec);
00183
00184 vtkInformation* InformationCache;
00185
00186 vtkInformation* GenericRequest;
00187 vtkInformation* DataObjectRequest;
00188 vtkInformation* InformationRequest;
00189 vtkInformation* UpdateExtentRequest;
00190 vtkInformation* DataRequest;
00191
00192
00193
00194 int SuppressResetPipelineInformation;
00195
00196 virtual void ResetPipelineInformation(int port, vtkInformation*);
00197
00199
00206 vtkCompositeDataSet* CreateOutputCompositeDataSet(
00207 vtkCompositeDataSet* input, int compositePort);
00209
00210
00211 virtual void MarkOutputsGenerated(vtkInformation* request,
00212 vtkInformationVector** inInfoVec,
00213 vtkInformationVector* outInfoVec);
00214
00215 int NeedToExecuteBasedOnCompositeIndices(vtkInformation* outInfo);
00216
00217 private:
00218 vtkCompositeDataPipeline(const vtkCompositeDataPipeline&);
00219 void operator=(const vtkCompositeDataPipeline&);
00220 };
00221
00222 #endif