You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
3.9 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkPassSelectedArrays.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 vtkPassSelectedArrays
* @brief pass through chosen arrays
*
* vtkPassSelectedArrays can be used to pass through chosen arrays. It is
* intended as a replacement for vtkPassArrays filter with a more standard API
* that uses `vtkDataArraySelection` to choose arrays to pass through.
*
* To enable/disable arrays to pass, get the appropriate `vtkDataArraySelection`
* instance using `GetArraySelection` or the association specific get methods
* such as `GetPointDataArraySelection`, `GetCellDataArraySelection` etc. and
* then enable/disable arrays using `vtkDataArraySelection` API. Using
* vtkDataArraySelection::SetUnknownArraySetting` one also dictate how arrays
* not explicitly listed are to be handled.
*
*/
#ifndef vtkPassSelectedArrays_h
#define vtkPassSelectedArrays_h
#include "vtkDataObject.h" // for vtkDataObject::FieldAssociations
#include "vtkFiltersGeneralModule.h" // For export macro
#include "vtkPassInputTypeAlgorithm.h"
#include "vtkSmartPointer.h" // for ivar
class vtkDataArraySelection;
class VTKFILTERSGENERAL_EXPORT vtkPassSelectedArrays : public vtkPassInputTypeAlgorithm
{
public:
static vtkPassSelectedArrays* New();
vtkTypeMacro(vtkPassSelectedArrays, vtkPassInputTypeAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
//@{
/**
* Enable/disable this filter. When disabled, this filter passes all input arrays
* irrespective of the array selections. Default is `true`.
*/
vtkSetMacro(Enabled, bool);
vtkGetMacro(Enabled, bool);
vtkBooleanMacro(Enabled, bool);
//@}
/**
* Returns the vtkDataArraySelection instance associated with a particular
* array association type (vtkDataObject::FieldAssociations). Returns nullptr
* if the association type is invalid others the corresponding
* vtkDataArraySelection instance is returned.
*/
vtkDataArraySelection* GetArraySelection(int association);
//@{
/**
* Convenience methods that call `GetArraySelection` with corresponding
* association type.
*/
vtkDataArraySelection* GetPointDataArraySelection()
{
return this->GetArraySelection(vtkDataObject::FIELD_ASSOCIATION_POINTS);
}
vtkDataArraySelection* GetCellDataArraySelection()
{
return this->GetArraySelection(vtkDataObject::FIELD_ASSOCIATION_CELLS);
}
vtkDataArraySelection* GetFieldDataArraySelection()
{
return this->GetArraySelection(vtkDataObject::FIELD_ASSOCIATION_NONE);
}
vtkDataArraySelection* GetVertexDataArraySelection()
{
return this->GetArraySelection(vtkDataObject::FIELD_ASSOCIATION_VERTICES);
}
vtkDataArraySelection* GetEdgeDataArraySelection()
{
return this->GetArraySelection(vtkDataObject::FIELD_ASSOCIATION_EDGES);
}
vtkDataArraySelection* GetRowDataArraySelection()
{
return this->GetArraySelection(vtkDataObject::FIELD_ASSOCIATION_ROWS);
}
//@}
protected:
vtkPassSelectedArrays();
~vtkPassSelectedArrays() override;
int FillInputPortInformation(int port, vtkInformation* info) override;
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
private:
vtkPassSelectedArrays(const vtkPassSelectedArrays&) = delete;
void operator=(const vtkPassSelectedArrays&) = delete;
bool Enabled;
vtkSmartPointer<vtkDataArraySelection> ArraySelections[vtkDataObject::NUMBER_OF_ASSOCIATIONS];
};
#endif