<!-- 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: derived_view_type Class 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_0034.html">derived_view_type</a>
  </div>
<div class="contents">
<h1>derived_view_type Class Template Reference<br>
<small>
[<a class="el" href="g_i_l_0219.html">derived_xxx_type</a>]</small>
</h1><!-- doxytag: class="boost::gil::derived_view_type" --><code>#include &lt;<a class="el" href="g_i_l_0237.html">metafunctions.hpp</a>&gt;</code>
<p>

<p>
<a href="g_i_l_0033.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
<h3>template&lt;typename View, typename T = use_default, typename L = use_default, typename IsPlanar = use_default, typename StepX = use_default, typename IsMutable = use_default&gt;<br>
 class boost::gil::derived_view_type&lt; View, T, L, IsPlanar, StepX, IsMutable &gt;</h3>

Constructs an <a class="el" href="g_i_l_0038.html" title="container interface over image view. Models ImageConcept, PixelBasedConcept">image</a> view type from a source view type by changing some of the properties.<p>
Use use_default for the properties of the source view that you want to keep. <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="e8c849eb2bfdf9003f314dd1cb8499bc"></a><!-- doxytag: member="boost::gil::derived_view_type::type" ref="e8c849eb2bfdf9003f314dd1cb8499bc" args="" -->
typedef <a class="el" href="g_i_l_0633.html">view_type</a>&lt; channel_t, <br>
layout_t, planar, step, mut &gt;<br>
::<a class="el" href="g_i_l_0040.html">type</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>type</b></td></tr>

</table>
<hr>The documentation for this class 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>
