46#ifndef _INCLUDED_Field3D_ProceduralField_H_
47#define _INCLUDED_Field3D_ProceduralField_H_
70#define REGISTER_FIELD_TYPES(FIELDCLASS) \
71 factory.registerField(FIELDCLASS<half>::create); \
72 factory.registerField(FIELDCLASS<float>::create); \
73 factory.registerField(FIELDCLASS<double>::create); \
74 factory.registerField(FIELDCLASS<V3h>::create); \
75 factory.registerField(FIELDCLASS<V3f>::create); \
76 factory.registerField(FIELDCLASS<V3d>::create)
78#define INSTANTIATE_FIELD_TYPES(FIELDCLASS) \
79 template class FIELDCLASS<half>; \
80 template class FIELDCLASS<float>; \
81 template class FIELDCLASS<double>; \
82 template class FIELDCLASS<V3h>; \
83 template class FIELDCLASS<V3f>; \
84 template class FIELDCLASS<V3d>
119template <
class Data_T>
127 typedef boost::intrusive_ptr<ProceduralField>
Ptr;
139 return "ProceduralField";
165 virtual Data_T
value(
int i,
int j,
int k)
const = 0;
218 return metadata().intMetadata(name,
static_cast<int>(
defaultVal));
228 return metadata().intMetadata(name,
static_cast<int>(
defaultVal));
238 return metadata().intMetadata(name,
static_cast<int>(
defaultVal));
278 return metadata().floatMetadata(name,
static_cast<float>(
defaultVal));
288 return metadata().floatMetadata(name,
defaultVal);
298 return metadata().floatMetadata(name,
static_cast<float>(
defaultVal));
Contains Field, WritableField and ResizableField classes.
#define FIELD3D_CLASSTYPE_TEMPL_INSTANTIATION(field)
#define FIELD3D_CLASSNAME_CLASSTYPE_IMPLEMENTATION
ProceduralField< V3f > ProceduralField3f
ProceduralField< half > ProceduralFieldh
ProceduralField< float > ProceduralFieldf
ProceduralField< V3h > ProceduralField3h
ProceduralField< V3d > ProceduralField3d
ProceduralField< double > ProceduralFieldd
FIELD3D_NAMESPACE_OPENtypedef ::half half
std::string name
Optional name of the field.
DEFINE_FIELD_RTTI_ABSTRACT_CLASS
ProceduralField< Data_T > class_type
Data_T typedIntMetadata(const std::string &name, const Data_T &defaultVal) const
Calls either sampleIntMetadata() if the ProceduralField is scalar (half, float, or double),...
static const char * staticClassType()
static DEFINE_FIELD_RTTI_ABSTRACT_CLASS const char * staticClassName()
ProceduralFieldLookup< Data_T > LinearInterp
virtual ~ProceduralField()
Destructor.
static TemplatedFieldType< ProceduralField< Data_T > > ms_classType
ProceduralFieldLookup< Data_T > CubicInterp
virtual Data_T lsSample(const V3d &lsP) const =0
virtual FIELD3D_CLASSNAME_CLASSTYPE_IMPLEMENTATION Data_T value(int i, int j, int k) const =0
Transforms the point from voxel space to subclass's space and calls the appropriate sample function.
Data_T typedFloatMetadata(const std::string &name, const Data_T &defaultVal) const
Calls either sampleFloatMetadata() if the ProceduralField is scalar (half, float, or double),...
boost::intrusive_ptr< ProceduralField > Ptr
#define FIELD3D_NAMESPACE_HEADER_CLOSE
Used to return a string for the name of a templated field.