VTK
vtkMappedDataArray.h
Go to the documentation of this file.
1 /*==============================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkMappedDataArray.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 ==============================================================================*/
34 #ifndef vtkMappedDataArray_h
35 #define vtkMappedDataArray_h
36 
37 #include "vtkTypedDataArray.h"
38 
39 #include "vtkTypeTemplate.h" // for vtkTypeTemplate
40 
41 template <class Scalar>
42 class vtkMappedDataArray : public vtkTypeTemplate<vtkMappedDataArray<Scalar>,
43  vtkTypedDataArray<Scalar> >
44 {
45 public:
47  typedef typename Superclass::ValueType ValueType;
48 
56 
57  void PrintSelf(ostream &os, vtkIndent indent);
58 
59  // vtkAbstractArray virtual method that must be reimplemented.
60  void DeepCopy(vtkAbstractArray *aa) = 0;
63  void GetTuples(vtkIdList *ptIds, vtkAbstractArray *output) = 0;
64  void GetTuples(vtkIdType p1, vtkIdType p2, vtkAbstractArray *output) = 0;
65  void InterpolateTuple(vtkIdType i, vtkIdList *ptIndices,
66  vtkAbstractArray *source, double *weights) = 0;
68  vtkAbstractArray* source1, vtkIdType id2,
69  vtkAbstractArray* source2, double t) = 0;
70 
71  // vtkDataArray virtual method that must be reimplemented.
72  void DeepCopy(vtkDataArray *da) = 0;
73 
78 
82  void ExportToVoidPointer(void *ptr);
83 
89  void DataChanged();
90 
93  void SetVoidArray(void *, vtkIdType, int);
94 
96 
97  void * WriteVoidPointer(vtkIdType /*id*/, vtkIdType /*number*/)
98  {
99  vtkErrorMacro(<<"WriteVoidPointer: Method not implemented.");
100  return NULL;
101  }
103 
105  void Modified();
106 
107  // vtkAbstractArray override:
108  bool HasStandardMemoryLayout() { return false; }
109 
110 protected:
113 
114  virtual int GetArrayType()
115  {
117  }
118 
119 private:
120  vtkMappedDataArray(const vtkMappedDataArray &); // Not implemented.
121  void operator=(const vtkMappedDataArray &); // Not implemented.
122 
124 
125  ValueType *TemporaryScalarPointer;
126  size_t TemporaryScalarPointerSize;
127 };
129 
130 #include "vtkMappedDataArray.txx"
131 
132 // Adds an implementation of NewInstanceInternal() that returns a standard
133 // (unmapped) VTK array, if possible. Use this with classes that derive from
134 // vtkTypeTemplate, otherwise, use vtkMappedDataArrayTypeMacro.
135 #define vtkMappedDataArrayNewInstanceMacro(thisClass) \
136  protected: \
137  vtkObjectBase *NewInstanceInternal() const \
138  { \
139  if (vtkDataArray *da = \
140  vtkDataArray::CreateDataArray(thisClass::VTK_DATA_TYPE)) \
141  { \
142  return da; \
143  } \
144  return thisClass::New(); \
145  } \
146  public:
147 
148 // Same as vtkTypeMacro, but adds an implementation of NewInstanceInternal()
149 // that returns a standard (unmapped) VTK array, if possible.
150 #define vtkMappedDataArrayTypeMacro(thisClass, superClass) \
151  vtkAbstractTypeMacroWithNewInstanceType(thisClass, superClass, vtkDataArray) \
152  vtkMappedDataArrayNewInstanceMacro(thisClass)
153 
154 #endif //vtkMappedDataArray_h
155 
156 // VTK-HeaderTest-Exclude: vtkMappedDataArray.h
vtkgl::weights
const GLbyte * weights
Definition: vtkgl.h:12766
vtkMappedDataArray::InterpolateTuple
void InterpolateTuple(vtkIdType i, vtkIdList *ptIndices, vtkAbstractArray *source, double *weights)=0
vtkMappedDataArray::~vtkMappedDataArray
~vtkMappedDataArray()
vtkIdType
int vtkIdType
Definition: vtkType.h:275
vtkMappedDataArray::DataChanged
void DataChanged()
vtkMappedDataArray::vtkMappedDataArray
vtkMappedDataArray()
vtkTypedDataArray
Extend vtkDataArray with abstract type-specific API.
Definition: vtkTypedDataArray.h:47
vtkMappedDataArray::HasStandardMemoryLayout
bool HasStandardMemoryLayout()
Definition: vtkMappedDataArray.h:108
vtkMappedDataArray::FastDownCast
static vtkMappedDataArray< Scalar > * FastDownCast(vtkAbstractArray *source)
vtkTypeTemplate.h
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:55
vtkErrorMacro
#define vtkErrorMacro(x)
Definition: vtkSetGet.h:478
vtkMappedDataArray
Map non-contiguous data structures into the vtkDataArray API.
Definition: vtkMappedDataArray.h:44
vtkMappedDataArray::Modified
void Modified()
source
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
Definition: vtkBoostGraphAdapter.h:821
vtkMappedDataArray::DeepCopy
void DeepCopy(vtkDataArray *da)=0
vtkMappedDataArray::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkTypedDataArray::ValueType
Scalar ValueType
Definition: vtkTypedDataArray.h:50
vtkgl::value
GLsizei const GLfloat * value
Definition: vtkgl.h:12021
vtkMappedDataArray::Superclass
vtkTypedDataArray< Scalar > Superclass
Definition: vtkMappedDataArray.h:46
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkMappedDataArray::ExportToVoidPointer
void ExportToVoidPointer(void *ptr)
vtkVariant
A atomic type representing the union of many types.
Definition: vtkVariant.h:79
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:36
vtkTypedDataArray.h
vtkMappedDataArray::GetVoidPointer
void * GetVoidPointer(vtkIdType id)
vtkMappedDataArray::GetVariantValue
vtkVariant GetVariantValue(vtkIdType idx)=0
vtkMappedDataArray::SetVoidArray
void SetVoidArray(void *, vtkIdType, int)
vtkAbstractArray
Abstract superclass for all arrays.
Definition: vtkAbstractArray.h:65
vtkMappedDataArray::GetTuples
void GetTuples(vtkIdType p1, vtkIdType p2, vtkAbstractArray *output)=0
vtkgl::t
GLdouble GLdouble t
Definition: vtkgl.h:11602
vtkMappedDataArray::GetArrayType
virtual int GetArrayType()
Definition: vtkMappedDataArray.h:114
vtkMappedDataArray::InterpolateTuple
void InterpolateTuple(vtkIdType i, vtkIdType id1, vtkAbstractArray *source1, vtkIdType id2, vtkAbstractArray *source2, double t)=0
vtkMappedDataArray::DeepCopy
void DeepCopy(vtkAbstractArray *aa)=0
vtkMappedDataArray::ValueType
Superclass::ValueType ValueType
Definition: vtkMappedDataArray.h:47
vtkMappedDataArray::GetTuples
void GetTuples(vtkIdList *ptIds, vtkAbstractArray *output)=0
vtkMappedDataArray::SetVariantValue
void SetVariantValue(vtkIdType idx, vtkVariant value)=0
vtkAbstractArray::MappedDataArray
@ MappedDataArray
Definition: vtkAbstractArray.h:464
vtkMappedDataArray::WriteVoidPointer
void * WriteVoidPointer(vtkIdType, vtkIdType)
Definition: vtkMappedDataArray.h:97
vtkTypeTemplate
Provides the equivalent of vtkTypeMacro for use with template classes.
Definition: vtkTypeTemplate.h:40