VTK  9.1.0
vtkCompositeDataPipeline.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkCompositeDataPipeline.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
44 #ifndef vtkCompositeDataPipeline_h
45 #define vtkCompositeDataPipeline_h
46 
47 #include "vtkCommonExecutionModelModule.h" // For export macro
49 #include <vtkSmartPointer.h> // smart pointer
50 
51 #include <vector> // for vector in return type
52 
61 
62 class VTKCOMMONEXECUTIONMODEL_EXPORT vtkCompositeDataPipeline
64 {
65 public:
68  void PrintSelf(ostream& os, vtkIndent indent) override;
69 
75 
81 
87 
96 
108 
117 
118 protected:
121 
122  int ForwardUpstream(vtkInformation* request) override;
123  virtual int ForwardUpstream(int i, int j, vtkInformation* request);
124 
125  // Copy information for the given request.
127  vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec) override;
128 
131 
133  vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo) override;
134 
136  vtkInformationVector* outInfoVec) override;
137 
139  vtkInformationVector* outInfoVec) override;
140 
141  // Override this check to account for update extent.
143  int outputPort, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec) override;
144 
145  // Check whether the data object in the pipeline information exists
146  // and has a valid type.
147  virtual int CheckCompositeData(
148  vtkInformation* request, vtkInformationVector** inInfoVec, vtkInformationVector* outInfoVec);
149 
150  // True when the pipeline is iterating over the current (simple) filter
151  // to produce composite output. In this case, ExecuteDataStart() should
152  // NOT Initialize() the composite output.
154 
155  virtual void ExecuteSimpleAlgorithm(vtkInformation* request, vtkInformationVector** inInfoVec,
156  vtkInformationVector* outInfoVec, int compositePort);
157 
159  vtkInformationVector* outInfoVec, int compositePort, int connection, vtkInformation* request,
161 
162  std::vector<vtkDataObject*> ExecuteSimpleAlgorithmForBlock(vtkInformationVector** inInfoVec,
163  vtkInformationVector* outInfoVec, vtkInformation* inInfo, vtkInformation* request,
164  vtkDataObject* dobj);
165 
166  bool ShouldIterateOverInput(vtkInformationVector** inInfoVec, int& compositePort);
167 
168  int InputTypeIsValid(int port, int index, vtkInformationVector** inInfoVec) override;
169 
171 
174 
176 
186  std::vector<vtkSmartPointer<vtkDataObject>> CreateOutputCompositeDataSet(
187  vtkCompositeDataSet* input, int compositePort, int numOutputPorts);
188 
189  // Override this to handle UPDATE_COMPOSITE_INDICES().
191  vtkInformationVector* outInfoVec) override;
192 
194 
195  // Because we sometimes have to swap between "simple" data types and composite
196  // data types, we sometimes want to skip resetting the pipeline information.
198 
208 
209 private:
211  void operator=(const vtkCompositeDataPipeline&) = delete;
212 };
213 
214 #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:60
a simple class to control print indentation
Definition: vtkIndent.h:34
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:243
@ direction
Definition: vtkX3D.h:266
@ port
Definition: vtkX3D.h:453
@ index
Definition: vtkX3D.h:252