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

dox/Common/vtkFloatArray.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkFloatArray.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 __vtkFloatArray_h 00034 #define __vtkFloatArray_h 00035 00036 #include "vtkDataArray.h" 00037 00038 class VTK_COMMON_EXPORT vtkFloatArray : public vtkDataArray 00039 { 00040 public: 00041 static vtkFloatArray *New(); 00042 vtkTypeRevisionMacro(vtkFloatArray,vtkDataArray); 00043 void PrintSelf(ostream& os, vtkIndent indent); 00044 00047 int Allocate(const vtkIdType sz, const vtkIdType ext=1000); 00048 00050 void Initialize(); 00051 00053 00054 int GetDataType() 00055 {return VTK_FLOAT;} 00057 00059 int GetDataTypeSize() { return sizeof(float); } 00060 00062 void SetNumberOfTuples(const vtkIdType number); 00063 00065 float *GetTuple(const vtkIdType i); 00066 00068 00069 void GetTuple(const vtkIdType i, float * tuple); 00070 void GetTuple(const vtkIdType i, double * tuple); 00072 00074 00075 void SetTuple(const vtkIdType i, const float * tuple); 00076 void SetTuple(const vtkIdType i, const double * tuple); 00078 00080 00082 void InsertTuple(const vtkIdType i, const float * tuple); 00083 void InsertTuple(const vtkIdType i, const double * tuple); 00085 00087 00089 vtkIdType InsertNextTuple(const float * tuple); 00090 vtkIdType InsertNextTuple(const double * tuple); 00092 00094 void Squeeze() {this->ResizeAndExtend(this->MaxId+1);}; 00095 00097 virtual void Resize(vtkIdType numTuples); 00098 00102 float GetComponent(const vtkIdType i, const int j); 00103 00108 void SetComponent(const vtkIdType i, const int j, float c); 00109 00113 void InsertComponent(const vtkIdType i, const int j, float c); 00114 00116 00117 float GetValue(const vtkIdType id) 00118 {return this->Array[id];} 00120 00122 00124 void SetValue(const vtkIdType id, const float value) 00125 {this->Array[id] = value;} 00127 00131 void SetNumberOfValues(const vtkIdType number); 00132 00134 void InsertValue(const vtkIdType id, const float f); 00135 00138 vtkIdType InsertNextValue(const float f); 00139 00143 float *WritePointer(const vtkIdType id, const vtkIdType number); 00144 00146 00148 void *GetVoidPointer(const vtkIdType id) 00149 {return (void *)this->GetPointer(id);} 00150 float *GetPointer(const vtkIdType id) 00151 {return this->Array + id;} 00153 00155 void DeepCopy(vtkDataArray *fa); 00156 00158 00164 void SetArray(float* array, vtkIdType size, int save); 00165 void SetVoidArray(void *array, vtkIdType size, int save) 00166 {this->SetArray((float*)array, size, save);} 00168 00169 00170 protected: 00171 vtkFloatArray(vtkIdType numComp=1); 00172 ~vtkFloatArray(); 00173 00174 float *Array; // pointer to data 00175 float *ResizeAndExtend(const vtkIdType sz); // function to reallocate data 00176 00177 int SaveUserArray; 00178 private: 00179 vtkFloatArray(const vtkFloatArray&); // Not implemented. 00180 void operator=(const vtkFloatArray&); // Not implemented. 00181 }; 00182 00183 inline void vtkFloatArray::SetNumberOfValues(const vtkIdType number) 00184 { 00185 this->Allocate(number); 00186 this->MaxId = number - 1; 00187 } 00188 00189 00190 inline float *vtkFloatArray::WritePointer(const vtkIdType id, 00191 const vtkIdType number) 00192 { 00193 vtkIdType newSize=id+number; 00194 if ( newSize > this->Size ) 00195 { 00196 this->ResizeAndExtend(newSize); 00197 } 00198 if ( (--newSize) > this->MaxId ) 00199 { 00200 this->MaxId = newSize; 00201 } 00202 return this->Array + id; 00203 } 00204 00205 inline void vtkFloatArray::InsertValue(const vtkIdType id, const float f) 00206 { 00207 if ( id >= this->Size ) 00208 { 00209 this->ResizeAndExtend(id+1); 00210 } 00211 this->Array[id] = f; 00212 if ( id > this->MaxId ) 00213 { 00214 this->MaxId = id; 00215 } 00216 } 00217 00218 inline vtkIdType vtkFloatArray::InsertNextValue(const float f) 00219 { 00220 this->InsertValue (++this->MaxId,f); 00221 return this->MaxId; 00222 } 00223 00224 #endif