VTK  9.7.1
vtkHyperTreeGridGeometryUnlimitedLevelEntry.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
25 #ifndef vtkHyperTreeGridGeometryUnlimitedLevelEntry_h
26 #define vtkHyperTreeGridGeometryUnlimitedLevelEntry_h
27 
28 #include "assert.h"
29 
30 #include "vtkObject.h"
31 #include "vtkSmartPointer.h"
32 
35 
36 VTK_ABI_NAMESPACE_BEGIN
37 class vtkHyperTree;
38 class vtkHyperTreeGrid;
39 
41 {
42 public:
46  void PrintSelf(ostream& os, vtkIndent indent);
47 
52  {
53  this->Tree = tree;
54  this->Level = 0;
55  this->Index = 0;
56  for (unsigned int d = 0; d < 3; ++d)
57  {
58  this->Origin[d] = 0.;
59  }
60  }
61 
66 
71 
75  void Dump(ostream& os);
76 
80  void Initialize(vtkHyperTree* tree, unsigned int level, vtkIdType index, const double* origin);
81 
85  vtkHyperTree* Initialize(vtkHyperTreeGrid* grid, vtkIdType treeIndex, bool create = false);
86 
90  void Reset()
91  {
92  this->Tree = nullptr;
93  this->Index = 0;
94  }
95 
100  {
101  this->Initialize(entry->Tree, entry->Level, entry->Index, entry->Origin);
102  this->LastRealIndex = entry->LastRealIndex;
103  this->LastRealLevel = entry->LastRealLevel;
104  }
105 
111  vtkHyperTreeGrid* grid)
112  {
115  cursor->Initialize(grid, this->Tree, this->Level, this->Index, this->Origin);
116  return cursor;
117  }
118 
125  {
126  assert("pre: level==0" && this->Level == 0);
129  cursor->Initialize(grid, this->Tree, this->Level, this->Index, this->Origin);
130  return cursor;
131  }
132 
137  vtkIdType GetVertexId() const { return this->LastRealIndex; }
138 
145 
151 
157 
162  void SetMask(const vtkHyperTreeGrid* grid, bool state);
163 
168  bool IsMasked(const vtkHyperTreeGrid* grid) const;
169 
175  bool IsLeaf(const vtkHyperTreeGrid* grid) const;
176 
181  bool IsRealLeaf(const vtkHyperTreeGrid* grid) const;
182 
187  bool IsVirtualLeaf(const vtkHyperTreeGrid* grid) const;
188 
193  bool IsTerminalNode(const vtkHyperTreeGrid* grid) const;
194 
198  bool IsRoot() { return this->Index == 0 && this->Level == 0; }
199 
208  void ToChild(const vtkHyperTreeGrid* grid, unsigned char ichild);
209 
213  vtkHyperTree* GetTree() const { return this->Tree; }
214 
216 
219  unsigned int GetLevel() const { return this->Level; }
220  unsigned int GetLastRealLevel() const { return this->LastRealLevel; }
222 
224 
227  double* GetOrigin() { return this->Origin; }
228  const double* GetOrigin() const { return this->Origin; }
230 
234  void GetBounds(double bounds[6]) const;
235 
239  void GetPoint(double point[3]) const;
240 
241 private:
245  vtkHyperTree* Tree;
246 
250  unsigned int Level = 0;
251 
255  vtkIdType Index = 0;
256 
260  vtkIdType LastRealIndex = 0;
261 
265  vtkIdType LastRealLevel = 0;
266 
270  double Origin[3];
271 };
272 
273 VTK_ABI_NAMESPACE_END
274 #endif // vtkHyperTreeGridGeometryUnlimitedLevelEntry
275 // VTK-HeaderTest-Exclude: vtkHyperTreeGridGeometryUnlimitedLevelEntry.h
void SetMask(const vtkHyperTreeGrid *grid, bool state)
Set the blanking mask is empty or not.
void GetBounds(double bounds[6]) const
Getter for bounding box of the current cell.
double * GetOrigin()
Getter for origin coordinates of the current cell.
const double * GetOrigin() const
Getter for origin coordinates of the current cell.
vtkIdType GetVertexId() const
Return the index of the current vertex in the tree.
A dataset containing a grid of vtkHyperTree instances arranged as a rectilinear grid.
bool IsRealLeaf(const vtkHyperTreeGrid *grid) const
Is the cursor pointing to a leaf?
vtkHyperTreeGridGeometryUnlimitedLevelEntry(vtkHyperTree *tree=nullptr)
Constructor.
vtkHyperTree * GetTree() const
Get HyperTree from current cache entry.
void Copy(const vtkHyperTreeGridGeometryUnlimitedLevelEntry *entry)
Copy function.
unsigned int GetLastRealLevel() const
Get level info from current cache entry.
bool IsTerminalNode(const vtkHyperTreeGrid *grid) const
Is the cursor pointing to a coarse with all children being leaves ?
void PrintSelf(ostream &os, vtkIndent indent)
Display info about the entry.
~vtkHyperTreeGridGeometryUnlimitedLevelEntry()=default
Destructor.
Hold a reference to a vtkObjectBase instance.
Definition: vtkMeta.h:23
int vtkIdType
Definition: vtkType.h:363
static vtkSmartPointer< T > New()
Create an instance of a VTK object.
bool IsLeaf(const vtkHyperTreeGrid *grid) const
Is the cursor pointing to a leaf?
void GetPoint(double point[3]) const
Getter for center of the current cell.
vtkHyperTreeGridGeometryUnlimitedLevelEntry & operator=(vtkHyperTreeGridGeometryUnlimitedLevelEntry const &)=default
void Initialize(vtkHyperTreeGrid *grid, vtkIdType treeIndex, bool create=false)
Initialize cursor at root of given tree index in grid.
void ToChild(const vtkHyperTreeGrid *grid, unsigned char ichild)
Move the cursor to child `child' of the current vertex.
bool IsMasked(const vtkHyperTreeGrid *grid) const
Determine whether blanking mask is empty or not.
bool IsVirtualLeaf(const vtkHyperTreeGrid *grid) const
Is the cursor pointing to a virtually subdivided leaf?
a simple class to control print indentation
Definition: vtkIndent.h:28
void SetGlobalIndexFromLocal(vtkIdType index)
Set the global index for the current cell of the HyperTree.
vtkIdType GetGlobalNodeIndex() const
Return the global index (relative to the grid) of the current vertex in the tree. ...
Cursor cache data with coordinates and level info.
vtkSmartPointer< vtkHyperTreeGridOrientedGeometryCursor > GetHyperTreeGridOrientedGeometryCursor(vtkHyperTreeGrid *grid)
Create a vtkHyperTreeGridOrientedCursor from input grid and current entry data.
unsigned int GetLevel() const
Get level info from current cache entry.
void Dump(ostream &os)
Dump information.
A data object structured as a tree.
Definition: vtkHyperTree.h:170
vtkSmartPointer< vtkHyperTreeGridNonOrientedGeometryCursor > GetHyperTreeGridNonOrientedGeometryCursor(vtkHyperTreeGrid *grid)
Create a vtkHyperTreeGridNonOrientedCursor from input grid and current entry data.
void SetGlobalIndexStart(vtkIdType index)
Set the global index for the root cell of the HyperTree.
void Initialize(vtkHyperTree *tree, unsigned int level, vtkIdType index, const double *origin)
Initialize cache entry from explicit required data.
void Initialize(vtkHyperTreeGrid *grid, vtkIdType treeIndex, bool create=false)
Initialize cursor at root of given tree index in grid.