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> 119 template <
class Data_T>
127 typedef boost::intrusive_ptr<ProceduralField>
Ptr;
139 return "ProceduralField";
166 virtual Data_T
value(
int i,
int j,
int k)
const = 0;
174 const Data_T& defaultVal)
const;
179 const Data_T& defaultVal)
const;
217 const half& defaultVal)
const 227 const float& defaultVal)
const 237 const double& defaultVal)
const 247 const V3h& defaultVal)
const 249 return V3h(
metadata().vecIntMetadata(name, defaultVal));
257 const V3f& defaultVal)
const 259 return V3f(
metadata().vecIntMetadata(name, defaultVal));
267 const V3d& defaultVal)
const 269 return V3d(
metadata().vecIntMetadata(name, defaultVal));
277 const half& defaultVal)
const 287 const float& defaultVal)
const 297 const double& defaultVal)
const 307 const V3h& defaultVal)
const 309 return V3h(
metadata().vecFloatMetadata(name, defaultVal));
317 const V3f& defaultVal)
const 319 return V3f(
metadata().vecFloatMetadata(name, defaultVal));
327 const V3d& defaultVal)
const 329 return V3d(
metadata().vecFloatMetadata(name, defaultVal));
338 #endif // Include guard #define FIELD3D_NAMESPACE_HEADER_CLOSE
static TemplatedFieldType< ProceduralField< Data_T > > ms_classType
FieldMetadata< FieldBase > & metadata()
accessor to the m_metadata class
Data_T typedIntMetadata(const std::string &name, const Data_T &defaultVal) const
Calls either sampleIntMetadata() if the ProceduralField is scalar (half, float, or double)...
ProceduralFieldLookup< Data_T > LinearInterp
FIELD3D_CLASSTYPE_TEMPL_INSTANTIATION(ProceduralField)
ProceduralField< double > ProceduralFieldd
virtual ~ProceduralField()
Destructor.
ProceduralField< V3f > ProceduralField3f
ProceduralField< float > ProceduralFieldf
boost::intrusive_ptr< ProceduralField > Ptr
ProceduralField< half > ProceduralFieldh
static DEFINE_FIELD_RTTI_ABSTRACT_CLASS const char * staticClassName()
FIELD3D_NAMESPACE_OPEN typedef ::half half
ProceduralFieldLookup< Data_T > CubicInterp
virtual Data_T lsSample(const V3d &lsP) const =0
virtual 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...
ProceduralField< Data_T > class_type
static const char * classType()
virtual std::string className() const
Returns the class name of the object. Used by the class pool and when writing the data to disk...
ProceduralField< V3d > ProceduralField3d
ProceduralField< V3h > ProceduralField3h
Used to return a string for the name of a templated field.
Contains Field, WritableField and ResizableField classes.
DEFINE_FIELD_RTTI_ABSTRACT_CLASS
std::string name
Optional name of the field.
Data_T typedFloatMetadata(const std::string &name, const Data_T &defaultVal) const
Calls either sampleFloatMetadata() if the ProceduralField is scalar (half, float, or double)...