<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=9"/>
    <meta name="generator" content="Doxygen 1.8.6"/>
    <meta name="viewport" content="width=device-width, initial-scale=1"/>
    <title>Generic Image Library: pixel_2d_locator_base&lt; Loc, XIterator, YIterator &gt; Class Template Reference</title>
    <link href="tabs.css" rel="stylesheet" type="text/css"/>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript" src="dynsections.js"></script>
    <link href="doxygen.css" rel="stylesheet" type="text/css" />
    <link href="doxygen-boost.css" rel="stylesheet" type="text/css"/>
  </head>
  <body>
    <div class="boost-header">
      <table border="0" cellpadding="7" cellspacing="0" width="100%" summary="header">
	<tr>
	  <td valign="top" width="300">
            <h3><a href="../index.html"><img alt="Boost GIL" src="../_static/gil.png" border="0"></a></h3>
	  </td>
	  <td ><h1 align="center"><a href="../index.html"></a></h1></td>
	  <td></td>
	</tr>
      </table>
    </div>
    <hr/>
    <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<!-- Generated by Doxygen 1.8.6 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><b>boost</b></li><li class="navelem"><b>gil</b></li><li class="navelem"><a class="el" href="classboost_1_1gil_1_1pixel__2d__locator__base.html">pixel_2d_locator_base</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classboost_1_1gil_1_1pixel__2d__locator__base-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">pixel_2d_locator_base&lt; Loc, XIterator, YIterator &gt; Class Template Reference<div class="ingroups"><a class="el" href="group___pixel_locator_model.html">Models</a> &#124; <a class="el" href="group___pixel_based_model.html">Models</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>base class for models of <a class="el" href="structboost_1_1gil_1_1_pixel_locator_concept.html" title="GIL&#39;s 2-dimensional locator over immutable GIL pixels. ">PixelLocatorConcept</a>Pixel locator is similar to a pixel iterator, but allows for 2D navigation of pixels within an image view. It has a 2D difference_type and supports random access operations like:  
 <a href="classboost_1_1gil_1_1pixel__2d__locator__base.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="locator_8hpp_source.html">locator.hpp</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:ae3d00803fa442dc8138e53c6fd6ff551"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3d00803fa442dc8138e53c6fd6ff551"></a>
