2
0
mirror of https://github.com/boostorg/gil.git synced 2026-01-25 06:12:22 +00:00
Files
gil/develop/doc/html/reference/utilities_8hpp_source.html

324 lines
48 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- 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>utilities.hpp Source File</TITLE>
<META HTTP-EQUIV="content-type" CONTENT="text/html;charset=ISO-8859-1"/>
<link type="text/css" rel="stylesheet" href="../_static/style.css">
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
</head>
<body>
<div class="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/>
<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>
</div>
<!-- End Header -->
<!-- Generated by Doxygen 1.8.6 -->
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_1878a3f4746a95c6aad317458cc7ef80.html">boost</a></li><li class="navelem"><a class="el" href="dir_df4750f408086f9b9c1b5ee4251365ff.html">gil</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">utilities.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="utilities_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment"> Copyright 2005-2007 Adobe Systems Incorporated</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment"> </span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment"> Use, modification and distribution are subject to the Boost Software License,</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment"> Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment"> http://www.boost.org/LICENSE_1_0.txt).</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment"> See http://opensource.adobe.com/gil for most recent version including documentation.</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">/*************************************************************************************************/</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#ifndef GIL_UTILITIES_H</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define GIL_UTILITIES_H</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="gil__config_8hpp.html">gil_config.hpp</a>&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &lt;boost/config/no_tr1/cmath.hpp&gt;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &lt;cstddef&gt;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;iterator&gt;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;boost/static_assert.hpp&gt;</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;boost/type_traits.hpp&gt;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;boost/mpl/size.hpp&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;boost/mpl/distance.hpp&gt;</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;boost/mpl/begin.hpp&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#include &lt;boost/mpl/find.hpp&gt;</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &lt;boost/mpl/range_c.hpp&gt;</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &lt;boost/iterator/iterator_adaptor.hpp&gt;</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &lt;boost/iterator/iterator_facade.hpp&gt;</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="keyword">namespace </span>boost { <span class="keyword">namespace </span>gil {</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment">// CLASS point2</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="keyword">class </span>point2 {</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">typedef</span> T value_type;</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> D&gt; <span class="keyword">struct </span>axis { <span class="keyword">typedef</span> value_type coord_t; };</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> std::size_t num_dimensions=2;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; point2() : x(0), y(0) {}</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; point2(T newX, T newY) : x(newX), y(newY) {}</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; point2(<span class="keyword">const</span> point2&amp; p) : x(p.x), y(p.y) {}</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; ~point2() {}</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; point2&amp; operator=(<span class="keyword">const</span> point2&amp; p) { x=p.x; y=p.y; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; point2 operator&lt;&lt;(std::ptrdiff_t shift)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> point2(x&lt;&lt;shift,y&lt;&lt;shift); }</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; point2 operator&gt;&gt;(std::ptrdiff_t shift)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> point2(x&gt;&gt;shift,y&gt;&gt;shift); }</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; point2&amp; operator+=(<span class="keyword">const</span> point2&amp; p) { x+=p.x; y+=p.y; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; point2&amp; operator-=(<span class="keyword">const</span> point2&amp; p) { x-=p.x; y-=p.y; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; point2&amp; operator/=(<span class="keywordtype">double</span> t) { x/=t; y/=t; <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">const</span> T&amp; operator[](std::size_t i)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> this-&gt;*mem_array[i]; }</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; T&amp; operator[](std::size_t i) { <span class="keywordflow">return</span> this-&gt;*mem_array[i]; }</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; T x,y;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="comment">// this static array of pointers to member variables makes operator[] safe and doesn&#39;t seem to exhibit any performance penalty</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keyword">static</span> T point2&lt;T&gt;::* <span class="keyword">const</span> mem_array[num_dimensions];</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;};</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;T point2&lt;T&gt;::* <span class="keyword">const</span> point2&lt;T&gt;::mem_array[point2&lt;T&gt;::num_dimensions] = { &amp;point2&lt;T&gt;::x, &amp;point2&lt;T&gt;::y };</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; BOOST_FORCEINLINE</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="keywordtype">bool</span> operator==(<span class="keyword">const</span> point2&lt;T&gt;&amp; p1, <span class="keyword">const</span> point2&lt;T&gt;&amp; p2) { <span class="keywordflow">return</span> (p1.x==p2.x &amp;&amp; p1.y==p2.y); }</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; BOOST_FORCEINLINE</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="keywordtype">bool</span> operator!=(<span class="keyword">const</span> point2&lt;T&gt;&amp; p1, <span class="keyword">const</span> point2&lt;T&gt;&amp; p2) { <span class="keywordflow">return</span> p1.x!=p2.x || p1.y!=p2.y; }</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; BOOST_FORCEINLINE</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;point2&lt;T&gt; operator+(<span class="keyword">const</span> point2&lt;T&gt;&amp; p1, <span class="keyword">const</span> point2&lt;T&gt;&amp; p2) { <span class="keywordflow">return</span> point2&lt;T&gt;(p1.x+p2.x,p1.y+p2.y); }</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; BOOST_FORCEINLINE</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;point2&lt;T&gt; operator-(<span class="keyword">const</span> point2&lt;T&gt;&amp; p) { <span class="keywordflow">return</span> point2&lt;T&gt;(-p.x,-p.y); }</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; BOOST_FORCEINLINE</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;point2&lt;T&gt; operator-(<span class="keyword">const</span> point2&lt;T&gt;&amp; p1, <span class="keyword">const</span> point2&lt;T&gt;&amp; p2) { <span class="keywordflow">return</span> point2&lt;T&gt;(p1.x-p2.x,p1.y-p2.y); }</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; BOOST_FORCEINLINE</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;point2&lt;double&gt; operator/(<span class="keyword">const</span> point2&lt;T&gt;&amp; p, <span class="keywordtype">double</span> t) { <span class="keywordflow">return</span> t==0 ? point2&lt;double&gt;(0,0):point2&lt;double&gt;(p.x/t,p.y/t); }</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; BOOST_FORCEINLINE</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;point2&lt;T&gt; operator*(<span class="keyword">const</span> point2&lt;T&gt;&amp; p, std::ptrdiff_t t) { <span class="keywordflow">return</span> point2&lt;T&gt;(p.x*t,p.y*t); }</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; BOOST_FORCEINLINE</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;point2&lt;T&gt; operator*(std::ptrdiff_t t, <span class="keyword">const</span> point2&lt;T&gt;&amp; p) { <span class="keywordflow">return</span> point2&lt;T&gt;(p.x*t,p.y*t); }</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> K, <span class="keyword">typename</span> T&gt; BOOST_FORCEINLINE</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="keyword">const</span> T&amp; axis_value(<span class="keyword">const</span> point2&lt;T&gt;&amp; p) { <span class="keywordflow">return</span> p[K]; }</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="keyword">template</span> &lt;std::<span class="keywordtype">size_t</span> K, <span class="keyword">typename</span> T&gt; BOOST_FORCEINLINE</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; T&amp; axis_value( point2&lt;T&gt;&amp; p) { <span class="keywordflow">return</span> p[K]; }</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="keyword">inline</span> std::ptrdiff_t iround(<span class="keywordtype">float</span> x ) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>std::ptrdiff_t<span class="keyword">&gt;</span>(x + (x &lt; 0.0f ? -0.5f : 0.5f)); }</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="keyword">inline</span> std::ptrdiff_t iround(<span class="keywordtype">double</span> x) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>std::ptrdiff_t<span class="keyword">&gt;</span>(x + (x &lt; 0.0 ? -0.5 : 0.5)); }</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="keyword">inline</span> std::ptrdiff_t ifloor(<span class="keywordtype">float</span> x ) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>std::ptrdiff_t<span class="keyword">&gt;</span>(std::floor(x)); }</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="keyword">inline</span> std::ptrdiff_t ifloor(<span class="keywordtype">double</span> x) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>std::ptrdiff_t<span class="keyword">&gt;</span>(std::floor(x)); }</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="keyword">inline</span> std::ptrdiff_t iceil(<span class="keywordtype">float</span> x ) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>std::ptrdiff_t<span class="keyword">&gt;</span>(std::ceil(x)); }</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="keyword">inline</span> std::ptrdiff_t iceil(<span class="keywordtype">double</span> x) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>std::ptrdiff_t<span class="keyword">&gt;</span>(std::ceil(x)); }</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="keyword">inline</span> point2&lt;std::ptrdiff_t&gt; iround(<span class="keyword">const</span> point2&lt;float &gt;&amp; p) { <span class="keywordflow">return</span> point2&lt;std::ptrdiff_t&gt;(iround(p.x),iround(p.y)); }</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="keyword">inline</span> point2&lt;std::ptrdiff_t&gt; iround(<span class="keyword">const</span> point2&lt;double&gt;&amp; p) { <span class="keywordflow">return</span> point2&lt;std::ptrdiff_t&gt;(iround(p.x),iround(p.y)); }</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="keyword">inline</span> point2&lt;std::ptrdiff_t&gt; ifloor(<span class="keyword">const</span> point2&lt;float &gt;&amp; p) { <span class="keywordflow">return</span> point2&lt;std::ptrdiff_t&gt;(ifloor(p.x),ifloor(p.y)); }</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="keyword">inline</span> point2&lt;std::ptrdiff_t&gt; ifloor(<span class="keyword">const</span> point2&lt;double&gt;&amp; p) { <span class="keywordflow">return</span> point2&lt;std::ptrdiff_t&gt;(ifloor(p.x),ifloor(p.y)); }</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="keyword">inline</span> point2&lt;std::ptrdiff_t&gt; iceil (<span class="keyword">const</span> point2&lt;float &gt;&amp; p) { <span class="keywordflow">return</span> point2&lt;std::ptrdiff_t&gt;(iceil(p.x), iceil(p.y)); }</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="keyword">inline</span> point2&lt;std::ptrdiff_t&gt; iceil (<span class="keyword">const</span> point2&lt;double&gt;&amp; p) { <span class="keywordflow">return</span> point2&lt;std::ptrdiff_t&gt;(iceil(p.x), iceil(p.y)); }</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; </div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="keyword">inline</span> T align(T val, std::size_t alignment) { </div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> val+(alignment - val%alignment)%alignment; </div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;}</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> ConstT, <span class="keyword">typename</span> Value, <span class="keyword">typename</span> Reference, <span class="keyword">typename</span> ConstReference,</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; <span class="keyword">typename</span> ArgType, <span class="keyword">typename</span> ResultType, <span class="keywordtype">bool</span> IsMutable&gt;</div>
<div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="structboost_1_1gil_1_1deref__base.html"> 182</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structboost_1_1gil_1_1deref__base.html">deref_base</a> : <span class="keyword">public</span> std::unary_function&lt;ArgType, ResultType&gt; {</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keyword">typedef</span> ConstT const_t;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keyword">typedef</span> Value value_type;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; <span class="keyword">typedef</span> Reference reference;</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keyword">typedef</span> ConstReference const_reference;</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; BOOST_STATIC_CONSTANT(<span class="keywordtype">bool</span>, is_mutable = IsMutable);</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;};</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> D1, <span class="keyword">typename</span> D2&gt;</div>
<div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classboost_1_1gil_1_1deref__compose.html"> 194</a></span>&#160;<span class="keyword">class </span><a class="code" href="classboost_1_1gil_1_1deref__compose.html">deref_compose</a> : <span class="keyword">public</span> <a class="code" href="structboost_1_1gil_1_1deref__base.html">deref_base</a>&lt;</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; deref_compose&lt;typename D1::const_t, typename D2::const_t&gt;,</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; typename D1::value_type, typename D1::reference, typename D1::const_reference, </div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; typename D2::argument_type, typename D1::result_type, D1::is_mutable &amp;&amp; D2::is_mutable&gt;</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;{</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; D1 _fn1;</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; D2 _fn2;</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> D2::argument_type argument_type;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keyword">typedef</span> <span class="keyword">typename</span> D1::result_type result_type;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="classboost_1_1gil_1_1deref__compose.html">deref_compose</a>() {}</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="classboost_1_1gil_1_1deref__compose.html">deref_compose</a>(<span class="keyword">const</span> D1&amp; x, <span class="keyword">const</span> D2&amp; y) : _fn1(x), _fn2(y) {}</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="classboost_1_1gil_1_1deref__compose.html">deref_compose</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1gil_1_1deref__compose.html">deref_compose</a>&amp; dc) : _fn1(dc._fn1), _fn2(dc._fn2) {}</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _D1, <span class="keyword">typename</span> _D2&gt; <a class="code" href="classboost_1_1gil_1_1deref__compose.html">deref_compose</a>(<span class="keyword">const</span> <a class="code" href="classboost_1_1gil_1_1deref__compose.html">deref_compose&lt;_D1,_D2&gt;</a>&amp; dc) : _fn1(dc._fn1), _fn2(dc._fn2) {}</div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; result_type operator()(argument_type x)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> _fn1(_fn2(x)); }</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; result_type operator()(argument_type x) { <span class="keywordflow">return</span> _fn1(_fn2(x)); }</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;};</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="comment">// reinterpret_cast is implementation-defined. Static cast is not.</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutPtr, <span class="keyword">typename</span> In&gt; BOOST_FORCEINLINE</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; OutPtr gil_reinterpret_cast( In* p) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>OutPtr<span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span><span class="keywordtype">void</span>*<span class="keyword">&gt;</span>(p)); }</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> OutPtr, <span class="keyword">typename</span> In&gt; BOOST_FORCEINLINE</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="keyword">const</span> OutPtr gil_reinterpret_cast_c(<span class="keyword">const</span> In* p) { <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span><span class="keyword">const </span>OutPtr<span class="keyword">&gt;</span>(<span class="keyword">static_cast&lt;</span><span class="keyword">const </span><span class="keywordtype">void</span>*<span class="keyword">&gt;</span>(p)); }</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="keyword">namespace </span>detail {</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> InputIter, <span class="keyword">class</span> Size, <span class="keyword">class</span> OutputIter&gt;</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;std::pair&lt;InputIter, OutputIter&gt; _copy_n(InputIter first, Size count,</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; OutputIter result,</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; std::input_iterator_tag) {</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; <span class="keywordflow">for</span> ( ; count &gt; 0; --count) {</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; *result = *first;</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; ++first;</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; ++result;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">return</span> std::pair&lt;InputIter, OutputIter&gt;(first, result);</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;}</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> RAIter, <span class="keyword">class</span> Size, <span class="keyword">class</span> OutputIter&gt;</div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="keyword">inline</span> std::pair&lt;RAIter, OutputIter&gt;</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;_copy_n(RAIter first, Size count, OutputIter result, std::random_access_iterator_tag) {</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; RAIter last = first + count;</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <span class="keywordflow">return</span> std::pair&lt;RAIter, OutputIter&gt;(last, <a class="code" href="group___s_t_l_optimizations.html#ga0881964a0319aa859cda6408c5a1cda2">std::copy</a>(first, last, result));</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;}</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> InputIter, <span class="keyword">class</span> Size, <span class="keyword">class</span> OutputIter&gt;</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="keyword">inline</span> std::pair&lt;InputIter, OutputIter&gt;</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;_copy_n(InputIter first, Size count, OutputIter result) {</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160; <span class="keywordflow">return</span> _copy_n(first, count, result, <span class="keyword">typename</span> std::iterator_traits&lt;InputIter&gt;::iterator_category());</div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;}</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">class</span> InputIter, <span class="keyword">class</span> Size, <span class="keyword">class</span> OutputIter&gt;</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="keyword">inline</span> std::pair&lt;InputIter, OutputIter&gt;</div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;copy_n(InputIter first, Size count, OutputIter result) {</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <span class="keywordflow">return</span> detail::_copy_n(first, count, result);</div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;}</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;</div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; </div>
<div class="line"><a name="l00263"></a><span class="lineno"><a class="line" href="structboost_1_1gil_1_1detail_1_1identity.html"> 263</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structboost_1_1gil_1_1detail_1_1identity.html">identity</a> : <span class="keyword">public</span> std::unary_function&lt;T,T&gt; {</div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <span class="keyword">const</span> T&amp; operator()(<span class="keyword">const</span> T&amp; val)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> val; }</div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;};</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment">/*************************************************************************************************/</span></div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2&gt;</div>
<div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="structboost_1_1gil_1_1detail_1_1plus__asymmetric.html"> 271</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structboost_1_1gil_1_1detail_1_1plus__asymmetric.html">plus_asymmetric</a> : <span class="keyword">public</span> std::binary_function&lt;T1,T2,T1&gt; {</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; T1 operator()(T1 f1, T2 f2)<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">return</span> f1+f2;</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; }</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;};</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="comment">/*************************************************************************************************/</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="structboost_1_1gil_1_1detail_1_1inc.html"> 281</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structboost_1_1gil_1_1detail_1_1inc.html">inc</a> : <span class="keyword">public</span> std::unary_function&lt;T,T&gt; {</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; T operator()(T x)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ++x; }</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;};</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="comment">/*************************************************************************************************/</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="structboost_1_1gil_1_1detail_1_1dec.html"> 289</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structboost_1_1gil_1_1detail_1_1dec.html">dec</a> : <span class="keyword">public</span> std::unary_function&lt;T,T&gt; {</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; T operator()(T x)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> --x; }</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;};</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="comment">// a given MPL RandomAccessSequence (or size if the type is not present)</span></div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Types, <span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="structboost_1_1gil_1_1detail_1_1type__to__index.html"> 296</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structboost_1_1gil_1_1detail_1_1type__to__index.html">type_to_index</a> </div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; : <span class="keyword">public</span> mpl::distance&lt;typename mpl::begin&lt;Types&gt;::type, </div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; typename mpl::find&lt;Types,T&gt;::type&gt;::type {};</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;} <span class="comment">// namespace detail</span></div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;template &lt;typename ColorSpace, typename ChannelMapping = mpl::range_c&lt;int,0,mpl::size&lt;ColorSpace&gt;::value&gt; &gt;</div>
<div class="line"><a name="l00306"></a><span class="lineno"><a class="line" href="structboost_1_1gil_1_1layout.html"> 306</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structboost_1_1gil_1_1layout.html">layout</a> {</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keyword">typedef</span> ColorSpace color_space_t;</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keyword">typedef</span> ChannelMapping channel_mapping_t;</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;};</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> Value, <span class="keyword">typename</span> T1, <span class="keyword">typename</span> T2&gt; <span class="comment">// where value_type&lt;T1&gt; == value_type&lt;T2&gt; == Value</span></div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="keywordtype">void</span> swap_proxy(T1&amp; left, T2&amp; right) {</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; Value tmp = left;</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; left = right;</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; right = tmp;</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;}</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> little_endian() {</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <span class="keywordtype">short</span> tester = 0x0001;</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">return</span> *(<span class="keywordtype">char</span>*)&amp;tester!=0;</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;}</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="keyword">inline</span> <span class="keywordtype">bool</span> big_endian() {</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">return</span> !little_endian();</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;}</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;} } <span class="comment">// namespace boost::gil</span></div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="ttc" id="structboost_1_1gil_1_1detail_1_1plus__asymmetric_html"><div class="ttname"><a href="structboost_1_1gil_1_1detail_1_1plus__asymmetric.html">boost::gil::detail::plus_asymmetric</a></div><div class="ttdoc">plus function object whose arguments may be of different type. </div><div class="ttdef"><b>Definition:</b> utilities.hpp:271</div></div>
<div class="ttc" id="group___s_t_l_optimizations_html_ga0881964a0319aa859cda6408c5a1cda2"><div class="ttname"><a href="group___s_t_l_optimizations.html#ga0881964a0319aa859cda6408c5a1cda2">std::copy</a></div><div class="ttdeci">BOOST_FORCEINLINE boost::gil::pixel&lt; T, Cs &gt; * copy(boost::gil::pixel&lt; T, Cs &gt; *first, boost::gil::pixel&lt; T, Cs &gt; *last, boost::gil::pixel&lt; T, Cs &gt; *dst)</div><div class="ttdoc">Copy when both src and dst are interleaved and of the same type can be just memmove. </div><div class="ttdef"><b>Definition:</b> algorithm.hpp:151</div></div>
<div class="ttc" id="structboost_1_1gil_1_1deref__base_html"><div class="ttname"><a href="structboost_1_1gil_1_1deref__base.html">boost::gil::deref_base</a></div><div class="ttdoc">Helper base class for pixel dereference adaptors. </div><div class="ttdef"><b>Definition:</b> utilities.hpp:182</div></div>
<div class="ttc" id="structboost_1_1gil_1_1detail_1_1dec_html"><div class="ttname"><a href="structboost_1_1gil_1_1detail_1_1dec.html">boost::gil::detail::dec</a></div><div class="ttdoc">operator wrapped in a function object </div><div class="ttdef"><b>Definition:</b> utilities.hpp:289</div></div>
<div class="ttc" id="structboost_1_1gil_1_1detail_1_1identity_html"><div class="ttname"><a href="structboost_1_1gil_1_1detail_1_1identity.html">boost::gil::detail::identity</a></div><div class="ttdoc">identity taken from SGI STL. </div><div class="ttdef"><b>Definition:</b> utilities.hpp:263</div></div>
<div class="ttc" id="structboost_1_1gil_1_1detail_1_1inc_html"><div class="ttname"><a href="structboost_1_1gil_1_1detail_1_1inc.html">boost::gil::detail::inc</a></div><div class="ttdoc">operator++ wrapped in a function object </div><div class="ttdef"><b>Definition:</b> utilities.hpp:281</div></div>
<div class="ttc" id="structboost_1_1gil_1_1layout_html"><div class="ttname"><a href="structboost_1_1gil_1_1layout.html">boost::gil::layout</a></div><div class="ttdoc">Represents a color space and ordering of channels in memory. </div><div class="ttdef"><b>Definition:</b> utilities.hpp:306</div></div>
<div class="ttc" id="classboost_1_1gil_1_1deref__compose_html"><div class="ttname"><a href="classboost_1_1gil_1_1deref__compose.html">boost::gil::deref_compose</a></div><div class="ttdoc">Composes two dereference function objects. Similar to std::unary_compose but needs to pull some typed...</div><div class="ttdef"><b>Definition:</b> utilities.hpp:194</div></div>
<div class="ttc" id="gil__config_8hpp_html"><div class="ttname"><a href="gil__config_8hpp.html">gil_config.hpp</a></div><div class="ttdoc">GIL configuration file. </div></div>
<div class="ttc" id="structboost_1_1gil_1_1detail_1_1type__to__index_html"><div class="ttname"><a href="structboost_1_1gil_1_1detail_1_1type__to__index.html">boost::gil::detail::type_to_index</a></div><div class="ttdoc">Returns the index corresponding to the first occurrance of a given given type in. ...</div><div class="ttdef"><b>Definition:</b> utilities.hpp:296</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Mar 26 2018 16:26:16 for Generic Image Library by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>