VTK
vtkDataArray.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkDataArray.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
42 #ifndef vtkDataArray_h
43 #define vtkDataArray_h
44 
45 #include "vtkCommonCoreModule.h" // For export macro
46 #include "vtkAbstractArray.h"
47 
48 class vtkDoubleArray;
49 class vtkIdList;
51 class vtkLookupTable;
52 
54 {
55 public:
57  void PrintSelf(ostream& os, vtkIndent indent);
58 
64  static vtkDataArray* FastDownCast(vtkAbstractArray *source);
65 
67 
71  virtual int IsNumeric()
72  { return 1; }
74 
76 
79  { return this->GetDataTypeSize(); }
81 
87  virtual void SetTuple(vtkIdType i, vtkIdType j, vtkAbstractArray* source) = 0;
88 
93  virtual void InsertTuple(vtkIdType i, vtkIdType j, vtkAbstractArray* source) = 0;
94 
101 
105  virtual void GetTuples(vtkIdList *ptIds, vtkAbstractArray *output);
106 
110  virtual void GetTuples(vtkIdType p1, vtkIdType p2, vtkAbstractArray *output);
111 
112 
114 
118  virtual void InterpolateTuple(vtkIdType i, vtkIdList *ptIndices,
119  vtkAbstractArray* source, double* weights);
121 
123 
128  virtual void InterpolateTuple(vtkIdType i,
129  vtkIdType id1, vtkAbstractArray* source1,
130  vtkIdType id2, vtkAbstractArray* source2, double t);
132 
137  virtual double *GetTuple(vtkIdType i) = 0;
138 
142  virtual void GetTuple(vtkIdType i, double * tuple) = 0;
143 
145 
148  double GetTuple1(vtkIdType i);
149  double* GetTuple2(vtkIdType i);
150  double* GetTuple3(vtkIdType i);
151  double* GetTuple4(vtkIdType i);
152  double* GetTuple6(vtkIdType i);
153  double* GetTuple9(vtkIdType i);
155 
157 
160  virtual void SetTuple(vtkIdType i, const float * tuple) = 0;
161  virtual void SetTuple(vtkIdType i, const double * tuple) = 0;
163 
165 
168  void SetTuple1(vtkIdType i, double value);
169  void SetTuple2(vtkIdType i, double val0, double val1);
170  void SetTuple3(vtkIdType i, double val0, double val1, double val2);
171  void SetTuple4(vtkIdType i, double val0, double val1, double val2,
172  double val3);
173  void SetTuple6(vtkIdType i, double val0, double val1, double val2,
174  double val3, double val4, double val5);
175  void SetTuple9(vtkIdType i, double val0, double val1, double val2,
176  double val3, double val4, double val5, double val6,
177  double val7, double val8);
179 
181 
183  virtual void InsertTuple(vtkIdType i, const float * tuple) = 0;
184  virtual void InsertTuple(vtkIdType i, const double * tuple) = 0;
186 
188 
191  void InsertTuple1(vtkIdType i, double value);
192  void InsertTuple2(vtkIdType i, double val0, double val1);
193  void InsertTuple3(vtkIdType i, double val0, double val1, double val2);
194  void InsertTuple4(vtkIdType i, double val0, double val1, double val2,
195  double val3);
196  void InsertTuple9(vtkIdType i, double val0, double val1, double val2,
197  double val3, double val4, double val5, double val6,
198  double val7, double val8);
200 
202 
205  virtual vtkIdType InsertNextTuple(const float * tuple) = 0;
206  virtual vtkIdType InsertNextTuple(const double * tuple) = 0;
208 
210 
213  void InsertNextTuple1(double value);
214  void InsertNextTuple2(double val0, double val1);
215  void InsertNextTuple3(double val0, double val1, double val2);
216  void InsertNextTuple4(double val0, double val1, double val2,
217  double val3);
218  void InsertNextTuple9(double val0, double val1, double val2,
219  double val3, double val4, double val5, double val6,
220  double val7, double val8);
222 
224 
227  virtual void RemoveTuple(vtkIdType id) = 0;
228  virtual void RemoveFirstTuple() = 0;
229  virtual void RemoveLastTuple() = 0;
231 
235  virtual double GetComponent(vtkIdType i, int j);
236 
241  virtual void SetComponent(vtkIdType i, int j, double c);
242 
246  virtual void InsertComponent(vtkIdType i, int j, double c);
247 
249 
255  virtual void GetData(vtkIdType tupleMin, vtkIdType tupleMax, int compMin,
256  int compMax, vtkDoubleArray* data);
258 
260 
262  virtual void DeepCopy(vtkAbstractArray *aa);
263  virtual void DeepCopy(vtkDataArray *da);
265 
270  virtual void FillComponent(int j, double c);
271 
273 
279  virtual void CopyComponent(int j, vtkDataArray *from,
280  int fromComponent);
282 
286  virtual void* WriteVoidPointer(vtkIdType id, vtkIdType number) = 0;
287 
294  virtual unsigned long GetActualMemorySize();
295 
298  void CreateDefaultLookupTable();
299 
301 
302  void SetLookupTable(vtkLookupTable *lut);
303  vtkGetObjectMacro(LookupTable,vtkLookupTable);
305 
307 
314  void GetRange(double range[2], int comp)
315  {
316  this->ComputeRange(range, comp);
317  }
319 
321 
327  double* GetRange(int comp)
328  {
329  this->GetRange(this->Range, comp);
330  return this->Range;
331  }
333 
335 
340  double* GetRange()
341  {
342  return this->GetRange(0);
343  }
345 
347 
353  void GetRange(double range[2])
354  {
355  this->GetRange(range,0);
356  }
358 
360 
363  void GetDataTypeRange(double range[2]);
364  double GetDataTypeMin();
365  double GetDataTypeMax();
366  static void GetDataTypeRange(int type, double range[2]);
367  static double GetDataTypeMin(int type);
368  static double GetDataTypeMax(int type);
370 
373  virtual double GetMaxNorm();
374 
380  static vtkDataArray* CreateDataArray(int dataType);
381 
387  static vtkInformationDoubleVectorKey* COMPONENT_RANGE();
392  static vtkInformationDoubleVectorKey* L2_NORM_RANGE();
393 
399  virtual int CopyInformation(vtkInformation *infoFrom, int deep=1);
400 
402  virtual int GetArrayType() { return DataArray; }
403 
404 protected:
409  virtual void ComputeRange(double range[2], int comp);
410 
415  virtual bool ComputeScalarRange(double* ranges);
416 
417  // Returns true if the range was computed. Will return false
418  // if you try to compute the range of an array of length zero.
419  virtual bool ComputeVectorRange(double range[2]);
420 
421  // Construct object with default tuple dimension (number of components) of 1.
422  vtkDataArray();
423  ~vtkDataArray();
424 
426  double Range[2];
427 
428 private:
429  double* GetTupleN(vtkIdType i, int n);
430 
431 private:
432  vtkDataArray(const vtkDataArray&); // Not implemented.
433  void operator=(const vtkDataArray&); // Not implemented.
434 };
435 
436 //------------------------------------------------------------------------------
438 {
439  switch (source->GetArrayType())
440  {
441  case DataArrayTemplate:
442  case TypedDataArray:
443  case DataArray:
444  case MappedDataArray:
445  return static_cast<vtkDataArray*>(source);
446  default:
447  return NULL;
448  }
449 }
450 
451 #endif
GLsizei GLsizei GLenum GLenum const GLvoid * data
Definition: vtkgl.h:11339
void PrintSelf(ostream &os, vtkIndent indent)
void GetRange(double range[2])
Definition: vtkDataArray.h:353
GLuint GLuint GLsizei GLenum type
Definition: vtkgl.h:11315
virtual void DeepCopy(vtkAbstractArray *da)
Store vtkAlgorithm input/output information.
Abstract superclass for all arrays.
virtual int GetDataTypeSize()=0
#define VTKCOMMONCORE_EXPORT
virtual void SetTuple(vtkIdType i, vtkIdType j, vtkAbstractArray *source)=0
map scalar values into colors via a lookup table
virtual int GetArrayType()
Definition: vtkDataArray.h:402
virtual int IsNumeric()
Definition: vtkDataArray.h:71
virtual int GetArrayType()
GLsizei const GLfloat * value
Definition: vtkgl.h:12021
virtual int GetElementComponentSize()
Definition: vtkDataArray.h:78
int vtkIdType
Definition: vtkType.h:281
GLdouble GLdouble t
Definition: vtkgl.h:11602
void GetRange(double range[2], int comp)
Definition: vtkDataArray.h:314
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:632
virtual int CopyInformation(vtkInformation *infoFrom, int deep=1)
dynamic, self-adjusting array of double
double * GetRange(int comp)
Definition: vtkDataArray.h:327
Key for double vector values.
const GLbyte * weights
Definition: vtkgl.h:12766
a simple class to control print indentation
Definition: vtkIndent.h:38
const GLubyte * c
Definition: vtkgl.h:15720
double * GetRange()
Definition: vtkDataArray.h:340
list of point or cell ids
Definition: vtkIdList.h:35
virtual void InsertTuple(vtkIdType i, vtkIdType j, vtkAbstractArray *source)=0
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:53
virtual void GetTuples(vtkIdList *ptIds, vtkAbstractArray *output)
vtkLookupTable * LookupTable
Definition: vtkDataArray.h:425
#define vtkGetObjectMacro(name, type)
Definition: vtkSetGet.h:222
virtual void InterpolateTuple(vtkIdType i, vtkIdList *ptIndices, vtkAbstractArray *source, double *weights)=0
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
static vtkDataArray * FastDownCast(vtkAbstractArray *source)
Definition: vtkDataArray.h:437
virtual vtkIdType InsertNextTuple(vtkIdType j, vtkAbstractArray *source)=0
GLclampd n
Definition: vtkgl.h:14370
virtual unsigned long GetActualMemorySize()=0
#define vtkDataArray
GLenum GLint * range
Definition: vtkgl.h:14180