00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00047 #ifndef __vtkDataArray_h
00048 #define __vtkDataArray_h
00049
00050 #include "vtkObject.h"
00051
00052 class vtkDoubleArray;
00053 class vtkLookupTable;
00054 class vtkIdList;
00055
00056 class VTK_COMMON_EXPORT vtkDataArray : public vtkObject
00057 {
00058 public:
00059 vtkTypeRevisionMacro(vtkDataArray,vtkObject);
00060 void PrintSelf(ostream& os, vtkIndent indent);
00061
00063
00065 virtual int Allocate(vtkIdType sz, vtkIdType ext=1000) = 0;
00066 virtual void Initialize() = 0;
00068
00071 virtual int GetDataType() = 0;
00072
00075 virtual int GetDataTypeSize() = 0;
00076
00078
00080 vtkSetClampMacro(NumberOfComponents,int,1,VTK_LARGE_INTEGER);
00081 int GetNumberOfComponents() {return this->NumberOfComponents;};
00083
00086 virtual void SetNumberOfTuples(vtkIdType number) = 0;
00087
00089
00090 vtkIdType GetNumberOfTuples()
00091 {return (this->MaxId + 1)/this->NumberOfComponents;}
00093
00098 virtual double *GetTuple(vtkIdType i) = 0;
00099
00103 virtual void GetTuple(vtkIdType i, double * tuple) = 0;
00104
00106
00109 double GetTuple1(vtkIdType i);
00110 double* GetTuple2(vtkIdType i);
00111 double* GetTuple3(vtkIdType i);
00112 double* GetTuple4(vtkIdType i);
00113 double* GetTuple9(vtkIdType i);
00115
00119 void GetTuples(vtkIdList *ptIds, vtkDataArray *output);
00120
00124 void GetTuples(vtkIdType p1, vtkIdType p2, vtkDataArray *output);
00125
00127
00130 virtual void SetTuple(vtkIdType i, const float * tuple) = 0;
00131 virtual void SetTuple(vtkIdType i, const double * tuple) = 0;
00133
00135
00138 void SetTuple1(vtkIdType i, double value);
00139 void SetTuple2(vtkIdType i, double val0, double val1);
00140 void SetTuple3(vtkIdType i, double val0, double val1, double val2);
00141 void SetTuple4(vtkIdType i, double val0, double val1, double val2,
00142 double val3);
00143 void SetTuple9(vtkIdType i, double val0, double val1, double val2,
00144 double val3, double val4, double val5, double val6,
00145 double val7, double val8);
00147
00149
00151 virtual void InsertTuple(vtkIdType i, const float * tuple) = 0;
00152 virtual void InsertTuple(vtkIdType i, const double * tuple) = 0;
00154
00156
00159 void InsertTuple1(vtkIdType i, double value);
00160 void InsertTuple2(vtkIdType i, double val0, double val1);
00161 void InsertTuple3(vtkIdType i, double val0, double val1, double val2);
00162 void InsertTuple4(vtkIdType i, double val0, double val1, double val2,
00163 double val3);
00164 void InsertTuple9(vtkIdType i, double val0, double val1, double val2,
00165 double val3, double val4, double val5, double val6,
00166 double val7, double val8);
00168
00170
00173 virtual vtkIdType InsertNextTuple(const float * tuple) = 0;
00174 virtual vtkIdType InsertNextTuple(const double * tuple) = 0;
00176
00178
00181 void InsertNextTuple1(double value);
00182 void InsertNextTuple2(double val0, double val1);
00183 void InsertNextTuple3(double val0, double val1, double val2);
00184 void InsertNextTuple4(double val0, double val1, double val2,
00185 double val3);
00186 void InsertNextTuple9(double val0, double val1, double val2,
00187 double val3, double val4, double val5, double val6,
00188 double val7, double val8);
00190
00194 virtual double GetComponent(vtkIdType i, int j);
00195
00200 virtual void SetComponent(vtkIdType i, int j, double c);
00201
00205 virtual void InsertComponent(vtkIdType i, int j, double c);
00206
00208
00214 virtual void GetData(vtkIdType tupleMin, vtkIdType tupleMax, int compMin,
00215 int compMax, vtkDoubleArray* data);
00217
00220 virtual void DeepCopy(vtkDataArray *da);
00221
00226 virtual void FillComponent(int j, double c);
00227
00229
00235 virtual void CopyComponent(int j, vtkDataArray *from,
00236 int fromComponent);
00238
00241 virtual void *GetVoidPointer(vtkIdType id) = 0;
00242
00244 virtual void Squeeze() = 0;
00245
00247 virtual void Resize(vtkIdType numTuples) = 0;
00248
00250
00251 void Reset()
00252 {this->MaxId = -1;}
00254
00256
00257 vtkIdType GetSize()
00258 {return this->Size;}
00260
00262
00263 vtkIdType GetMaxId()
00264 {return this->MaxId;}
00266
00268
00274 virtual void SetVoidArray(void *vtkNotUsed(array),
00275 vtkIdType vtkNotUsed(size),
00276 int vtkNotUsed(save)) {};
00278
00285 unsigned long GetActualMemorySize();
00286
00289 void CreateDefaultLookupTable();
00290
00292
00293 void SetLookupTable(vtkLookupTable *lut);
00294 vtkGetObjectMacro(LookupTable,vtkLookupTable);
00296
00298
00299 void SetName(const char* name);
00300 const char* GetName();
00302
00304
00306 void GetRange(double range[2], int comp)
00307 {
00308 this->ComputeRange(comp);
00309 memcpy(range, this->Range, 2*sizeof(double));
00310 }
00311 double* GetRange(int comp)
00312 {
00313 this->ComputeRange(comp);
00314 return this->Range;
00315 }
00317
00318 virtual void ComputeRange(int comp);
00320
00322 double* GetRange()
00323 {
00324 this->ComputeRange(0);
00325 return this->Range;
00326 }
00327 void GetRange(double range[2])
00328 {
00329 this->GetRange(range,0);
00330 }
00332
00334
00337 void GetDataTypeRange(double range[2]);
00338 double GetDataTypeMin();
00339 double GetDataTypeMax();
00341
00344 virtual double GetMaxNorm();
00345
00351 static vtkDataArray* CreateDataArray(int dataType);
00352
00353 protected:
00354
00355 vtkDataArray(vtkIdType numComp=1);
00356 ~vtkDataArray();
00357
00358 vtkLookupTable *LookupTable;
00359
00360 vtkIdType Size;
00361 vtkIdType MaxId;
00362 int NumberOfComponents;
00363
00364 char* Name;
00365
00366 private:
00367 double Range[2];
00368
00369
00370
00371
00372 vtkTimeStamp ComponentRangeComputeTime[5];
00373 double ComponentRange[5][2];
00374
00375 double* GetTupleN(vtkIdType i, int n);
00376
00377 private:
00378 vtkDataArray(const vtkDataArray&);
00379 void operator=(const vtkDataArray&);
00380 };
00381
00382 #endif