Common/vtkStructuredGrid.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00047 #ifndef __vtkStructuredGrid_h
00048 #define __vtkStructuredGrid_h
00049
00050 #include "vtkPointSet.h"
00051
00052 #include "vtkStructuredData.h"
00053
00054 class vtkEmptyCell;
00055 class vtkHexahedron;
00056 class vtkLine;
00057 class vtkQuad;
00058 class vtkStructuredVisibilityConstraint;
00059 class vtkUnsignedCharArray;
00060 class vtkVertex;
00061
00062 class VTK_COMMON_EXPORT vtkStructuredGrid : public vtkPointSet
00063 {
00064 public:
00065 static vtkStructuredGrid *New();
00066
00067 vtkTypeRevisionMacro(vtkStructuredGrid,vtkPointSet);
00068 void PrintSelf(ostream& os, vtkIndent indent);
00069
00071 int GetDataObjectType() {return VTK_STRUCTURED_GRID;}
00072
00075 void CopyStructure(vtkDataSet *ds);
00076
00078
00079 vtkIdType GetNumberOfPoints() {return vtkPointSet::GetNumberOfPoints();}
00080 double *GetPoint(vtkIdType ptId) {return this->vtkPointSet::GetPoint(ptId);}
00081 void GetPoint(vtkIdType ptId, double p[3])
00082 {this->vtkPointSet::GetPoint(ptId,p);}
00083 vtkCell *GetCell(vtkIdType cellId);
00084 void GetCell(vtkIdType cellId, vtkGenericCell *cell);
00085 void GetCellBounds(vtkIdType cellId, double bounds[6]);
00086 int GetCellType(vtkIdType cellId);
00087 vtkIdType GetNumberOfCells();
00088 void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds);
00089 void GetPointCells(vtkIdType ptId, vtkIdList *cellIds)
00090 {
00091 vtkStructuredData::GetPointCells(ptId,cellIds,this->GetDimensions());
00092 }
00093 void Initialize();
00094 int GetMaxCellSize() {return 8;};
00095 void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds,
00096 vtkIdList *cellIds);
00097 virtual void GetScalarRange(double range[2]);
00098 double *GetScalarRange() {return this->Superclass::GetScalarRange();}
00100
00102
00103 void SetDimensions(int i, int j, int k);
00104 void SetDimensions(int dim[3]);
00106
00108
00109 virtual int *GetDimensions ();
00110 virtual void GetDimensions (int dim[3]);
00112
00114 int GetDataDimension();
00115
00117
00120 void SetUpdateExtent(int piece, int numPieces, int ghostLevel);
00121 void SetUpdateExtent(int piece, int numPieces)
00122 {this->SetUpdateExtent(piece, numPieces, 0);}
00124
00126
00127 void SetUpdateExtent( int x1, int x2, int y1, int y2, int z1, int z2 )
00128 { this->vtkPointSet::SetUpdateExtent( x1, x2, y1, y2, z1, z2 ); };
00129 void SetUpdateExtent( int ext[6] )
00130 { this->vtkPointSet::SetUpdateExtent( ext ); };
00132
00134
00137 void SetExtent(int extent[6]);
00138 void SetExtent(int x1, int x2, int y1, int y2, int z1, int z2);
00139 vtkGetVector6Macro(Extent,int);
00141
00147 unsigned long GetActualMemorySize();
00148
00150
00151 void ShallowCopy(vtkDataObject *src);
00152 void DeepCopy(vtkDataObject *src);
00154
00157 virtual void UpdateData();
00158
00160 int GetExtentType() { return VTK_3D_EXTENT; }
00161
00163
00167 void BlankPoint(vtkIdType ptId);
00168 void UnBlankPoint(vtkIdType ptId);
00170
00172
00176 void BlankCell(vtkIdType ptId);
00177 void UnBlankCell(vtkIdType ptId);
00179
00181 vtkUnsignedCharArray *GetPointVisibilityArray();
00182
00186 void SetPointVisibilityArray(vtkUnsignedCharArray *pointVisibility);
00187
00189 vtkUnsignedCharArray *GetCellVisibilityArray();
00190
00194 void SetCellVisibilityArray(vtkUnsignedCharArray *pointVisibility);
00195
00198 unsigned char IsPointVisible(vtkIdType ptId);
00199
00202 unsigned char IsCellVisible(vtkIdType cellId);
00203
00206 unsigned char GetPointBlanking();
00207
00210 unsigned char GetCellBlanking();
00211
00212 protected:
00213 vtkStructuredGrid();
00214 ~vtkStructuredGrid();
00215
00216
00217 vtkVertex *Vertex;
00218 vtkLine *Line;
00219 vtkQuad *Quad;
00220 vtkHexahedron *Hexahedron;
00221 vtkEmptyCell *EmptyCell;
00222
00226 virtual void Crop();
00227
00228 int Dimensions[3];
00229 int DataDescription;
00230
00231 vtkStructuredVisibilityConstraint* PointVisibility;
00232
00233 void SetPointVisibility(vtkStructuredVisibilityConstraint *pointVisibility);
00234 vtkGetObjectMacro(PointVisibility, vtkStructuredVisibilityConstraint);
00235
00236 vtkStructuredVisibilityConstraint* CellVisibility;
00237
00238 void SetCellVisibility(vtkStructuredVisibilityConstraint *cellVisibility);
00239 vtkGetObjectMacro(CellVisibility, vtkStructuredVisibilityConstraint);
00240
00241 private:
00243
00244 void GetCellNeighbors(vtkIdType cellId, vtkIdList& ptIds, vtkIdList& cellIds)
00245 {this->GetCellNeighbors(cellId, &ptIds, &cellIds);}
00247
00248
00249 void InternalStructuredGridCopy(vtkStructuredGrid *src);
00250
00251 private:
00252 vtkStructuredGrid(const vtkStructuredGrid&);
00253 void operator=(const vtkStructuredGrid&);
00254 };
00255
00256
00257 inline vtkIdType vtkStructuredGrid::GetNumberOfCells()
00258 {
00259 int nCells=1;
00260 int dims[3];
00261 int i;
00262
00263 this->GetDimensions(dims);
00264 for (i=0; i<3; i++)
00265 {
00266 if (dims[i] <= 0)
00267 {
00268 return 0;
00269 }
00270 if (dims[i] > 1)
00271 {
00272 nCells *= (dims[i]-1);
00273 }
00274 }
00275
00276 return nCells;
00277 }
00278
00279 inline int vtkStructuredGrid::GetDataDimension()
00280 {
00281 return vtkStructuredData::GetDataDimension(this->DataDescription);
00282 }
00283
00284 #endif
00285
00286
00287
00288
00289
00290