VTK  9.3.20240721
vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor.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
32#ifndef vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor_h
33#define vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor_h
34
35#include "vtkCommonDataModelModule.h" // For export macro
36#include "vtkObject.h"
37
38#include "vtkHyperTreeGridGeometryUnlimitedLevelEntry.h" // cache for historic
39#include "vtkHyperTreeGridTools.h" // for HasTree
40#include "vtkSmartPointer.h" // Used internally
41#include <memory> // std::shared_ptr
42#include <vector> // std::vector
43
44VTK_ABI_NAMESPACE_BEGIN
45class vtkHyperTree;
50
52 : public vtkObject
53{
54public:
56 void PrintSelf(ostream& os, vtkIndent indent) override;
58
59 void Dump(ostream& os);
60
66
70 void Initialize(vtkHyperTreeGrid* grid, vtkIdType treeIndex, bool create = false);
71
75 void Initialize(vtkHyperTreeGrid* grid, vtkHyperTree* tree, unsigned int level,
77
78 void Initialize(vtkHyperTreeGrid* grid, vtkHyperTree* tree, unsigned int level, vtkIdType index,
79 double* origin);
80
82
84
87 bool HasTree() const { return vtk::hypertreegrid::HasTree(*this); }
89
91
94 vtkHyperTree* GetTree() const { return this->Tree; }
96
101
107
112 unsigned char GetDimension();
113
118 unsigned char GetNumberOfChildren();
119
122
123 double* GetOrigin();
124 double* GetSize();
125
126 void GetBounds(double bounds[6]);
127 void GetPoint(double point[3]);
128
133 void SetMask(bool state);
134
138 bool IsMasked();
139
144 bool IsLeaf();
145
151
157
161 bool IsRoot();
162
166 unsigned int GetLevel();
167 unsigned int GetLastRealLevel();
168
176 void ToChild(unsigned char ichild);
177
183 void ToRoot();
184
190 void ToParent();
191
197 vtkHyperTreeGrid* grid);
198
205
206protected:
212
218
223
225
229 std::shared_ptr<vtkHyperTreeGridScales> Scales;
230
231 unsigned int Level;
232
237
238 // Hyper tree grid to which the cursor is attached
239 std::vector<vtkHyperTreeGridGeometryUnlimitedLevelEntry> Entries;
240
241private:
244 void operator=(const vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor&) = delete;
245};
246VTK_ABI_NAMESPACE_END
247#endif
Cursor cache data with coordinates and level info.
void SetMask(bool state)
Set the blanking mask is empty or not.
bool IsRoot()
Is the cursor at tree root?
static vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor * New()
void Initialize(vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor *cursor)
vtkHyperTreeGrid * Grid
Reference sur l'hyper tree grid parcouru actuellement.
vtkIdType GetVertexId()
Return the index of the current vertex in the tree.
vtkIdType GetGlobalNodeIndex()
Return the global index (relative to the grid) of the current vertex in the tree.
bool IsMasked()
Determine whether blanking mask is empty or not.
~vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor() override
Destructor Only for vtkHyperTreeGridNonOrientedVonNeumannSuperCursor & Moore.
void ToRoot()
Move the cursor to the root vertex.
bool IsVirtualLeaf()
Is the cursor pointing to a subdivided leaf ? Return false if the leaf is a real one.
unsigned char GetNumberOfChildren()
Return the number of children for each node (non-vertex leaf) of the tree.
vtkSmartPointer< vtkHyperTreeGridNonOrientedGeometryCursor > GetHyperTreeGridNonOrientedGeometryCursor(vtkHyperTreeGrid *grid)
Create a vtkHyperTreeGridNonOrientedGeometryCursor from input grid and current entry data.
void Initialize(vtkHyperTreeGrid *grid, vtkIdType treeIndex, bool create=false)
Initialize cursor at root of given tree index in grid.
void Initialize(vtkHyperTreeGrid *grid, vtkHyperTree *tree, unsigned int level, vtkHyperTreeGridGeometryUnlimitedLevelEntry &entry)
Initialize cursor at root of given tree index in grid.
void ToChild(unsigned char ichild)
Move the cursor to child ‘child’ of the current vertex.
vtkHyperTree * GetTree() const
Set the hyper tree to which the cursor is pointing.
bool IsRealLeaf()
Is the cursor pointing to a leaf in the original tree ? Return false if the leaf is virtual.
virtual vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor * Clone()
Create a copy of ‘this’.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
std::vector< vtkHyperTreeGridGeometryUnlimitedLevelEntry > Entries
void Initialize(vtkHyperTreeGrid *grid, vtkHyperTree *tree, unsigned int level, vtkIdType index, double *origin)
unsigned char GetDimension()
Return the dimension of the tree.
vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor()
Constructor Only for vtkHyperTreeGridNonOrientedVonNeumannSuperCursor & Moore.
unsigned int GetLevel()
Get the level of the tree vertex pointed by the cursor.
std::shared_ptr< vtkHyperTreeGridScales > Scales
Storage of pre-computed per-level cell scales.
void ToParent()
Move the cursor to the parent of the current vertex.
vtkSmartPointer< vtkHyperTreeGridOrientedGeometryCursor > GetHyperTreeGridOrientedGeometryCursor(vtkHyperTreeGrid *grid)
Create a vtkHyperTreeGridOrientedGeometryCursor from input grid and current entry data.
bool IsLeaf()
Is the cursor pointing to a leaf? only respect depth limited, otherwise return false.
A specifalized type of vtkHyperTreeGrid for the case when root cells have uniform sizes in each direc...
A dataset containing a grid of vtkHyperTree instances arranged as a rectilinear grid.
A data object structured as a tree.
a simple class to control print indentation
Definition vtkIndent.h:108
abstract base class for most VTK objects
Definition vtkObject.h:162
Hold a reference to a vtkObjectBase instance.
int vtkIdType
Definition vtkType.h:315