<!-- 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: binary_operation_obj 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_0387.html">binary_operation_obj</a>
  </div>
<div class="contents">
<h1>binary_operation_obj Struct Template Reference<br>
<small>
[<a class="el" href="g_i_l_0143.html">STL-like Algorithms</a>]</small>
</h1><!-- doxytag: class="boost::gil::binary_operation_obj" --><code>#include &lt;<a class="el" href="g_i_l_0001.html">algorithm.hpp</a>&gt;</code>
<p>
Inherited by copy_and_convert_pixels_fn, copy_pixels_fn, and equal_pixels_fn.
<p>

<p>
<a href="g_i_l_0386.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
<h3>template&lt;typename Derived, typename Result = void&gt;<br>
 struct boost::gil::binary_operation_obj&lt; Derived, Result &gt;</h3>

A generic binary operation on views<p>
Use this class as a convenience superclass when defining an operation for any <a class="el" href="g_i_l_0038.html" title="container interface over image view. Models ImageConcept, PixelBasedConcept">image</a> views. Many operations have different behavior when the two views are compatible. This class checks for compatibility and invokes apply_compatible(V1,V2) or apply_incompatible(V1,V2) of the subclass. You must provide apply_compatible(V1,V2) method in your subclass, but apply_incompatible(V1,V2) is not required and the default throws std::bad_cast. <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="b8b34e9545bb5367e1eb8e9ba9758375"></a><!-- doxytag: member="boost::gil::binary_operation_obj::result_type" ref="b8b34e9545bb5367e1eb8e9ba9758375" args="" -->
typedef Result&nbsp;</td><td class="memItemRight" valign="bottom"><b>result_type</b></td></tr>

<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="eb2c54f346752ba0fb2e42f9f79739f8"></a><!-- doxytag: member="boost::gil::binary_operation_obj::operator()" ref="eb2c54f346752ba0fb2e42f9f79739f8" args="(const std::pair&lt; const V1 *, const V2 * &gt; &amp;p) const " -->
template&lt;typename V1, typename V2&gt; </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">GIL_FORCEINLINE result_type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><b>operator()</b> (const std::pair&lt; const V1 *, const V2 * &gt; &amp;p) const </td></tr>

<tr><td class="memTemplParams" nowrap colspan="2"><a class="anchor" name="8da86345d168eeb03a90f4b798d236a0"></a><!-- doxytag: member="boost::gil::binary_operation_obj::operator()" ref="8da86345d168eeb03a90f4b798d236a0" args="(const V1 &amp;v1, const V2 &amp;v2) const " -->
template&lt;typename V1, typename V2&gt; </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">GIL_FORCEINLINE result_type&nbsp;</td><td class="memTemplItemRight" valign="bottom"><b>operator()</b> (const V1 &amp;v1, const V2 &amp;v2) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1bc4473befbab9d1e1d4ca395ff88461"></a><!-- doxytag: member="boost::gil::binary_operation_obj::operator()" ref="1bc4473befbab9d1e1d4ca395ff88461" args="(const error_t &amp;) const " -->
result_type&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator()</b> (const error_t &amp;) const </td></tr>

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