<!-- 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: type_from_x_iterator 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_0627.html">type_from_x_iterator</a>
  </div>
<div class="contents">
<h1>type_from_x_iterator Struct Template Reference<br>
<small>
[<a class="el" href="g_i_l_0218.html">Type Factory Metafunctions</a>]</small>
</h1><!-- doxytag: class="boost::gil::type_from_x_iterator" --><code>#include &lt;<a class="el" href="g_i_l_0237.html">metafunctions.hpp</a>&gt;</code>
<p>

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

Given a <a class="el" href="g_i_l_0599.html" title="Represents a pixel value (a container of channels). Models: HomogeneousColorBaseValueConcept...">pixel</a> iterator defining access to pixels along a row, returns the types of the corresponding built-in step_iterator, xy_locator, <a class="el" href="g_i_l_0040.html" title="A lightweight object that interprets memory as a 2D array of pixels. Models ImageViewConcept...">image_view</a>. <table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Types</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dcbb7e52dea76837939f7731d54bf8e9"></a><!-- doxytag: member="boost::gil::type_from_x_iterator::step_iterator_t" ref="dcbb7e52dea76837939f7731d54bf8e9" args="" -->
typedef <br>
<a class="el" href="g_i_l_0046.html">memory_based_step_iterator</a><br>
&lt; XIterator &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>step_iterator_t</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1cd44f6cf1bfe9c3436def24a7dd0d94"></a><!-- doxytag: member="boost::gil::type_from_x_iterator::xy_locator_t" ref="1cd44f6cf1bfe9c3436def24a7dd0d94" args="" -->
typedef <br>
<a class="el" href="g_i_l_0044.html">memory_based_2d_locator</a><br>
&lt; <a class="el" href="g_i_l_0046.html">step_iterator_t</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>xy_locator_t</b></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="10d1020b6a6a137051ceb3f0a4efb621"></a><!-- doxytag: member="boost::gil::type_from_x_iterator::view_t" ref="10d1020b6a6a137051ceb3f0a4efb621" args="" -->
typedef <a class="el" href="g_i_l_0040.html">image_view</a>&lt; <a class="el" href="g_i_l_0044.html">xy_locator_t</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><b>view_t</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_0237.html">metafunctions.hpp</a></ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat May 2 13:50:18 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>
