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

dox/Common/vtkPoints.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkPoints.h,v $
00005   Language:  C++
00006 
00007   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
00008   All rights reserved.
00009   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00010 
00011      This software is distributed WITHOUT ANY WARRANTY; without even 
00012      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00013      PURPOSE.  See the above copyright notice for more information.
00014 
00015 =========================================================================*/
00032 #ifndef __vtkPoints_h
00033 #define __vtkPoints_h
00034 
00035 #include "vtkObject.h"
00036 
00037 #include "vtkDataArray.h" // Needed for inline methods
00038 
00039 class vtkIdList;
00040 class vtkPoints;
00041 
00042 class VTK_COMMON_EXPORT vtkPoints : public vtkObject
00043 {
00044 public:
00045 //BTX
00046   static vtkPoints *New(int dataType);
00047 //ETX
00048   static vtkPoints *New();
00049 
00050   vtkTypeRevisionMacro(vtkPoints,vtkObject);
00051   void PrintSelf(ostream& os, vtkIndent indent);
00052 
00054   virtual int Allocate(const vtkIdType sz, const vtkIdType ext=1000);
00055   
00057   virtual void Initialize();
00058 
00059 #ifndef VTK_REMOVE_LEGACY_CODE
00060 
00061   vtkPoints* MakeObject();
00062 #endif
00063 
00065 
00071   virtual void SetData(vtkDataArray *);
00072   vtkDataArray *GetData() {return this->Data;};
00074 
00077   virtual int GetDataType();
00078 
00080 
00081   virtual void SetDataType(int dataType);
00082   void SetDataTypeToBit() {this->SetDataType(VTK_BIT);};
00083   void SetDataTypeToChar() {this->SetDataType(VTK_CHAR);};
00084   void SetDataTypeToUnsignedChar() {this->SetDataType(VTK_UNSIGNED_CHAR);};
00085   void SetDataTypeToShort() {this->SetDataType(VTK_SHORT);};
00086   void SetDataTypeToUnsignedShort() {this->SetDataType(VTK_UNSIGNED_SHORT);};
00087   void SetDataTypeToInt() {this->SetDataType(VTK_INT);};
00088   void SetDataTypeToUnsignedInt() {this->SetDataType(VTK_UNSIGNED_INT);};
00089   void SetDataTypeToLong() {this->SetDataType(VTK_LONG);};
00090   void SetDataTypeToUnsignedLong() {this->SetDataType(VTK_UNSIGNED_LONG);};
00091   void SetDataTypeToFloat() {this->SetDataType(VTK_FLOAT);};
00092   void SetDataTypeToDouble() {this->SetDataType(VTK_DOUBLE);};
00094 
00097   void *GetVoidPointer(const int id) {return this->Data->GetVoidPointer(id);};
00098 
00100   virtual void Squeeze() {this->Data->Squeeze();};
00101 
00103   virtual void Reset() {this->Data->Reset();};
00104 
00106 
00109   virtual void DeepCopy(vtkPoints *ad);
00110   virtual void ShallowCopy(vtkPoints *ad);
00112 
00119   unsigned long GetActualMemorySize();
00120 
00122   vtkIdType GetNumberOfPoints() { return this->Data->GetNumberOfTuples();};
00123 
00125   float *GetPoint(vtkIdType id) { return this->Data->GetTuple(id);};
00126 
00128 
00129   void GetPoint(vtkIdType id, float x[3]) { this->Data->GetTuple(id,x);};
00130   void GetPoint(vtkIdType id, double x[3]) { this->Data->GetTuple(id,x);};
00132 
00134 
00137   void SetPoint(vtkIdType id, const float x[3]) { this->Data->SetTuple(id,x);};
00138   void SetPoint(vtkIdType id, const double x[3]) { this->Data->SetTuple(id,x);};
00139   void SetPoint(vtkIdType id, double x, double y, double z);
00141 
00143 
00145   void InsertPoint(vtkIdType id, const float x[3])
00146     { this->Data->InsertTuple(id,x);};
00147   void InsertPoint(vtkIdType id, const double x[3])
00148     {this->Data->InsertTuple(id,x);};
00149   void InsertPoint(vtkIdType id, double x, double y, double z);
00151   
00153 
00154   vtkIdType InsertNextPoint(const float x[3]) { 
00155     return this->Data->InsertNextTuple(x);};
00156   vtkIdType InsertNextPoint(const double x[3]) { 
00157     return this->Data->InsertNextTuple(x);};
00158   vtkIdType InsertNextPoint(double x, double y, double z);
00160 
00164   void SetNumberOfPoints(vtkIdType number);
00165 
00167   void GetPoints(vtkIdList *ptId, vtkPoints *fp);
00168 
00170   virtual void ComputeBounds();
00171 
00173   float *GetBounds();
00174 
00176   void GetBounds(float bounds[6]);
00177 
00178 protected:
00179   vtkPoints(int dataType=VTK_FLOAT);
00180   ~vtkPoints();
00181 
00182   float Bounds[6];
00183   vtkTimeStamp ComputeTime; // Time at which bounds computed
00184   vtkDataArray *Data;  // Array which represents data
00185 
00186 private:
00187   vtkPoints(const vtkPoints&);  // Not implemented.
00188   void operator=(const vtkPoints&);  // Not implemented.
00189 };
00190 
00191 inline void vtkPoints::SetNumberOfPoints(vtkIdType number)
00192 {
00193   this->Data->SetNumberOfComponents(3);
00194   this->Data->SetNumberOfTuples(number);
00195 }
00196 
00197 inline void vtkPoints::SetPoint(vtkIdType id, double x, double y, double z)
00198 {
00199   double p[3];
00200   p[0] = x;
00201   p[1] = y;
00202   p[2] = z;
00203   this->Data->SetTuple(id,p);
00204 }
00205 
00206 inline void vtkPoints::InsertPoint(vtkIdType id, double x, double y, double z)
00207 {
00208   double p[3];
00209 
00210   p[0] = x;
00211   p[1] = y;
00212   p[2] = z;
00213   this->Data->InsertTuple(id,p);
00214 }
00215 
00216 inline vtkIdType vtkPoints::InsertNextPoint(double x, double y, double z)
00217 {
00218   double p[3];
00219 
00220   p[0] = x;
00221   p[1] = y;
00222   p[2] = z;
00223   return this->Data->InsertNextTuple(p);
00224 }
00225 
00226 #endif
00227