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

| NeighborhoodCirculator Class Template Reference |
--- | --- | ---

Circulator that walks around a given location in a given image. More...

`#include "vigra/pixelneighborhood.hxx"`

Inheritance diagram for NeighborhoodCirculator:

## Public Types

typedef IMAGEITERATOR | base_type
typedef NEIGHBORCODE | NeighborCode
typedef IMAGEITERATOR::value_type | value_type
typedef NEIGHBORCODE::Direction | Direction
typedef IMAGEITERATOR::reference | reference
typedef IMAGEITERATOR::index_reference | index_reference
typedef IMAGEITERATOR::pointer | pointer
typedef NEIGHBOROFFSETCIRCULATOR::difference_type | difference_type
typedef NEIGHBOROFFSETCIRCULATOR::iterator_category | iterator_category

## Public Methods

| NeighborhoodCirculator (IMAGEITERATOR const &center=IMAGEITERATOR(), Direction d=NEIGHBOROFFSETCIRCULATOR::East)
NeighborhoodCirculator & | operator++ ()
NeighborhoodCirculator | operator++ (int)
NeighborhoodCirculator & | operator-- ()
NeighborhoodCirculator | operator-- (int)
NeighborhoodCirculator & | operator+= (difference_type d)
NeighborhoodCirculator & | operator-= (difference_type d)
NeighborhoodCirculator | operator+ (difference_type d) const
NeighborhoodCirculator | operator- (difference_type d) const
NeighborhoodCirculator & | turnRight ()
NeighborhoodCirculator & | turnLeft ()
NeighborhoodCirculator & | turnRound ()
NeighborhoodCirculator & | turnTo (Direction d)
NeighborhoodCirculator & | moveCenterToNeighbor ()
NeighborhoodCirculator & | swapCenterNeighbor ()
bool | operator== (NeighborhoodCirculator const &rhs) const
bool | operator!= (NeighborhoodCirculator const &rhs) const
difference_type | operator- (NeighborhoodCirculator const &rhs) const
reference | operator * () const
index_reference | operator[] (difference_type d) const
pointer | operator-> () const
base_type const & | base () const
base_type | center () const
Direction | direction () const
unsigned int | directionBit () const
Diff2D const & | diff () const
bool | isDiagonal () const

## Detailed Description

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

Circulator that walks around a given location in a given image.

The template parameters define the kind of neighborhood used and the underlying image. The access functions return the value of the current neighbor pixel. Use `center()` to access the center pixel of the neighborhood. The center can be changed by calling `moveCenterToNeighbor()` or `swapCenterNeighbor()`. Note that this circulator cannot when the center is at the image border. You must then use vigra::RestrictedNeighborhoodCirculator

Usage:

#include "vigra/pixelneighborhood.hxx"
Namespace: vigra

        BImage::traverser upperleft(...), lowerright(...);

        int width  = lowerright.x - upperleft.x;
        int height = lowerright.y - upperleft.y;

        ++upperleft.y; // avoide image border
        for(int y=1; y<height-1; ++y, ++upperleft.y)
        {
            BImage::traverser ix = upperleft + Diff2D(1,0);
            for(int x=1; x<width-1; ++x, ++ix.x)
            {
                // analyse all neighbors of a pixel (use FourNeighborCode
                // instead of EightNeighborCode for 4-neighborhood):
                NeighborhoodCirculator<BImage::traverser, EightNeighborCode>
                               circulator(ix),
                               end(circulator);
                do
                {
                    analysisFunc(*circulator, ...); // do sth. with current neighbor
                }
                while(++circulator != end); // compare with start/end circulator
            }
        }

## Member Typedef Documentation

typedef IMAGEITERATOR base_type

| type of the underlying image iterator Reimplemented in RestrictedNeighborhoodCirculator.

typedef NEIGHBOROFFSETCIRCULATOR::difference_type difference_type

| the circulator's difference type (argument type of `circ[diff]`) Reimplemented in RestrictedNeighborhoodCirculator.

typedef NEIGHBORCODE::Direction Direction

| type of the direction code Reimplemented in RestrictedNeighborhoodCirculator.

typedef IMAGEITERATOR::index_reference index_reference

| the circulator's index reference type (return type of `circ[n]`) Reimplemented in RestrictedNeighborhoodCirculator.

typedef NEIGHBOROFFSETCIRCULATOR::iterator_category iterator_category

| the circulator tag (random_access_circulator_tag) Reimplemented in RestrictedNeighborhoodCirculator.

typedef NEIGHBORCODE NeighborCode

| type of the used neighbor code Reimplemented in RestrictedNeighborhoodCirculator.

typedef IMAGEITERATOR::pointer pointer

| the circulator's pointer type (return type of `operator->`) Reimplemented in RestrictedNeighborhoodCirculator.

typedef IMAGEITERATOR::reference reference

| the circulator's reference type (return type of `*circ`) Reimplemented in RestrictedNeighborhoodCirculator.

