VTK  9.3.1
vtkHyperTreeGridNonOrientedGeometryCursor.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 vtkHyperTreeGridNonOrientedGeometryCursor_h
34 #define vtkHyperTreeGridNonOrientedGeometryCursor_h
35 
36 #include "vtkCommonDataModelModule.h" // For export macro
37 #include "vtkObject.h"
38 
39 #include "vtkHyperTreeGridGeometryEntry.h" // Used internally
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;
50 
51 class VTKCOMMONDATAMODEL_EXPORT vtkHyperTreeGridNonOrientedGeometryCursor : public vtkObject
52 {
53 public:
55  void PrintSelf(ostream& os, vtkIndent indent) override;
57 
58  void Dump(ostream& os);
59 
60  // JB TODO 102018 On autorise le ToParent que jusqu'à ce que Level soit celui de la creation...
61  // mais sans toRoot ? Une variante... qui serait utile aussi au niveau des SC
62 
68 
72  void Initialize(vtkHyperTreeGrid* grid, vtkIdType treeIndex, bool create = false);
73 
77  void Initialize(vtkHyperTreeGrid* grid, vtkHyperTree* tree, unsigned int level,
79 
83  void Initialize(vtkHyperTreeGrid* grid, vtkHyperTree* tree, unsigned int level, vtkIdType index,
84  double* origin);
85 
89  void Initialize(vtkHyperTreeGridNonOrientedGeometryCursor* cursor);
90 
92 
95  bool HasTree() const { return vtk::hypertreegrid::HasTree(*this); }
97 
99 
102  vtkHyperTree* GetTree() const { return this->Tree; }
104 
108  vtkIdType GetVertexId();
109 
114  vtkIdType GetGlobalNodeIndex();
115 
120  unsigned char GetDimension();
121 
126  unsigned char GetNumberOfChildren();
127 
131  void SetGlobalIndexStart(vtkIdType index);
132 
136  void SetGlobalIndexFromLocal(vtkIdType index);
137 
141  double* GetOrigin();
142  double* GetSize();
143 
147  void GetBounds(double bounds[6]);
148  void GetPoint(double point[3]);
149 
154  void SetMask(bool state);
155 
159  bool IsMasked();
160 
164  bool IsLeaf();
165 
169  void SubdivideLeaf();
170 
174  bool IsRoot();
175 
179  unsigned int GetLevel();
180 
188  void ToChild(unsigned char ichild);
189 
195  void ToRoot();
196 
202  void ToParent();
203 
208  vtkSmartPointer<vtkHyperTreeGridOrientedGeometryCursor> GetHyperTreeGridOrientedGeometryCursor(
209  vtkHyperTreeGrid* grid);
210 
211 protected:
217 
223 
228 
233 
237  std::shared_ptr<vtkHyperTreeGridScales> Scales;
238 
242  unsigned int Level;
243 
248 
249  // Hyper tree grid to which the cursor is attached
250  std::vector<vtkHyperTreeGridGeometryEntry> Entries;
251 
252 private:
255  void operator=(const vtkHyperTreeGridNonOrientedGeometryCursor&) = delete;
256 };
257 VTK_ABI_NAMESPACE_END
258 #endif
void GetBounds(T a, double bds[6])
vtkHyperTree * GetTree() const
Set the hyper tree to which the cursor is pointing.
abstract base class for most VTK objects
Definition: vtkObject.h:51
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
A dataset containing a grid of vtkHyperTree instances arranged as a rectilinear grid.
bool HasTree() const
Return if a Tree pointing exist.
Hold a reference to a vtkObjectBase instance.
Definition: vtkMeta.h:23
int vtkIdType
Definition: vtkType.h:315
a simple class to control print indentation
Definition: vtkIndent.h:28
std::shared_ptr< vtkHyperTreeGridScales > Scales
JB Storage of pre-computed per-level cell scales.
void GetPoint(int i, int j, int k, double pnt[3])
A data object structured as a tree.
Definition: vtkHyperTree.h:168
vtkHyperTreeGrid * Grid
JB Reference sur l'hyper tree grid parcouru actuellement.
A specifalized type of vtkHyperTreeGrid for the case when root cells have uniform sizes in each direc...
bool HasTree(const T &e)
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...