Main Page   Groups   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Concepts

itk::Index< VIndexDimension > Class Template Reference
[Image Access ObjectsImage Representation Objects]

#include <itkIndex.h>

List of all members.


Detailed Description

template<unsigned int VIndexDimension = 2>
class itk::Index< VIndexDimension >

Represent a n-dimensional index in a n-dimensional image.

Index is a templated class to represent a multi-dimensional index, i.e. (i,j,k,...). Index is templated over the dimension of the index. ITK assumes the first element of an index is the fastest moving index.

For efficiency sake, Index does not define a default constructor, a copy constructor, or an operator=. We rely on the compiler to provide efficient bitwise copies.

Index is an "aggregate" class. Its data is public (m_Index) allowing for fast and convenient instantiations/assignments.

The following syntax for assigning an index is allowed/suggested:

Index<3> index = {{5, 2, 7}};

The double braces {{ and }} are needed to prevent a compiler warning about a partly bracketed initializer.

Remarks:
Should there be an itkBoundedIndex to handle bounds checking? Or should there be an API to perform bounded increments in the iterator.
Examples:

Common/itkImageSliceIteratorTest.cxx.

Definition at line 67 of file itkIndex.h.

Public Types

typedef Index< VIndexDimension > IndexType
typedef long IndexValueType
typedef Functor::IndexLexicographicCompare<
VIndexDimension > 
LexicographicCompare
typedef Offset< VIndexDimension > OffsetType
typedef OffsetType::OffsetValueType OffsetValueType
typedef Index Self
typedef Size< VIndexDimension > SizeType

Public Member Functions

void Fill (IndexValueType value)
IndexValueType GetElement (unsigned long element)
const IndexValueTypeGetIndex () const
IndexValueType operator[] (unsigned int dim) const
IndexValueTypeoperator[] (unsigned int dim)
void SetElement (unsigned long element, IndexValueType val)
void SetIndex (const IndexValueType val[VIndexDimension])
template<class TCoordRep>
void CopyWithCast (const FixedArray< TCoordRep, VIndexDimension > &point)
template<class TCoordRep>
void CopyWithRound (const FixedArray< TCoordRep, VIndexDimension > &point)
const Self operator * (const SizeType &vec) const
bool operator!= (const Self &vec) const
const Self operator+ (const OffsetType &offset) const
const Self operator+ (const SizeType &size) const
const Selfoperator+= (const OffsetType &offset)
const Selfoperator+= (const SizeType &size)
const OffsetType operator- (const Self &vec) const
const Self operator- (const OffsetType &off) const
const Self operator- (const SizeType &size) const
const Selfoperator-= (const OffsetType &offset)
const Selfoperator-= (const SizeType &size)
bool operator== (const Self &vec) const

Static Public Member Functions

static Self GetBasisIndex (unsigned int dim)
static unsigned int GetIndexDimension ()

Public Attributes

IndexValueType m_Index [VIndexDimension]


Member Typedef Documentation

template<unsigned int VIndexDimension = 2>
typedef Index<VIndexDimension> itk::Index< VIndexDimension >::IndexType

Compatible Index and value typedef

Definition at line 73 of file itkIndex.h.

template<unsigned int VIndexDimension = 2>
typedef long itk::Index< VIndexDimension >::IndexValueType

Definition at line 74 of file itkIndex.h.

template<unsigned int VIndexDimension = 2>
typedef Functor::IndexLexicographicCompare<VIndexDimension> itk::Index< VIndexDimension >::LexicographicCompare

Lexicographic ordering functor type.

Definition at line 87 of file itkIndex.h.

template<unsigned int VIndexDimension = 2>
typedef Offset<VIndexDimension> itk::Index< VIndexDimension >::OffsetType

Compatible Offset and Offset value typedef.

Definition at line 83 of file itkIndex.h.

template<unsigned int VIndexDimension = 2>
typedef OffsetType::OffsetValueType itk::Index< VIndexDimension >::OffsetValueType

Definition at line 84 of file itkIndex.h.

template<unsigned int VIndexDimension = 2>
typedef Index itk::Index< VIndexDimension >::Self

