[ VIGRA Homepage | Function Index | Class Index | Namespaces | File List | Main Page ]
![]() |
ImageIteratorBase [Image Iterators] |
![]() |
Base class for 2D random access iterators. More...
#include <vigra/imageiterator.hxx>
Public Types | |
typedef ColumnIteratorSelector::res | column_iterator |
typedef Diff2D | difference_type |
typedef REFERENCE | index_reference |
typedef image_traverser_tag | iterator_category |
typedef detail::DirectionSelector < StridedOrUnstrided > ::template type< pointer > | MoveX |
typedef detail::DirectionSelector < StridedArrayTag >::template type< int > | MoveY |
typedef PIXELTYPE | PixelType |
typedef POINTER | pointer |
typedef REFERENCE | reference |
typedef RowIteratorSelector::res | row_iterator |
typedef PIXELTYPE | value_type |
Public Member Functions | |
Comparison of Iterators | |
bool | operator!= (ImageIteratorBase const &rhs) const |
difference_type | operator- (ImageIteratorBase const &rhs) const |
bool | operator== (ImageIteratorBase const &rhs) const |
Access the Pixels | |
index_reference | operator() (int dx, int dy) const |
reference | operator* () const |
pointer | operator-> () const |
pointer | operator[] (int dy) const |
index_reference | operator[] (Diff2D const &d) const |
Random navigation | |
IMAGEITERATOR | operator+ (difference_type const &s) const |
IMAGEITERATOR & | operator+= (difference_type const &s) |
IMAGEITERATOR | operator- (difference_type const &s) const |
IMAGEITERATOR & | operator-= (difference_type const &s) |
Public Attributes | |
Specify coordinate to operate on | |
MoveX | x |
MoveY | y |
Protected Member Functions | |
ImageIteratorBase () | |
ImageIteratorBase (ImageIteratorBase const &rhs) | |
ImageIteratorBase (pointer base, int xstride, int ystride) | |
ImageIteratorBase (pointer base, int ystride) | |
ImageIteratorBase & | operator= (ImageIteratorBase const &rhs) |
This class contains the navigational part of the iterator. It is usually not constructed directly, but via some derived class such as ImageIterator or StridedImageIterator.
#include <vigra/imageiterator.hxx>
Namespace: vigra
The usage examples assume that you constructed two iterators like this:
vigra::ImageIterator<SomePixelType> iterator(base, width); vigra::ImageIterator<SomePixelType> iterator1(base, width);
See the paper: U. Koethe: Reusable Algorithms in Image Processing for a discussion of the concepts behind ImageIterators.
typedef ColumnIteratorSelector::res column_iterator |
The associated column iterator.
typedef Diff2D difference_type |
the iterator's difference type (argument type of iter[diff]
)
Reimplemented in ImageIterator, ConstImageIterator, StridedImageIterator, and ConstStridedImageIterator.
typedef REFERENCE index_reference |
the iterator's index reference type (return type of iter[diff]
)
typedef image_traverser_tag iterator_category |
the iterator tag (image traverser)
Let operations act in X direction
typedef detail::DirectionSelector<StridedArrayTag>::template type<int> MoveY |
Let operations act in Y direction
typedef PIXELTYPE PixelType |
deprecated, use value_type
instead.
typedef POINTER pointer |
the iterator's pointer type (return type of iter.operator->()
)
Reimplemented in ImageIterator, ConstImageIterator, StridedImageIterator, and ConstStridedImageIterator.
typedef REFERENCE reference |
the iterator's reference type (return type of *iter
)
typedef RowIteratorSelector::res row_iterator |
The associated row iterator.
typedef PIXELTYPE value_type |
The underlying image's pixel type.
ImageIteratorBase | ( | pointer | base, | |
int | ystride | |||
) | [protected] |
Construct from raw memory with a vertical stride of ystride
. ystride
must equal the physical image width (row length), even if the iterator will only be used for a sub image. This constructor must only be called for unstrided iterators (StridedOrUnstrided == UnstridedArrayTag
)
ImageIteratorBase | ( | pointer | base, | |
int | xstride, | |||
int | ystride | |||
) | [protected] |
Construct from raw memory with a horizontal stride of xstride
and a vertical stride of ystride
. This constructor may be used for iterators that shall skip pixels. Thus, it must only be called for strided iterators (StridedOrUnstrided == StridedArrayTag
)
ImageIteratorBase | ( | ImageIteratorBase< IMAGEITERATOR, PIXELTYPE, REFERENCE, POINTER, StridedOrUnstrided > const & | rhs | ) | [protected] |
Copy constructor
ImageIteratorBase | ( | ) | [protected] |
Default constructor
bool operator!= | ( | ImageIteratorBase< IMAGEITERATOR, PIXELTYPE, REFERENCE, POINTER, StridedOrUnstrided > const & | rhs | ) | const |
usage: iterator != iterator1
index_reference operator() | ( | int | dx, | |
int | dy | |||
) | const |
Access pixel at offset (dx, dy) from current location.
usage: SomePixelType value = iterator(dx, dy)
reference operator* | ( | ) | const |
Access current pixel.
usage: SomePixelType value = *iterator
IMAGEITERATOR operator+ | ( | difference_type const & | s | ) | const |
Add a distance
IMAGEITERATOR& operator+= | ( | difference_type const & | s | ) |
Add offset via Diff2D
IMAGEITERATOR operator- | ( | difference_type const & | s | ) | const |
Subtract a distance
difference_type operator- | ( | ImageIteratorBase< IMAGEITERATOR, PIXELTYPE, REFERENCE, POINTER, StridedOrUnstrided > const & | rhs | ) | const |
usage: Diff2D dist = iterator - iterator1
IMAGEITERATOR& operator-= | ( | difference_type const & | s | ) |
Subtract offset via Diff2D
pointer operator-> | ( | ) | const |
Call member of current pixel.
usage: iterator->pixelMemberFunction()
ImageIteratorBase& operator= | ( | ImageIteratorBase< IMAGEITERATOR, PIXELTYPE, REFERENCE, POINTER, StridedOrUnstrided > const & | rhs | ) | [protected] |
Copy assignment
bool operator== | ( | ImageIteratorBase< IMAGEITERATOR, PIXELTYPE, REFERENCE, POINTER, StridedOrUnstrided > const & | rhs | ) | const |
usage: iterator == iterator1
pointer operator[] | ( | int | dy | ) | const |
Read pixel with offset [dy][dx] from current pixel. Note that the 'x' index is the trailing index.
usage: SomePixelType value = iterator[dy][dx]
index_reference operator[] | ( | Diff2D const & | d | ) | const |
Access pixel at offset from current location.
usage: SomePixelType value = iterator[Diff2D(1,1)]
Refer to iterator's x coordinate. Usage examples:
++iterator.x; // move one step to the right --iterator.x; // move one step to the left iterator.x += dx; // move dx steps to the right iterator.x -= dx; // move dx steps to the left bool notAtEndOfRow = iterator.x < lowerRight.x; // compare x coordinates of two iterators int width = lowerRight.x - upperLeft.x; // calculate difference of x coordinates // between two iterators
Refer to iterator's y coordinate. Usage examples:
++iterator.y; // move one step down --iterator.y; // move one step up iterator.y += dy; // move dy steps down iterator.y -= dy; // move dy steps up bool notAtEndOfColumn = iterator.y < lowerRight.y; // compare y coordinates of two iterators int height = lowerRight.y - upperLeft.y; // calculate difference of y coordinates // between two iterators
© Ullrich Köthe (ullrich.koethe@iwr.uni-heidelberg.de) |
html generated using doxygen and Python
|