VTK  9.0.1
vtkStructuredGrid.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkStructuredGrid.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
42 #ifndef vtkStructuredGrid_h
43 #define vtkStructuredGrid_h
44 
45 #include "vtkCommonDataModelModule.h" // For export macro
46 #include "vtkPointSet.h"
47 
48 #include "vtkStructuredData.h" // Needed for inline methods
49 
50 class vtkEmptyCell;
51 class vtkHexahedron;
52 class vtkLine;
53 class vtkQuad;
55 class vtkVertex;
56 
57 class VTKCOMMONDATAMODEL_EXPORT vtkStructuredGrid : public vtkPointSet
58 {
59 public:
60  static vtkStructuredGrid* New();
61 
63  void PrintSelf(ostream& os, vtkIndent indent) override;
64 
68  int GetDataObjectType() override { return VTK_STRUCTURED_GRID; }
69 
73  void CopyStructure(vtkDataSet* ds) override;
74 
76 
80  double* GetPoint(vtkIdType ptId) VTK_SIZEHINT(3) override
81  {
82  return this->vtkPointSet::GetPoint(ptId);
83  }
84  void GetPoint(vtkIdType ptId, double p[3]) override { this->vtkPointSet::GetPoint(ptId, p); }
85  vtkCell* GetCell(vtkIdType cellId) override;
86  vtkCell* GetCell(int i, int j, int k) override;
87  void GetCell(vtkIdType cellId, vtkGenericCell* cell) override;
88  void GetCellBounds(vtkIdType cellId, double bounds[6]) override;
89  int GetCellType(vtkIdType cellId) override;
90  vtkIdType GetNumberOfCells() override;
91  void GetCellPoints(vtkIdType cellId, vtkIdList* ptIds) override;
92  void GetPointCells(vtkIdType ptId, vtkIdList* cellIds) override
93  {
94  vtkStructuredData::GetPointCells(ptId, cellIds, this->GetDimensions());
95  }
96  void Initialize() override;
97  int GetMaxCellSize() override { return 8; } // hexahedron is the largest
98  void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds) override;
99  void GetCellNeighbors(vtkIdType cellId, vtkIdList* ptIds, vtkIdList* cellIds, int* seedLoc);
101 
103 
106  void SetDimensions(int i, int j, int k);
107  void SetDimensions(const int dim[3]);
109 
111 
114  virtual int* GetDimensions() VTK_SIZEHINT(3);
115  virtual void GetDimensions(int dim[3]);
117 
121  int GetDataDimension();
122 
124 
129  void SetExtent(int extent[6]);
130  void SetExtent(int x1, int x2, int y1, int y2, int z1, int z2);
131  vtkGetVector6Macro(Extent, int);
133 
142  unsigned long GetActualMemorySize() override;
143 
145 
148  void ShallowCopy(vtkDataObject* src) override;
149  void DeepCopy(vtkDataObject* src) override;
151 
155  int GetExtentType() override { return VTK_3D_EXTENT; }
156 
158 
164  void BlankPoint(vtkIdType ptId);
165  void UnBlankPoint(vtkIdType ptId);
167 
169 
175  void BlankCell(vtkIdType ptId);
176  void UnBlankCell(vtkIdType ptId);
178 
184  unsigned char IsPointVisible(vtkIdType ptId);
185 
191  unsigned char IsCellVisible(vtkIdType cellId);
192 
197  bool HasAnyBlankPoints() override;
202  bool HasAnyBlankCells() override;
203 
210  void GetCellDims(int cellDims[3]);
211 
217  void Crop(const int* updateExtent) override;
218 
220 
224  static vtkStructuredGrid* GetData(vtkInformationVector* v, int i = 0);
226 
236  void GetPoint(int i, int j, int k, double p[3], bool adjustForExtent = true);
237 
238 protected:
240  ~vtkStructuredGrid() override;
241 
242  // for the GetCell method
248 
249  int Dimensions[3];
251 
252  int Extent[6];
253 
258  void ComputeScalarRange() override;
259 
260 private:
264  void GetCellNeighbors(vtkIdType cellId, vtkIdList& ptIds, vtkIdList& cellIds)
265  {
266  this->GetCellNeighbors(cellId, &ptIds, &cellIds);
267  }
268 
269  // Internal method used by DeepCopy and ShallowCopy.
270  void InternalStructuredGridCopy(vtkStructuredGrid* src);
271 
272  static unsigned char MASKED_CELL_VALUE;
273 
274 private:
275  vtkStructuredGrid(const vtkStructuredGrid&) = delete;
276  void operator=(const vtkStructuredGrid&) = delete;
277 };
278 
280 {
281  vtkIdType nCells = 1;
282  int dims[3];
283  int i;
284 
285  this->GetDimensions(dims);
286  for (i = 0; i < 3; i++)
287  {
288  if (dims[i] <= 0)
289  {
290  return 0;
291  }
292  if (dims[i] > 1)
293  {
294  nCells *= (dims[i] - 1);
295  }
296  }
297 
298  return nCells;
299 }
300 
302 {
304 }
305 
306 #endif
int GetDataObjectType() override
Return what type of dataset this is.
vtkIdType GetNumberOfPoints() override
See vtkDataSet for additional information.
Definition: vtkPointSet.h:234
virtual vtkIdType GetNumberOfCells()=0
Determine the number of cells composing the dataset.
vtkEmptyCell * EmptyCell
static vtkDataObject * New()
virtual void ComputeScalarRange()
Compute the range of the scalars and cache it into ScalarRange only if the cache became invalid (Scal...
Store vtkAlgorithm input/output information.
abstract class to specify dataset behavior
Definition: vtkDataSet.h:56
a cell that represents a 3D point
Definition: vtkVertex.h:30
#define VTK_3D_EXTENT
Definition: vtkDataObject.h:56
static int GetDataDimension(int dataDescription)
Return the topological dimension of the data (e.g., 0, 1, 2, or 3D).
static vtkPointSet * GetData(vtkInformation *info)
Retrieve an instance of this class from an information object.
a cell that represents a 2D quadrilateral
Definition: vtkQuad.h:35
abstract class for specifying dataset behavior
Definition: vtkPointSet.h:62
an empty cell used as a place-holder during processing
Definition: vtkEmptyCell.h:29
int vtkIdType
Definition: vtkType.h:338
virtual bool HasAnyBlankCells()
Returns 1 if there are any blanking cells 0 otherwise.
Definition: vtkDataSet.h:426
provides thread-safe access to cells
virtual int * GetDimensions()
Get dimensions of this structured points dataset.
virtual void Crop(const int *updateExtent)
This method crops the data object (if necessary) so that the extent matches the update extent...
int GetDataDimension()
Return the dimensionality of the data.
cell represents a 1D line
Definition: vtkLine.h:29
abstract class to specify cell behavior
Definition: vtkCell.h:56
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methdos for type information and printing.
a simple class to control print indentation
Definition: vtkIndent.h:33
virtual bool HasAnyBlankPoints()
Returns 1 if there are any blanking points 0 otherwise.
Definition: vtkDataSet.h:432
list of point or cell ids
Definition: vtkIdList.h:30
void Initialize() override
Reset to an empty state and free any memory.
virtual void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds)=0
Topological inquiry to get points defining cell.
void GetPoint(vtkIdType ptId, double p[3]) override
Standard vtkDataSet API methods.
int GetMaxCellSize() override
Standard vtkDataSet API methods.
a cell that represents a linear 3D hexahedron
Definition: vtkHexahedron.h:41
virtual void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, vtkIdList *cellIds)
Topological inquiry to get all cells using list of points exclusive of cell specified (e...
#define VTK_SIZEHINT(...)
dynamic, self-adjusting array of unsigned char
vtkIdType GetNumberOfCells() override
Standard vtkDataSet API methods.
void GetPoint(vtkIdType ptId, double x[3]) override
See vtkDataSet for additional information.
Definition: vtkPointSet.h:102
static void GetPointCells(vtkIdType ptId, vtkIdList *cellIds, int dim[3])
Get the cells using a point.
topologically regular array of data
Store zero or more vtkInformation instances.
void GetPointCells(vtkIdType ptId, vtkIdList *cellIds) override
Standard vtkDataSet API methods.
void CopyStructure(vtkDataSet *pd) override
Copy the geometric structure of an input point set object.
general representation of visualization data
Definition: vtkDataObject.h:59
#define VTK_STRUCTURED_GRID
Definition: vtkType.h:87
virtual vtkCell * GetCell(vtkIdType cellId)=0
Get cell with cellId such that: 0 <= cellId < NumberOfCells.
vtkHexahedron * Hexahedron
virtual void GetCellBounds(vtkIdType cellId, double bounds[6])
Get the bounds of the cell with cellId such that: 0 <= cellId < NumberOfCells.
virtual int GetCellType(vtkIdType cellId)=0
Get type of cell with cellId such that: 0 <= cellId < NumberOfCells.
double * GetPoint(vtkIdType ptId) override
Standard vtkDataSet API methods.
vtkIdType GetNumberOfPoints() override
Standard vtkDataSet API methods.