1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
|
// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
// SPDX-License-Identifier: BSD-3-Clause
/**
* @class vtkHyperTreeGridAlgorithm
* @brief Superclass for algorithms that produce
* a hyper tree grid as output
*
*
* vtkHyperTreeGridAlgorithm is a base class for hyper tree grid algorithms.
* This class defaults with one input port and one output port; it must be
* modified by the concrete derived class if a different behavior is sought.
* In addition, this class provides a FillOutputPortInfo() method that, by
* default, specifies that the output is a data object; this
* must also be modified in concrete subclasses if needed.
*
* @par Thanks:
* This test was written by Philippe Pebay and Charles Law, Kitware 2012
* This test was rewritten by Philippe Pebay, 2016
* This work was supported by Commissariat a l'Energie Atomique (CEA/DIF)
* CEA, DAM, DIF, F-91297 Arpajon, France.
*/
#ifndef vtkHyperTreeGridAlgorithm_h
#define vtkHyperTreeGridAlgorithm_h
#include "vtkAlgorithm.h"
#include "vtkCommonExecutionModelModule.h" // For export macro
VTK_ABI_NAMESPACE_BEGIN
class vtkBitArray;
class vtkDataSetAttributes;
class vtkHyperTreeGrid;
class vtkPolyData;
class vtkUnstructuredGrid;
class VTKCOMMONEXECUTIONMODEL_EXPORT vtkHyperTreeGridAlgorithm : public vtkAlgorithm
{
public:
vtkTypeMacro(vtkHyperTreeGridAlgorithm, vtkAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
///@{
/**
* Get the output data object for a port on this algorithm.
*/
vtkDataObject* GetOutput();
vtkDataObject* GetOutput(int);
virtual void SetOutput(vtkDataObject*);
///@}
///@{
/**
* Get the output as a hyper tree grid.
*/
vtkHyperTreeGrid* GetHyperTreeGridOutput();
vtkHyperTreeGrid* GetHyperTreeGridOutput(int);
///@}
///@{
/**
* Get the output as a polygonal dataset.
*/
vtkPolyData* GetPolyDataOutput();
vtkPolyData* GetPolyDataOutput(int);
///@}
///@{
/**
* Get the output as an unstructured grid.
*/
vtkUnstructuredGrid* GetUnstructuredGridOutput();
vtkUnstructuredGrid* GetUnstructuredGridOutput(int);
///@}
/**
* See vtkAlgorithm for details
*/
vtkTypeBool ProcessRequest(
vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
///@{
/**
* Assign a data object as input. Note that this method does not
* establish a pipeline connection. Use SetInputConnection() to
* setup a pipeline connection.
*/
void SetInputData(vtkDataObject*);
void SetInputData(int, vtkDataObject*);
///@}
///@{
/**
* Assign a data object as input. Note that this method does not
* establish a pipeline connection. Use AddInputConnection() to
* setup a pipeline connection.
*/
void AddInputData(vtkDataObject*);
void AddInputData(int, vtkDataObject*);
///@}
protected:
vtkHyperTreeGridAlgorithm();
~vtkHyperTreeGridAlgorithm() override;
/**
* see vtkAlgorithm for details
*/
int RequestDataObject(
vtkInformation*, vtkInformationVector** inputVector, vtkInformationVector* outputVector);
// convenience method
virtual int RequestInformation(vtkInformation*, vtkInformationVector**, vtkInformationVector*);
/**
* This is called by the superclass.
* This is the method you should override.
*/
virtual int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*);
/**
* This is called by the superclass.
* This is the method you should override.
*/
virtual int RequestUpdateExtent(vtkInformation*, vtkInformationVector**, vtkInformationVector*);
/**
* Main routine to process individual trees in the grid
* This is pure virtual method to be implemented by concrete algorithms
*/
virtual int ProcessTrees(vtkHyperTreeGrid*, vtkDataObject*) = 0;
///@{
/**
* Define default input and output port types
*/
int FillInputPortInformation(int, vtkInformation*) override;
int FillOutputPortInformation(int, vtkInformation*) override;
///@}
///@{
/**
* Reference to input and output data
*/
vtkDataSetAttributes* InData;
vtkDataSetAttributes* OutData;
///@}
///@{
/**
* JB Si a vrai, l'objet output aura le meme type que le type d'objet en entree input.
*/
bool AppropriateOutput;
///@}
private:
vtkHyperTreeGridAlgorithm(const vtkHyperTreeGridAlgorithm&) = delete;
void operator=(const vtkHyperTreeGridAlgorithm&) = delete;
};
VTK_ABI_NAMESPACE_END
#endif
|