Field3D
|
This subclass of Field stores data in a contiguous std::vector. More...
#include <DenseField.h>
Classes | |
class | const_iterator |
class | iterator |
Public Types | |
typedef ResizableField< Data_T > | base |
typedef DenseField< Data_T > | class_type |
typedef CubicGenericFieldInterp< DenseField< Data_T > > | CubicInterp |
typedef LinearGenericFieldInterp< DenseField< Data_T > > | LinearInterp |
typedef boost::intrusive_ptr< DenseField > | Ptr |
typedef std::vector< Ptr > | Vec |
![]() | |
typedef ResizableField< Data_T > | class_type |
typedef boost::intrusive_ptr< ResizableField > | Ptr |
![]() | |
typedef WritableField< Data_T > | class_type |
typedef boost::intrusive_ptr< WritableField > | Ptr |
![]() | |
typedef Field< Data_T > | class_type |
typedef boost::intrusive_ptr< Field > | Ptr |
typedef Data_T | value_type |
Allows us to reference the template class. | |
typedef std::vector< Ptr > | Vec |
This is a convenience typedef for the list that Field3DInputFile::readScalarLayers() and Field3DInputFile::readVectorLayers() will return its data in. | |
![]() | |
typedef FieldRes | class_type |
typedef boost::intrusive_ptr< FieldRes > | Ptr |
typedef std::vector< Ptr > | Vec |
![]() | |
typedef FieldBase | class_type |
typedef boost::intrusive_ptr< FieldBase > | Ptr |
![]() | |
typedef boost::intrusive_ptr< RefBase > | Ptr |
typedef boost::weak_ptr< RefBase > | WeakPtr |
Public Member Functions | |
Data_T & | fastLValue (int i, int j, int k) |
Write access to voxel. Notice that this is non-virtual. | |
const Data_T & | fastValue (int i, int j, int k) const |
Read access to voxel. Notice that this is non-virtual. | |
const FIELD3D_VEC3_T< size_t > & | internalMemSize () const |
Returns the internal memory size in each dimension. This is used for example in LinearInterpolator, where it optimizes random access to voxels. | |
Constructors & destructor | |
DenseField () | |
Constructs an empty buffer. | |
virtual void | clear (const Data_T &value) |
Clears all the voxels in the storage. | |
size_t | numGrains () const |
Number of 'grains' to use with threaded access. | |
bool | getGrainBounds (const size_t idx, Box3i &vsBounds) const |
Bounding box of the given 'grain'. | |
From Field | |
| |
virtual Data_T | value (int i, int j, int k) const |
Read access to a voxel. The coordinates are in integer voxel space . | |
virtual long long int | memSize () const |
Returns the memory usage (in bytes) | |
From WritableField | |
virtual Data_T & | lvalue (int i, int j, int k) |
Write access to a voxel. The coordinates are global coordinates. | |
Iterators | |
const_iterator | cbegin () const |
Const iterator to first element. "cbegin" matches the tr1 c++ standard. | |
const_iterator | cbegin (const Box3i &subset) const |
Const iterator to first element of specific subset. | |
const_iterator | cend () const |
Const iterator pointing one element past the last valid one. | |
const_iterator | cend (const Box3i &subset) const |
Const iterator pointing one element past the last valid one (for a subset) | |
iterator | begin () |
Iterator to first element. | |
iterator | begin (const Box3i &subset) |
Iterator to first element of specific subset. | |
iterator | end () |
Iterator pointing one element past the last valid one. | |
iterator | end (const Box3i &subset) |
Iterator pointing one element past the last valid one (for a subset) | |
![]() | |
void | copyFrom (typename Field< Data_T >::Ptr other) |
Copies the data from another Field, also resizes. | |
template<class Data_T2 > | |
void | copyFrom (typename Field< Data_T2 >::Ptr other) |
Copies the data from another Field of another template class, also resizes. | |
void | matchDefinition (FieldRes::Ptr fieldToMatch) |
Sets up this field so that resolution and mapping matches the other. | |
void | setSize (const Box3i &extents) |
Resizes the object. | |
void | setSize (const Box3i &extents, const Box3i &dataWindow) |
Resizes the object. | |
void | setSize (const V3i &size) |
Resizes the object. | |
void | setSize (const V3i &size, int padding) |
Resizes the object with padding. | |
![]() | |
iterator | begin () |
Iterator to first element. | |
iterator | begin (const Box3i &subset) |
Iterator to first element of specific subset. | |
iterator | end () |
Iterator pointing one element past the last valid one. | |
iterator | end (const Box3i &subset) |
Iterator pointing one element past the last valid one (for a subset) | |
![]() | |
const_iterator | cbegin () const |
Const iterator to first element. "cbegin" matches the tr1 c++ standard. | |
const_iterator | cbegin (const Box3i &subset) const |
Const iterator to first element of specific subset. | |
const_iterator | cend () const |
Const iterator pointing one element past the last valid one. | |
const_iterator | cend (const Box3i &subset) const |
Const iterator pointing one element past the last valid one (for a subset) | |
virtual std::string | dataTypeString () const |
virtual | ~Field () |
Dtor. | |
![]() | |
V3i const | dataResolution () const |
const Box3i & | dataWindow () const |
Returns the data window. Any coordinate inside this window is safe to pass to value() in the Field subclass. | |
const Box3i & | extents () const |
Returns the extents of the data. This signifies the relevant area that the data exists over. However, the data window (below) may be smaller than the extents, in which case it is only safe to call value() for those coordinate inside the data window. | |
FieldRes () | |
This constructor ensures that we have a valid mapping at all times. | |
FieldRes (const FieldRes &src) | |
Base class copy constructor. | |
bool | isInBounds (int i, int j, int k) const |
Returns true is the indicies are in bounds of the data window. | |
FieldMapping::Ptr | mapping () |
Returns a pointer to the mapping. | |
const FieldMapping::Ptr | mapping () const |
Returns a pointer to the mapping. | |
virtual void | mappingChanged () |
Tells the subclass that the mapping changed. | |
void | setMapping (FieldMapping::Ptr mapping) |
Sets the field's mapping. | |
virtual size_t | voxelCount () const |
Counts the number of voxels. For most fields, this is just the volume of the data window, but sparse data structures can override this to return a better value. | |
![]() | |
FieldBase () | |
Constructor. | |
FieldBase (const FieldBase &) | |
Copy Constructor. | |
virtual | ~FieldBase () |
Destructor. | |
virtual std::string | className () const =0 |
Returns the class name of the object. Used by the class pool and when writing the data to disk. | |
virtual std::string | classType () const =0 |
Returns the full class type string. | |
FieldMetadata & | metadata () |
accessor to the m_metadata class | |
const FieldMetadata & | metadata () const |
Read only access to the m_metadata class. | |
void | copyMetadata (const FieldBase &field) |
Copies the metadata from a second field. | |
![]() | |
void | ref () const |
Used by boost::intrusive_pointer. | |
size_t | refcnt () |
Used by boost::intrusive_pointer. | |
void | unref () const |
Used by boost::intrusive_pointer. | |
WeakPtr | weakPtr () const |
RefBase () | |
RefBase (const RefBase &) | |
Copy constructor. | |
RefBase & | operator= (const RefBase &) |
Assignment operator. | |
virtual | ~RefBase () |
Destructor. | |
virtual bool | checkRTTI (const char *typenameStr)=0 |
This function is only implemented by concrete classes and triggers the actual RTTI check through matchRTTI();. | |
bool | matchRTTI (const char *typenameStr) |
Performs a check to see if the given typename string matches this class' This needs to be implemented in -all- subclasses, even abstract ones. | |
![]() | |
virtual void | metadataHasChanged (const std::string &) |
Alerts the callback holder that the metadata has changed. | |
Static Public Member Functions | |
static DEFINE_FIELD_RTTI_CONCRETE_CLASS const char * | staticClassName () |
static const char * | staticClassType () |
![]() | |
static const char * | staticClassName () |
static const char * | staticClassType () |
![]() | |
static const char * | staticClassName () |
static const char * | staticClassType () |
![]() | |
static const char * | staticClassName () |
static const char * | staticClassType () |
![]() | |
static const char * | staticClassName () |
static const char * | staticClassType () |
![]() | |
static const char * | staticClassName () |
static const char * | staticClassType () |
![]() | |
static const char * | staticClassType () |
Protected Member Functions | |
virtual void | sizeChanged () |
Subclasses should re-implement this if they need to perform memory allocations, etc. every time the size of the storage changes. | |
Protected Attributes | |
std::vector< Data_T > | m_data |
Field storage. | |
FIELD3D_VEC3_T< size_t > | m_memSize |
Memory allocation size in each dimension. | |
size_t | m_memSizeXY |
X scanline * Y scanline size. | |
![]() | |
Box3i | m_dataWindow |
Defines the area where data is allocated. This should be treated as a closed (i.e. inclusive) interval. | |
Box3i | m_extents |
Defines the extents of the the storage. This may be larger or smaller than the data window, and in the case where it is larger, care must be taken not to access voxels outside the data window. This should be treated as a closed (i.e. inclusive) interval. | |
FieldMapping::Ptr | m_mapping |
Pointer to the field's mapping. | |
Private Member Functions | |
Data_T * | ptr (int i, int j, int k) |
Returns a pointer to a given element. Used by the iterators mainly. | |
const Data_T * | ptr (int i, int j, int k) const |
Returns a pointer to a given element. Used by the iterators mainly. | |
Static Private Attributes | |
static TemplatedFieldType< DenseField< Data_T > > | ms_classType |
From FieldBase | |
FIELD3D_CLASSNAME_CLASSTYPE_IMPLEMENTATION | |
virtual FieldBase::Ptr | clone () const |
Returns a pointer to a copy of the field, pure virtual so ensure derived classes properly implement it. | |
Additional Inherited Members | |
![]() | |
DEFINE_FIELD_RTTI_ABSTRACT_CLASS | |
![]() | |
DEFINE_FIELD_RTTI_ABSTRACT_CLASS | |
![]() | |
DEFINE_FIELD_RTTI_ABSTRACT_CLASS | |
![]() | |
DEFINE_FIELD_RTTI_ABSTRACT_CLASS | |
![]() | |
std::string | attribute |
Optional name of the attribute the field represents. | |
std::string | name |
Optional name of the field. | |
![]() | |
typedef WritableField< Data_T > | base |
![]() | |
typedef MatrixFieldMapping | default_mapping |
![]() | |
static TemplatedFieldType< ResizableField< Data_T > > | ms_classType |
This subclass of Field stores data in a contiguous std::vector.
Regarding threading granularity - DenseField considers each scanline (i.e. continuous X coords) to be one grain. Thus, numGrains is res.y * res.z.
Refer to using_fields for examples of how to use this in your code.
Definition at line 85 of file DenseField.h.
typedef boost::intrusive_ptr<DenseField> DenseField< Data_T >::Ptr |
Definition at line 92 of file DenseField.h.
typedef std::vector<Ptr> DenseField< Data_T >::Vec |
Definition at line 93 of file DenseField.h.
typedef LinearGenericFieldInterp<DenseField<Data_T> > DenseField< Data_T >::LinearInterp |
Definition at line 95 of file DenseField.h.
typedef CubicGenericFieldInterp<DenseField<Data_T> > DenseField< Data_T >::CubicInterp |
Definition at line 96 of file DenseField.h.
typedef ResizableField<Data_T> DenseField< Data_T >::base |
Definition at line 98 of file DenseField.h.
typedef DenseField<Data_T> DenseField< Data_T >::class_type |
Definition at line 132 of file DenseField.h.
DenseField< Data_T >::DenseField | ( | ) |
Constructs an empty buffer.
Definition at line 446 of file DenseField.h.
Referenced by DenseField< Data_T >::clone().
|
virtual |
Clears all the voxels in the storage.
Reimplemented from WritableField< Data_T >.
Definition at line 456 of file DenseField.h.
size_t DenseField< Data_T >::numGrains | ( | ) | const |
Number of 'grains' to use with threaded access.
Definition at line 464 of file DenseField.h.
References FIELD3D_MTX_T.
bool DenseField< Data_T >::getGrainBounds | ( | const size_t | idx, |
Box3i & | vsBounds ) const |
Bounding box of the given 'grain'.
Definition at line 475 of file DenseField.h.
References FIELD3D_MTX_T.
|
virtual |
Read access to a voxel. The coordinates are in integer voxel space .
Implements Field< Data_T >.
Definition at line 493 of file DenseField.h.
References FIELD3D_MTX_T.
|
virtual |
Returns the memory usage (in bytes)
Reimplemented from FieldRes.
Definition at line 501 of file DenseField.h.
References FIELD3D_MTX_T.
|
inlinestatic |
Definition at line 135 of file DenseField.h.
|
inlinestatic |
|
virtual |
Write access to a voxel. The coordinates are global coordinates.
Implements WritableField< Data_T >.
Definition at line 511 of file DenseField.h.
References FIELD3D_MTX_T.
const Data_T & DenseField< Data_T >::fastValue | ( | int | i, |
int | j, | ||
int | k ) const |
Read access to voxel. Notice that this is non-virtual.
Definition at line 519 of file DenseField.h.
References FIELD3D_MTX_T.
Data_T & DenseField< Data_T >::fastLValue | ( | int | i, |
int | j, | ||
int | k ) |
Write access to voxel. Notice that this is non-virtual.
Definition at line 538 of file DenseField.h.
References FIELD3D_MTX_T.
DenseField< Data_T >::const_iterator DenseField< Data_T >::cbegin | ( | ) | const |
Const iterator to first element. "cbegin" matches the tr1 c++ standard.
Definition at line 558 of file DenseField.h.
References FieldRes::dataResolution().
DenseField< Data_T >::const_iterator DenseField< Data_T >::cbegin | ( | const Box3i & | subset | ) | const |
Const iterator to first element of specific subset.
Definition at line 569 of file DenseField.h.
References FIELD3D_MTX_T.
DenseField< Data_T >::const_iterator DenseField< Data_T >::cend | ( | ) | const |
Const iterator pointing one element past the last valid one.
Definition at line 580 of file DenseField.h.
DenseField< Data_T >::const_iterator DenseField< Data_T >::cend | ( | const Box3i & | subset | ) | const |
Const iterator pointing one element past the last valid one (for a subset)
Definition at line 592 of file DenseField.h.
References FIELD3D_MTX_T.
DenseField< Data_T >::iterator DenseField< Data_T >::begin | ( | ) |
Iterator to first element.
Definition at line 602 of file DenseField.h.
References FieldRes::dataResolution().
DenseField< Data_T >::iterator DenseField< Data_T >::begin | ( | const Box3i & | subset | ) |
Iterator to first element of specific subset.
Definition at line 612 of file DenseField.h.
References FIELD3D_MTX_T.
DenseField< Data_T >::iterator DenseField< Data_T >::end | ( | ) |
Iterator pointing one element past the last valid one.
Definition at line 623 of file DenseField.h.
DenseField< Data_T >::iterator DenseField< Data_T >::end | ( | const Box3i & | subset | ) |
Iterator pointing one element past the last valid one (for a subset)
Definition at line 635 of file DenseField.h.
References FIELD3D_MTX_T.
|
inline |
Returns the internal memory size in each dimension. This is used for example in LinearInterpolator, where it optimizes random access to voxels.
Definition at line 196 of file DenseField.h.
References DenseField< Data_T >::m_memSize.
|
inlinevirtual |
Returns a pointer to a copy of the field, pure virtual so ensure derived classes properly implement it.
Implements FieldBase.
Definition at line 206 of file DenseField.h.
References DenseField< Data_T >::DenseField().
|
protectedvirtual |
Subclasses should re-implement this if they need to perform memory allocations, etc. every time the size of the storage changes.
Reimplemented from ResizableField< Data_T >.
Definition at line 644 of file DenseField.h.
|
inlineprivate |
Returns a pointer to a given element. Used by the iterators mainly.
Definition at line 678 of file DenseField.h.
References FIELD3D_MTX_T.
|
inlineprivate |
Returns a pointer to a given element. Used by the iterators mainly.
Definition at line 691 of file DenseField.h.
References FIELD3D_MTX_T.
DenseField< Data_T >::FIELD3D_CLASSNAME_CLASSTYPE_IMPLEMENTATION |
Definition at line 204 of file DenseField.h.
|
protected |
Memory allocation size in each dimension.
Definition at line 220 of file DenseField.h.
Referenced by DenseField< Data_T >::internalMemSize().
|
protected |
X scanline * Y scanline size.
Definition at line 222 of file DenseField.h.
|
protected |
Field storage.
Definition at line 224 of file DenseField.h.
|
staticprivate |
Definition at line 230 of file DenseField.h.