vtkCompositeDataPipeline is an executive that supports the processing of composite dataset. It supports algorithms that are aware of composite dataset as well as those that are not. Portions of the pipeline that are note composite dataset-aware are looped by the next consumer that is composite dataset-aware. Type checking is performed at run time. Algorithms that are not composite dataset-aware have to support all dataset types contained in the composite dataset. The pipeline execution can be summarized as follows:
REQUEST_INFORMATION: The producers have to provide information about the contents of the composite dataset in this pass. This is accomplished by creating and populating a vtkHierarchicalDataInformation and setting it using the COMPOSITE_DATA_INFORMATION() key in the output information vector. Sources that can produce more than one piece (note that a piece is different than a block; each piece consistes of 0 or more blocks) should set MAXIMUM_NUMBER_OF_PIECES to -1.
BEGIN_LOOP: The source is told that looping is about to start. The source has to perform "extent translation". This is the process by which the piece request is converted to a block request. This is done by adding a MARKED_FOR_UPDATE() key to the appropriate blocks in UPDATE_BLOCKS().
REQUEST_DATA: This is where the algorithms execute. If a composite data algorithm is consuming the output of a simple data algorithm, the executive will execute the streaming demand driven pipeline passes for each block:
|
vtkDataObject * | GetCompositeOutputData (int port) |
static vtkInformationIntegerKey * | BEGIN_LOOP () |
static vtkInformationIntegerKey * | END_LOOP () |
static vtkInformationStringKey * | COMPOSITE_DATA_TYPE_NAME () |
static vtkInformationObjectBaseKey * | COMPOSITE_DATA_INFORMATION () |
static vtkInformationIntegerKey * | MARKED_FOR_UPDATE () |
static vtkInformationStringKey * | INPUT_REQUIRED_COMPOSITE_DATA_TYPE () |
static vtkInformationObjectBaseKey * | UPDATE_BLOCKS () |
Public Types |
typedef vtkStreamingDemandDrivenPipeline | Superclass |
Public Member Functions |
virtual const char * | GetClassName () |
virtual int | IsA (const char *type) |
|
void | PrintSelf (ostream &os, vtkIndent indent) |
virtual int | ProcessRequest (vtkInformation *request, vtkInformationVector **inInfo, vtkInformationVector *outInfo) |
|
virtual int | ComputePipelineMTime (vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec, int reqeustFromOutputPort, unsigned long *mtime) |
Static Public Member Functions |
static vtkCompositeDataPipeline * | New () |
static int | IsTypeOf (const char *type) |
static vtkCompositeDataPipeline * | SafeDownCast (vtkObject *o) |
Protected Types |
enum | BeginForward { EXECUTE_BLOCK_OK,
EXECUTE_BLOCK_CONTINUE,
EXECUTE_BLOCK_ERROR
} |
Protected Member Functions |
| vtkCompositeDataPipeline () |
| ~vtkCompositeDataPipeline () |
virtual int | CheckDataObject (int port, vtkInformationVector *outInfo) |
virtual int | ForwardUpstream (vtkInformation *request) |
virtual int | ForwardUpstream (int i, int j, vtkInformation *request) |
virtual void | CopyDefaultInformation (vtkInformation *request, int direction, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) |
virtual void | CopyFromDataToInformation (vtkDataObject *dobj, vtkInformation *inInfo) |
virtual void | PushInformation (vtkInformation *) |
virtual void | PopInformation (vtkInformation *) |
virtual int | ExecuteDataObjectForBlock (vtkInformation *request) |
virtual int | ExecuteDataObject (vtkInformation *request, vtkInformationVector **inInfo, vtkInformationVector *outInfo) |
virtual int | ExecuteInformationForBlock (vtkInformation *request) |
virtual int | ExecuteDataForBlock (vtkInformation *request) |
virtual int | ExecuteData (vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) |
virtual void | ExecuteDataStart (vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) |
virtual int | VerifyOutputInformation (int outputPort, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) |
int | CheckCompositeData (int port, vtkInformationVector *outInfoVec) |
int | SendEndLoop (int i, int j) |
virtual int | SendBeginLoop (int i, int j, vtkInformation *inInfo, vtkHierarchicalDataSet *updateInfo) |
virtual vtkCompositeDataSet * | CreateInputCompositeData (int i, vtkInformation *inInfo) |
virtual int | UpdateBlocks (int i, int j, int outputPort, vtkHierarchicalDataSet *updateInfo, vtkCompositeDataSet *input, vtkInformation *inInfo) |
virtual void | ExecuteSimpleAlgorithm (vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec, int compositePort) |
void | CheckInputPorts (int &inputPortIsComposite, int &inputIsComposite, int &compositePort) |
Protected Attributes |
vtkTimeStamp | SubPassTime |
int | InSubPass |
int | InLocalLoop |
vtkInformation * | InformationCache |
vtkInformation * | GenericRequest |
vtkInformation * | DataObjectRequest |
vtkInformation * | InformationRequest |
vtkInformation * | UpdateExtentRequest |
vtkInformation * | DataRequest |