Boost GIL


Public Types | Public Member Functions | Friends | List of all members
memory_based_2d_locator< StepIterator > Class Template Reference

Memory-based pixel locator. Models: PixelLocatorConcept,HasDynamicXStepTypeConcept,HasDynamicYStepTypeConcept,HasTransposedTypeConceptThe class takes a step iterator as a parameter. The step iterator provides navigation along the vertical axis while its base iterator provides horizontal navigation. More...

#include <locator.hpp>

Inheritance diagram for memory_based_2d_locator< StepIterator >:
pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator >

Public Types

typedef pixel_2d_locator_base
< memory_based_2d_locator
< StepIterator >, typename
iterator_adaptor_get_base
< StepIterator >::type,
StepIterator > 
parent_t
 
typedef
memory_based_2d_locator
< typename const_iterator_type
< StepIterator >::type > 
const_t
 
typedef parent_t::coord_t coord_t
 
typedef parent_t::x_coord_t x_coord_t
 
typedef parent_t::y_coord_t y_coord_t
 
typedef parent_t::x_iterator x_iterator
 
typedef parent_t::y_iterator y_iterator
 
typedef parent_t::difference_type difference_type
 
typedef parent_t::reference reference
 
typedef std::ptrdiff_t cached_location_t
 
- Public Types inherited from pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator >
typedef
iterator_adaptor_get_base
< StepIterator >::type 
x_iterator
 
typedef StepIterator y_iterator
 
typedef std::iterator_traits
< x_iterator >::value_type 
value_type
 
typedef std::iterator_traits
< x_iterator >::reference 
reference
 
typedef std::iterator_traits
< x_iterator >
::difference_type 
coord_t
 
typedef point2< coord_t > difference_type
 
typedef difference_type point_t
 
typedef point_t::template axis
< 0 >::coord_t 
x_coord_t
 
typedef point_t::template axis
< 1 >::coord_t 
y_coord_t
 
typedef difference_type cached_location_t
 

Public Member Functions

 memory_based_2d_locator (const StepIterator &yit)
 
template<typename SI >
 memory_based_2d_locator (const memory_based_2d_locator< SI > &loc, coord_t y_step)
 
template<typename SI >
 memory_based_2d_locator (const memory_based_2d_locator< SI > &loc, coord_t x_step, coord_t y_step, bool transpose=false)
 
 memory_based_2d_locator (x_iterator xit, std::ptrdiff_t row_bytes)
 
template<typename X >
 memory_based_2d_locator (const memory_based_2d_locator< X > &pl)
 
 memory_based_2d_locator (const memory_based_2d_locator &pl)
 
bool operator== (const this_t &p) const
 
x_iterator const & x () const
 
y_iterator const & y () const
 
x_iterator & x ()
 
y_iterator & y ()
 
x_iterator x_at (x_coord_t dx, y_coord_t dy) const
 
x_iterator x_at (const difference_type &d) const
 
this_t xy_at (x_coord_t dx, y_coord_t dy) const
 
this_t xy_at (const difference_type &d) const
 
reference operator() (x_coord_t dx, y_coord_t dy) const
 
reference operator[] (const difference_type &d) const
 
this_toperator+= (const difference_type &d)
 
this_toperator-= (const difference_type &d)
 
cached_location_t cache_location (const difference_type &d) const
 
cached_location_t cache_location (x_coord_t dx, y_coord_t dy) const
 
reference operator[] (const cached_location_t &loc) const
 
std::ptrdiff_t row_size () const
 
std::ptrdiff_t pixel_size () const
 
bool is_1d_traversable (x_coord_t width) const
 
std::ptrdiff_t y_distance_to (const this_t &p2, x_coord_t xDiff) const
 
- Public Member Functions inherited from pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator >
bool operator!= (const memory_based_2d_locator< StepIterator > &p) const
 
x_iterator x_at (x_coord_t dx, y_coord_t dy) const
 
x_iterator x_at (const difference_type &d) const
 
y_iterator y_at (x_coord_t dx, y_coord_t dy) const
 
y_iterator y_at (const difference_type &d) const
 
memory_based_2d_locator
< StepIterator > 
xy_at (x_coord_t dx, y_coord_t dy) const
 
memory_based_2d_locator
< StepIterator > 
xy_at (const difference_type &d) const
 
axis< D >::iterator & axis_iterator ()
 
axis< D >::iterator const & axis_iterator () const
 
axis< D >::iterator axis_iterator (const point_t &p) const
 
reference operator() (x_coord_t dx, y_coord_t dy) const
 
reference operator[] (const difference_type &d) const
 
reference operator* () const
 
memory_based_2d_locator
< StepIterator > & 
operator+= (const difference_type &d)
 
memory_based_2d_locator
< StepIterator > & 
operator-= (const difference_type &d)
 
memory_based_2d_locator
< StepIterator > 
operator+ (const difference_type &d) const
 
memory_based_2d_locator
< StepIterator > 
operator- (const difference_type &d) const
 
cached_location_t cache_location (const difference_type &d) const
 
cached_location_t cache_location (x_coord_t dx, y_coord_t dy) const
 

Friends

template<typename X >
class memory_based_2d_locator
 

Additional Inherited Members

- Static Public Attributes inherited from pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator >
static const std::size_t num_dimensions
 

Detailed Description

template<typename StepIterator>
class boost::gil::memory_based_2d_locator< StepIterator >

Memory-based pixel locator. Models: PixelLocatorConcept,HasDynamicXStepTypeConcept,HasDynamicYStepTypeConcept,HasTransposedTypeConcept

The class takes a step iterator as a parameter. The step iterator provides navigation along the vertical axis while its base iterator provides horizontal navigation.

Each instantiation is optimal in terms of size and efficiency. For example, xy locator over interleaved rgb image results in a step iterator consisting of one std::ptrdiff_t for the row size and one native pointer (8 bytes total). ++locator.x() resolves to pointer increment. At the other extreme, a 2D navigation of the even pixels of a planar CMYK image results in a step iterator consisting of one std::ptrdiff_t for the doubled row size, and one step iterator consisting of one std::ptrdiff_t for the horizontal step of two and a CMYK planar_pixel_iterator consisting of 4 pointers (24 bytes). In this case ++locator.x() results in four native pointer additions.

Note also that memory_based_2d_locator does not require that its element type be a pixel. It could be instantiated with an iterator whose value_type models only Regular. In this case the locator models the weaker RandomAccess2DLocatorConcept, and does not model PixelBasedConcept. Many generic algorithms don't require the elements to be pixels.


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