typedef XIterator&#160;</td><td class="memItemRight" valign="bottom"><b>x_iterator</b></td></tr>
<tr class="separator:ae3d00803fa442dc8138e53c6fd6ff551"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c26f78fc975b07e562860c6035b5c77"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c26f78fc975b07e562860c6035b5c77"></a>
typedef YIterator&#160;</td><td class="memItemRight" valign="bottom"><b>y_iterator</b></td></tr>
<tr class="separator:a1c26f78fc975b07e562860c6035b5c77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8948d7b39ef0dc53a64eeadd1f120236"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8948d7b39ef0dc53a64eeadd1f120236"></a>
typedef std::iterator_traits<br class="typebreak"/>
&lt; x_iterator &gt;::value_type&#160;</td><td class="memItemRight" valign="bottom"><b>value_type</b></td></tr>
<tr class="separator:a8948d7b39ef0dc53a64eeadd1f120236"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c771c6b67581e966f3101a1b89b1984"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c771c6b67581e966f3101a1b89b1984"></a>
typedef std::iterator_traits<br class="typebreak"/>
&lt; x_iterator &gt;::reference&#160;</td><td class="memItemRight" valign="bottom"><b>reference</b></td></tr>
<tr class="separator:a4c771c6b67581e966f3101a1b89b1984"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5844f24fb8f1a0086e9682b95250cab"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5844f24fb8f1a0086e9682b95250cab"></a>
typedef std::iterator_traits<br class="typebreak"/>
&lt; x_iterator &gt;<br class="typebreak"/>
::<a class="el" href="classboost_1_1gil_1_1point.html">difference_type</a>&#160;</td><td class="memItemRight" valign="bottom"><b>coord_t</b></td></tr>
<tr class="separator:aa5844f24fb8f1a0086e9682b95250cab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a374499a5ef7f7a6830bc1adc475cd868"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a374499a5ef7f7a6830bc1adc475cd868"></a>
typedef <a class="el" href="classboost_1_1gil_1_1point.html">point</a>&lt; coord_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>difference_type</b></td></tr>
<tr class="separator:a374499a5ef7f7a6830bc1adc475cd868"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada4e134f4052097a3359396e730be85f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada4e134f4052097a3359396e730be85f"></a>
typedef <a class="el" href="classboost_1_1gil_1_1point.html">difference_type</a>&#160;</td><td class="memItemRight" valign="bottom"><b>point_t</b></td></tr>
<tr class="separator:ada4e134f4052097a3359396e730be85f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f949a5fca986fca0058a1d0f288d9cf"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2f949a5fca986fca0058a1d0f288d9cf"></a>
typedef point_t::template axis<br class="typebreak"/>
&lt; 0 &gt;::coord_t&#160;</td><td class="memItemRight" valign="bottom"><b>x_coord_t</b></td></tr>
<tr class="separator:a2f949a5fca986fca0058a1d0f288d9cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a55d7968c5aa5022ee076def9ae3e4c97"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55d7968c5aa5022ee076def9ae3e4c97"></a>
typedef point_t::template axis<br class="typebreak"/>
&lt; 1 &gt;::coord_t&#160;</td><td class="memItemRight" valign="bottom"><b>y_coord_t</b></td></tr>
<tr class="separator:a55d7968c5aa5022ee076def9ae3e4c97"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a923cc58ccc57319b3b438070df9dbedd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a923cc58ccc57319b3b438070df9dbedd"></a>
typedef <a class="el" href="classboost_1_1gil_1_1point.html">difference_type</a>&#160;</td><td class="memItemRight" valign="bottom"><b>cached_location_t</b></td></tr>
<tr class="separator:a923cc58ccc57319b3b438070df9dbedd"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a5c6c2fc2ab0d5c3e10c8d78c1d83a5ae"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5c6c2fc2ab0d5c3e10c8d78c1d83a5ae"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator!=</b> (const Loc &amp;p) const </td></tr>
<tr class="separator:a5c6c2fc2ab0d5c3e10c8d78c1d83a5ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa9c85632f9e9074e06d3e5f4e0c46f82"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa9c85632f9e9074e06d3e5f4e0c46f82"></a>
x_iterator&#160;</td><td class="memItemRight" valign="bottom"><b>x_at</b> (x_coord_t dx, y_coord_t dy) const </td></tr>
<tr class="separator:aa9c85632f9e9074e06d3e5f4e0c46f82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae38d5bc61a3101e3bb7bd6ab0ff86e0d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae38d5bc61a3101e3bb7bd6ab0ff86e0d"></a>
x_iterator&#160;</td><td class="memItemRight" valign="bottom"><b>x_at</b> (const <a class="el" href="classboost_1_1gil_1_1point.html">difference_type</a> &amp;d) const </td></tr>
<tr class="separator:ae38d5bc61a3101e3bb7bd6ab0ff86e0d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10a35d80a9ff2c5888f68527f332add2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a10a35d80a9ff2c5888f68527f332add2"></a>
y_iterator&#160;</td><td class="memItemRight" valign="bottom"><b>y_at</b> (x_coord_t dx, y_coord_t dy) const </td></tr>
<tr class="separator:a10a35d80a9ff2c5888f68527f332add2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a948188df93afb3e9076013cfb3334618"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a948188df93afb3e9076013cfb3334618"></a>
y_iterator&#160;</td><td class="memItemRight" valign="bottom"><b>y_at</b> (const <a class="el" href="classboost_1_1gil_1_1point.html">difference_type</a> &amp;d) const </td></tr>
<tr class="separator:a948188df93afb3e9076013cfb3334618"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54d7a594e81421cf0b5fbd0f0e83bdc8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a54d7a594e81421cf0b5fbd0f0e83bdc8"></a>
Loc&#160;</td><td class="memItemRight" valign="bottom"><b>xy_at</b> (x_coord_t dx, y_coord_t dy) const </td></tr>
<tr class="separator:a54d7a594e81421cf0b5fbd0f0e83bdc8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d5c54b73f9efe922043baac745e3676"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8d5c54b73f9efe922043baac745e3676"></a>
Loc&#160;</td><td class="memItemRight" valign="bottom"><b>xy_at</b> (const <a class="el" href="classboost_1_1gil_1_1point.html">difference_type</a> &amp;d) const </td></tr>
<tr class="separator:a8d5c54b73f9efe922043baac745e3676"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99149c579785498e03160ecb1a41609d"><td class="memTemplParams" colspan="2"><a class="anchor" id="a99149c579785498e03160ecb1a41609d"></a>
template&lt;std::size_t D&gt; </td></tr>
<tr class="memitem:a99149c579785498e03160ecb1a41609d"><td class="memTemplItemLeft" align="right" valign="top">axis&lt; D &gt;::iterator &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>axis_iterator</b> ()</td></tr>
<tr class="separator:a99149c579785498e03160ecb1a41609d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9efc306caf4ce7b57a40d7f43f80a913"><td class="memTemplParams" colspan="2"><a class="anchor" id="a9efc306caf4ce7b57a40d7f43f80a913"></a>
template&lt;std::size_t D&gt; </td></tr>
<tr class="memitem:a9efc306caf4ce7b57a40d7f43f80a913"><td class="memTemplItemLeft" align="right" valign="top">axis&lt; D &gt;::iterator const &amp;&#160;</td><td class="memTemplItemRight" valign="bottom"><b>axis_iterator</b> () const </td></tr>
<tr class="separator:a9efc306caf4ce7b57a40d7f43f80a913"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0e9e56aef921d494b7039ef9dfdc9c4"><td class="memTemplParams" colspan="2"><a class="anchor" id="ad0e9e56aef921d494b7039ef9dfdc9c4"></a>
template&lt;std::size_t D&gt; </td></tr>
<tr class="memitem:ad0e9e56aef921d494b7039ef9dfdc9c4"><td class="memTemplItemLeft" align="right" valign="top">axis&lt; D &gt;::iterator&#160;</td><td class="memTemplItemRight" valign="bottom"><b>axis_iterator</b> (const <a class="el" href="classboost_1_1gil_1_1point.html">point_t</a> &amp;p) const </td></tr>
<tr class="separator:ad0e9e56aef921d494b7039ef9dfdc9c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2e37864c7119a0bfbf5343c4b91db73"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2e37864c7119a0bfbf5343c4b91db73"></a>
reference&#160;</td><td class="memItemRight" valign="bottom"><b>operator()</b> (x_coord_t dx, y_coord_t dy) const </td></tr>
<tr class="separator:ac2e37864c7119a0bfbf5343c4b91db73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4353d357fd57b04981e3a631b0b79a84"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4353d357fd57b04981e3a631b0b79a84"></a>
reference&#160;</td><td class="memItemRight" valign="bottom"><b>operator[]</b> (const <a class="el" href="classboost_1_1gil_1_1point.html">difference_type</a> &amp;d) const </td></tr>
<tr class="separator:a4353d357fd57b04981e3a631b0b79a84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa149c2249879e7727f33688b76bf2c99"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa149c2249879e7727f33688b76bf2c99"></a>
reference&#160;</td><td class="memItemRight" valign="bottom"><b>operator*</b> () const </td></tr>
<tr class="separator:aa149c2249879e7727f33688b76bf2c99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5183ba70dbe786e8dd0cb258b73ed2d2"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5183ba70dbe786e8dd0cb258b73ed2d2"></a>
Loc &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator+=</b> (const <a class="el" href="classboost_1_1gil_1_1point.html">difference_type</a> &amp;d)</td></tr>
<tr class="separator:a5183ba70dbe786e8dd0cb258b73ed2d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4adb8167f7979861b075323379317de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae4adb8167f7979861b075323379317de"></a>
Loc &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>operator-=</b> (const <a class="el" href="classboost_1_1gil_1_1point.html">difference_type</a> &amp;d)</td></tr>
<tr class="separator:ae4adb8167f7979861b075323379317de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adff47b8c0f4c756c9b4a45888f9a81ce"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adff47b8c0f4c756c9b4a45888f9a81ce"></a>
Loc&#160;</td><td class="memItemRight" valign="bottom"><b>operator+</b> (const <a class="el" href="classboost_1_1gil_1_1point.html">difference_type</a> &amp;d) const </td></tr>
<tr class="separator:adff47b8c0f4c756c9b4a45888f9a81ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4e0438f79c980e5eb7bed95560ef516b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e0438f79c980e5eb7bed95560ef516b"></a>
Loc&#160;</td><td class="memItemRight" valign="bottom"><b>operator-</b> (const <a class="el" href="classboost_1_1gil_1_1point.html">difference_type</a> &amp;d) const </td></tr>
<tr class="separator:a4e0438f79c980e5eb7bed95560ef516b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae448a693f3baaa731f1d70bb48609611"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae448a693f3baaa731f1d70bb48609611"></a>
<a class="el" href="classboost_1_1gil_1_1point.html">cached_location_t</a>&#160;</td><td class="memItemRight" valign="bottom"><b>cache_location</b> (const <a class="el" href="classboost_1_1gil_1_1point.html">difference_type</a> &amp;d) const </td></tr>
<tr class="separator:ae448a693f3baaa731f1d70bb48609611"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2dafb8db61c81881f0d2d0e264ac8ed6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2dafb8db61c81881f0d2d0e264ac8ed6"></a>
<a class="el" href="classboost_1_1gil_1_1point.html">cached_location_t</a>&#160;</td><td class="memItemRight" valign="bottom"><b>cache_location</b> (x_coord_t dx, y_coord_t dy) const </td></tr>
<tr class="separator:a2dafb8db61c81881f0d2d0e264ac8ed6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:acf81c27b3fffa67d66b47f46979b607e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acf81c27b3fffa67d66b47f46979b607e"></a>
static const std::size_t&#160;</td><td class="memItemRight" valign="bottom"><b>num_dimensions</b> =2</td></tr>
<tr class="separator:acf81c27b3fffa67d66b47f46979b607e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:aec74e850d62b81bd65c6eec74f0c3352"><td class="memTemplParams" colspan="2"><a class="anchor" id="aec74e850d62b81bd65c6eec74f0c3352"></a>
template&lt;typename X &gt; </td></tr>
<tr class="memitem:aec74e850d62b81bd65c6eec74f0c3352"><td class="memTemplItemLeft" align="right" valign="top">class&#160;</td><td class="memTemplItemRight" valign="bottom"><b>pixel_2d_locator</b></td></tr>
<tr class="separator:aec74e850d62b81bd65c6eec74f0c3352"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename Loc, typename XIterator, typename YIterator&gt;<br/>
class boost::gil::pixel_2d_locator_base&lt; Loc, XIterator, YIterator &gt;</h3>

