Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

Common/vtkDataSet.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkDataSet.h,v $
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00042 #ifndef __vtkDataSet_h
00043 #define __vtkDataSet_h
00044 
00045 #include "vtkDataObject.h"
00046 
00047 class vtkCell;
00048 class vtkCellData;
00049 class vtkCellTypes;
00050 class vtkGenericCell;
00051 class vtkIdList;
00052 class vtkPointData;
00053 
00054 class VTK_COMMON_EXPORT vtkDataSet : public vtkDataObject
00055 {
00056 public:
00057   vtkTypeRevisionMacro(vtkDataSet,vtkDataObject);
00058   void PrintSelf(ostream& os, vtkIndent indent);
00059   
00063   virtual void CopyStructure(vtkDataSet *ds) = 0;
00064 
00067   virtual vtkIdType GetNumberOfPoints() = 0;
00068 
00071   virtual vtkIdType GetNumberOfCells() = 0;
00072 
00075   virtual double *GetPoint(vtkIdType ptId) = 0;
00076 
00080   virtual void GetPoint(vtkIdType id, double x[3]);
00081 
00084   virtual vtkCell *GetCell(vtkIdType cellId) = 0;
00085 
00090   virtual void GetCell(vtkIdType cellId, vtkGenericCell *cell) = 0;
00091 
00100   virtual void GetCellBounds(vtkIdType cellId, double bounds[6]);
00101   
00105   virtual int GetCellType(vtkIdType cellId) = 0;
00106 
00114   virtual void GetCellTypes(vtkCellTypes *types);
00115 
00119   virtual void GetCellPoints(vtkIdType cellId, vtkIdList *ptIds) = 0;
00120 
00124   virtual void GetPointCells(vtkIdType ptId, vtkIdList *cellIds) = 0;
00125 
00127 
00131   virtual void GetCellNeighbors(vtkIdType cellId, vtkIdList *ptIds, 
00132                                 vtkIdList *cellIds);
00134 
00136 
00140   vtkIdType FindPoint(double x, double y, double z)
00141     {
00142     double xyz[3];
00143     xyz[0] = x; xyz[1] = y; xyz[2] = z;
00144     return this->FindPoint (xyz);
00145     }
00146   virtual vtkIdType FindPoint(double x[3]) = 0;
00148 
00150 
00158   virtual vtkIdType FindCell(double x[3], vtkCell *cell, vtkIdType cellId,
00159                              double tol2, int& subId, double pcoords[3],
00160                              double *weights) = 0;
00162 
00164 
00169   virtual vtkIdType FindCell(double x[3], vtkCell *cell,
00170                              vtkGenericCell *gencell, vtkIdType cellId,
00171                              double tol2, int& subId, double pcoords[3],
00172                              double *weights) = 0;
00174   
00176 
00182   virtual vtkCell *FindAndGetCell(double x[3], vtkCell *cell, vtkIdType cellId, 
00183                                   double tol2, int& subId, double pcoords[3], 
00184                                   double *weights);
00186 
00189   unsigned long int GetMTime();
00190 
00193   vtkCellData *GetCellData() {return this->CellData;};
00194 
00197   vtkPointData *GetPointData() {return this->PointData;};
00198 
00201   virtual void Squeeze();
00202 
00205   virtual void ComputeBounds();
00206 
00209   double *GetBounds();
00210 
00214   void GetBounds(double bounds[6]);
00215 
00217   double *GetCenter();
00218 
00221   void GetCenter(double center[3]);
00222   
00226   double GetLength();
00227 
00229   void Initialize();
00230 
00237   virtual void GetScalarRange(double range[2]);
00238 
00241   double *GetScalarRange();
00242   
00246   virtual int GetMaxCellSize() = 0;
00247 
00253   unsigned long GetActualMemorySize();
00254   
00256 
00257   int GetDataObjectType() 
00258     {return VTK_DATA_SET;}
00260   
00262 
00263   void ShallowCopy(vtkDataObject *src);  
00264   void DeepCopy(vtkDataObject *src);
00266 
00267 //BTX
00268   enum FieldDataType 
00269   {
00270     DATA_OBJECT_FIELD=0,
00271     POINT_DATA_FIELD=1,
00272     CELL_DATA_FIELD=2
00273   };
00274 //ETX
00275   
00282   int CheckAttributes();
00283   
00284 protected:
00285   // Constructor with default bounds (0,1, 0,1, 0,1).
00286   vtkDataSet();
00287   ~vtkDataSet();  
00288 
00289   vtkCellData *CellData;   // Scalars, vectors, etc. associated w/ each cell
00290   vtkPointData *PointData;   // Scalars, vectors, etc. associated w/ each point
00291   vtkTimeStamp ComputeTime; // Time at which bounds, center, etc. computed
00292   double Bounds[6];  // (xmin,xmax, ymin,ymax, zmin,zmax) geometric bounds
00293   double ScalarRange[2];
00294   double Center[3];
00295 
00296 private:
00297   void InternalDataSetCopy(vtkDataSet *src);  
00298 private:
00299   vtkDataSet(const vtkDataSet&);  // Not implemented.
00300   void operator=(const vtkDataSet&);    // Not implemented.
00301 };
00302 
00303 inline void vtkDataSet::GetPoint(vtkIdType id, double x[3])
00304 {
00305   double *pt = this->GetPoint(id);
00306   x[0] = pt[0]; x[1] = pt[1]; x[2] = pt[2]; 
00307 }
00308 
00309 #endif