3#ifndef vtkLabelHierarchyPrivate_h
4#define vtkLabelHierarchyPrivate_h
8#include "octree/octree"
13VTK_ABI_NAMESPACE_BEGIN
64 if (
nullptr == this->Hierarchy)
66 vtkGenericWarningMacro(
"error: NULL this->Hierarchy in PriorityComparator");
72 vtkGenericWarningMacro(
73 "error: NULL this->Hierarchy->GetImplementation() in PriorityComparator");
81 class LabelSet :
public std::multiset<vtkIdType, PriorityComparator>
89 for (
int i = 0; i < 3; ++i)
100 for (
int i = 0; i < 3; ++i)
110 for (
int i = 0; i < 3; ++i)
120 std::multiset<vtkIdType, PriorityComparator>::operator=(rhs);
123 for (
int i = 0; i < 3; ++i)
132 void SetGeometry(
const double center[3],
double length);
139 this->insert(anchor);
194 const double center[3],
double length)
196 for (
int i = 0; i < 3; ++i)
198 this->
Center[i] = center[i];
204 octree<LabelSet, 2>::octree_node_pointer self)
206 double sz2 = this->Size / 2.;
208 for (
int i = 0; i < self->num_children(); ++i)
210 for (
int j = 0; j < 2; ++j)
212 x[j] = this->
Center[j] + ((i & (1 << j)) ? 0.5 : -0.5) * sz2;
215 (*self)[i].value().SetGeometry(x, sz2);
220 octree<LabelSet, 3>::octree_node_pointer self)
222 double sz2 = this->Size / 2.;
224 for (
int i = 0; i < self->num_children(); ++i)
226 for (
int j = 0; j < 3; ++j)
228 x[j] = this->
Center[j] + ((i & (1 << j)) ? 0.5 : -0.5) * sz2;
230 (*self)[i].value().SetGeometry(x, sz2);
235 octree<LabelSet, 2>::octree_node_pointer self,
LabelSet& emptyNode)
237 self->add_children(emptyNode);
238 this->SetChildGeometry(self);
242 octree<LabelSet, 3>::octree_node_pointer self,
LabelSet& emptyNode)
244 self->add_children(emptyNode);
245 this->SetChildGeometry(self);
abstract superclass for arrays of numeric data
double GetTuple1(vtkIdType tupleIdx)
These methods are included as convenience for the wrappers.
LabelSet(const LabelSet &src)
void Insert(vtkIdType anchor)
void AddChildren(octree< LabelSet, 2 >::octree_node_pointer self, LabelSet &emptyNode)
LabelSet(vtkLabelHierarchy *hierarchy)
vtkIdType GetTotalAnchorCount() const
LabelSet & operator=(const LabelSet &rhs)
const double * GetCenter() const
void SetChildGeometry(octree< LabelSet, 2 >::octree_node_pointer self)
void SetGeometry(const double center[3], double length)
vtkIdType GetLocalAnchorCount() const
HierarchyType3 * Hierarchy3
vtkTimeStamp HierarchyTime
void SmudgeAnchor3(HierarchyCursor3 &cursor, vtkIdType anchor, double *x)
void DemoteAnchors(int level)
void SmudgeAnchor2(HierarchyCursor2 &cursor, vtkIdType anchor, double *x)
octree< LabelSet, 2 > HierarchyType2
bool ComparePriorities(vtkIdType a, vtkIdType b)
octree< LabelSet > HierarchyType3
octree< LabelSet, 2 >::cursor HierarchyCursor2
void DropAnchor3(vtkIdType anchor)
void FillHierarchyRoot(LabelSet &anchors)
HierarchyType2 * Hierarchy2
void RecursiveNodeDivide(HierarchyCursor2 &cursor)
HierarchyType3::size_type ActualDepth
void DropAnchor2(vtkIdType anchor)
void RecursiveNodeDivide(HierarchyCursor3 &cursor)
octree< LabelSet >::cursor HierarchyCursor3
void PrepareSortedAnchors(LabelSet &anchors)
octree< LabelSet >::iterator HierarchyIterator3
octree< LabelSet, 2 >::iterator HierarchyIterator2
static vtkLabelHierarchy * Current
void BinAnchorsToLevel(int level)
contains an octree of labels
Implementation * GetImplementation()
virtual vtkDataArray * GetPriorities()
Set/get the array specifying the importance (priority) of each label.
Computes the portion of a dataset which is inside a selection.
record modification and/or execution time
PriorityComparator(vtkLabelHierarchy *h)
~PriorityComparator()=default
bool operator()(const vtkIdType &a, const vtkIdType &b) const
PriorityComparator(const PriorityComparator &src)
vtkLabelHierarchy * Hierarchy
PriorityComparator & operator=(const PriorityComparator &rhs)