<p>base class for models of <a class="el" href="structboost_1_1gil_1_1_pixel_locator_concept.html" title="GIL&#39;s 2-dimensional locator over immutable GIL pixels. ">PixelLocatorConcept</a></p>
<p>Pixel locator is similar to a pixel iterator, but allows for 2D navigation of pixels within an image view. It has a 2D difference_type and supports random access operations like: </p>
<div class="fragment"><div class="line">difference_type offset2(2,3);</div>
<div class="line">locator+=offset2;</div>
<div class="line">locator[offset2]=my_pixel;</div>
</div><!-- fragment --><p>In addition, each coordinate acts as a random-access iterator that can be modified separately: "++locator.x()" or "locator.y()+=10" thereby moving the locator horizontally or vertically.</p>
<p>It is called a locator because it doesn't implement the complete interface of a random access iterator. For example, increment and decrement operations don't make sense (no way to specify dimension). Also 2D difference between two locators cannot be computed without knowledge of the X position within the image.</p>
<p>This base class provides most of the methods and typedefs needed to create a model of a locator. GIL provides two locator models as subclasses of <code><a class="el" href="classboost_1_1gil_1_1pixel__2d__locator__base.html" title="base class for models of PixelLocatorConceptPixel locator is similar to a pixel iterator, but allows for 2D navigation of pixels within an image view. It has a 2D difference_type and supports random access operations like: ">pixel_2d_locator_base</a></code>. A memory-based locator, <code><a class="el" href="classboost_1_1gil_1_1memory__based__2d__locator.html" title="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. ">memory_based_2d_locator</a></code> and a virtual locator, <code><a class="el" href="classboost_1_1gil_1_1virtual__2d__locator.html" title="A 2D locator over a virtual image. Upon dereferencing, invokes a given function object passing it its...">virtual_2d_locator</a></code>. The minimum functionality a subclass must provide is this: </p>
<div class="fragment"><div class="line"><span class="keyword">class </span>my_locator : <span class="keyword">public</span> pixel_2d_locator_base&lt;my_locator, ..., ...&gt; {  <span class="comment">// supply the types for x-iterator and y-iterator</span></div>
<div class="line">       <span class="keyword">typedef</span> ... const_t;                      <span class="comment">// read-only locator</span></div>
<div class="line"></div>
<div class="line">       <span class="keyword">template</span> &lt;<span class="keyword">typename</span> Deref&gt; <span class="keyword">struct </span>add_deref {</div>
<div class="line">           <span class="keyword">typedef</span> ... type;                     <span class="comment">// locator that invokes the Deref dereference object upon pixel access</span></div>
<div class="line">           <span class="keyword">static</span> type make(<span class="keyword">const</span> my_locator&amp; loc, <span class="keyword">const</span> Deref&amp; d);</div>
<div class="line">       };</div>
<div class="line"></div>
<div class="line">       my_locator();</div>
<div class="line">       my_locator(<span class="keyword">const</span> my_locator&amp; pl);</div>
<div class="line"></div>
<div class="line">       <span class="comment">// constructors with dynamic step in y (and x). Only valid for locators with dynamic steps</span></div>
<div class="line">       my_locator(<span class="keyword">const</span> my_locator&amp; loc, coord_t y_step);</div>
<div class="line">       my_locator(<span class="keyword">const</span> my_locator&amp; loc, coord_t x_step, coord_t y_step, <span class="keywordtype">bool</span> transpose);</div>
<div class="line"></div>
<div class="line">       <span class="keywordtype">bool</span>              operator==(<span class="keyword">const</span> my_locator&amp; p) <span class="keyword">const</span>;</div>
<div class="line"></div>
<div class="line">       <span class="comment">// return _references_ to horizontal/vertical iterators. Advancing them moves this locator</span></div>
<div class="line">       x_iterator&amp;       x();</div>
<div class="line">       y_iterator&amp;       y();</div>
<div class="line">       x_iterator <span class="keyword">const</span>&amp; x() <span class="keyword">const</span>;</div>
<div class="line">       y_iterator <span class="keyword">const</span>&amp; y() <span class="keyword">const</span>;</div>
<div class="line"></div>
<div class="line">       <span class="comment">// return the vertical distance to another locator. Some models need the horizontal distance to compute it</span></div>
<div class="line">       y_coord_t         y_distance_to(<span class="keyword">const</span> my_locator&amp; loc2, x_coord_t xDiff) <span class="keyword">const</span>;</div>
<div class="line"></div>
<div class="line">       <span class="comment">// return true iff incrementing an x-iterator located at the last column will position it at the first</span></div>
<div class="line">       <span class="comment">// column of the next row. Some models need the image width to determine that.</span></div>
<div class="line">       <span class="keywordtype">bool</span>              is_1d_traversable(x_coord_t width) <span class="keyword">const</span>;</div>
<div class="line">};</div>
</div><!-- fragment --><p>Models may choose to override some of the functions in the base class with more efficient versions. </p>
</div><hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="locator_8hpp_source.html">locator.hpp</a></li>
</ul>
</div><!-- contents -->
     <!-- HTML footer for doxygen 1.8.13-->
     <!-- start footer part -->
     <hr class="footer"/>
     <address class="footer">
      <small>
        Generated on Wed Dec 5 2018 20:05:51 for Generic Image Library by &#160;<a href="http://www.doxygen.org/index.html">doxygen</a> 1.8.6
      </small>
    </address>
  </body>
</html>
