[ VIGRA Homepage | Function Index | Class Index | Namespaces | File List | Main Page ]
![]() |
NeighborCode Class Reference | ![]() |
Encapsulation of direction management for 4-neighborhood. More...
#include <vigra/pixelneighborhood.hxx>
Public Types | |
enum | Direction { Error = -1, East = 0, North, West, South, DirectionCount, CausalFirst = North, CausalLast = West, AntiCausalFirst = South, AntiCausalLast = East } |
Static Public Member Functions | |
static Diff2D const & | bottom () |
static Direction | code (Diff2D const &diff) |
static Diff2D const & | diff (Direction code) |
static Diff2D const & | diff (int code) |
static int | dX (Direction code) |
static int | dX (int code) |
static int | dY (Direction code) |
static int | dY (int code) |
static Diff2D const & | east () |
static bool | isDiagonal (Direction) |
static Diff2D const & | left () |
static unsigned int | nearBorderDirectionCount (AtImageBorder b) |
static Direction | nearBorderDirections (AtImageBorder b, int index) |
static Diff2D const & | north () |
static Diff2D const & | relativeDiff (Direction fromCode, Direction toCode) |
static Diff2D const & | relativeDiff (int fromCode, int toCode) |
static Diff2D const & | right () |
static Diff2D const & | south () |
static Diff2D const & | top () |
static Diff2D const & | west () |
Encapsulation of direction management for 4-neighborhood.
This helper class allows the transformation between Freeman chain codes (East = 0, North = 1 etc.) and the corresponding Diff2D instances and back.
You can either use the chain codes by explicit qualification:
or you can fix 4-neighborhood by importing the entire namespace in your function:
If you want to pass 4-neighborhood codes as a template parameter, use the class FourNeighborhood::NeighborCode.
#include <vigra/pixelneighborhood.hxx>
Namespace: vigra::FourNeighborhood
|
static |
The number of valid neighbors if the current center is at the image border.
|
static |
The valid direction codes when the center is at the image border. index must be in the range 0...nearBorderDirectionCount(b)-1
.
Transform direction code into corresponding Diff2D offset. (note: there is no bounds checking on the code you pass.)
|
static |
Equivalent to diff(static_cast<Direction>(code))
. (note: there is no bounds checking on the code you pass.)
Get the relative offset from one neighbor to the other. For example, relativeDiff(East, West) == Diff2D(-2,0)
. (note: there is no bounds checking on the code you pass.)
|
static |
Equivalent to relativeDiff(static_cast<Direction>(fromCode), static_cast<Direction>(toCode)). (note: there is no bounds checking on the code you pass.)
|
static |
X-component of diff()
|
static |
Y-component of diff()
Transform Diff2D offset into corresponding direction code. The code Direction::Error
will be returned if diff
is not in the 4-neighborhood.
|
static |
Check whether a code refers to a diagonal direction. Useful if you want to abstract the differences between 4- and 8-neighborhood. Always false
for 4-neighborhood.
|
static |
Offset to the right neighbor
|
static |
Offset to the top neighbor
|
static |
Offset to the left neighbor
|
static |
Offset to the bottom neighbor
|
static |
Offset to the east neighbor
|
static |
Offset to the north neighbor
|
static |
Offset to the west neighbor
|
static |
Offset to the south neighbor
© Ullrich Köthe (ullrich.koethe@iwr.uni-heidelberg.de) |