vigra - RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE > Class Template Reference

[ VIGRA Homepage | Function Index | Class Index | Namespaces | File List | Main Page ]

| RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE > Class Template Reference Image Iterator Adapters |

Circulator that walks around a given location in a given image, using a restricted neighborhood. More...

`#include <vigra/pixelneighborhood.hxx>`

Inheritance diagram for RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >:

## Public Types
typedef IMAGEITERATOR | base_type
typedef BaseType::difference_type | difference_type
typedef BaseType::Direction | Direction
typedef BaseType::index_reference | index_reference
typedef BaseType::iterator_category | iterator_category
typedef NEIGHBORCODE | NeighborCode
typedef BaseType::pointer | pointer
typedef BaseType::reference | reference
typedef BaseType::value_type | value_type

## Public Member Functions
base_type const & | base () const
base_type | center () const
NeighborCode::difference_type const & | diff () const
Direction | direction () const
unsigned int | directionBit () const
bool | isDiagonal () const
bool | operator!= (RestrictedNeighborhoodCirculator const &rhs) const
reference | operator* () const
RestrictedNeighborhoodCirculator | operator+ (difference_type d) const
RestrictedNeighborhoodCirculator & | operator++ ()
RestrictedNeighborhoodCirculator | operator++ (int)
RestrictedNeighborhoodCirculator & | operator+= (difference_type d)
RestrictedNeighborhoodCirculator | operator- (difference_type d) const
difference_type | operator- (RestrictedNeighborhoodCirculator const &rhs) const
RestrictedNeighborhoodCirculator & | operator-- ()
RestrictedNeighborhoodCirculator | operator-- (int)
RestrictedNeighborhoodCirculator & | operator-= (difference_type d)
pointer | operator-> () const
bool | operator== (RestrictedNeighborhoodCirculator const &rhs) const
| RestrictedNeighborhoodCirculator (IMAGEITERATOR const &center=IMAGEITERATOR(), AtImageBorder atBorder=NotAtBorder)

## Additional Inherited Members
Private Types inherited from NeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >
typedef IMAGEITERATOR | base_type
typedef NEIGHBOROFFSETCIRCULATOR::difference_type | difference_type
typedef NEIGHBORCODE::Direction | Direction
typedef reference | index_reference
typedef NEIGHBOROFFSETCIRCULATOR::iterator_category | iterator_category
typedef NEIGHBORCODE | NeighborCode
typedef IMAGEITERATOR::pointer | pointer
typedef IMAGEITERATOR::reference | reference
typedef IMAGEITERATOR::value_type | value_type
Private Member Functions inherited from NeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >
base_type const & | base () const
base_type | center () const
NEIGHBOROFFSETCIRCULATOR::value_type const & | diff () const
Direction | direction () const
unsigned int | directionBit () const
bool | isDiagonal () const
NeighborhoodCirculator & | moveCenterToNeighbor ()
| NeighborhoodCirculator (IMAGEITERATOR const &center=IMAGEITERATOR(), Direction d=NEIGHBOROFFSETCIRCULATOR::InitialDirection)
bool | operator!= (NeighborhoodCirculator const &rhs) const
reference | operator* () const
NeighborhoodCirculator | operator+ (difference_type d) const
NeighborhoodCirculator & | operator++ ()
NeighborhoodCirculator | operator++ (int)
NeighborhoodCirculator & | operator+= (difference_type d)
NeighborhoodCirculator | operator- (difference_type d) const
difference_type | operator- (NeighborhoodCirculator const &rhs) const
NeighborhoodCirculator & | operator-- ()
NeighborhoodCirculator | operator-- (int)
NeighborhoodCirculator & | operator-= (difference_type d)
pointer | operator-> () const
bool | operator== (NeighborhoodCirculator const &rhs) const
index_reference | operator[] (difference_type d) const
NeighborhoodCirculator & | swapCenterNeighbor ()
NeighborhoodCirculator & | turnLeft ()
NeighborhoodCirculator & | turnRight ()
NeighborhoodCirculator & | turnRound ()
NeighborhoodCirculator & | turnTo (Direction d)

## Detailed Description

### template<class IMAGEITERATOR, class NEIGHBORCODE>
class vigra::RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE >

Circulator that walks around a given location in a given image, using a restricted neighborhood.