Standard class typedefs.

Definition at line 70 of file itkIndex.h.

template<unsigned int VIndexDimension = 2>
typedef Size<VIndexDimension> itk::Index< VIndexDimension >::SizeType

Compatible Size typedef.

Definition at line 80 of file itkIndex.h.


Member Function Documentation

template<unsigned int VIndexDimension = 2>
template<class TCoordRep>
void itk::Index< VIndexDimension >::CopyWithCast ( const FixedArray< TCoordRep, VIndexDimension > &  point  )  [inline]

Copy values from a FixedArray by casting each one of the components

Definition at line 307 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

template<unsigned int VIndexDimension = 2>
template<class TCoordRep>
void itk::Index< VIndexDimension >::CopyWithRound ( const FixedArray< TCoordRep, VIndexDimension > &  point  )  [inline]

Copy values from a FixedArray by rounding each one of the components

Definition at line 289 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

template<unsigned int VIndexDimension = 2>
void itk::Index< VIndexDimension >::Fill ( IndexValueType  value  )  [inline]

Set one value for the index in all dimensions. Useful for initializing an offset to zero.

Definition at line 265 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

Referenced by itk::ImageIORegionAdaptor< VDimension >::Convert().

template<unsigned int VIndexDimension>
Index< VIndexDimension > itk::Index< VIndexDimension >::GetBasisIndex ( unsigned int  dim  )  [static]

Return a basis vector of the form [0, ..., 0, 1, 0, ... 0] where the "1" is positioned in the location specified by the parameter "dim". Valid values of "dim" are 0, ..., VIndexDimension-1.

Definition at line 360 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

template<unsigned int VIndexDimension = 2>
IndexValueType itk::Index< VIndexDimension >::GetElement ( unsigned long  element  )  [inline]

Gets the value of one of the elements in the index. This method is mainly intended to facilitate the access to elements from Tcl and Python where C++ notation is not very convenient.

Warning:
No bound checking is performed
See also:
GetIndex()

SetElement()

Definition at line 255 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

template<unsigned int VIndexDimension = 2>
const IndexValueType* itk::Index< VIndexDimension >::GetIndex ( void   )  const [inline]

Get the index. This provides a read only reference to the index.

See also:
SetIndex()

Definition at line 231 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

template<unsigned int VIndexDimension = 2>
static unsigned int itk::Index< VIndexDimension >::GetIndexDimension (  )  [inline, static]

Get the dimension (size) of the index.

Definition at line 77 of file itkIndex.h.

template<unsigned int VIndexDimension = 2>
const Self itk::Index< VIndexDimension >::operator * ( const SizeType vec  )  const [inline]

Multiply an index by a size (elementwise product). This method models a random access Index.

Definition at line 187 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index, and itk::Size< VDimension >::m_Size.

template<unsigned int VIndexDimension = 2>
bool itk::Index< VIndexDimension >::operator!= ( const Self vec  )  const [inline]

Compare two indices.

Definition at line 209 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

template<unsigned int VIndexDimension = 2>
const Self itk::Index< VIndexDimension >::operator+ ( const OffsetType offset  )  const [inline]

Add an offset to an index.

Definition at line 133 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

template<unsigned int VIndexDimension = 2>
const Self itk::Index< VIndexDimension >::operator+ ( const SizeType size  )  const [inline]

Add a size to an index. This method models a random access Index.

Definition at line 91 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

template<unsigned int VIndexDimension = 2>
const Self& itk::Index< VIndexDimension >::operator+= ( const OffsetType offset  )  [inline]

Increment index by an offset. This method models a random access Index.

Definition at line 144 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

template<unsigned int VIndexDimension = 2>
const Self& itk::Index< VIndexDimension >::operator+= ( const SizeType size  )  [inline]

Increment index by a size. This method models a random access Index.

Definition at line 102 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

template<unsigned int VIndexDimension = 2>
const OffsetType itk::Index< VIndexDimension >::operator- ( const Self vec  )  const [inline]

Subtract two indices. This method models a random access Index.

Definition at line 175 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

