VTK  9.1.0
vtkSelector.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkSelector.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
23 #ifndef vtkSelector_h
24 #define vtkSelector_h
25 
26 #include "vtkFiltersExtractionModule.h" // For export macro
27 #include "vtkObject.h"
28 #include "vtkSmartPointer.h" // For vtkSmartPointer
29 
30 #include <set> // for std::set
31 
33 class vtkDataObject;
34 class vtkSelectionNode;
35 class vtkSignedCharArray;
36 class vtkTable;
37 class vtkDataObjectTree;
38 class vtkUniformGridAMR;
39 
40 class VTKFILTERSEXTRACTION_EXPORT vtkSelector : public vtkObject
41 {
42 public:
43  vtkTypeMacro(vtkSelector, vtkObject);
44  void PrintSelf(ostream& os, vtkIndent indent) override;
45 
55  virtual void Initialize(vtkSelectionNode* node);
56 
60  virtual void Finalize() {}
61 
71  virtual void Execute(vtkDataObject* input, vtkDataObject* output);
72 
74 
78  vtkSetMacro(InsidednessArrayName, std::string);
79  vtkGetMacro(InsidednessArrayName, std::string);
81 protected:
83  ~vtkSelector() override;
84 
85  // Contains the selection criteria.
86  vtkSelectionNode* Node = nullptr;
87 
88  // Name of the insidedness array added to the output when the selection criteria is
89  // evaluated by this operator.
91 
108  vtkDataObject* input, vtkSignedCharArray* insidednessArray) = 0;
109 
111  {
114  INHERIT
115  };
116 
124  virtual SelectionMode GetAMRBlockSelection(unsigned int level, unsigned int index);
125 
134  virtual SelectionMode GetBlockSelection(unsigned int compositeIndex);
135 
141 
147  vtkDataObject* data, vtkSignedCharArray* selectedPoints);
148 
157 
158 private:
159  vtkSelector(const vtkSelector&) = delete;
160  void operator=(const vtkSelector&) = delete;
161 
162  void ProcessBlock(vtkDataObject* inputBlock, vtkDataObject* outputBlock, bool forceFalse);
163  void ProcessAMR(vtkUniformGridAMR* input, vtkCompositeDataSet* output);
164  void ProcessDataObjectTree(vtkDataObjectTree* input, vtkDataObjectTree* output,
165  SelectionMode inheritedSelectionMode, unsigned int compositeIndex = 0);
166  void ProcessSelectors(vtkCompositeDataSet* input);
167 
168  std::set<unsigned int> SubsetCompositeIds;
169 };
170 
171 #endif
abstract superclass for composite (multi-block or AMR) datasets
provides implementation for most abstract methods in the superclass vtkCompositeDataSet
general representation of visualization data
Definition: vtkDataObject.h:60
a simple class to control print indentation
Definition: vtkIndent.h:34
abstract base class for most VTK objects
Definition: vtkObject.h:63
a node in a vtkSelection the defines the selection criteria.
virtual SelectionMode GetBlockSelection(unsigned int compositeIndex)
Returns whether the block is to be processed.
virtual SelectionMode GetAMRBlockSelection(unsigned int level, unsigned int index)
Returns whether the AMR block is to be processed.
virtual bool ComputeSelectedElements(vtkDataObject *input, vtkSignedCharArray *insidednessArray)=0
This method computes whether or not each element in the dataset is inside the selection and populates...
vtkSmartPointer< vtkSignedCharArray > CreateInsidednessArray(vtkIdType numElems)
Creates an array suitable for storing insideness.
vtkSmartPointer< vtkSignedCharArray > ComputeCellsContainingSelectedPoints(vtkDataObject *data, vtkSignedCharArray *selectedPoints)
Given a data object and selected points, return an array indicating the insidedness of cells that con...
virtual void Finalize()
Does any cleanup of objects created in Initialize.
Definition: vtkSelector.h:60
virtual void Execute(vtkDataObject *input, vtkDataObject *output)
Given an input and the vtkSelectionNode passed into the Initialize() method, add to the output a vtkS...
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
std::string InsidednessArrayName
Definition: vtkSelector.h:90
~vtkSelector() override
virtual void Initialize(vtkSelectionNode *node)
Sets the vtkSelectionNode used by this selection operator and initializes the data structures in the ...
void ExpandToConnectedElements(vtkDataObject *output)
Handle expanding to connected cells or point, if requested.
dynamic, self-adjusting array of signed char
A table, which contains similar-typed columns of data.
Definition: vtkTable.h:63
@ level
Definition: vtkX3D.h:401
@ index
Definition: vtkX3D.h:252
@ data
Definition: vtkX3D.h:321
@ string
Definition: vtkX3D.h:496
int vtkIdType
Definition: vtkType.h:332