VTK  9.3.0
vtkCompositeDataPipeline.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
38 #ifndef vtkCompositeDataPipeline_h
39 #define vtkCompositeDataPipeline_h
40 
41 #include "vtkCommonExecutionModelModule.h" // For export macro
43 #include <vtkSmartPointer.h> // smart pointer
44 
45 #include <vector> // for vector in return type
46 
47 VTK_ABI_NAMESPACE_BEGIN
56 
57 class VTKCOMMONEXECUTIONMODEL_EXPORT vtkCompositeDataPipeline
59 {
60 public:
63  void PrintSelf(ostream& os, vtkIndent indent) override;
64 
70 
76 
82 
91 
103 
112 
113 protected:
116 
117  int ForwardUpstream(vtkInformation* request) override;
118  virtual int ForwardUpstream(int i, int j, vtkInformation* request);
119 
120  // Copy information for the given request.
122  vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec) override;
123 
126 
128  vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo) override;
129 
131  vtkInformationVector* outInfoVec) override;
132 
134  vtkInformationVector* outInfoVec) override;
135 
136  // Override this check to account for update extent.
138  int outputPort, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec) override;
139 
140  // Check whether the data object in the pipeline information exists
141  // and has a valid type.
142  virtual int CheckCompositeData(
143  vtkInformation* request, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec);
144 
145  // True when the pipeline is iterating over the current (simple) filter
146  // to produce composite output. In this case, ExecuteDataStart() should
147  // NOT Initialize() the composite output.
149 
150  virtual void ExecuteSimpleAlgorithm(vtkInformation* request, vtkInformationVector** inInfoVec,
151  vtkInformationVector* outInfoVec, int compositePort);
152 
154  vtkInformationVector* outInfoVec, int compositePort, int connection, vtkInformation* request,
156 
157  std::vector<vtkDataObject*> ExecuteSimpleAlgorithmForBlock(vtkInformationVector** inInfoVec,
158  vtkInformationVector* outInfoVec, vtkInformation* inInfo, vtkInformation* request,
159  vtkDataObject* dobj);
160 
161  bool ShouldIterateOverInput(vtkInformationVector** inInfoVec, int& compositePort);
162 
163  int InputTypeIsValid(int port, int index, vtkInformationVector** inInfoVec) override;
164 
166 
169 
171 
181  std::vector<vtkSmartPointer<vtkDataObject>> CreateOutputCompositeDataSet(
182  vtkCompositeDataSet* input, int compositePort, int numOutputPorts);
183 
184  // Override this to handle UPDATE_COMPOSITE_INDICES().
186  vtkInformationVector* outInfoVec) override;
187 
189 
190  // Because we sometimes have to swap between "simple" data types and composite
191  // data types, we sometimes want to skip resetting the pipeline information.
193 
203 
204 private:
206  void operator=(const vtkCompositeDataPipeline&) = delete;
207 };
208 
209 VTK_ABI_NAMESPACE_END
210 #endif
superclass for composite data iterators
Executive supporting composite datasets.
static vtkInformationIntegerVectorKey * UPDATE_COMPOSITE_INDICES()
UPDATE_COMPOSITE_INDICES is a key placed in the request to request a set of composite indices from a ...
int ForwardUpstream(vtkInformation *request) override
int NeedToExecuteBasedOnCompositeIndices(vtkInformation *outInfo)
virtual void ExecuteSimpleAlgorithm(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec, int compositePort)
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void CopyDefaultInformation(vtkInformation *request, int direction, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) override
std::vector< vtkSmartPointer< vtkDataObject > > CreateOutputCompositeDataSet(vtkCompositeDataSet *input, int compositePort, int numOutputPorts)
Tries to create the best possible composite data output for the given input and non-composite algorit...
void ResetPipelineInformation(int port, vtkInformation *) override
int ExecuteData(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) override
void MarkOutputsGenerated(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) override
virtual int ForwardUpstream(int i, int j, vtkInformation *request)
virtual void PushInformation(vtkInformation *)
vtkDataObject * GetCompositeOutputData(int port)
Returns the data object stored with the DATA_OBJECT() in the output port.
static vtkInformationIntegerKey * SUPPRESS_RESET_PI()
void ExecuteDataStart(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) override
static vtkInformationIntegerVectorKey * DATA_COMPOSITE_INDICES()
COMPOSITE_INDICES() is put in the output information by the executive if the request has UPDATE_COMPO...
static vtkInformationDoubleKey * BLOCK_AMOUNT_OF_DETAIL()
BLOCK_AMOUNT_OF_DETAIL is a key placed in the information about a multi-block dataset that indicates ...
int NeedToExecuteData(int outputPort, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) override
int ExecuteDataObject(vtkInformation *request, vtkInformationVector **inInfo, vtkInformationVector *outInfo) override
bool ShouldIterateOverInput(vtkInformationVector **inInfoVec, int &compositePort)
virtual int CheckCompositeData(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec)
static vtkInformationIntegerKey * LOAD_REQUESTED_BLOCKS()
An integer key that indicates to the source to load all requested blocks specified in UPDATE_COMPOSIT...
int InputTypeIsValid(int port, int index, vtkInformationVector **inInfoVec) override
std::vector< vtkDataObject * > ExecuteSimpleAlgorithmForBlock(vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec, vtkInformation *inInfo, vtkInformation *request, vtkDataObject *dobj)
static vtkInformationObjectBaseKey * COMPOSITE_DATA_META_DATA()
COMPOSITE_DATA_META_DATA is a key placed in the output-port information by readers/sources producing ...
static vtkCompositeDataPipeline * New()
~vtkCompositeDataPipeline() override
vtkDataObject * GetCompositeInputData(int port, int index, vtkInformationVector **inInfoVec)
Returns the data object stored with the DATA_OBJECT() in the input port.
virtual void PopInformation(vtkInformation *)
virtual void ExecuteEach(vtkCompositeDataIterator *iter, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec, int compositePort, int connection, vtkInformation *request, std::vector< vtkSmartPointer< vtkCompositeDataSet >> &compositeOutput)
abstract superclass for composite (multi-block or AMR) datasets
general representation of visualization data
Definition: vtkDataObject.h:64
a simple class to control print indentation
Definition: vtkIndent.h:38
Key for vtkDataObject values.
Key for double values in vtkInformation.
Key for integer values in vtkInformation.
Key for vtkObjectBase values.
Key for string values in vtkInformation.
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Executive supporting partial updates.
@ vector
Definition: vtkX3D.h:237
@ direction
Definition: vtkX3D.h:260
@ port
Definition: vtkX3D.h:447
@ index
Definition: vtkX3D.h:246