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

dox/Common/vtkDoubleArray.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkDoubleArray.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 =========================================================================*/ 00033 #ifndef __vtkDoubleArray_h 00034 #define __vtkDoubleArray_h 00035 00036 #include "vtkDataArray.h" 00037 00038 class VTK_COMMON_EXPORT vtkDoubleArray : public vtkDataArray 00039 { 00040 public: 00041 static vtkDoubleArray *New(); 00042 00043 vtkTypeRevisionMacro(vtkDoubleArray,vtkDataArray); 00044 void PrintSelf(ostream& os, vtkIndent indent); 00045 00048 int Allocate(const vtkIdType sz, const vtkIdType ext=1000); 00049 00051 void Initialize(); 00052 00054 int GetDataType() {return VTK_DOUBLE;}; 00055 00057 int GetDataTypeSize() { return sizeof(double); } 00058 00060 void SetNumberOfTuples(const vtkIdType number); 00061 00064 float *GetTuple(const vtkIdType i); 00065 00067 00068 void GetTuple(const vtkIdType i, float * tuple); 00069 void GetTuple(const vtkIdType i, double * tuple); 00071 00073 00074 void SetTuple(const vtkIdType i, const float * tuple); 00075 void SetTuple(const vtkIdType i, const double * tuple); 00077 00079 00081 void InsertTuple(const vtkIdType i, const float * tuple); 00082 void InsertTuple(const vtkIdType i, const double * tuple); 00084 00086 00088 vtkIdType InsertNextTuple(const float * tuple); 00089 vtkIdType InsertNextTuple(const double * tuple); 00091 00093 void Squeeze() {this->ResizeAndExtend (this->MaxId+1);}; 00094 00096 virtual void Resize(vtkIdType numTuples); 00097 00099 double GetValue(const vtkIdType id) {return this->Array[id];} 00100 00102 00104 void SetValue(const vtkIdType id, const double value) 00105 { this->Array[id] = value;}; 00107 00111 void SetNumberOfValues(const vtkIdType number); 00112 00114 void InsertValue(const vtkIdType id, const double f); 00115 00118 vtkIdType InsertNextValue(const double f); 00119 00123 float GetComponent(const vtkIdType i, const int j); 00124 00129 void SetComponent(const vtkIdType i, const int j, float c); 00130 00134 virtual void InsertComponent(const vtkIdType i, const int j, float c); 00135 00139 double *WritePointer(const vtkIdType id, const vtkIdType number); 00140 00142 00144 double *GetPointer(const vtkIdType id) {return this->Array + id;} 00145 void *GetVoidPointer(const vtkIdType id) 00146 {return (void *)this->GetPointer(id);}; 00148 00150 void DeepCopy(vtkDataArray *da); 00151 00153 00159 void SetArray(double* array, vtkIdType size, int save); 00160 void SetVoidArray(void *array, vtkIdType size, int save) 00161 {this->SetArray((double*)array, size, save);}; 00163 00164 protected: 00165 vtkDoubleArray(vtkIdType numComp=1); 00166 ~vtkDoubleArray(); 00167 00168 double *Array; // pointer to data 00169 double *ResizeAndExtend(const vtkIdType sz); // function to resize data 00170 00171 int TupleSize; //used for data conversion 00172 float *Tuple; 00173 00174 int SaveUserArray; 00175 private: 00176 vtkDoubleArray(const vtkDoubleArray&); // Not implemented. 00177 void operator=(const vtkDoubleArray&); // Not implemented. 00178 }; 00179 00180 inline void vtkDoubleArray::SetNumberOfValues(const vtkIdType number) 00181 { 00182 this->Allocate(number); 00183 this->MaxId = number - 1; 00184 } 00185 00186 inline double *vtkDoubleArray::WritePointer(const vtkIdType id, 00187 const vtkIdType number) 00188 { 00189 vtkIdType newSize=id+number; 00190 if ( newSize > this->Size ) 00191 { 00192 this->ResizeAndExtend(newSize); 00193 } 00194 if ( (--newSize) > this->MaxId ) 00195 { 00196 this->MaxId = newSize; 00197 } 00198 return this->Array + id; 00199 } 00200 00201 inline void vtkDoubleArray::InsertValue(const vtkIdType id, const double f) 00202 { 00203 if ( id >= this->Size ) 00204 { 00205 this->ResizeAndExtend(id+1); 00206 } 00207 this->Array[id] = f; 00208 if ( id > this->MaxId ) 00209 { 00210 this->MaxId = id; 00211 } 00212 } 00213 00214 inline vtkIdType vtkDoubleArray::InsertNextValue(const double f) 00215 { 00216 this->InsertValue (++this->MaxId,f); 00217 return this->MaxId; 00218 } 00219 00220 00221 #endif