comac_desk_app/ThirdpartyLibs/Libs/windows-x86_64/vtk/include/vtkExtractBlockUsingDataAss...

141 lines
4.5 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkExtractBlockUsingDataAssembly.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/**
* @class vtkExtractBlockUsingDataAssembly
* @brief extract blocks from certain composite datasets
*
* vtkExtractBlockUsingDataAssembly is intended to extract selected blocks
* from certain composite datasets. Blocks to extract are selected using
* selectors. For supported selectors see `vtkDataAssembly::SelectNodes`.
*
* The specific data-assembly to use to apply the selectors to determine the
* blocks to extract is chosen using `vtkExtractBlockUsingDataAssembly::SetAssemblyName`.
*
* @section vtkExtractBlockUsingDataAssembly-SupportedDataTypes Supported Data Types
*
* This filter accepts `vtkUniformGridAMR`,
* `vtkMultiBlockDataSet`, and `vtkPartitionedDataSetCollection` (and
* subclasses). vtkMultiPieceDataSet and vtkPartitionedDataSet are not accepted
* as inputs since those composite datasets are not comprised of "blocks".
*
* For vtkOverlappingAMR, since extracting blocks cannot always guarantee a valid
* overlapping AMR, this filter generates a `vtkPartitionedDataSetCollection`
* instead. Any blanking information present in the input vtkOverlappingAMR is
* also discarded for the same reason.
*
* For all other supported input data types, the type is preserved.
*/
#ifndef vtkExtractBlockUsingDataAssembly_h
#define vtkExtractBlockUsingDataAssembly_h
#include "vtkCompositeDataSetAlgorithm.h"
#include "vtkFiltersExtractionModule.h" // For export macro
class vtkDataAssembly;
class vtkPartitionedDataSetCollection;
class VTKFILTERSEXTRACTION_EXPORT vtkExtractBlockUsingDataAssembly
: public vtkCompositeDataSetAlgorithm
{
public:
static vtkExtractBlockUsingDataAssembly* New();
vtkTypeMacro(vtkExtractBlockUsingDataAssembly, vtkCompositeDataSetAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
///@{
/**
* API to set selectors. Multiple selectors can be added using `AddSelector`.
* The order in which selectors are specified is not preserved and has no
* impact on the result.
*
* `AddSelector` returns true if the selector was added, false if the selector
* was already specified and hence not added.
*
* @sa vtkDataAssembly::SelectNodes
*/
bool AddSelector(const char* selector);
void ClearSelectors();
///@}
/**
* Convenience method to set a single selector.
* This clears any other existing selectors.
*/
void SetSelector(const char* selector);
///@{
/**
* API to access selectors.
*/
int GetNumberOfSelectors() const;
const char* GetSelector(int index) const;
///@}
///@{
/**
* Get/Set the active assembly to use. The chosen assembly is used
* in combination with the selectors specified to determine which blocks
* are to be extracted.
*
* By default, this is set to
* vtkDataAssemblyUtilities::HierarchyName().
*/
vtkSetStringMacro(AssemblyName);
vtkGetStringMacro(AssemblyName);
///@}
///@{
/**
* When set to true (default) subtrees for chosen paths are treated as
* selected.
*/
vtkSetMacro(SelectSubtrees, bool);
vtkGetMacro(SelectSubtrees, bool);
vtkBooleanMacro(SelectSubtrees, bool);
///@}
///@{
/**
* When set to true (default), the data assembly is pruned to remove
* branches that were not selected.
*/
vtkSetMacro(PruneDataAssembly, bool);
vtkGetMacro(PruneDataAssembly, bool);
vtkBooleanMacro(PruneDataAssembly, bool);
///@}
protected:
vtkExtractBlockUsingDataAssembly();
~vtkExtractBlockUsingDataAssembly() override;
int FillInputPortInformation(int port, vtkInformation* info) override;
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
int RequestDataObject(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
private:
vtkExtractBlockUsingDataAssembly(const vtkExtractBlockUsingDataAssembly&) = delete;
void operator=(const vtkExtractBlockUsingDataAssembly&) = delete;
class vtkInternals;
vtkInternals* Internals;
bool SelectSubtrees;
bool PruneDataAssembly;
char* AssemblyName;
};
#endif