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 vtkTypeRevisionMacro(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
00091 protected:
00092 vtkCompositeDataPipeline();
00093 ~vtkCompositeDataPipeline();
00094
00095 virtual int ForwardUpstream(vtkInformation* request);
00096 virtual int ForwardUpstream(int i, int j, vtkInformation* request);
00097
00098
00099 virtual void CopyDefaultInformation(vtkInformation* request, int direction,
00100 vtkInformationVector** inInfoVec,
00101 vtkInformationVector* outInfoVec);
00102
00103 virtual void CopyFromDataToInformation(
00104 vtkDataObject* dobj, vtkInformation* inInfo);
00105 virtual void PushInformation(vtkInformation*);
00106 virtual void PopInformation (vtkInformation*);
00107
00108 virtual int ExecuteDataObject(vtkInformation* request,
00109 vtkInformationVector** inInfo,
00110 vtkInformationVector* outInfo);
00111
00112 virtual int ExecuteData(vtkInformation* request,
00113 vtkInformationVector** inInfoVec,
00114 vtkInformationVector* outInfoVec);
00115
00116 virtual void ExecuteDataStart(vtkInformation* request,
00117 vtkInformationVector** inInfoVec,
00118 vtkInformationVector* outInfoVec);
00119
00120
00121 virtual int NeedToExecuteData(int outputPort,
00122 vtkInformationVector** inInfoVec,
00123 vtkInformationVector* outInfoVec);
00124
00125
00126 virtual int NeedToExecuteBasedOnTime(vtkInformation *outInfo,
00127 vtkDataObject *dataObject);
00128
00129
00130
00131 virtual int CheckCompositeData(vtkInformation *request,
00132 int port,
00133 vtkInformationVector** inInfoVec,
00134 vtkInformationVector* outInfoVec);
00135
00136
00137
00138
00139 int InLocalLoop;
00140
00141 virtual void ExecuteSimpleAlgorithm(vtkInformation* request,
00142 vtkInformationVector** inInfoVec,
00143 vtkInformationVector* outInfoVec,
00144 int compositePort);
00145 virtual void ExecuteSimpleAlgorithmTime(vtkInformation* request,
00146 vtkInformationVector** inInfoVec,
00147 vtkInformationVector* outInfoVec);
00148 vtkDataObject* ExecuteSimpleAlgorithmForBlock(
00149 vtkInformationVector** inInfoVec,
00150 vtkInformationVector* outInfoVec,
00151 vtkInformation* inInfo,
00152 vtkInformation* outInfo,
00153 vtkInformation* request,
00154 vtkDataObject* dobj);
00155
00156 bool ShouldIterateOverInput(int& compositePort);
00157 bool ShouldIterateTemporalData(vtkInformation *request,
00158 vtkInformationVector** inInfoVec,
00159 vtkInformationVector *outInfoVec);
00160 virtual int InputTypeIsValid(int port, int index,
00161 vtkInformationVector **inInfoVec);
00162
00163 vtkInformation* InformationCache;
00164
00165 vtkInformation* GenericRequest;
00166 vtkInformation* DataObjectRequest;
00167 vtkInformation* InformationRequest;
00168 vtkInformation* UpdateExtentRequest;
00169 vtkInformation* DataRequest;
00170
00171
00172
00173 int SuppressResetPipelineInformation;
00174
00175 virtual void ResetPipelineInformation(int port, vtkInformation*);
00176
00178
00185 vtkCompositeDataSet* CreateOutputCompositeDataSet(
00186 vtkCompositeDataSet* input, int compositePort);
00188
00189
00190 private:
00191 vtkCompositeDataPipeline(const vtkCompositeDataPipeline&);
00192 void operator=(const vtkCompositeDataPipeline&);
00193 };
00194
00195 #endif