00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00031 #ifndef __vtkStreamingDemandDrivenPipeline_h
00032 #define __vtkStreamingDemandDrivenPipeline_h
00033
00034 #include "vtkDemandDrivenPipeline.h"
00035
00036 class vtkExtentTranslator;
00037 class vtkInformationDoubleKey;
00038 class vtkInformationDoubleVectorKey;
00039 class vtkInformationIntegerKey;
00040 class vtkInformationIntegerVectorKey;
00041 class vtkInformationObjectBaseKey;
00042 class vtkInformationStringKey;
00043 class vtkInformationIdTypeKey;
00044
00045 class VTK_FILTERING_EXPORT vtkStreamingDemandDrivenPipeline : public vtkDemandDrivenPipeline
00046 {
00047 public:
00048 static vtkStreamingDemandDrivenPipeline* New();
00049 vtkTypeMacro(vtkStreamingDemandDrivenPipeline,vtkDemandDrivenPipeline);
00050 void PrintSelf(ostream& os, vtkIndent indent);
00051
00053
00055 virtual int ProcessRequest(vtkInformation* request,
00056 vtkInformationVector** inInfo,
00057 vtkInformationVector* outInfo);
00059
00061
00062 virtual int Update();
00063 virtual int Update(int port);
00064 virtual int UpdateWholeExtent();
00066
00069 int PropagateUpdateExtent(int outputPort);
00070
00072
00076 int SetMaximumNumberOfPieces(int port, int n);
00077 int SetMaximumNumberOfPieces(vtkInformation *, int n);
00078 int GetMaximumNumberOfPieces(int port);
00079 int GetMaximumNumberOfPieces(vtkInformation *);
00081
00083
00086 int SetWholeExtent(vtkInformation *, int extent[6]);
00087 void GetWholeExtent(vtkInformation *, int extent[6]);
00088 int* GetWholeExtent(vtkInformation *);
00090
00092
00096 int SetUpdateExtentToWholeExtent(int port);
00097 int SetUpdateExtentToWholeExtent(vtkInformation *);
00099
00101
00102 int SetUpdateExtent(int port, int extent[6]);
00103 int SetUpdateExtent(vtkInformation *, int extent[6]);
00104 void GetUpdateExtent(vtkInformation *, int extent[6]);
00105 int* GetUpdateExtent(vtkInformation *);
00107
00109
00111 int SetUpdateExtent(int port,
00112 int piece, int numPieces, int ghostLevel);
00113 int SetUpdateExtent(vtkInformation *,
00114 int piece, int numPieces, int ghostLevel);
00115 int SetUpdatePiece(vtkInformation *, int piece);
00116 int GetUpdatePiece(vtkInformation *);
00117 int SetUpdateNumberOfPieces(vtkInformation *, int n);
00118 int GetUpdateNumberOfPieces(vtkInformation *);
00119 int SetUpdateGhostLevel(vtkInformation *, int n);
00120 int GetUpdateGhostLevel(vtkInformation *);
00121 int SetUpdateResolution(int port, double r);
00122 int SetUpdateResolution(vtkInformation *, double r);
00123 double GetUpdateResolution(vtkInformation *);
00125
00127
00131 int SetSplitUpdateExtent(int port,
00132 int major, int minor,
00133 int numPieces,
00134 int ghostLevel)
00135 {
00136 return this->SetUpdateExtent(port, major+minor, numPieces, ghostLevel);
00137 }
00139
00140
00142
00143 int SetUpdateTimeSteps(int port, double *times, int length);
00144 int SetUpdateTimeSteps(vtkInformation *, double *times, int length);
00145 int SetUpdateTimeStep(int port, double time);
00146
00148
00150
00156 int SetRequestExactExtent(int port, int flag);
00157 int GetRequestExactExtent(int port);
00159
00161
00163 int SetExtentTranslator(int port, vtkExtentTranslator* translator);
00164 int SetExtentTranslator(vtkInformation *, vtkExtentTranslator* translator);
00165 vtkExtentTranslator* GetExtentTranslator(int port);
00166 vtkExtentTranslator* GetExtentTranslator(vtkInformation *info);
00168
00170
00173 int SetWholeBoundingBox(int port, double bb[6]);
00174 void GetWholeBoundingBox(int port, double bb[6]);
00175 double* GetWholeBoundingBox(int port);
00177
00179
00182 int SetPieceBoundingBox(int port, double bb[6]);
00183 void GetPieceBoundingBox(int port, double bb[6]);
00184 double* GetPieceBoundingBox(int port);
00186
00188 static vtkInformationRequestKey* REQUEST_UPDATE_EXTENT();
00189
00192 static vtkInformationRequestKey* REQUEST_UPDATE_EXTENT_INFORMATION();
00193
00195 static vtkInformationRequestKey* REQUEST_RESOLUTION_PROPAGATE();
00196
00199 static vtkInformationIntegerKey* CONTINUE_EXECUTING();
00200
00202 static vtkInformationObjectBaseKey* EXTENT_TRANSLATOR();
00203
00205
00206 static vtkInformationIntegerKey* UPDATE_EXTENT_INITIALIZED();
00207 static vtkInformationIntegerVectorKey* UPDATE_EXTENT();
00208 static vtkInformationIntegerKey* UPDATE_PIECE_NUMBER();
00209 static vtkInformationIntegerKey* UPDATE_NUMBER_OF_PIECES();
00210 static vtkInformationIntegerKey* UPDATE_NUMBER_OF_GHOST_LEVELS();
00212
00215 static vtkInformationIntegerKey* UPDATE_EXTENT_TRANSLATED();
00216
00218 static vtkInformationIntegerVectorKey* WHOLE_EXTENT();
00219
00222 static vtkInformationIntegerKey* MAXIMUM_NUMBER_OF_PIECES();
00223
00226 static vtkInformationDoubleVectorKey* WHOLE_BOUNDING_BOX();
00227
00230 static vtkInformationDoubleVectorKey* PIECE_BOUNDING_BOX();
00231
00233 static vtkInformationIntegerKey* EXACT_EXTENT();
00234
00236 static vtkInformationDoubleVectorKey* TIME_STEPS();
00237
00239 static vtkInformationDoubleVectorKey* TIME_RANGE();
00240
00242 static vtkInformationDoubleVectorKey* UPDATE_TIME_STEPS();
00243
00246 static vtkInformationDoubleKey* PRIORITY();
00247
00250 static vtkInformationDoubleKey* UPDATE_RESOLUTION();
00251
00254 static vtkInformationIntegerKey* REMOVE_ATTRIBUTE_INFORMATION();
00255
00262
00263
00264 static vtkInformationIntegerKey* FAST_PATH_FOR_TEMPORAL_DATA();
00265
00266
00267 static vtkInformationStringKey* FAST_PATH_OBJECT_TYPE();
00268
00269 static vtkInformationStringKey* FAST_PATH_ID_TYPE();
00270
00271 static vtkInformationIdTypeKey* FAST_PATH_OBJECT_ID();
00272
00274
00278 double ComputePriority()
00279 {
00280 return this->ComputePriority(0);
00281 }
00282 virtual double ComputePriority(int port);
00284
00285 protected:
00286 vtkStreamingDemandDrivenPipeline();
00287 ~vtkStreamingDemandDrivenPipeline();
00288
00290
00293 virtual void ResetUpdateInformation(vtkInformation* request,
00294 vtkInformationVector** inInfoVec,
00295 vtkInformationVector* outInfoVec);
00297
00298
00299
00300
00301
00302
00303
00304
00305 static vtkInformationDoubleVectorKey* PREVIOUS_UPDATE_TIME_STEPS();
00306
00307
00308
00309
00310 static vtkInformationIdTypeKey* PREVIOUS_FAST_PATH_OBJECT_ID();
00311 static vtkInformationStringKey* PREVIOUS_FAST_PATH_OBJECT_TYPE();
00312 static vtkInformationStringKey* PREVIOUS_FAST_PATH_ID_TYPE();
00313
00314
00315
00316 virtual int NeedToExecuteBasedOnTime(vtkInformation* outInfo,
00317 vtkDataObject* dataObject);
00318
00319
00320 virtual int NeedToExecuteBasedOnFastPathData(vtkInformation* outInfo);
00321
00322
00323
00324 virtual int ExecuteInformation(vtkInformation* request,
00325 vtkInformationVector** inInfoVec,
00326 vtkInformationVector* outInfoVec);
00327
00328
00329 virtual void CopyDefaultInformation(vtkInformation* request, int direction,
00330 vtkInformationVector** inInfoVec,
00331 vtkInformationVector* outInfoVec);
00332
00333
00334 virtual int VerifyOutputInformation(int outputPort,
00335 vtkInformationVector** inInfoVec,
00336 vtkInformationVector* outInfoVec);
00337
00338
00339
00340 virtual int NeedToExecuteData(int outputPort,
00341 vtkInformationVector** inInfoVec,
00342 vtkInformationVector* outInfoVec);
00343
00344
00345 virtual void ExecuteDataStart(vtkInformation* request,
00346 vtkInformationVector** inInfoVec,
00347 vtkInformationVector* outInfoVec);
00348 virtual void ExecuteDataEnd(vtkInformation* request,
00349 vtkInformationVector** inInfoVec,
00350 vtkInformationVector* outInfoVec);
00351
00352
00353 virtual void MarkOutputsGenerated(vtkInformation* request,
00354 vtkInformationVector** inInfoVec,
00355 vtkInformationVector* outInfoVec);
00356
00357
00358
00359 virtual void ResetPipelineInformation(int port, vtkInformation*);
00360
00361
00362
00363 int ContinueExecuting;
00364
00365 vtkInformation *UpdateExtentRequest;
00366
00367
00368 int LastPropogateUpdateExtentShortCircuited;
00369
00370 private:
00371 vtkStreamingDemandDrivenPipeline(const vtkStreamingDemandDrivenPipeline&);
00372 void operator=(const vtkStreamingDemandDrivenPipeline&);
00373 };
00374
00375 #endif