VTK  9.3.0
vtkHyperTreeGridNonOrientedSuperCursorLight.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
26#ifndef vtkHyperTreeGridNonOrientedSuperCursorLight_h
27#define vtkHyperTreeGridNonOrientedSuperCursorLight_h
28
29#include "vtkCommonDataModelModule.h" // For export macro
30#include "vtkObject.h"
31#include "vtkSmartPointer.h" // Used internally
32
33#include "vtkHyperTreeGridLevelEntry.h" // Used internally
34
35#include <cassert> // Used internally
36#include <vector> // std::vector
37
38VTK_ABI_NAMESPACE_BEGIN
39class vtkHyperTree;
42
43class VTKCOMMONDATAMODEL_EXPORT vtkHyperTreeGridNonOrientedSuperCursorLight : public vtkObject
44{
45public:
47 void PrintSelf(ostream& os, vtkIndent indent) override;
48
54
59 virtual void Initialize(vtkHyperTreeGrid* grid, vtkIdType treeIndex, bool create = false) = 0;
60
62
67
69
72 bool HasTree();
74
78 bool HasTree(unsigned int icursor);
79
81
85 vtkHyperTree* GetTree(unsigned int icursor);
87
92 vtkIdType GetVertexId(unsigned int icursor);
93
99
104 vtkIdType GetGlobalNodeIndex(unsigned int icursor);
105
110 unsigned int icursor, unsigned int& level, bool& leaf, vtkIdType& id);
111
116 unsigned char GetDimension();
117
122 unsigned char GetNumberOfChildren();
123
128
133
137 double* GetOrigin();
138 double* GetSize();
139
144 void SetMask(bool state);
145 void SetMask(unsigned int icursor, bool state);
146
150 bool IsMasked();
151 bool IsMasked(unsigned int icursor);
152
157 void GetBounds(double bounds[6]);
158
163 void GetPoint(double point[3]);
164
168 bool IsLeaf();
169 bool IsLeaf(unsigned int icursor);
170
175
179 bool IsRoot();
180
184 unsigned int GetLevel();
185 unsigned int GetLevel(unsigned int icursor);
186
192 void ToChild(unsigned char);
193
199 void ToRoot();
200
206 void ToParent();
207
211 unsigned int GetNumberOfCursors() { return this->NumberOfCursors; }
212
217protected:
222
227
232
236 // JB vtkNew< vtkHyperTreeGridNonOrientedGeometryCursor > CentralCursor;
238
243 std::vector<unsigned int> FirstNonValidEntryByLevel;
244 std::vector<vtkHyperTreeGridLevelEntry> Entries;
245
251 std::vector<unsigned int> ReferenceEntries;
252
256 unsigned int GetIndiceEntry(unsigned int icursor)
257 {
258 assert("pre: icursor != IndiceCentralCursor" && icursor != this->IndiceCentralCursor);
259 assert("pre: valid_icursor" && icursor < this->NumberOfCursors);
260 if (icursor > this->IndiceCentralCursor)
261 {
262 assert("pre: valid_icursor" &&
263 0 <= long(this->FirstCurrentNeighboorReferenceEntry + icursor) - 1 &&
264 long(this->FirstCurrentNeighboorReferenceEntry + icursor) - 1 <
265 long(this->ReferenceEntries.size()));
266 assert("pre: valid_icursor" &&
267 this->ReferenceEntries[this->FirstCurrentNeighboorReferenceEntry + icursor - 1] <
268 this->Entries.size());
269 return this->ReferenceEntries[this->FirstCurrentNeighboorReferenceEntry + icursor - 1];
270 }
271 else
272 {
273 assert("pre: valid_icursor" &&
274 this->FirstCurrentNeighboorReferenceEntry + icursor < this->ReferenceEntries.size());
275 assert("pre: valid_icursor" &&
276 this->ReferenceEntries[this->FirstCurrentNeighboorReferenceEntry + icursor] <
277 this->Entries.size());
278 return this->ReferenceEntries[this->FirstCurrentNeighboorReferenceEntry + icursor];
279 }
280 }
281
285 unsigned int GetIndicePreviousEntry(unsigned int icursor)
286 {
287 assert("pre: icursor != IndiceCentralCursor" && icursor != IndiceCentralCursor);
288 assert("pre: valid_icursor" && icursor < this->NumberOfCursors);
289 if (icursor > this->IndiceCentralCursor)
290 {
291 assert("pre: valid_icursor" &&
292 0 <=
293 long(this->FirstCurrentNeighboorReferenceEntry - (this->NumberOfCursors - 1) + icursor) -
294 1 &&
295 long(this->FirstCurrentNeighboorReferenceEntry - (this->NumberOfCursors - 1) + icursor) -
296 1 <
297 long(this->ReferenceEntries.size()));
298 assert("pre: valid_icursor" &&
299 this->ReferenceEntries[this->FirstCurrentNeighboorReferenceEntry -
300 (this->NumberOfCursors - 1) + icursor - 1] < this->Entries.size());
301 return this->ReferenceEntries[this->FirstCurrentNeighboorReferenceEntry -
302 (this->NumberOfCursors - 1) + icursor - 1];
303 }
304 else
305 {
306 assert("pre: valid_icursor" &&
307 this->FirstCurrentNeighboorReferenceEntry - (this->NumberOfCursors - 1) + icursor <
308 this->ReferenceEntries.size());
309 assert("pre: valid_icursor" &&
310 this->ReferenceEntries[this->FirstCurrentNeighboorReferenceEntry -
311 (this->NumberOfCursors - 1) + icursor] < this->Entries.size());
312 return this->ReferenceEntries[this->FirstCurrentNeighboorReferenceEntry -
313 (this->NumberOfCursors - 1) + icursor];
314 }
315 }
316
321
322 // Number of cursors in supercursor
323 unsigned int NumberOfCursors;
324
325 // Super cursor traversal table to go retrieve the parent index for each cursor
326 // of the child node. There are f^d * NumberOfCursors entries in the table.
328
329 // Super cursor traversal table to go retrieve the child index for each cursor
330 // of the child node. There are f^d * NumberOfCursors entries in the table.
331 const unsigned int* ChildCursorToChildTable;
332
333private:
336 void operator=(const vtkHyperTreeGridNonOrientedSuperCursorLight&) = delete;
337};
338
339VTK_ABI_NAMESPACE_END
340#endif
void GetBounds(double bounds[6])
JB Coordonnees de la boite englobante En light, information non disponible sur les voisins.
vtkSmartPointer< vtkHyperTreeGridNonOrientedGeometryCursor > CentralCursor
JB.
vtkIdType GetGlobalNodeIndex(unsigned int icursor)
JB Return the global index (relative to the grid) of the neighboor icursor current vertex in the tree...
void SubdivideLeaf()
JB Fait chier normalement on devrait passer par GetEntry.
bool IsLeaf()
Is the cursor pointing to a leaf?
void SetMask(unsigned int icursor, bool state)
vtkHyperTreeGrid * GetGrid()
Set the hyper tree grid to which the cursor is pointing.
~vtkHyperTreeGridNonOrientedSuperCursorLight() override
Destructor.
vtkHyperTreeGridNonOrientedSuperCursorLight()
JB Peut etre reporter les services GetCursor present dans la version non Light ?
vtkHyperTree * GetInformation(unsigned int icursor, unsigned int &level, bool &leaf, vtkIdType &id)
JB.
bool IsRoot()
Is the cursor at tree root?
void GetPoint(double point[3])
JB Coordonnees du centre de la maille En light, information non disponible sur les voisins.
unsigned char GetDimension()
Return the dimension of the tree.
vtkIdType GetGlobalNodeIndex()
Return the global index (relative to the grid) of the current vertex in the tree.
vtkIdType GetVertexId(unsigned int icursor)
unsigned int FirstCurrentNeighboorReferenceEntry
JB La derniere reference valide pour decrire tous les voisins.
unsigned char GetNumberOfChildren()
Return the number of children for each node (non-vertex leaf) of the tree.
unsigned int GetIndicePreviousEntry(unsigned int icursor)
JB La valeur precedente.
void ToParent()
Move the cursor to the parent of the current vertex.
unsigned int GetLevel(unsigned int icursor)
virtual vtkHyperTreeGridNonOrientedSuperCursorLight * Clone()
Create a copy of ‘this’.
vtkHyperTreeGrid * Grid
JB Reference sur l'hyper tree grid parcouru actuellement.
virtual void Initialize(vtkHyperTreeGrid *grid, vtkIdType treeIndex, bool create=false)=0
Initialize cursor at root of given tree index in grid.
vtkHyperTree * GetTree(unsigned int icursor)
Set the hyper tree to which the cursor is pointing.
vtkIdType GetVertexId()
Return the index of the current vertex in the tree.
vtkHyperTree * GetTree()
Set the hyper tree to which the cursor is pointing.
void ToRoot()
Move the cursor to the root vertex.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
bool IsMasked()
Determine whether blanking mask is empty or not.
void SetGlobalIndexFromLocal(vtkIdType index)
JB.
unsigned int GetLevel()
Get the level of the tree vertex pointed by the cursor.
void SetMask(bool state)
Set the blanking mask is empty or not.
bool HasTree()
Return if a Tree pointing exist.
void SetGlobalIndexStart(vtkIdType index)
JB.
bool HasTree(unsigned int icursor)
JB Return if a Tree pointing exist.
unsigned int CurrentFirstNonValidEntryByLevel
JB Hyper tree grid to which the cursor is attached.
void ToChild(unsigned char)
Move the cursor to child ‘child’ of the current vertex.
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:29
abstract base class for most VTK objects
Definition vtkObject.h:49
Hold a reference to a vtkObjectBase instance.
int vtkIdType
Definition vtkType.h:315