VTK  9.3.20240328
vtkSelectionSource.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
52 #ifndef vtkSelectionSource_h
53 #define vtkSelectionSource_h
54 
55 #include "vtkFiltersSourcesModule.h" // For export macro
56 #include "vtkSelectionAlgorithm.h"
57 #include "vtkSelectionNode.h" // For FieldType
58 
59 #include <memory> // for std::shared_ptr
60 #include <vector> // for std::vector
61 
62 VTK_ABI_NAMESPACE_BEGIN
63 class VTKFILTERSSOURCES_EXPORT vtkSelectionSource : public vtkSelectionAlgorithm
64 {
65 public:
68  void PrintSelf(ostream& os, vtkIndent indent) override;
69 
71 
76  void SetNumberOfNodes(unsigned int numberOfNodes);
77  unsigned int GetNumberOfNodes() { return static_cast<unsigned int>(this->NodesInfo.size()); }
79 
81 
84  void RemoveNode(unsigned int idx);
85  void RemoveNode(const char* name);
87 
91  virtual void RemoveAllNodes();
92 
94 
109 
111 
125  {
127  ELEMENT_TYPE
128  };
129  vtkSetClampMacro(FieldTypeOption, int, FIELD_TYPE, ELEMENT_TYPE);
130  virtual void SetFieldTypeOptionToFieldType() { this->SetFieldTypeOption(FIELD_TYPE); }
131  virtual void SetFieldTypeOptionToElementType() { this->SetFieldTypeOption(ELEMENT_TYPE); }
132  vtkGetMacro(FieldTypeOption, int);
134 
136 
143  vtkSetClampMacro(FieldType, int, vtkSelectionNode::CELL, vtkSelectionNode::ROW);
144  vtkGetMacro(FieldType, int);
146 
148 
156  vtkSetClampMacro(ElementType, int, vtkDataObject::POINT, vtkDataObject::ROW);
157  vtkGetMacro(ElementType, int);
159 
161 
167  vtkSetClampMacro(ProcessID, int, -1, VTK_INT_MAX);
168  vtkGetMacro(ProcessID, int);
170 
171  //------------------------------------------------------------------------------
172  // Functions to manipulate the information of each selection node.
173  //------------------------------------------------------------------------------
174 
176 
185  void SetNodeName(unsigned int nodeId, const char* name);
186  void SetNodeName(const char* name) { this->SetNodeName(0, name); }
187  const char* GetNodeName(unsigned int nodeId);
188  const char* GetNodeName() { return this->GetNodeName(0); }
190 
192 
197  void AddID(unsigned int nodeId, vtkIdType piece, vtkIdType id);
198  void AddID(vtkIdType piece, vtkIdType id) { this->AddID(0, piece, id); }
199  void AddStringID(unsigned int nodeId, vtkIdType piece, const char* id);
200  void AddStringID(vtkIdType piece, const char* id) { this->AddStringID(0, piece, id); }
202 
204 
207  void AddLocation(unsigned int nodeId, double x, double y, double z);
208  void AddLocation(double x, double y, double z) { this->AddLocation(0, x, y, z); }
210 
212 
215  void AddThreshold(unsigned int nodeId, double min, double max);
216  void AddThreshold(double min, double max) { this->AddThreshold(0, min, max); }
218 
220 
223  void SetFrustum(unsigned int nodeId, double* vertices);
224  void SetFrustum(double* vertices) { this->SetFrustum(0, vertices); }
226 
228 
231  void AddBlock(unsigned int nodeId, vtkIdType block);
232  void AddBlock(vtkIdType blockno) { this->AddBlock(0, blockno); }
234 
236 
240  void AddBlockSelector(unsigned int nodeId, const char* block);
241  void AddBlockSelector(const char* selector) { this->AddBlockSelector(0, selector); }
242  void RemoveAllBlockSelectors(unsigned int nodeId);
245 
247 
250  void RemoveAllIDs(unsigned int nodeId);
251  void RemoveAllIDs() { this->RemoveAllIDs(0); }
252  void RemoveAllStringIDs(unsigned int nodeId);
255 
257 
260  void RemoveAllThresholds(unsigned int nodeId);
263 
265 
268  void RemoveAllLocations(unsigned int nodeId);
271 
273 
276  void RemoveAllBlocks(unsigned int nodeId);
277  void RemoveAllBlocks() { this->RemoveAllBlocks(0); }
279 
281 
288  void SetContentType(unsigned int nodeId, int type);
289  void SetContentType(int contentType) { this->SetContentType(0, contentType); }
290  int GetContentTypeMinValue() { return vtkSelectionNode::SelectionContent::GLOBALIDS; }
291  int GetContentTypeMaxValue() { return vtkSelectionNode::SelectionContent::USER; }
292  int GetContentType(unsigned int nodeId);
293  int GetContentType() { return this->GetContentType(0); }
295 
297 
303  void SetContainingCells(unsigned int nodeId, vtkTypeBool containingCells);
304  void SetContainingCells(vtkTypeBool containingCells)
305  {
306  this->SetContainingCells(0, containingCells);
307  }
308  vtkTypeBool GetContainingCells(unsigned int nodeId);
311 
313 
318  void SetNumberOfLayers(unsigned int nodeId, int numberOfLayers);
319  void SetNumberOfLayers(int numberOfLayers) { this->SetNumberOfLayers(0, numberOfLayers); }
320  int GetNumberOfLayersMinValue() { return 0; }
322  int GetNumberOfLayers(unsigned int nodeId);
323  int GetNumberOfLayers() { return this->GetNumberOfLayers(0); }
325 
327 
332  void SetRemoveSeed(unsigned int nodeId, bool RemoveSeed);
333  void SetRemoveSeed(bool RemoveSeed) { this->SetRemoveSeed(0, RemoveSeed); }
334  bool GetRemoveSeed(unsigned int nodeId);
335  bool GetRemoveSeed() { return this->GetRemoveSeed(0); }
337 
339 
344  void SetRemoveIntermediateLayers(unsigned int nodeId, bool RemoveIntermediateLayers);
345  void SetRemoveIntermediateLayers(bool RemoveIntermediateLayers)
346  {
347  this->SetRemoveIntermediateLayers(0, RemoveIntermediateLayers);
348  }
349  bool GetRemoveIntermediateLayers(unsigned int nodeId);
352 
354 
359  void SetInverse(unsigned int nodeId, vtkTypeBool inverse);
360  void SetInverse(vtkTypeBool inverse) { this->SetInverse(0, inverse); }
361  vtkTypeBool GetInverse(unsigned int nodeId);
362  vtkTypeBool GetInverse() { return this->GetInverse(0); }
364 
366 
370  void SetArrayName(unsigned int nodeId, const char* name);
371  void SetArrayName(const char* name) { this->SetArrayName(0, name); }
372  const char* GetArrayName(unsigned int nodeId);
373  const char* GetArrayName() { return this->GetArrayName(0); }
375 
377 
382  void SetArrayComponent(unsigned int nodeId, int component);
383  void SetArrayComponent(int component) { this->SetArrayComponent(0, component); }
384  int GetArrayComponent(unsigned int nodeId);
385  int GetArrayComponent() { return this->GetArrayComponent(0); }
387 
389 
395  void SetCompositeIndex(unsigned int nodeId, int index);
396  void SetCompositeIndex(int compositeIndex) { this->SetCompositeIndex(0, compositeIndex); }
397  int GetCompositeIndex(unsigned int nodeId);
398  int GetCompositeIndex() { return this->GetCompositeIndex(0); }
400 
402 
409  void SetHierarchicalLevel(unsigned int nodeId, int level);
410  void SetHierarchicalLevel(int level) { this->SetHierarchicalLevel(0, level); }
411  int GetHierarchicalLevel(unsigned int nodeId);
412  int GetHierarchicalLevel() { return this->GetHierarchicalLevel(0); }
413  void SetHierarchicalIndex(unsigned int nodeId, int index);
414  void SetHierarchicalIndex(int index) { this->SetHierarchicalIndex(0, index); }
415  int GetHierarchicalIndex(unsigned int nodeId);
416  int GetHierarchicalIndex() { return this->GetHierarchicalIndex(0); }
418 
420 
425  void SetAssemblyName(unsigned int nodeId, const char* name);
426  void SetAssemblyName(const char* name) { this->SetAssemblyName(0, name); }
427  const char* GetAssemblyName(unsigned int nodeId);
428  const char* GetAssemblyName() { return this->GetAssemblyName(0); }
429  void AddSelector(unsigned int nodeId, const char* selector);
430  void AddSelector(const char* selector) { this->AddSelector(0, selector); }
431  void RemoveAllSelectors(unsigned int nodeId);
434 
436 
439  void SetQueryString(unsigned int nodeId, const char* queryString);
440  void SetQueryString(const char* query) { this->SetQueryString(0, query); }
441  const char* GetQueryString(unsigned int nodeId);
442  const char* GetQueryString() { return this->GetQueryString(0); }
444 
445 protected:
448 
450  vtkInformationVector* outputVector) override;
451  int RequestData(vtkInformation* request, vtkInformationVector** inputVector,
452  vtkInformationVector* outputVector) override;
453 
459  struct NodeInformation;
460  std::vector<std::shared_ptr<NodeInformation>> NodesInfo;
461 
462 private:
463  vtkSelectionSource(const vtkSelectionSource&) = delete;
464  void operator=(const vtkSelectionSource&) = delete;
465 };
466 
467 VTK_ABI_NAMESPACE_END
468 #endif
a simple class to control print indentation
Definition: vtkIndent.h:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
Superclass for algorithms that produce only Selection as output.
@ CELL
The selection data provided is cell-data.
@ ROW
The selection data provided is table row-data.
Generate selection from given set of ids.
void AddID(unsigned int nodeId, vtkIdType piece, vtkIdType id)
Add a (piece, id) to the selection set.
void RemoveAllThresholds()
Remove all thresholds added with AddThreshold.
void SetFrustum(unsigned int nodeId, double *vertices)
Set a frustum to choose within.
void SetArrayComponent(unsigned int nodeId, int component)
Set/Get the component number for the array specified by ArrayName.
void SetCompositeIndex(int compositeIndex)
Set/Get the CompositeIndex.
int GetHierarchicalLevel(unsigned int nodeId)
Set/Get the Hierarchical/HierarchicalIndex.
void SetAssemblyName(const char *name)
For selector-based selection qualification.
void SetNumberOfLayers(int numberOfLayers)
Set/Get the number of layers to extract connected to the selected elements.
void SetNodeName(unsigned int nodeId, const char *name)
Set/Get the node name.
vtkTypeBool GetInverse(unsigned int nodeId)
Determines whether the selection describes what to include or exclude.
int GetHierarchicalLevel()
Set/Get the Hierarchical/HierarchicalIndex.
void SetArrayName(unsigned int nodeId, const char *name)
Get/Set the name used for the SelectionList in the generated vtkSelectionNode.
void SetNumberOfNodes(unsigned int numberOfNodes)
Set/Get the number of nodes that will be created for the generated selection.
const char * GetQueryString()
Set/Get the query expression string.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void AddBlock(unsigned int nodeId, vtkIdType block)
Add the flat-index/composite index for a block.
void AddStringID(unsigned int nodeId, vtkIdType piece, const char *id)
Add a (piece, id) to the selection set.
void SetContainingCells(unsigned int nodeId, vtkTypeBool containingCells)
When extracting by points, extract the cells that contain the passing points.
void SetContentType(unsigned int nodeId, int type)
Set/Get the content type.
const char * GetArrayName(unsigned int nodeId)
Get/Set the name used for the SelectionList in the generated vtkSelectionNode.
void SetRemoveSeed(bool RemoveSeed)
Set/Get the number of layers related flag to remove seed selection.
void SetInverse(unsigned int nodeId, vtkTypeBool inverse)
Determines whether the selection describes what to include or exclude.
void AddBlock(vtkIdType blockno)
Add the flat-index/composite index for a block.
const char * GetQueryString(unsigned int nodeId)
Set/Get the query expression string.
void SetContainingCells(vtkTypeBool containingCells)
When extracting by points, extract the cells that contain the passing points.
static vtkSelectionSource * New()
void AddBlockSelector(const char *selector)
Add/Remove block-selectors to make selections with vtkSelectionNode::BLOCK_SELECTORS as the content-t...
void SetRemoveSeed(unsigned int nodeId, bool RemoveSeed)
Set/Get the number of layers related flag to remove seed selection.
void AddLocation(unsigned int nodeId, double x, double y, double z)
Add a point in world space to probe at.
void AddStringID(vtkIdType piece, const char *id)
Add a (piece, id) to the selection set.
void RemoveAllSelectors()
For selector-based selection qualification.
void RemoveAllSelectors(unsigned int nodeId)
For selector-based selection qualification.
void SetContentType(int contentType)
Set/Get the content type.
int GetNumberOfLayersMinValue()
Set/Get the number of layers to extract connected to the selected elements.
void SetFrustum(double *vertices)
Set a frustum to choose within.
int GetContentType()
Set/Get the content type.
void RemoveNode(const char *name)
Remove a selection node.
int GetContentTypeMaxValue()
Set/Get the content type.
void SetHierarchicalIndex(int index)
Set/Get the Hierarchical/HierarchicalIndex.
bool GetRemoveSeed()
Set/Get the number of layers related flag to remove seed selection.
int GetCompositeIndex(unsigned int nodeId)
Set/Get the CompositeIndex.
vtkGetCharFromStdStringMacro(Expression)
Set/Get the expression that defines the boolean expression to combine the selection nodes.
bool GetRemoveSeed(unsigned int nodeId)
Set/Get the number of layers related flag to remove seed selection.
int GetContentTypeMinValue()
Set/Get the content type.
void SetHierarchicalIndex(unsigned int nodeId, int index)
Set/Get the Hierarchical/HierarchicalIndex.
void RemoveAllLocations(unsigned int nodeId)
Remove all locations added with AddLocation.
void SetRemoveIntermediateLayers(bool RemoveIntermediateLayers)
Set/Get the number of layers related flag to remove intermediate layers.
void SetArrayName(const char *name)
Get/Set the name used for the SelectionList in the generated vtkSelectionNode.
unsigned int GetNumberOfNodes()
Set/Get the number of nodes that will be created for the generated selection.
void SetInverse(vtkTypeBool inverse)
Determines whether the selection describes what to include or exclude.
void SetHierarchicalLevel(unsigned int nodeId, int level)
Set/Get the Hierarchical/HierarchicalIndex.
const char * GetNodeName(unsigned int nodeId)
Set/Get the node name.
const char * GetAssemblyName()
For selector-based selection qualification.
void SetNumberOfLayers(unsigned int nodeId, int numberOfLayers)
Set/Get the number of layers to extract connected to the selected elements.
void AddLocation(double x, double y, double z)
Add a point in world space to probe at.
const char * GetNodeName()
Set/Get the node name.
void RemoveAllBlocks(unsigned int nodeId)
Remove all blocks added with AddBlock.
int GetHierarchicalIndex()
Set/Get the Hierarchical/HierarchicalIndex.
void SetArrayComponent(int component)
Set/Get the component number for the array specified by ArrayName.
int GetNumberOfLayersMaxValue()
Set/Get the number of layers to extract connected to the selected elements.
void RemoveAllStringIDs()
Removes all IDs.
const char * GetAssemblyName(unsigned int nodeId)
For selector-based selection qualification.
void SetQueryString(const char *query)
Set/Get the query expression string.
int GetNumberOfLayers()
Set/Get the number of layers to extract connected to the selected elements.
void RemoveAllLocations()
Remove all locations added with AddLocation.
vtkTypeBool GetContainingCells()
When extracting by points, extract the cells that contain the passing points.
virtual void RemoveAllNodes()
Remove all selection nodes.
FieldTypeOptions
Set/Get FieldTypeOption which is used to specify the selection field type for the selection.
void SetRemoveIntermediateLayers(unsigned int nodeId, bool RemoveIntermediateLayers)
Set/Get the number of layers related flag to remove intermediate layers.
void SetNodeName(const char *name)
Set/Get the node name.
vtkTypeBool GetContainingCells(unsigned int nodeId)
When extracting by points, extract the cells that contain the passing points.
bool GetRemoveIntermediateLayers(unsigned int nodeId)
Set/Get the number of layers related flag to remove intermediate layers.
void AddSelector(unsigned int nodeId, const char *selector)
For selector-based selection qualification.
void RemoveAllIDs()
Removes all IDs.
int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
~vtkSelectionSource() override
int GetCompositeIndex()
Set/Get the CompositeIndex.
void RemoveAllStringIDs(unsigned int nodeId)
Removes all IDs.
vtkSetStdStringFromCharMacro(Expression)
Set/Get the expression that defines the boolean expression to combine the selection nodes.
const char * GetArrayName()
Get/Set the name used for the SelectionList in the generated vtkSelectionNode.
void SetCompositeIndex(unsigned int nodeId, int index)
Set/Get the CompositeIndex.
void SetHierarchicalLevel(int level)
Set/Get the Hierarchical/HierarchicalIndex.
void SetQueryString(unsigned int nodeId, const char *queryString)
Set/Get the query expression string.
int GetArrayComponent()
Set/Get the component number for the array specified by ArrayName.
virtual void SetFieldTypeOptionToFieldType()
Set/Get FieldTypeOption which is used to specify the selection field type for the selection.
bool GetRemoveIntermediateLayers()
Set/Get the number of layers related flag to remove intermediate layers.
void AddSelector(const char *selector)
For selector-based selection qualification.
int GetNumberOfLayers(unsigned int nodeId)
Set/Get the number of layers to extract connected to the selected elements.
void RemoveAllBlocks()
Remove all blocks added with AddBlock.
void RemoveAllThresholds(unsigned int nodeId)
Remove all thresholds added with AddThreshold.
void AddBlockSelector(unsigned int nodeId, const char *block)
Add/Remove block-selectors to make selections with vtkSelectionNode::BLOCK_SELECTORS as the content-t...
vtkTypeBool GetInverse()
Determines whether the selection describes what to include or exclude.
std::vector< std::shared_ptr< NodeInformation > > NodesInfo
void AddID(vtkIdType piece, vtkIdType id)
Add a (piece, id) to the selection set.
void RemoveAllIDs(unsigned int nodeId)
Removes all IDs.
void AddThreshold(unsigned int nodeId, double min, double max)
Add a value range to threshold within.
int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
This is called by the superclass.
void RemoveAllBlockSelectors(unsigned int nodeId)
Add/Remove block-selectors to make selections with vtkSelectionNode::BLOCK_SELECTORS as the content-t...
virtual void SetFieldTypeOptionToElementType()
Set/Get FieldTypeOption which is used to specify the selection field type for the selection.
int GetArrayComponent(unsigned int nodeId)
Set/Get the component number for the array specified by ArrayName.
void RemoveAllBlockSelectors()
Add/Remove block-selectors to make selections with vtkSelectionNode::BLOCK_SELECTORS as the content-t...
void AddThreshold(double min, double max)
Add a value range to threshold within.
void SetAssemblyName(unsigned int nodeId, const char *name)
For selector-based selection qualification.
int GetContentType(unsigned int nodeId)
Set/Get the content type.
int GetHierarchicalIndex(unsigned int nodeId)
Set/Get the Hierarchical/HierarchicalIndex.
void RemoveNode(unsigned int idx)
Remove a selection node.
@ component
Definition: vtkX3D.h:175
@ level
Definition: vtkX3D.h:395
@ type
Definition: vtkX3D.h:516
@ name
Definition: vtkX3D.h:219
@ index
Definition: vtkX3D.h:246
@ string
Definition: vtkX3D.h:490
int vtkTypeBool
Definition: vtkABI.h:64
std::pair< boost::graph_traits< vtkGraph * >::vertex_iterator, boost::graph_traits< vtkGraph * >::vertex_iterator > vertices(vtkGraph *g)
int vtkIdType
Definition: vtkType.h:315
#define VTK_INT_MAX
Definition: vtkType.h:144
#define max(a, b)