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 vtkTypeRevisionMacro(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 *);
00122
00124
00125 int SetUpdateTimeSteps(int port, double *times, int length);
00126 int SetUpdateTimeSteps(vtkInformation *, double *times, int length);
00127 int SetUpdateTimeStep(int port, double time);
00128
00130
00132
00138 int SetRequestExactExtent(int port, int flag);
00139 int GetRequestExactExtent(int port);
00141
00143
00145 int SetExtentTranslator(int port, vtkExtentTranslator* translator);
00146 int SetExtentTranslator(vtkInformation *, vtkExtentTranslator* translator);
00147 vtkExtentTranslator* GetExtentTranslator(int port);
00148 vtkExtentTranslator* GetExtentTranslator(vtkInformation *info);
00150
00152
00155 int SetWholeBoundingBox(int port, double bb[6]);
00156 void GetWholeBoundingBox(int port, double bb[6]);
00157 double* GetWholeBoundingBox(int port);
00159
00161 static vtkInformationRequestKey* REQUEST_UPDATE_EXTENT();
00162
00165 static vtkInformationRequestKey* REQUEST_UPDATE_EXTENT_INFORMATION();
00166
00169 static vtkInformationIntegerKey* CONTINUE_EXECUTING();
00170
00172 static vtkInformationObjectBaseKey* EXTENT_TRANSLATOR();
00173
00175
00176 static vtkInformationIntegerKey* UPDATE_EXTENT_INITIALIZED();
00177 static vtkInformationIntegerVectorKey* UPDATE_EXTENT();
00178 static vtkInformationIntegerKey* UPDATE_PIECE_NUMBER();
00179 static vtkInformationIntegerKey* UPDATE_NUMBER_OF_PIECES();
00180 static vtkInformationIntegerKey* UPDATE_NUMBER_OF_GHOST_LEVELS();
00182
00185 static vtkInformationIntegerKey* UPDATE_EXTENT_TRANSLATED();
00186
00188 static vtkInformationIntegerVectorKey* WHOLE_EXTENT();
00189
00192 static vtkInformationIntegerKey* MAXIMUM_NUMBER_OF_PIECES();
00193
00196 static vtkInformationDoubleVectorKey* WHOLE_BOUNDING_BOX();
00197
00199 static vtkInformationIntegerKey* EXACT_EXTENT();
00200
00202 static vtkInformationDoubleVectorKey* TIME_STEPS();
00203
00205 static vtkInformationDoubleVectorKey* TIME_RANGE();
00206
00208 static vtkInformationDoubleVectorKey* UPDATE_TIME_STEPS();
00209
00211 static vtkInformationDoubleKey* PRIORITY();
00212
00219
00220
00221 static vtkInformationIntegerKey* FAST_PATH_FOR_TEMPORAL_DATA();
00222
00223
00224 static vtkInformationStringKey* FAST_PATH_OBJECT_TYPE();
00225
00226 static vtkInformationStringKey* FAST_PATH_ID_TYPE();
00227
00228 static vtkInformationIdTypeKey* FAST_PATH_OBJECT_ID();
00229
00230 protected:
00231 vtkStreamingDemandDrivenPipeline();
00232 ~vtkStreamingDemandDrivenPipeline();
00233
00234
00235
00236
00237
00238
00239
00240
00241 static vtkInformationDoubleVectorKey* PREVIOUS_UPDATE_TIME_STEPS();
00242
00243
00244
00245
00246 static vtkInformationIdTypeKey* PREVIOUS_FAST_PATH_OBJECT_ID();
00247 static vtkInformationStringKey* PREVIOUS_FAST_PATH_OBJECT_TYPE();
00248 static vtkInformationStringKey* PREVIOUS_FAST_PATH_ID_TYPE();
00249
00250
00251
00252 virtual int NeedToExecuteBasedOnTime(vtkInformation* outInfo,
00253 vtkDataObject* dataObject);
00254
00255
00256 virtual int NeedToExecuteBasedOnFastPathData(vtkInformation* outInfo);
00257
00258
00259
00260 virtual int ExecuteInformation(vtkInformation* request,
00261 vtkInformationVector** inInfoVec,
00262 vtkInformationVector* outInfoVec);
00263
00264
00265 virtual void CopyDefaultInformation(vtkInformation* request, int direction,
00266 vtkInformationVector** inInfoVec,
00267 vtkInformationVector* outInfoVec);
00268
00269
00270 virtual int VerifyOutputInformation(int outputPort,
00271 vtkInformationVector** inInfoVec,
00272 vtkInformationVector* outInfoVec);
00273
00274
00275
00276 virtual int NeedToExecuteData(int outputPort,
00277 vtkInformationVector** inInfoVec,
00278 vtkInformationVector* outInfoVec);
00279
00280
00281 virtual void ExecuteDataStart(vtkInformation* request,
00282 vtkInformationVector** inInfoVec,
00283 vtkInformationVector* outInfoVec);
00284 virtual void ExecuteDataEnd(vtkInformation* request,
00285 vtkInformationVector** inInfoVec,
00286 vtkInformationVector* outInfoVec);
00287
00288
00289 virtual void MarkOutputsGenerated(vtkInformation* request,
00290 vtkInformationVector** inInfoVec,
00291 vtkInformationVector* outInfoVec);
00292
00293
00294
00295 virtual void ResetPipelineInformation(int port, vtkInformation*);
00296
00297
00298
00299 int ContinueExecuting;
00300
00301 vtkInformation *UpdateExtentRequest;
00302
00303
00304 int LastPropogateUpdateExtentShortCircuited;
00305
00306 private:
00307 vtkStreamingDemandDrivenPipeline(const vtkStreamingDemandDrivenPipeline&);
00308 void operator=(const vtkStreamingDemandDrivenPipeline&);
00309 };
00310
00311 #endif