<!-- 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: jpeg_read_support 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_0555.html">jpeg_read_support</a>
  </div>
<div class="contents">
<h1>jpeg_read_support Struct Template Reference<br>
<small>
[<a class="el" href="g_i_l_0169.html">JPEG I/O</a>]</small>
</h1><!-- doxytag: class="boost::gil::jpeg_read_support" --><code>#include &lt;<a class="el" href="g_i_l_0233.html">jpeg_io.hpp</a>&gt;</code>
<p>

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

Determines whether the given view type is supported for reading. <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="732f6c668f4182d39756ee0dc6ff8441"></a><!-- doxytag: member="boost::gil::jpeg_read_support::BOOST_STATIC_CONSTANT" ref="732f6c668f4182d39756ee0dc6ff8441" args="(bool, is_supported=(detail::jpeg_read_support_private&lt; typename channel_type&lt; View &gt;::type, typename color_space_type&lt; View &gt;::type &gt;::is_supported))" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>BOOST_STATIC_CONSTANT</b> (bool, is_supported=(detail::jpeg_read_support_private&lt; typename channel_type&lt; View &gt;::type, typename color_space_type&lt; View &gt;::type &gt;::is_supported))</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="21c2bfb8c12c37272857d6ca82ec5228"></a><!-- doxytag: member="boost::gil::jpeg_read_support::BOOST_STATIC_CONSTANT" ref="21c2bfb8c12c37272857d6ca82ec5228" args="(J_COLOR_SPACE, color_type=(detail::jpeg_read_support_private&lt; typename channel_type&lt; View &gt;::type, typename color_space_type&lt; View &gt;::type &gt;::color_type))" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>BOOST_STATIC_CONSTANT</b> (J_COLOR_SPACE, color_type=(detail::jpeg_read_support_private&lt; typename channel_type&lt; View &gt;::type, typename color_space_type&lt; View &gt;::type &gt;::color_type))</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="987c7a24c4e5f578129480e6461cfc50"></a><!-- doxytag: member="boost::gil::jpeg_read_support::BOOST_STATIC_CONSTANT" ref="987c7a24c4e5f578129480e6461cfc50" args="(bool, value=is_supported)" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><b>BOOST_STATIC_CONSTANT</b> (bool, value=is_supported)</td></tr>

</table>
<hr>The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="g_i_l_0233.html">jpeg_io.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>