This circulator behaves essentially like vigra::NeighborhoodCirculator, but can also be used near the image border, where some of the neighbor points would be outside the image und must not be accessed. The template parameters define the kind of neighborhood used (four or eight) and the underlying image, whereas the required neighborhood restriction is given by the last constructor argument. This below for typical usage.

The access functions return the value of the current neighbor pixel. Use `center()` to access the center pixel of the neighborhood.

Usage:

#include <vigra/pixelneighborhood.hxx>
Namespace: vigra

BImage::traverser upperleft(...), lowerright(...);
int width = lowerright.x - upperleft.x;
int height = lowerright.y - upperleft.y;
for(int y=0; y<height; ++y, ++upperleft.y)
{
BImage::traverser ix = upperleft;
for(int x=0; x<width; ++x, ++ix.x)
{
// use FourNeighborCode instead of EightNeighborCode for 4-neighborhood
RestrictedNeighborhoodCirculator<BImage::traverser, EightNeighborCode>
circulator(ix, isAtImageBorder(x, y, width, height)),
end(circulator);
do
{
... // do something with the circulator
}
while(++circulator != end); // out-of-range pixels will be automatically skipped
}
}

## Member Typedef Documentation

typedef IMAGEITERATOR base_type

type of the underlying image iterator

typedef NEIGHBORCODE NeighborCode

type of the used neighbor code

typedef BaseType::value_type value_type

the circulator's value type

typedef BaseType::Direction Direction

type of the direction code

typedef BaseType::reference reference

the circulator's reference type (return type of `*circ`)

typedef BaseType::index_reference index_reference

the circulator's index reference type (return type of `circ[n]`)

typedef BaseType::pointer pointer

the circulator's pointer type (return type of `operator->`)

typedef BaseType::difference_type difference_type

the circulator's difference type (argument type of `circ[diff]`)

typedef BaseType::iterator_category iterator_category

the circulator tag (random_access_circulator_tag)

## Constructor & Destructor Documentation

RestrictedNeighborhoodCirculator | ( | IMAGEITERATOR const & | center = `IMAGEITERATOR()`,
|  | AtImageBorder | atBorder = `NotAtBorder`
| ) |  |

Construct circulator with given `center` pixel, using the restricted neighborhood given by atBorder.

## Member Function Documentation

RestrictedNeighborhoodCirculator& operator++ | ( |  | ) |

pre-increment

RestrictedNeighborhoodCirculator operator++ | ( | int |  | ) |

post-increment

RestrictedNeighborhoodCirculator& operator-- | ( |  | ) |

pre-decrement

RestrictedNeighborhoodCirculator operator-- | ( | int |  | ) |

post-decrement

RestrictedNeighborhoodCirculator& operator+= | ( | difference_type | d | ) |

add-assignment

RestrictedNeighborhoodCirculator& operator-= | ( | difference_type | d | ) |

subtract-assignment

RestrictedNeighborhoodCirculator operator+ | ( | difference_type | d | ) | const

addition

RestrictedNeighborhoodCirculator operator- | ( | difference_type | d | ) | const

subtraction

bool operator== | ( | RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE > const & | rhs | ) | const

equality

bool operator!= | ( | RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE > const & | rhs | ) | const

inequality

difference_type operator- | ( | RestrictedNeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE > const & | rhs | ) | const

subtraction

reference operator* | ( |  | ) | const

dereference

pointer operator-> | ( |  | ) | const

member access

base_type const& base | ( |  | ) | const

Get the base iterator for the current neighbor.

base_type center | ( |  | ) | const

Get the base iterator for the center of the circulator.

Direction direction | ( |  | ) | const

Get the current direction.

unsigned int directionBit | ( |  | ) | const

Get the current direction bit.

NeighborCode::difference_type const& diff | ( |  | ) | const

Get the difference vector (Diff2D) from the center to the current neighbor.

bool isDiagonal | ( |  | ) | const

Is the current neighbor a diagonal neighbor?

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

- vigra/pixelneighborhood.hxx

© Ullrich Köthe (ullrich.koethe@iwr.uni-heidelberg.de) Heidelberg Collaboratory for Image Processing, University of Heidelberg, Germany | html generated using doxygen and Python vigra 1.10.0 (Mon Nov 18 2013)