<!-- Copyright 2008 Lubomir Bourdev and Hailin Jin

     Distributed under the Boost Software License, Version 1.0.
     (See accompanying file LICENSE_1_0.txt or copy at
     http://www.boost.org/LICENSE_1_0.txt)
  -->

<!--
    Copyright 2005-2007 Adobe Systems Incorporated
    Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt
    or a copy at http://stlab.adobe.com/licenses.html)

    Some files are held under additional license.
    Please see "http://stlab.adobe.com/licenses.html" for more information.
-->

<!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" lang="en" xml:lang="en">

<head>
    <TITLE>Generic Image Library: PixelIteratorConcept Struct Template Reference</TITLE>
    <META HTTP-EQUIV="content-type" CONTENT="text/html;charset=ISO-8859-1"/>
    <LINK TYPE="text/css" REL="stylesheet" HREF="adobe_source.css"/>
</head>
<body>
<table border="0" cellspacing="0" cellpadding="0" style='width: 100%; margin: 0; padding: 0'><tr>
<td width="100%" valign="top" style='padding-left: 10px; padding-right: 10px; padding-bottom: 10px'>
<div class="qindex"><a class="qindex" href="index.html">Modules</a> 
                  | <a class="qindex" href="classes.html">Alphabetical List</a> 
                  | <a class="qindex" href="annotated.html">Class List</a> 
                  | <a class="qindex" href="dirs.html">Directories</a> 
                  | <a class="qindex" href="files.html">File List</a> 
                  | <a class="qindex" href="../index.html">GIL Home Page</a> 
</div>
<!-- End Header -->
<!-- Generated by Doxygen 1.5.6 -->
  <div class="navpath"><a class="el" href="namespaceboost.html">boost</a>::<b>gil</b>::<a class="el" href="g_i_l_0352.html">PixelIteratorConcept</a>
  </div>
<div class="contents">
<h1>PixelIteratorConcept Struct Template Reference<br>
<small>
[<a class="el" href="g_i_l_0191.html">PixelIteratorConcept</a>]</small>
</h1><!-- doxytag: class="boost::gil::PixelIteratorConcept" --><code>#include &lt;<a class="el" href="g_i_l_0091.html">gil_concept.hpp</a>&gt;</code>
<p>

<p>
<a href="g_i_l_0351.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
<h3>template&lt;typename Iterator&gt;<br>
 struct boost::gil::PixelIteratorConcept&lt; Iterator &gt;</h3>

An STL random access traversal iterator over a model of <a class="el" href="g_i_l_0346.html" title="Pixel concept - A color base whose elements are channels.">PixelConcept</a>. 
<p>
GIL's iterators must also provide the following metafunctions:<ul>
<li><code>const_iterator_type&lt;Iterator&gt;</code>: Returns a read-only equivalent of <code>Iterator</code> </li><li><code><a class="el" href="g_i_l_0550.html">iterator_is_mutable&lt;Iterator&gt;</a></code>: Returns whether the given iterator is read-only or mutable</li><li><code>is_iterator_adaptor&lt;Iterator&gt;</code>: Returns whether the given iterator is an adaptor over another iterator. See <a class="el" href="g_i_l_0310.html" title="Iterator adaptor is a forward iterator adapting another forward iterator.">IteratorAdaptorConcept</a> for additional requirements of adaptors.</li></ul>
<p>
<div class="fragment"><pre class="fragment">concept PixelIteratorConcept&lt;typename Iterator&gt; : boost_concepts::RandomAccessTraversalConcept&lt;Iterator&gt;, PixelBasedConcept&lt;Iterator&gt; {
    where PixelValueConcept&lt;value_type&gt;;
    <span class="keyword">typename</span> const_iterator_type&lt;It&gt;::type;         
        where PixelIteratorConcept&lt;const_iterator_type&lt;It&gt;::type&gt;;
    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span>  iterator_is_mutable&lt;It&gt;::type::value;          
    <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span>  is_iterator_adaptor&lt;It&gt;::type::value;   <span class="comment">// is it an iterator adaptor</span>
};
</pre></div> <table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b0a0dbf6ca9028bbbb2240cad5882537"></a><!-- doxytag: member="boost::gil::PixelIteratorConcept::constraints" ref="b0a0dbf6ca9028bbbb2240cad5882537" args="()" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>constraints</b> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="43a203690b8b31a143bb596fadd95b70"></a><!-- doxytag: member="boost::gil::PixelIteratorConcept::check_base" ref="43a203690b8b31a143bb596fadd95b70" args="(mpl::false_)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>check_base</b> (mpl::false_)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8ccb30553548d8046125f2efeb778802"></a><!-- doxytag: member="boost::gil::PixelIteratorConcept::check_base" ref="8ccb30553548d8046125f2efeb778802" args="(mpl::true_)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>check_base</b> (mpl::true_)</td></tr>

<tr><td colspan="2"><br><h2>Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8e5a0f604de6507cf17b22c030d0f079"></a><!-- doxytag: member="boost::gil::PixelIteratorConcept::it" ref="8e5a0f604de6507cf17b22c030d0f079" args="" -->
Iterator&nbsp;</td><td class="memItemRight" valign="bottom"><b>it</b></td></tr>

</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="g_i_l_0091.html">gil_concept.hpp</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 2 13:50:17 2009 for Generic Image Library by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>
