00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00051
#ifndef __vtkDataArray_h
00052
#define __vtkDataArray_h
00053
00054
#include "vtkObject.h"
00055
00056
class vtkFloatArray;
00057
class vtkLookupTable;
00058
class vtkIdList;
00059
00060 class VTK_COMMON_EXPORT vtkDataArray :
public vtkObject
00061 {
00062
public:
00063 vtkTypeRevisionMacro(vtkDataArray,
vtkObject);
00064
void PrintSelf(ostream& os,
vtkIndent indent);
00065
00067
00069
virtual int Allocate(
const vtkIdType sz,
const vtkIdType ext=1000) = 0;
00070
virtual void Initialize() = 0;
00072
00073
#ifndef VTK_REMOVE_LEGACY_CODE
00074
00075
virtual vtkDataArray* MakeObject();
00076
#endif
00077
00080
virtual int GetDataType() = 0;
00081
00084
virtual int GetDataTypeSize() = 0;
00085
00087
00089 vtkSetClampMacro(NumberOfComponents,
int,1,VTK_LARGE_INTEGER);
00090 int GetNumberOfComponents() {
return this->NumberOfComponents;};
00092
00095
virtual void SetNumberOfTuples(
const vtkIdType number) = 0;
00096
00098
00099 vtkIdType GetNumberOfTuples()
00100 {
return (this->MaxId + 1)/this->NumberOfComponents;}
00102
00107
virtual float *GetTuple(
const vtkIdType i) = 0;
00108
00110
00113
virtual void GetTuple(
const vtkIdType i,
float * tuple) = 0;
00114
virtual void GetTuple(
const vtkIdType i,
double * tuple);
00116
00118
00121
float GetTuple1(
const vtkIdType i);
00122
float* GetTuple2(
const vtkIdType i);
00123
float* GetTuple3(
const vtkIdType i);
00124
float* GetTuple4(
const vtkIdType i);
00125
float* GetTuple9(
const vtkIdType i);
00127
00131
void GetTuples(
vtkIdList *ptIds, vtkDataArray *output);
00132
00136
void GetTuples(
vtkIdType p1,
vtkIdType p2, vtkDataArray *output);
00137
00139
00142
virtual void SetTuple(
const vtkIdType i,
const float * tuple) = 0;
00143
virtual void SetTuple(
const vtkIdType i,
const double * tuple);
00145
00147
00150
void SetTuple1(
const vtkIdType i,
float value);
00151
void SetTuple2(
const vtkIdType i,
float val0,
float val1);
00152
void SetTuple3(
const vtkIdType i,
float val0,
float val1,
float val2);
00153
void SetTuple4(
const vtkIdType i,
float val0,
float val1,
float val2,
00154
float val3);
00155
void SetTuple9(
const vtkIdType i,
float val0,
float val1,
float val2,
00156
float val3,
float val4,
float val5,
float val6,
00157
float val7,
float val8);
00159
00161
00163
virtual void InsertTuple(
const vtkIdType i,
const float * tuple) = 0;
00164
virtual void InsertTuple(
const vtkIdType i,
const double * tuple);
00166
00168
00171
void InsertTuple1(
const vtkIdType i,
float value);
00172
void InsertTuple2(
const vtkIdType i,
float val0,
float val1);
00173
void InsertTuple3(
const vtkIdType i,
float val0,
float val1,
float val2);
00174
void InsertTuple4(
const vtkIdType i,
float val0,
float val1,
float val2,
00175
float val3);
00176
void InsertTuple9(
const vtkIdType i,
float val0,
float val1,
float val2,
00177
float val3,
float val4,
float val5,
float val6,
00178
float val7,
float val8);
00180
00182
00185
virtual vtkIdType InsertNextTuple(
const float * tuple) = 0;
00186
virtual vtkIdType InsertNextTuple(
const double * tuple);
00188
00190
00193
void InsertNextTuple1(
float value);
00194
void InsertNextTuple2(
float val0,
float val1);
00195
void InsertNextTuple3(
float val0,
float val1,
float val2);
00196
void InsertNextTuple4(
float val0,
float val1,
float val2,
00197
float val3);
00198
void InsertNextTuple9(
float val0,
float val1,
float val2,
00199
float val3,
float val4,
float val5,
float val6,
00200
float val7,
float val8);
00202
00206
virtual float GetComponent(
const vtkIdType i,
const int j);
00207
00212
virtual void SetComponent(
const vtkIdType i,
const int j,
float c);
00213
00217
virtual void InsertComponent(
const vtkIdType i,
const int j,
float c);
00218
00220
00226
virtual void GetData(
vtkIdType tupleMin,
vtkIdType tupleMax,
int compMin,
00227
int compMax,
vtkFloatArray* data);
00229
00232
virtual void DeepCopy(vtkDataArray *da);
00233
00238
virtual void FillComponent(
const int j,
const float c);
00239
00241
00247
virtual void CopyComponent(
const int j, vtkDataArray *from,
00248
const int fromComponent);
00250
00253
virtual void *GetVoidPointer(
const vtkIdType id) = 0;
00254
00256
virtual void Squeeze() = 0;
00257
00259
virtual void Resize(
vtkIdType numTuples) = 0;
00260
00262
00263 void Reset()
00264 {this->MaxId = -1;}
00266
00268
00269 vtkIdType GetSize()
00270 {
return this->Size;}
00272
00274
00275 vtkIdType GetMaxId()
00276 {
return this->MaxId;}
00278
00280
00286 virtual void SetVoidArray(
void *vtkNotUsed(array),
00287
vtkIdType vtkNotUsed(size),
00288
int vtkNotUsed(save)) {};
00290
00297
unsigned long GetActualMemorySize();
00298
00301
void CreateDefaultLookupTable();
00302
00304
00305
void SetLookupTable(
vtkLookupTable *lut);
00306 vtkGetObjectMacro(LookupTable,
vtkLookupTable);
00308
00310
00311
void SetName(
const char* name);
00312
const char* GetName();
00314
00316
00318 void GetRange(
float range[2],
int comp)
00319 {
00320 this->ComputeRange(comp);
00321 memcpy(range, this->Range, 2*
sizeof(
float));
00322 }
00323 float* GetRange(
int comp)
00324 {
00325 this->ComputeRange(comp);
00326
return this->Range;
00327 }
00329
00330
virtual void ComputeRange(
int comp);
00332
00334 float* GetRange()
00335 {
00336 this->ComputeRange(0);
00337
return this->Range;
00338 }
00339 void GetRange(
float range[2])
00340 {
00341 this->GetRange(range,0);
00342 }
00344
00346
00349
void GetDataTypeRange(
double range[2]);
00350
double GetDataTypeMin();
00351
double GetDataTypeMax();
00353
00356
virtual float GetMaxNorm();
00357
00363
static vtkDataArray* CreateDataArray(
int dataType);
00364
00365
protected:
00366
00367 vtkDataArray(
vtkIdType numComp=1);
00368 ~vtkDataArray();
00369
00370 vtkLookupTable *LookupTable;
00371
00372 vtkIdType Size;
00373 vtkIdType MaxId;
00374 int NumberOfComponents;
00375
00376 char* Name;
00377
00378
private:
00379
float Range[2];
00380
int ComponentForLastRange;
00381
vtkTimeStamp ComputeTimeForLastRange;
00382
00383
float* GetTupleN(
const vtkIdType i,
int n);
00384
00385
private:
00386 vtkDataArray(
const vtkDataArray&);
00387
void operator=(
const vtkDataArray&);
00388 };
00389
00390
#endif