00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00057 #ifndef __vtkFloatArray_h
00058 #define __vtkFloatArray_h
00059
00060 #include "vtkDataArray.h"
00061
00062 class VTK_COMMON_EXPORT vtkFloatArray : public vtkDataArray
00063 {
00064 public:
00065 static vtkFloatArray *New();
00066 vtkTypeMacro(vtkFloatArray,vtkDataArray);
00067 void PrintSelf(ostream& os, vtkIndent indent);
00068
00071 int Allocate(const vtkIdType sz, const vtkIdType ext=1000);
00072
00074 void Initialize();
00075
00077 vtkDataArray *MakeObject();
00078
00080
00081 int GetDataType()
00082 {return VTK_FLOAT;}
00084
00086 void SetNumberOfTuples(const vtkIdType number);
00087
00089 float *GetTuple(const vtkIdType i);
00090
00092
00093 void GetTuple(const vtkIdType i, float * tuple);
00094 void GetTuple(const vtkIdType i, double * tuple);
00096
00098
00099 void SetTuple(const vtkIdType i, const float * tuple);
00100 void SetTuple(const vtkIdType i, const double * tuple);
00102
00104
00106 void InsertTuple(const vtkIdType i, const float * tuple);
00107 void InsertTuple(const vtkIdType i, const double * tuple);
00109
00111
00113 vtkIdType InsertNextTuple(const float * tuple);
00114 vtkIdType InsertNextTuple(const double * tuple);
00116
00118 void Squeeze() {this->ResizeAndExtend(this->MaxId+1);};
00119
00121 virtual void Resize(vtkIdType numTuples);
00122
00126 float GetComponent(const vtkIdType i, const int j);
00127
00132 void SetComponent(const vtkIdType i, const int j, const float c);
00133
00137 void InsertComponent(const vtkIdType i, const int j, const float c);
00138
00140
00141 float GetValue(const vtkIdType id)
00142 {return this->Array[id];}
00144
00146
00148 void SetValue(const vtkIdType id, const float value)
00149 {this->Array[id] = value;}
00151
00155 void SetNumberOfValues(const vtkIdType number);
00156
00158 void InsertValue(const vtkIdType id, const float f);
00159
00162 vtkIdType InsertNextValue(const float f);
00163
00167 float *WritePointer(const vtkIdType id, const vtkIdType number);
00168
00170
00172 void *GetVoidPointer(const vtkIdType id)
00173 {return (void *)this->GetPointer(id);}
00174 float *GetPointer(const vtkIdType id)
00175 {return this->Array + id;}
00177
00179 void DeepCopy(vtkDataArray *fa);
00180
00182
00188 void SetArray(float* array, vtkIdType size, int save);
00189 void SetVoidArray(void *array, vtkIdType size, int save)
00190 {this->SetArray((float*)array, size, save);}
00192
00193
00194 protected:
00195 vtkFloatArray(vtkIdType numComp=1);
00196 ~vtkFloatArray();
00197
00198 float *Array;
00199 float *ResizeAndExtend(const vtkIdType sz);
00200
00201 int SaveUserArray;
00202 private:
00203 vtkFloatArray(const vtkFloatArray&);
00204 void operator=(const vtkFloatArray&);
00205 };
00206
00207 inline void vtkFloatArray::SetNumberOfValues(const vtkIdType number)
00208 {
00209 this->Allocate(number);
00210 this->MaxId = number - 1;
00211 }
00212
00213
00214 inline float *vtkFloatArray::WritePointer(const vtkIdType id,
00215 const vtkIdType number)
00216 {
00217 vtkIdType newSize=id+number;
00218 if ( newSize > this->Size )
00219 {
00220 this->ResizeAndExtend(newSize);
00221 }
00222 if ( (--newSize) > this->MaxId )
00223 {
00224 this->MaxId = newSize;
00225 }
00226 return this->Array + id;
00227 }
00228
00229 inline void vtkFloatArray::InsertValue(const vtkIdType id, const float f)
00230 {
00231 if ( id >= this->Size )
00232 {
00233 this->ResizeAndExtend(id+1);
00234 }
00235 this->Array[id] = f;
00236 if ( id > this->MaxId )
00237 {
00238 this->MaxId = id;
00239 }
00240 }
00241
00242 inline vtkIdType vtkFloatArray::InsertNextValue(const float f)
00243 {
00244 this->InsertValue (++this->MaxId,f);
00245 return this->MaxId;
00246 }
00247
00248 #endif