Field3D
SparseField< Data_T >::block_iterator Class Reference

#include <SparseField.h>

Public Types

typedef SparseField< Data_T > class_type
 Convenience typedef. More...
 

Public Member Functions

 block_iterator (const class_type &field, const Box3i &window, const V3i &currentPos)
 Constructor. More...
 
const Box3iblockBoundingBox ()
 Returns a reference to the bounding box representing the current block. More...
 
bool operator!= (const block_iterator &rhs) const
 Inequality check. More...
 
const block_iteratoroperator++ ()
 Increment iterator. More...
 
bool operator== (const block_iterator &rhs) const
 Equality check. More...
 

Public Attributes

int x
 Current block index. More...
 
int y
 
int z
 

Private Member Functions

void recomputeBlockBoundingBox ()
 

Private Attributes

Box3i m_currentBlockWindow
 Bounding box in voxel coordinates for the current block. More...
 
const class_typem_field
 Pointer to field we're traversing. More...
 
Box3i m_window
 Bounding box for block indices. More...
 

Detailed Description

template<class Data_T>
class SparseField< Data_T >::block_iterator

Note
This iterator type can not be dereferenced. It's only used to provide a bounding box and indices for each block.

Definition at line 1200 of file SparseField.h.

Member Typedef Documentation

template<class Data_T>
typedef SparseField<Data_T> SparseField< Data_T >::block_iterator::class_type

Convenience typedef.

Definition at line 1204 of file SparseField.h.

Constructor & Destructor Documentation

template<class Data_T>
SparseField< Data_T >::block_iterator::block_iterator ( const class_type field,
const Box3i window,
const V3i currentPos 
)
inline

Constructor.

Definition at line 1206 of file SparseField.h.

1208  : x(currentPos.x), y(currentPos.y), z(currentPos.z),
1209  m_window(window), m_field(field)
1210  {
1212  }
const class_type & m_field
Pointer to field we&#39;re traversing.
Definition: SparseField.h:1264
Box3i m_window
Bounding box for block indices.
Definition: SparseField.h:1262
int x
Current block index.
Definition: SparseField.h:1247

Member Function Documentation

template<class Data_T>
const block_iterator& SparseField< Data_T >::block_iterator::operator++ ( )
inline

Increment iterator.

Definition at line 1214 of file SparseField.h.

References SparseField< Data_T >::block_iterator::x.

1215  {
1216  if (x == m_window.max.x) {
1217  if (y == m_window.max.y) {
1218  x = m_window.min.x;
1219  y = m_window.min.y;
1220  ++z;
1221  } else {
1222  x = m_window.min.x;
1223  ++y;
1224  }
1225  } else {
1226  ++x;
1227  }
1229  return *this;
1230  }
Box3i m_window
Bounding box for block indices.
Definition: SparseField.h:1262
int x
Current block index.
Definition: SparseField.h:1247
template<class Data_T>
bool SparseField< Data_T >::block_iterator::operator== ( const block_iterator rhs) const
inline

Equality check.

Definition at line 1232 of file SparseField.h.

References SparseField< Data_T >::block_iterator::x, SparseField< Data_T >::block_iterator::y, and SparseField< Data_T >::block_iterator::z.

1233  {
1234  return x == rhs.x && y == rhs.y && z == rhs.z;
1235  }
int x
Current block index.
Definition: SparseField.h:1247
template<class Data_T>
bool SparseField< Data_T >::block_iterator::operator!= ( const block_iterator rhs) const
inline

Inequality check.

Definition at line 1237 of file SparseField.h.

References SparseField< Data_T >::block_iterator::x, SparseField< Data_T >::block_iterator::y, and SparseField< Data_T >::block_iterator::z.

1238  {
1239  return x != rhs.x || y != rhs.y || z != rhs.z;
1240  }
int x
Current block index.
Definition: SparseField.h:1247
template<class Data_T>
const Box3i& SparseField< Data_T >::block_iterator::blockBoundingBox ( )
inline

Returns a reference to the bounding box representing the current block.

Definition at line 1242 of file SparseField.h.

1243  {
1244  return m_currentBlockWindow;
1245  }
Box3i m_currentBlockWindow
Bounding box in voxel coordinates for the current block.
Definition: SparseField.h:1266
template<class Data_T>
void SparseField< Data_T >::block_iterator::recomputeBlockBoundingBox ( )
inlineprivate

Definition at line 1249 of file SparseField.h.

References FIELD3D_CLIP.

1250  {
1251  Box3i box;
1252  int blockSize = m_field.blockSize();
1253  box.min = V3i(x * blockSize, y * blockSize, z * blockSize);
1254  box.max = box.min + V3i(blockSize - 1, blockSize - 1, blockSize - 1);
1255  // Clamp the box
1256  box.min = FIELD3D_CLIP(box.min, m_field.dataWindow());
1257  box.max = FIELD3D_CLIP(box.max, m_field.dataWindow());
1258  // Set the member variable
1259  m_currentBlockWindow = box;
1260  }
const class_type & m_field
Pointer to field we&#39;re traversing.
Definition: SparseField.h:1264
Imath::Box3i Box3i
Definition: SpiMathLib.h:77
#define FIELD3D_CLIP
Definition: SpiMathLib.h:90
Imath::V3i V3i
Definition: SpiMathLib.h:71
Box3i m_currentBlockWindow
Bounding box in voxel coordinates for the current block.
Definition: SparseField.h:1266
int x
Current block index.
Definition: SparseField.h:1247
const Box3i & dataWindow() const
Returns the data window. Any coordinate inside this window is safe to pass to value() in the Field su...
Definition: Field.h:258
int blockSize() const
Returns the block size.
Definition: SparseField.h:1453

Member Data Documentation

template<class Data_T>
int SparseField< Data_T >::block_iterator::x
template<class Data_T>
int SparseField< Data_T >::block_iterator::y
template<class Data_T>
int SparseField< Data_T >::block_iterator::z
template<class Data_T>
Box3i SparseField< Data_T >::block_iterator::m_window
private

Bounding box for block indices.

Definition at line 1262 of file SparseField.h.

template<class Data_T>
const class_type& SparseField< Data_T >::block_iterator::m_field
private

Pointer to field we're traversing.

Definition at line 1264 of file SparseField.h.

template<class Data_T>
Box3i SparseField< Data_T >::block_iterator::m_currentBlockWindow
private

Bounding box in voxel coordinates for the current block.

Definition at line 1266 of file SparseField.h.


The documentation for this class was generated from the following file: