Field3D
FieldWrapper.h
Go to the documentation of this file.
1 //----------------------------------------------------------------------------//
2 
3 #ifndef __F3DUTIL_FIELDWRAPPER_H__
4 #define __F3DUTIL_FIELDWRAPPER_H__
5 
6 //------------------------------------------------------------------------------
7 
8 // Field3D includes
9 #include <lava/field3d15/DenseField.h>
10 #include <lava/field3d15/Field3DFile.h>
11 #include <lava/field3d15/FieldInterp.h>
12 #include <lava/field3d15/InitIO.h>
13 #include <lava/field3d15/MIPField.h>
14 #include <lava/field3d15/MIPUtil.h>
15 #include <lava/field3d15/SparseField.h>
16 
17 // Project includes
18 #include "FieldSampler.h"
19 
20 //----------------------------------------------------------------------------//
21 
22 #include "ns.h"
23 
25 
26 //------------------------------------------------------------------------------
27 // FieldWrapper
28 //------------------------------------------------------------------------------
29 
32 template <typename Field_T>
34 {
35  typedef Field_T field_type;
36  typedef std::vector<FieldWrapper> Vec;
37 
38  FieldWrapper(const typename Field_T::Ptr f)
39  : field(f.get()),
40  fieldPtr(f),
41  mapping(f->mapping().get()),
42  vsBounds(continuousBounds(f->dataWindow()))
43  { }
44 
45  typename Field_T::LinearInterp interp;
46  const Field_T *field;
47  typename Field_T::Ptr fieldPtr;
48  const Field3D::FieldMapping *mapping;
50 };
51 
52 //------------------------------------------------------------------------------
53 // MIPFieldWrapper
54 //------------------------------------------------------------------------------
55 
58 template <typename Field_T>
60 {
61  typedef Field_T field_type;
62  typedef std::vector<MIPFieldWrapper> Vec;
63  typedef typename Field_T::LinearInterp LinearInterp;
64 
65  MIPFieldWrapper(const typename Field_T::Ptr f)
66  : interpPtr(new LinearInterp(*f)),
67  field(f.get()),
68  fieldPtr(f),
69  mapping(f->mapping().get()),
70  vsBounds(continuousBounds(f->dataWindow()))
71  {
72  interp = interpPtr.get();
73  }
74 
75  boost::shared_ptr<LinearInterp> interpPtr;
76  LinearInterp *interp;
77  const Field_T *field;
78  typename Field_T::Ptr fieldPtr;
79  const Field3D::FieldMapping *mapping;
81 };
82 
83 //----------------------------------------------------------------------------//
84 
86 
87 //------------------------------------------------------------------------------
88 
89 #endif // include guard
90 
91 //------------------------------------------------------------------------------
#define FIELD3D_NAMESPACE_HEADER_CLOSE
Definition: ns.h:58
Box3d vsBounds
Definition: FieldWrapper.h:49
MIPFieldWrapper(const typename Field_T::Ptr f)
Definition: FieldWrapper.h:65
Field_T::LinearInterp interp
Definition: FieldWrapper.h:45
Field_T::Ptr fieldPtr
Definition: FieldWrapper.h:47
std::vector< FieldWrapper > Vec
Definition: FieldWrapper.h:36
const Field_T * field
Definition: FieldWrapper.h:46
Field_T field_type
Definition: FieldWrapper.h:35
LinearInterp * interp
Definition: FieldWrapper.h:76
std::vector< MIPFieldWrapper > Vec
Definition: FieldWrapper.h:62
const Field3D::FieldMapping * mapping
Definition: FieldWrapper.h:79
This class wraps up a single field to make its interpolator and its mapping easily accessible...
Definition: FieldWrapper.h:33
boost::shared_ptr< LinearInterp > interpPtr
Definition: FieldWrapper.h:75
Imath::Box3d Box3d
Definition: SpiMathLib.h:79
Field_T::LinearInterp LinearInterp
Definition: FieldWrapper.h:63
Field_T::Ptr fieldPtr
Definition: FieldWrapper.h:78
This class wraps up a single MIP field to make its interpolator and its mapping easily accessible...
Definition: FieldWrapper.h:59
const Field_T * field
Definition: FieldWrapper.h:77
Field_T field_type
Definition: FieldWrapper.h:61
const Field3D::FieldMapping * mapping
Definition: FieldWrapper.h:48
FieldWrapper(const typename Field_T::Ptr f)
Definition: FieldWrapper.h:38
Box3d continuousBounds(const Box3i &bbox)
Definition: Field.h:1116