typedef IMAGEITERATOR::value_type value_type

| the circulator's value type Reimplemented in RestrictedNeighborhoodCirculator.

## Constructor & Destructor Documentation

NeighborhoodCirculator | ( | IMAGEITERATOR const & | center = IMAGEITERATOR(),
|  | Direction | d = NEIGHBOROFFSETCIRCULATOR::East
| ) | `[inline]`

| Construct circulator with given `center` pixel, pointing to the neighbor at the given direction `d`.

## Member Function Documentation

base_type const& base | ( |  | ) | const`[inline]`

| Get the base iterator for the current neighbor. Reimplemented in RestrictedNeighborhoodCirculator.

base_type center | ( |  | ) | const`[inline]`

| Get the base iterator for the center of the circulator. Reimplemented in RestrictedNeighborhoodCirculator.

Diff2D const& diff | ( |  | ) | const`[inline]`

| Get the difference vector (Diff2D) from the center to the current neighbor. Reimplemented in RestrictedNeighborhoodCirculator.

Direction direction | ( |  | ) | const`[inline]`

| Get the current direction. Reimplemented in RestrictedNeighborhoodCirculator.

unsigned int directionBit | ( |  | ) | const`[inline]`

| Get the current direction bit. Reimplemented in RestrictedNeighborhoodCirculator.

bool isDiagonal | ( |  | ) | const`[inline]`

| Is the current neighbor a diagonal neighbor? Reimplemented in RestrictedNeighborhoodCirculator.

NeighborhoodCirculator& moveCenterToNeighbor | ( |  | ) | `[inline]`

| Move the center in the current direction. The current neighbor becomes the new center, the direction does not change.

reference operator * | ( |  | ) | const`[inline]`

| dereference Reimplemented in RestrictedNeighborhoodCirculator.

bool operator!= | ( | NeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE > const & | rhs | ) | const`[inline]`

| inequality

NeighborhoodCirculator operator+ | ( | difference_type | d | ) | const`[inline]`

| addition Reimplemented in RestrictedNeighborhoodCirculator.

NeighborhoodCirculator operator++ | ( | int |  | ) | `[inline]`

| pre-decrement Reimplemented in RestrictedNeighborhoodCirculator.

NeighborhoodCirculator& operator++ | ( |  | ) | `[inline]`

| pre-increment Reimplemented in RestrictedNeighborhoodCirculator.

NeighborhoodCirculator& operator+= | ( | difference_type | d | ) | `[inline]`

| add-assignment Reimplemented in RestrictedNeighborhoodCirculator.

difference_type operator- | ( | NeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE > const & | rhs | ) | const`[inline]`

| subtraction

NeighborhoodCirculator operator- | ( | difference_type | d | ) | const`[inline]`

| subtraction Reimplemented in RestrictedNeighborhoodCirculator.

NeighborhoodCirculator operator-- | ( | int |  | ) | `[inline]`

| post-decrement Reimplemented in RestrictedNeighborhoodCirculator.

NeighborhoodCirculator& operator-- | ( |  | ) | `[inline]`

| post-increment Reimplemented in RestrictedNeighborhoodCirculator.

NeighborhoodCirculator& operator-= | ( | difference_type | d | ) | `[inline]`

| subtract-assignment Reimplemented in RestrictedNeighborhoodCirculator.

pointer operator-> | ( |  | ) | const`[inline]`

| member access Reimplemented in RestrictedNeighborhoodCirculator.

bool operator== | ( | NeighborhoodCirculator< IMAGEITERATOR, NEIGHBORCODE > const & | rhs | ) | const`[inline]`

| equality

index_reference operator[] | ( | difference_type | d | ) | const`[inline]`

| index

NeighborhoodCirculator& swapCenterNeighbor | ( |  | ) | `[inline]`

| Exchange the center with the current neighbor. Equivalent to `circ.moveCenterToNeighbor().turnRound()` (but shorter and more efficient).

NeighborhoodCirculator& turnLeft | ( |  | ) | `[inline]`

| Move to the direction that is 'left' relative to the current direction. This is equivalent to `four_circulator++` and `eight_circulator += 2` respectively.

NeighborhoodCirculator& turnRight | ( |  | ) | `[inline]`

| Move to the direction that is 'right' relative to the current direction. This is equivalent to `four_circulator--` and `eight_circulator -= 2` respectively.

NeighborhoodCirculator& turnRound | ( |  | ) | `[inline]`

| Move to the opposite direction of the current direction. This is equivalent to `four_circulator += 2` and `eight_circulator += 4` respectively.

NeighborhoodCirculator& turnTo | ( | Direction | d | ) | `[inline]`

| Move to the given direction.

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

- vigra/pixelneighborhood.hxx

© Ullrich Köthe (koethe@informatik.uni-hamburg.de) Cognitive Systems Group, University of Hamburg, Germany | html generated using doxygen and Python VIGRA 1.4.0 (21 Dec 2005)