VTK
vtkPeriodicDataArray.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkPeriodicDataArray.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 =========================================================================*/
15 
28 #ifndef vtkPeriodicDataArray_h
29 #define vtkPeriodicDataArray_h
30 
31 #include "vtkMappedDataArray.h" // Parent
32 #include "vtkDataArrayTemplate.h" // Template
33 
34 template <class Scalar>
36 public vtkTypeTemplate <vtkPeriodicDataArray <Scalar>, vtkMappedDataArray <Scalar> >
37 {
38 public:
39  virtual void PrintSelf(ostream &os, vtkIndent indent);
40 
43 
45  void Initialize();
46 
48  void GetTuples(vtkIdList *ptIds, vtkAbstractArray *output);
49 
51  void GetTuples(vtkIdType p1, vtkIdType p2, vtkAbstractArray *output);
52 
54  void Squeeze();
55 
58 
61 
63  void LookupValue(vtkVariant value, vtkIdList *ids);
64 
67 
69  void ClearLookup();
70 
73  double* GetTuple(vtkIdType i);
74 
76  void GetTuple(vtkIdType i, double *tuple);
77 
79  vtkIdType LookupTypedValue(Scalar value);
80 
82  void LookupTypedValue(Scalar value, vtkIdList *ids);
83 
86  Scalar GetValue(vtkIdType idx);
87 
90  Scalar& GetValueReference(vtkIdType idx);
91 
93  void GetTupleValue(vtkIdType idx, Scalar *t);
94 
96  unsigned long GetActualMemorySize();
97 
99  int Allocate(vtkIdType sz, vtkIdType ext);
100 
102  int Resize(vtkIdType numTuples);
103 
105  void SetNumberOfTuples(vtkIdType number);
106 
109 
111  void SetTuple(vtkIdType i, const float *source);
112 
114  void SetTuple(vtkIdType i, const double *source);
115 
117  void InsertTuple(vtkIdType i, vtkIdType j, vtkAbstractArray *source);
118 
120  void InsertTuple(vtkIdType i, const float *source);
121 
123  void InsertTuple(vtkIdType i, const double *source);
124 
126 
127  void InsertTuples(vtkIdList *dstIds, vtkIdList *srcIds,
128  vtkAbstractArray *source);
130 
132 
133  void InsertTuples(vtkIdType dstStart, vtkIdType n, vtkIdType srcStart,
134  vtkAbstractArray* source);
136 
139 
141  vtkIdType InsertNextTuple(const float *source);
142 
144  vtkIdType InsertNextTuple(const double *source);
145 
147  void DeepCopy(vtkAbstractArray *aa);
148 
150  void DeepCopy(vtkDataArray *da);
151 
153 
154  void InterpolateTuple(vtkIdType i, vtkIdList *ptIndices,
155  vtkAbstractArray* source, double* weights);
157 
159 
161  vtkIdType id2, vtkAbstractArray *source2, double t);
163 
165  void SetVariantValue(vtkIdType idx, vtkVariant value);
166 
168  void RemoveTuple(vtkIdType id);
169 
171  void RemoveFirstTuple();
172 
174  void RemoveLastTuple();
175 
177  void SetTupleValue(vtkIdType i, const Scalar *t);
178 
180  void InsertTupleValue(vtkIdType i, const Scalar *t);
181 
183  vtkIdType InsertNextTupleValue(const Scalar *t);
184 
186  void SetValue(vtkIdType idx, Scalar value);
187 
189  vtkIdType InsertNextValue(Scalar v);
190 
192  void InsertValue(vtkIdType idx, Scalar v);
193 
195 
196  vtkSetMacro(Normalize, bool);
197  vtkGetMacro(Normalize, bool);
199 
200 protected:
203 
205  virtual void Transform(Scalar* tuple) = 0;
206 
208  virtual bool ComputeScalarRange(double* range);
209 
211  virtual bool ComputeVectorRange(double range[2]);
212 
214  virtual void ComputePeriodicRange();
215 
217  void InvalidateRange();
218 
219  bool Normalize; // If transformed vector must be normalized
220 
221 private:
222  vtkPeriodicDataArray(const vtkPeriodicDataArray &); // Not implemented.
223  void operator=(const vtkPeriodicDataArray &); // Not implemented.
224 
225  Scalar* TempScalarArray; // Temporary array used by GetTupleValue methods
226  double* TempDoubleArray; // Temporary array used by GetTuple vethods
227  vtkIdType TempTupleIdx; // Location of currently stored Temp Tuple to use as cache
228  vtkDataArrayTemplate<Scalar>* Data; // Original data
229 
230  bool InvalidRange;
231  double PeriodicRange[6]; // Transformed periodic range
232 };
233 
234 #include "vtkPeriodicDataArray.txx"
235 
236 #endif //vtkPeriodicDataArray_h
237 // VTK-HeaderTest-Exclude: vtkPeriodicDataArray.h
vtkIdType InsertNextValue(Scalar v)
Provides the equivalent of vtkTypeMacro for use with template classes.
void RemoveTuple(vtkIdType id)
void GetTupleValue(vtkIdType idx, Scalar *t)
double * GetTuple(vtkIdType i)
Abstract superclass for all arrays.
void InsertValue(vtkIdType idx, Scalar v)
int Resize(vtkIdType numTuples)
virtual void ComputePeriodicRange()
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
unsigned long GetActualMemorySize()
int Allocate(vtkIdType sz, vtkIdType ext)
void SetNumberOfTuples(vtkIdType number)
int vtkIdType
Definition: vtkType.h:275
void InsertTuples(vtkIdList *dstIds, vtkIdList *srcIds, vtkAbstractArray *source)
A atomic type representing the union of many types.
Definition: vtkVariant.h:78
virtual void PrintSelf(ostream &os, vtkIndent indent)
void InsertTupleValue(vtkIdType i, const Scalar *t)
void InsertTuple(vtkIdType i, vtkIdType j, vtkAbstractArray *source)
Map native an Array into an angulat periodic array.
virtual bool ComputeScalarRange(double *range)
vtkIdType LookupValue(vtkVariant value)
a simple class to control print indentation
Definition: vtkIndent.h:38
vtkIdType InsertNextTupleValue(const Scalar *t)
void InterpolateTuple(vtkIdType i, vtkIdList *ptIndices, vtkAbstractArray *source, double *weights)
list of point or cell ids
Definition: vtkIdList.h:35
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:54
vtkArrayIterator * NewIterator()
void SetTupleValue(vtkIdType i, const Scalar *t)
Abstract superclass to iterate over elements in an vtkAbstractArray.
vtkIdType InsertNextTuple(vtkIdType j, vtkAbstractArray *source)
void DeepCopy(vtkAbstractArray *aa)
void InitializeArray(vtkDataArrayTemplate< Scalar > *inputData)
vtkIdType LookupTypedValue(Scalar value)
void GetTuples(vtkIdList *ptIds, vtkAbstractArray *output)
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
Scalar & GetValueReference(vtkIdType idx)
Scalar GetValue(vtkIdType idx)
virtual bool ComputeVectorRange(double range[2])
virtual void Transform(Scalar *tuple)=0
void SetVariantValue(vtkIdType idx, vtkVariant value)
vtkVariant GetVariantValue(vtkIdType idx)
void SetValue(vtkIdType idx, Scalar value)
void SetTuple(vtkIdType i, vtkIdType j, vtkAbstractArray *source)
#define vtkSetMacro(name, type)
Definition: vtkSetGet.h:79