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.

214 lines
5.2 KiB
C

/*=========================================================================
Program: Visualization Toolkit
Module: vtkSelectionSource.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 vtkSelectionSource
* @brief Generate selection from given set of ids
* vtkSelectionSource generates a vtkSelection from a set of
* (piece id, cell id) pairs. It will only generate the selection values
* that match UPDATE_PIECE_NUMBER (i.e. piece == UPDATE_PIECE_NUMBER).
*
* User-supplied, application-specific selections (with a ContentType of
* vtkSelectionNode::USER) are not supported.
*/
#ifndef vtkSelectionSource_h
#define vtkSelectionSource_h
#include "vtkFiltersSourcesModule.h" // For export macro
#include "vtkSelectionAlgorithm.h"
class vtkSelectionSourceInternals;
class VTKFILTERSSOURCES_EXPORT vtkSelectionSource : public vtkSelectionAlgorithm
{
public:
static vtkSelectionSource* New();
vtkTypeMacro(vtkSelectionSource, vtkSelectionAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
//@{
/**
* Add a (piece, id) to the selection set. The source will generate
* only the ids for which piece == UPDATE_PIECE_NUMBER.
* If piece == -1, the id applies to all pieces.
*/
void AddID(vtkIdType piece, vtkIdType id);
void AddStringID(vtkIdType piece, const char* id);
//@}
/**
* Add a point in world space to probe at.
*/
void AddLocation(double x, double y, double z);
/**
* Add a value range to threshold within.
*/
void AddThreshold(double min, double max);
/**
* Set a frustum to choose within.
*/
void SetFrustum(double* vertices);
/**
* Add the flat-index/composite index for a block.
*/
void AddBlock(vtkIdType blockno);
//@{
/**
* Removes all IDs.
*/
void RemoveAllIDs();
void RemoveAllStringIDs();
//@}
/**
* Remove all thresholds added with AddThreshold.
*/
void RemoveAllThresholds();
/**
* Remove all locations added with AddLocation.
*/
void RemoveAllLocations();
/**
* Remove all blocks added with AddBlock.
*/
void RemoveAllBlocks();
//@{
/**
* Set the content type for the generated selection.
* Possible values are as defined by
* vtkSelection::SelectionContent.
*/
vtkSetMacro(ContentType, int);
vtkGetMacro(ContentType, int);
//@}
//@{
/**
* Set the field type for the generated selection.
* Possible values are as defined by
* vtkSelection::SelectionField.
*/
vtkSetMacro(FieldType, int);
vtkGetMacro(FieldType, int);
//@}
//@{
/**
* When extracting by points, extract the cells that contain the
* passing points.
*/
vtkSetMacro(ContainingCells, int);
vtkGetMacro(ContainingCells, int);
//@}
//@{
/**
* Specify number of layers to extract connected to the selected elements.
*/
vtkSetClampMacro(NumberOfLayers, int, 0, VTK_INT_MAX);
vtkGetMacro(NumberOfLayers, int);
//@}
//@{
/**
* Determines whether the selection describes what to include or exclude.
* Default is 0, meaning include.
*/
vtkSetMacro(Inverse, int);
vtkGetMacro(Inverse, int);
//@}
//@{
/**
* Access to the name of the selection's subset description array.
*/
vtkSetStringMacro(ArrayName);
vtkGetStringMacro(ArrayName);
//@}
//@{
/**
* Access to the component number for the array specified by ArrayName.
* Default is component 0. Use -1 for magnitude.
*/
vtkSetMacro(ArrayComponent, int);
vtkGetMacro(ArrayComponent, int);
//@}
//@{
/**
* If CompositeIndex < 0 then COMPOSITE_INDEX() is not added to the output.
*/
vtkSetMacro(CompositeIndex, int);
vtkGetMacro(CompositeIndex, int);
//@}
//@{
/**
* If HierarchicalLevel or HierarchicalIndex < 0 , then HIERARCHICAL_LEVEL()
* and HIERARCHICAL_INDEX() keys are not added to the output.
*/
vtkSetMacro(HierarchicalLevel, int);
vtkGetMacro(HierarchicalLevel, int);
vtkSetMacro(HierarchicalIndex, int);
vtkGetMacro(HierarchicalIndex, int);
//@}
//@{
/**
* Set/Get the query expression string.
*/
vtkSetStringMacro(QueryString);
vtkGetStringMacro(QueryString);
//@}
protected:
vtkSelectionSource();
~vtkSelectionSource() override;
int RequestInformation(vtkInformation* request, vtkInformationVector** inputVector,
vtkInformationVector* outputVector) override;
int RequestData(vtkInformation* request, vtkInformationVector** inputVector,
vtkInformationVector* outputVector) override;
vtkSelectionSourceInternals* Internal;
int ContentType;
int FieldType;
int ContainingCells;
int PreserveTopology;
int Inverse;
int CompositeIndex;
int HierarchicalLevel;
int HierarchicalIndex;
char* ArrayName;
int ArrayComponent;
char* QueryString;
int NumberOfLayers;
private:
vtkSelectionSource(const vtkSelectionSource&) = delete;
void operator=(const vtkSelectionSource&) = delete;
};
#endif