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 vtkInformationDoubleVectorKey;
00038 class vtkInformationIntegerKey;
00039 class vtkInformationIntegerVectorKey;
00040 class vtkInformationObjectBaseKey;
00041
00042 class VTK_FILTERING_EXPORT vtkStreamingDemandDrivenPipeline : public vtkDemandDrivenPipeline
00043 {
00044 public:
00045 static vtkStreamingDemandDrivenPipeline* New();
00046 vtkTypeRevisionMacro(vtkStreamingDemandDrivenPipeline,vtkDemandDrivenPipeline);
00047 void PrintSelf(ostream& os, vtkIndent indent);
00048
00050
00052 virtual int ProcessRequest(vtkInformation* request,
00053 vtkInformationVector** inInfo,
00054 vtkInformationVector* outInfo);
00056
00058
00059 virtual int Update();
00060 virtual int Update(int port);
00061 virtual int UpdateWholeExtent();
00063
00066 int PropagateUpdateExtent(int outputPort);
00067
00069
00073 int SetMaximumNumberOfPieces(vtkInformation *, int n);
00074 int GetMaximumNumberOfPieces(vtkInformation *);
00076
00078
00081 int SetWholeExtent(vtkInformation *, int extent[6]);
00082 void GetWholeExtent(vtkInformation *, int extent[6]);
00083 int* GetWholeExtent(vtkInformation *);
00085
00090 int SetUpdateExtentToWholeExtent(vtkInformation *);
00091
00093
00094 int SetUpdateExtent(vtkInformation *, int extent[6]);
00095 void GetUpdateExtent(vtkInformation *, int extent[6]);
00096 int* GetUpdateExtent(vtkInformation *);
00098
00100
00102 int SetUpdateExtent(vtkInformation *,
00103 int piece, int numPieces, int ghostLevel);
00104 int SetUpdatePiece(vtkInformation *, int piece);
00105 int GetUpdatePiece(vtkInformation *);
00106 int SetUpdateNumberOfPieces(vtkInformation *, int n);
00107 int GetUpdateNumberOfPieces(vtkInformation *);
00108 int SetUpdateGhostLevel(vtkInformation *, int n);
00109 int GetUpdateGhostLevel(vtkInformation *);
00111
00113
00119 int SetRequestExactExtent(int port, int flag);
00120 int GetRequestExactExtent(int port);
00122
00124
00126 int SetExtentTranslator(vtkInformation *, vtkExtentTranslator* translator);
00127 vtkExtentTranslator* GetExtentTranslator(vtkInformation *info);
00129
00131
00134 int SetWholeBoundingBox(int port, double bb[6]);
00135 void GetWholeBoundingBox(int port, double bb[6]);
00136 double* GetWholeBoundingBox(int port);
00138
00140 static vtkInformationRequestKey* REQUEST_UPDATE_EXTENT();
00141
00144 static vtkInformationIntegerKey* CONTINUE_EXECUTING();
00145
00147 static vtkInformationObjectBaseKey* EXTENT_TRANSLATOR();
00148
00150
00151 static vtkInformationIntegerKey* UPDATE_EXTENT_INITIALIZED();
00152 static vtkInformationIntegerVectorKey* UPDATE_EXTENT();
00153 static vtkInformationIntegerKey* UPDATE_PIECE_NUMBER();
00154 static vtkInformationIntegerKey* UPDATE_NUMBER_OF_PIECES();
00155 static vtkInformationIntegerKey* UPDATE_NUMBER_OF_GHOST_LEVELS();
00157
00159 static vtkInformationIntegerVectorKey* WHOLE_EXTENT();
00160
00163 static vtkInformationIntegerKey* MAXIMUM_NUMBER_OF_PIECES();
00164
00167 static vtkInformationDoubleVectorKey* WHOLE_BOUNDING_BOX();
00168
00170 static vtkInformationIntegerKey* EXACT_EXTENT();
00171
00173 static vtkInformationDoubleVectorKey* TIME_STEPS();
00174
00176 static vtkInformationIntegerKey* UPDATE_TIME_INDEX();
00177
00178 protected:
00179 vtkStreamingDemandDrivenPipeline();
00180 ~vtkStreamingDemandDrivenPipeline();
00181
00182
00183
00184 virtual int ExecuteInformation(vtkInformation* request,
00185 vtkInformationVector** inInfoVec,
00186 vtkInformationVector* outInfoVec);
00187
00188
00189 virtual void CopyDefaultInformation(vtkInformation* request, int direction,
00190 vtkInformationVector** inInfoVec,
00191 vtkInformationVector* outInfoVec);
00192
00193
00194 virtual int VerifyOutputInformation(int outputPort,
00195 vtkInformationVector** inInfoVec,
00196 vtkInformationVector* outInfoVec);
00197
00198
00199
00200 virtual int NeedToExecuteData(int outputPort,
00201 vtkInformationVector** inInfoVec,
00202 vtkInformationVector* outInfoVec);
00203
00204
00205 virtual void ExecuteDataStart(vtkInformation* request,
00206 vtkInformationVector** inInfoVec,
00207 vtkInformationVector* outInfoVec);
00208 virtual void ExecuteDataEnd(vtkInformation* request,
00209 vtkInformationVector** inInfoVec,
00210 vtkInformationVector* outInfoVec);
00211
00212
00213 virtual void MarkOutputsGenerated(vtkInformation* request,
00214 vtkInformationVector** inInfoVec,
00215 vtkInformationVector* outInfoVec);
00216
00217
00218
00219 virtual void ResetPipelineInformation(int port, vtkInformation*);
00220
00221
00222
00223 int ContinueExecuting;
00224
00225 vtkInformation *UpdateExtentRequest;
00226
00227
00228 int LastPropogateUpdateExtentShortCircuited;
00229
00230 private:
00231 vtkStreamingDemandDrivenPipeline(const vtkStreamingDemandDrivenPipeline&);
00232 void operator=(const vtkStreamingDemandDrivenPipeline&);
00233 };
00234
00235 #endif