3#ifndef vtkCellGridSidesQuery_h
4#define vtkCellGridSidesQuery_h
13#include <unordered_map>
16VTK_ABI_NAMESPACE_BEGIN
189 std::unordered_map<vtkStringToken, std::unordered_map<vtkIdType, std::set<int>>>>&
230 std::unordered_map<vtkStringToken, std::unordered_map<vtkIdType, std::set<int>>>>
vtkCellGridQuery()=default
Hold a map from hash-ids (representing sides of cells of multiple types) to details on the cells that...
PassWork
An enum specifying the work responders should perform for each pass.
@ HashSides
Responders should call AddSide() on each cell's sides to insert entries into this->SideCache.
@ GenerateSideSets
Responders should insert new side sets into their parent cell-grid by examining this->Sides.
@ Summarize
Responders should claim entries in this->SideCache by transcribing them to this->Sides and then delet...
vtkGetEnumMacro(Strategy, SummaryStrategy)
std::vector< SideSetArray > GetSideSetArrays(vtkStringToken cellType)
Return arrays of cell+side IDs for the given cellType.
int OutputDimensionControl
vtkSetEnumMacro(SelectionType, SelectionMode)
Set/get whether the extracted sides should be marked as selectable or whether their originating data ...
virtual void SetSelectionType(int selnType)
This method exists for ParaView to set the selection mode.
void SetStrategyToWinding()
vtkCellGridSidesQuery()=default
vtkTypeBool OmitSidesForRenderableInputs
~vtkCellGridSidesQuery() override
SideFlags
An enum specifying which side(s) each responder should generate.
@ VerticesOfVolumes
Input volumes should produce corner vertices.
@ EdgesOfInputs
Produce edges of inputs of higher dimension.
@ SurfacesOfVolumes
Input volumes should produce bounding surfaces.
@ SurfacesOfInputs
Produce surfaces (i.e., omit sides of renderable geometry).
@ EdgesOfVolumes
Input volumes should produce edges bounding faces.
@ NextLowestDimension
Given an input of dimension D, produce sides of dimension D-1.
@ AllSides
Produce all sides of inputs that have any sides.
@ VerticesOfInputs
Produce vertices of inputs of higher dimension.
@ EdgesOfSurfaces
Input surfaces should produce bounding edges.
@ VerticesOfSurfaces
Input surfaces should produce corner vertices.
@ VerticesOfEdges
Input edges should produce endpoint vertices.
vtkSetEnumMacro(Strategy, SummaryStrategy)
Set/get the strategy responders should use to generate entries in Sides from entries in SideCache.
void SetStrategyToBoundary()
static vtkStringToken SelectionModeToLabel(SelectionMode mode)
Return a string-token with the given selection mode or vice-versa.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
SummaryStrategy
An enum specifying the strategy by which input hashes are summarized into output Sides entries.
@ Boundary
Hashes for shapes (a) of dimension (d-1) that occur an odd number of times and (b) of dimension < (d-...
@ Winding
The number of hash entries for a given side should be used to decide whether to include a hash's side...
@ AnyOccurrence
If a hash entry entry exists, a single side should be included in the output.
std::unordered_map< vtkStringToken, std::unordered_map< vtkStringToken, std::unordered_map< vtkIdType, std::set< int > > > > Sides
static SelectionMode SelectionModeFromLabel(vtkStringToken token)
bool Initialize() override
Override this if your query-result state requires initialization.
SelectionMode SelectionType
static vtkCellGridSidesQuery * New()
virtual void SetStrategy(int strategy)
This method exists for ParaView to set the strategy.
std::unordered_map< vtkStringToken, std::unordered_map< vtkStringToken, std::unordered_map< vtkIdType, std::set< int > > > > & GetSides()
bool IsAnotherPassRequired() override
Override this if your query allows responders to execute in multiple phases.
vtkTypeBool PreserveRenderableInputs
void SetStrategyToAnyOccurrence()
static vtkStringToken SummaryStrategyToLabel(SummaryStrategy strategy)
Return a string-token with the given summarization strategy or vice-versa.
SelectionMode
Indicate how output should be generated or marked so selection works as expected.
@ Input
Input shapes should be selected when output sides are picked.
@ Output
Output sides should be selected when they are picked.
bool Finalize() override
Override this if your query-result state requires finalization.
static SummaryStrategy SummaryStrategyFromLabel(vtkStringToken token)
virtual void SetSideCache(vtkCellGridSidesCache *cache)
void StartPass() override
Mark the start of a pass through each cell type.
vtkCellGridSidesCache * SideCache
vtkGetEnumMacro(SelectionType, SelectionMode)
dynamic, self-adjusting array of vtkIdType
a simple class to control print indentation
Hold a reference to a vtkObjectBase instance.
Represent a string by its integer hash.
A structure created by the GetSideSetArrays() method for responders to use.
vtkStringToken CellType
The type of parent cell which created the sides.
vtkSmartPointer< vtkIdTypeArray > Sides
An array of tuples of (cell-id, side-id) specifying sides.
vtkStringToken SideShape
The shape of all the sides in the Sides array.