template<unsigned int VIndexDimension = 2>
const Self itk::Index< VIndexDimension >::operator- ( const OffsetType off  )  const [inline]

Subtract an offset from an index.

Definition at line 164 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index, and itk::Offset< VOffsetDimension >::m_Offset.

template<unsigned int VIndexDimension = 2>
const Self itk::Index< VIndexDimension >::operator- ( const SizeType size  )  const [inline]

Subtract a size from an index. This method models a random access Index.

Definition at line 112 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

template<unsigned int VIndexDimension = 2>
const Self& itk::Index< VIndexDimension >::operator-= ( const OffsetType offset  )  [inline]

Decrement index by an offset. This method models a random access Index.

Definition at line 154 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

template<unsigned int VIndexDimension = 2>
const Self& itk::Index< VIndexDimension >::operator-= ( const SizeType size  )  [inline]

Decrement index by a size. This method models a random access Index.

Definition at line 123 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

template<unsigned int VIndexDimension = 2>
bool itk::Index< VIndexDimension >::operator== ( const Self vec  )  const [inline]

Compare two indices.

Definition at line 198 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

template<unsigned int VIndexDimension = 2>
IndexValueType itk::Index< VIndexDimension >::operator[] ( unsigned int  dim  )  const [inline]

Access an element of the index. Elements are numbered 0, ..., VIndexDimension-1. This version can only be an rvalue. No bounds checking is performed.

Definition at line 226 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

template<unsigned int VIndexDimension = 2>
IndexValueType& itk::Index< VIndexDimension >::operator[] ( unsigned int  dim  )  [inline]

Access an element of the index. Elements are numbered 0, ..., VIndexDimension-1. No bounds checking is performed.

Definition at line 220 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

template<unsigned int VIndexDimension = 2>
void itk::Index< VIndexDimension >::SetElement ( unsigned long  element,
IndexValueType  val 
) [inline]

Sets the value of one of the elements in the index. This method is mainly intended to facilitate the access to elements from Tcl and Python where C++ notation is not very convenient.

Warning:
No bound checking is performed
See also:
SetIndex()

GetElement()

Definition at line 246 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.

template<unsigned int VIndexDimension = 2>
void itk::Index< VIndexDimension >::SetIndex ( const IndexValueType  val[VIndexDimension]  )  [inline]

Set the index. Try to prototype this function so that val has to point to a block of memory that is the appropriate size.

See also:
GetIndex()

Definition at line 237 of file itkIndex.h.

References itk::Index< VIndexDimension >::m_Index.


Member Data Documentation

template<unsigned int VIndexDimension = 2>
IndexValueType itk::Index< VIndexDimension >::m_Index[VIndexDimension]

Index is an "aggregate" class. Its data is public (m_Index) allowing for fast and convenient instantiations/assignments.

The following syntax for assigning an index is allowed/suggested: Index<3> index = {5, 2, 7};

Definition at line 273 of file itkIndex.h.

Referenced by itk::Index< VIndexDimension >::CopyWithCast(), itk::Index< VIndexDimension >::CopyWithRound(), itk::Index< VIndexDimension >::Fill(), itk::Index< VIndexDimension >::GetBasisIndex(), itk::Index< VIndexDimension >::GetElement(), itk::Index< VIndexDimension >::GetIndex(), itk::Index< VIndexDimension >::operator *(), itk::Index< VIndexDimension >::operator!=(), itk::Functor::IndexLexicographicCompare< VIndexDimension >::operator()(), itk::Index< VIndexDimension >::operator+(), itk::Index< VIndexDimension >::operator+=(), itk::Index< VIndexDimension >::operator-(), itk::Index< VIndexDimension >::operator-=(), itk::Index< VIndexDimension >::operator==(), itk::Index< VIndexDimension >::operator[](), itk::Index< VIndexDimension >::SetElement(), and itk::Index< VIndexDimension >::SetIndex().


The documentation for this class was generated from the following file:
Generated at Mon Apr 14 19:11:09 2008 for ITK by doxygen 1.5.1 written by Dimitri van Heesch, © 1997-2000