VTK  9.0.1
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
vtkInformationStringKey
Key for string values in vtkInformation.
Definition: vtkInformationStringKey.h:34
vtkX3D::vector
@ vector
Definition: vtkX3D.h:243
vtkCompositeDataPipeline::CreateOutputCompositeDataSet
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...
vtkCompositeDataPipeline::ForwardUpstream
int ForwardUpstream(vtkInformation *request) override
vtkX3D::direction
@ direction
Definition: vtkX3D.h:266
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:36
vtkCompositeDataPipeline::ShouldIterateOverInput
bool ShouldIterateOverInput(vtkInformationVector **inInfoVec, int &compositePort)
vtkCompositeDataPipeline::BLOCK_AMOUNT_OF_DETAIL
static vtkInformationDoubleKey * BLOCK_AMOUNT_OF_DETAIL()
BLOCK_AMOUNT_OF_DETAIL is a key placed in the information about a multi-block dataset that indicates ...
vtkInformationDataObjectKey
Key for vtkDataObject values.
Definition: vtkInformationDataObjectKey.h:34
vtkCompositeDataPipeline::SUPPRESS_RESET_PI
static vtkInformationIntegerKey * SUPPRESS_RESET_PI()
vtkCompositeDataPipeline::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkStreamingDemandDrivenPipeline.h
vtkSmartPointer< vtkCompositeDataSet >
vtkInformationDoubleKey
Key for double values in vtkInformation.
Definition: vtkInformationDoubleKey.h:32
vtkCompositeDataPipeline::GetCompositeOutputData
vtkDataObject * GetCompositeOutputData(int port)
Returns the data object stored with the DATA_OBJECT() in the output port.
vtkCompositeDataPipeline::ExecuteSimpleAlgorithmForBlock
std::vector< vtkDataObject * > ExecuteSimpleAlgorithmForBlock(vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec, vtkInformation *inInfo, vtkInformation *request, vtkDataObject *dobj)
vtkCompositeDataPipeline::UPDATE_COMPOSITE_INDICES
static vtkInformationIntegerVectorKey * UPDATE_COMPOSITE_INDICES()
UPDATE_COMPOSITE_INDICES is a key placed in the request to request a set of composite indices from a ...
vtkCompositeDataSet
abstract superclass for composite (multi-block or AMR) datasets
Definition: vtkCompositeDataSet.h:46
vtkCompositeDataPipeline::vtkCompositeDataPipeline
vtkCompositeDataPipeline()
vtkCompositeDataPipeline::COMPOSITE_DATA_META_DATA
static vtkInformationObjectBaseKey * COMPOSITE_DATA_META_DATA()
COMPOSITE_DATA_META_DATA is a key placed in the output-port information by readers/sources producing ...
vtkX3D::port
@ port
Definition: vtkX3D.h:453
vtkCompositeDataPipeline
Executive supporting composite datasets.
Definition: vtkCompositeDataPipeline.h:64
vtkInformationObjectBaseKey
Key for vtkObjectBase values.
Definition: vtkInformationObjectBaseKey.h:34
vtkInformationIntegerKey
Key for integer values in vtkInformation.
Definition: vtkInformationIntegerKey.h:32
vtkCompositeDataIterator
superclass for composite data iterators
Definition: vtkCompositeDataIterator.h:36
vtkCompositeDataPipeline::DATA_COMPOSITE_INDICES
static vtkInformationIntegerVectorKey * DATA_COMPOSITE_INDICES()
COMPOSITE_INDICES() is put in the output information by the executive if the request has UPDATE_COMPO...
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:34
vtkCompositeDataPipeline::~vtkCompositeDataPipeline
~vtkCompositeDataPipeline() override
vtkCompositeDataPipeline::ResetPipelineInformation
void ResetPipelineInformation(int port, vtkInformation *) override
vtkCompositeDataPipeline::ExecuteEach
virtual void ExecuteEach(vtkCompositeDataIterator *iter, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec, int compositePort, int connection, vtkInformation *request, std::vector< vtkSmartPointer< vtkCompositeDataSet > > &compositeOutput)
vtkCompositeDataPipeline::InformationRequest
vtkInformation * InformationRequest
Definition: vtkCompositeDataPipeline.h:173
vtkCompositeDataPipeline::GenericRequest
vtkInformation * GenericRequest
Definition: vtkCompositeDataPipeline.h:172
vtkSmartPointer.h
vtkCompositeDataPipeline::ExecuteDataObject
int ExecuteDataObject(vtkInformation *request, vtkInformationVector **inInfo, vtkInformationVector *outInfo) override
vtkCompositeDataPipeline::CheckCompositeData
virtual int CheckCompositeData(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec)
vtkCompositeDataPipeline::CopyDefaultInformation
void CopyDefaultInformation(vtkInformation *request, int direction, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) override
vtkCompositeDataPipeline::InputTypeIsValid
int InputTypeIsValid(int port, int index, vtkInformationVector **inInfoVec) override
vtkCompositeDataPipeline::NeedToExecuteBasedOnCompositeIndices
int NeedToExecuteBasedOnCompositeIndices(vtkInformation *outInfo)
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:65
vtkCompositeDataPipeline::PopInformation
virtual void PopInformation(vtkInformation *)
vtkCompositeDataPipeline::PushInformation
virtual void PushInformation(vtkInformation *)
vtkCompositeDataPipeline::MarkOutputsGenerated
void MarkOutputsGenerated(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) override
vtkDemandDrivenPipeline::vtkCompositeDataPipeline
friend class vtkCompositeDataPipeline
Definition: vtkDemandDrivenPipeline.h:225
vtkCompositeDataPipeline::LOAD_REQUESTED_BLOCKS
static vtkInformationIntegerKey * LOAD_REQUESTED_BLOCKS()
An integer key that indicates to the source to load all requested blocks specified in UPDATE_COMPOSIT...
vtkCompositeDataPipeline::GetCompositeInputData
vtkDataObject * GetCompositeInputData(int port, int index, vtkInformationVector **inInfoVec)
Returns the data object stored with the DATA_OBJECT() in the input port.
vtkCompositeDataPipeline::InformationCache
vtkInformation * InformationCache
Definition: vtkCompositeDataPipeline.h:170
vtkCompositeDataPipeline::NeedToExecuteData
int NeedToExecuteData(int outputPort, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) override
vtkInformationIntegerVectorKey
Key for integer vector values.
Definition: vtkInformationIntegerVectorKey.h:32
vtkDataObject
general representation of visualization data
Definition: vtkDataObject.h:60
vtkX3D::index
@ index
Definition: vtkX3D.h:252
vtkCompositeDataPipeline::ExecuteSimpleAlgorithm
virtual void ExecuteSimpleAlgorithm(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec, int compositePort)
vtkCompositeDataPipeline::ForwardUpstream
virtual int ForwardUpstream(int i, int j, vtkInformation *request)
vtkStreamingDemandDrivenPipeline
Executive supporting partial updates.
Definition: vtkStreamingDemandDrivenPipeline.h:48
vtkCompositeDataPipeline::New
static vtkCompositeDataPipeline * New()
vtkCompositeDataPipeline::InLocalLoop
int InLocalLoop
Definition: vtkCompositeDataPipeline.h:153
vtkCompositeDataPipeline::ExecuteData
int ExecuteData(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) override
vtkCompositeDataPipeline::ExecuteDataStart
void ExecuteDataStart(vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec) override