VTK  9.3.20240304
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
33 #ifndef vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor_h
34 #define vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor_h
35 
36 #include "vtkCommonDataModelModule.h" // For export macro
37 #include "vtkObject.h"
38 
39 #include "vtkHyperTreeGridGeometryUnlimitedLevelEntry.h" // cache for historic
40 #include "vtkHyperTreeGridTools.h" // for HasTree
41 #include "vtkSmartPointer.h" // Used internally
42 #include <memory> // std::shared_ptr
43 #include <vector> // std::vector
44 
45 VTK_ABI_NAMESPACE_BEGIN
46 class vtkHyperTree;
47 class vtkHyperTreeGrid;
51 
53  : public vtkObject
54 {
55 public:
57  void PrintSelf(ostream& os, vtkIndent indent) override;
59 
60  void Dump(ostream& os);
61 
62  // JB TODO 102018 On autorise le ToParent que jusqu'à ce que Level soit celui de la creation...
63  // mais sans toRoot ? Une variante... qui serait utile aussi au niveau des SC
64 
70 
74  void Initialize(vtkHyperTreeGrid* grid, vtkIdType treeIndex, bool create = false);
75 
79  void Initialize(vtkHyperTreeGrid* grid, vtkHyperTree* tree, unsigned int level,
81 
85  void Initialize(vtkHyperTreeGrid* grid, vtkHyperTree* tree, unsigned int level, vtkIdType index,
86  double* origin);
87 
92 
94 
97  bool HasTree() const { return vtk::hypertreegrid::HasTree(*this); }
99 
101 
104  vtkHyperTree* GetTree() const { return this->Tree; }
106 
111 
117 
122  unsigned char GetDimension();
123 
128  unsigned char GetNumberOfChildren();
129 
134 
139 
143  double* GetOrigin();
144  double* GetSize();
145 
149  void GetBounds(double bounds[6]);
150  void GetPoint(double point[3]);
151 
156  void SetMask(bool state);
157 
161  bool IsMasked();
162 
167  bool IsLeaf();
168 
173  bool IsRealLeaf();
174 
180 
184  bool IsRoot();
185 
189  unsigned int GetLevel();
190  unsigned int GetLastRealLevel();
191 
199  void ToChild(unsigned char ichild);
200 
206  void ToRoot();
207 
213  void ToParent();
214 
220  vtkHyperTreeGrid* grid);
221 
228 
229 protected:
235 
241 
246 
251 
255  std::shared_ptr<vtkHyperTreeGridScales> Scales;
256 
260  unsigned int Level;
261 
266 
267  // Hyper tree grid to which the cursor is attached
268  std::vector<vtkHyperTreeGridGeometryUnlimitedLevelEntry> Entries;
269 
270 private:
273  void operator=(const vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor&) = delete;
274 };
275 VTK_ABI_NAMESPACE_END
276 #endif
Cursor cache data with coordinates and level info.
void SetMask(bool state)
Set the blanking mask is empty or not.
static vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor * New()
bool IsRoot()
Is the cursor at tree root?
virtual vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor * Clone()
Create a copy of ‘this’.
void Initialize(vtkHyperTreeGridNonOrientedUnlimitedGeometryCursor *cursor)
JB.
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.
vtkSmartPointer< vtkHyperTreeGridNonOrientedGeometryCursor > GetHyperTreeGridNonOrientedGeometryCursor(vtkHyperTreeGrid *grid)
Create a vtkHyperTreeGridNonOrientedGeometryCursor from input grid and current entry data.
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.
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.
bool IsRealLeaf()
Is the cursor pointing to a leaf in the original tree ? Return false if the leaf is virtual.
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)
JB.
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.
vtkHyperTree * GetTree() const
Set the hyper tree to which the cursor is pointing.
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.
Definition: vtkHyperTree.h:169
a simple class to control print indentation
Definition: vtkIndent.h:108
abstract base class for most VTK objects
Definition: vtkObject.h:161
Hold a reference to a vtkObjectBase instance.
@ point
Definition: vtkX3D.h:236
@ level
Definition: vtkX3D.h:395
@ index
Definition: vtkX3D.h:246
bool HasTree(const T &e)
int vtkIdType
Definition: vtkType.h:315