]>
Commit | Line | Data |
---|---|---|
1 | <!-- Copyright 2008 Lubomir Bourdev and Hailin Jin | |
2 | ||
3 | Distributed under the Boost Software License, Version 1.0. | |
4 | (See accompanying file LICENSE_1_0.txt or copy at | |
5 | http://www.boost.org/LICENSE_1_0.txt) | |
6 | --> | |
7 | ||
8 | <!-- | |
9 | Copyright 2005-2007 Adobe Systems Incorporated | |
10 | Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt | |
11 | or a copy at http://stlab.adobe.com/licenses.html) | |
12 | ||
13 | Some files are held under additional license. | |
14 | Please see "http://stlab.adobe.com/licenses.html" for more information. | |
15 | --> | |
16 | ||
17 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | |
18 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |
19 | <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> | |
20 | ||
21 | <head> | |
22 | <TITLE>Generic Image Library: STL-like Algorithms</TITLE> | |
23 | <META HTTP-EQUIV="content-type" CONTENT="text/html;charset=ISO-8859-1"/> | |
24 | <LINK TYPE="text/css" REL="stylesheet" HREF="adobe_source.css"/> | |
25 | </head> | |
26 | <body> | |
27 | <table border="0" cellspacing="0" cellpadding="0" style='width: 100%; margin: 0; padding: 0'><tr> | |
28 | <td width="100%" valign="top" style='padding-left: 10px; padding-right: 10px; padding-bottom: 10px'> | |
29 | <div class="qindex"><a class="qindex" href="index.html">Modules</a> | |
30 | | <a class="qindex" href="classes.html">Alphabetical List</a> | |
31 | | <a class="qindex" href="annotated.html">Class List</a> | |
32 | | <a class="qindex" href="dirs.html">Directories</a> | |
33 | | <a class="qindex" href="files.html">File List</a> | |
34 | | <a class="qindex" href="../index.html">GIL Home Page</a> | |
35 | </div> | |
36 | <!-- End Header --> | |
37 | <!-- Generated by Doxygen 1.5.6 --> | |
38 | <div class="contents"> | |
39 | <h1>STL-like Algorithms<br> | |
40 | <small> | |
41 | [<a class="el" href="g_i_l_0138.html">Algorithms and Utility Functions</a>]</small> | |
42 | </h1><hr><a name="_details"></a><h2>Detailed Description</h2> | |
43 | Image view-equivalents of STL algorithms. | |
44 | <p> | |
45 | Image views provide 1D iteration of their pixels via <code>begin()</code> and <code>end()</code> methods, which makes it possible to use STL algorithms with them. However, using nested loops over X and Y is in many cases more efficient. The algorithms in this section resemble STL algorithms, but they abstract away the nested loops and take views (as opposed to ranges) as input.<p> | |
46 | Most algorithms check whether the <a class="el" href="g_i_l_0038.html" title="container interface over image view. Models ImageConcept, PixelBasedConcept">image</a> views are 1D-traversable. A 1D-traversable <a class="el" href="g_i_l_0038.html" title="container interface over image view. Models ImageConcept, PixelBasedConcept">image</a> view has no gaps at the end of the rows. In other words, if an x_iterator of that view is advanced past the last <a class="el" href="g_i_l_0599.html" title="Represents a pixel value (a container of channels). Models: HomogeneousColorBaseValueConcept...">pixel</a> in a row it will move to the first <a class="el" href="g_i_l_0599.html" title="Represents a pixel value (a container of channels). Models: HomogeneousColorBaseValueConcept...">pixel</a> of the next row. When <a class="el" href="g_i_l_0038.html" title="container interface over image view. Models ImageConcept, PixelBasedConcept">image</a> views are 1D-traversable, the algorithms use a single loop and run more efficiently. If one or more of the input views are not 1D-traversable, the algorithms fall-back to an X-loop nested inside a Y-loop.<p> | |
47 | The algorithms typically delegate the work to their corresponding STL algorithms. For example, <code>copy_pixels</code> calls <code>std::copy</code> either for each row, or, when the images are 1D-traversable, once for all pixels.<p> | |
48 | In addition, overloads are sometimes provided for the STL algorithms. For example, std::copy for planar iterators is overloaded to perform <code>std::copy</code> for each of the planes. <code>std::copy</code> over bitwise-copiable pixels results in std::copy over unsigned char, which STL typically implements via <code>memmove</code>.<p> | |
49 | As a result <code>copy_pixels</code> may result in a single call to <code>memmove</code> for interleaved 1D-traversable views, or one per each plane of planar 1D-traversable views, or one per each row of interleaved non-1D-traversable images, etc. | |
50 | <p> | |
51 | <table border="0" cellpadding="0" cellspacing="0"> | |
52 | <tr><td></td></tr> | |
53 | <tr><td colspan="2"><br><h2>Modules</h2></td></tr> | |
54 | <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0145.html">copy_pixels</a></td></tr> | |
55 | ||
56 | <tr><td class="mdescLeft"> </td><td class="mdescRight">std::copy for image views <br></td></tr> | |
57 | ||
58 | <p> | |
59 | <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0144.html">copy_and_convert_pixels</a></td></tr> | |
60 | ||
61 | <tr><td class="mdescLeft"> </td><td class="mdescRight">copies src view into dst view, color converting if necessary. <br></td></tr> | |
62 | ||
63 | <p> | |
64 | <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0149.html">fill_pixels</a></td></tr> | |
65 | ||
66 | <tr><td class="mdescLeft"> </td><td class="mdescRight">std::fill for image views <br></td></tr> | |
67 | ||
68 | <p> | |
69 | <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0147.html">destruct_pixels</a></td></tr> | |
70 | ||
71 | <tr><td class="mdescLeft"> </td><td class="mdescRight">invokes the destructor on every <a class="el" href="g_i_l_0599.html" title="Represents a pixel value (a container of channels). Models: HomogeneousColorBaseValueConcept...">pixel</a> of an <a class="el" href="g_i_l_0038.html" title="container interface over image view. Models ImageConcept, PixelBasedConcept">image</a> view <br></td></tr> | |
72 | ||
73 | <p> | |
74 | <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0156.html">uninitialized_fill_pixels</a></td></tr> | |
75 | ||
76 | <tr><td class="mdescLeft"> </td><td class="mdescRight">std::uninitialized_fill for <a class="el" href="g_i_l_0038.html" title="container interface over image view. Models ImageConcept, PixelBasedConcept">image</a> views <br></td></tr> | |
77 | ||
78 | <p> | |
79 | <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0146.html">default_construct_pixels</a></td></tr> | |
80 | ||
81 | <tr><td class="mdescLeft"> </td><td class="mdescRight">invokes the default constructor on every <a class="el" href="g_i_l_0599.html" title="Represents a pixel value (a container of channels). Models: HomogeneousColorBaseValueConcept...">pixel</a> of an <a class="el" href="g_i_l_0038.html" title="container interface over image view. Models ImageConcept, PixelBasedConcept">image</a> view <br></td></tr> | |
82 | ||
83 | <p> | |
84 | <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0155.html">uninitialized_copy_pixels</a></td></tr> | |
85 | ||
86 | <tr><td class="mdescLeft"> </td><td class="mdescRight">std::uninitialized_copy for <a class="el" href="g_i_l_0038.html" title="container interface over image view. Models ImageConcept, PixelBasedConcept">image</a> views <br></td></tr> | |
87 | ||
88 | <p> | |
89 | <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0150.html">for_each_pixel</a></td></tr> | |
90 | ||
91 | <tr><td class="mdescLeft"> </td><td class="mdescRight">std::for_each for <a class="el" href="g_i_l_0038.html" title="container interface over image view. Models ImageConcept, PixelBasedConcept">image</a> views <br></td></tr> | |
92 | ||
93 | <p> | |
94 | <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0151.html">for_each_pixel_position</a></td></tr> | |
95 | ||
96 | <tr><td class="mdescLeft"> </td><td class="mdescRight">adobe::for_each_position for <a class="el" href="g_i_l_0038.html" title="container interface over image view. Models ImageConcept, PixelBasedConcept">image</a> views (passes locators, instead of <a class="el" href="g_i_l_0599.html" title="Represents a pixel value (a container of channels). Models: HomogeneousColorBaseValueConcept...">pixel</a> references, to the function object) <br></td></tr> | |
97 | ||
98 | <p> | |
99 | <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0152.html">generate_pixels</a></td></tr> | |
100 | ||
101 | <tr><td class="mdescLeft"> </td><td class="mdescRight">std::generate for <a class="el" href="g_i_l_0038.html" title="container interface over image view. Models ImageConcept, PixelBasedConcept">image</a> views <br></td></tr> | |
102 | ||
103 | <p> | |
104 | <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0148.html">equal_pixels</a></td></tr> | |
105 | ||
106 | <tr><td class="mdescLeft"> </td><td class="mdescRight">std::equal for <a class="el" href="g_i_l_0038.html" title="container interface over image view. Models ImageConcept, PixelBasedConcept">image</a> views <br></td></tr> | |
107 | ||
108 | <p> | |
109 | <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0154.html">transform_pixels</a></td></tr> | |
110 | ||
111 | <tr><td class="mdescLeft"> </td><td class="mdescRight">std::transform for <a class="el" href="g_i_l_0038.html" title="container interface over image view. Models ImageConcept, PixelBasedConcept">image</a> views <br></td></tr> | |
112 | ||
113 | <p> | |
114 | <tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0153.html">transform_pixel_positions</a></td></tr> | |
115 | ||
116 | <tr><td class="mdescLeft"> </td><td class="mdescRight">adobe::transform_positions for <a class="el" href="g_i_l_0038.html" title="container interface over image view. Models ImageConcept, PixelBasedConcept">image</a> views (passes locators, instead of <a class="el" href="g_i_l_0599.html" title="Represents a pixel value (a container of channels). Models: HomogeneousColorBaseValueConcept...">pixel</a> references, to the function object) <br></td></tr> | |
117 | ||
118 | <p> | |
119 | <tr><td colspan="2"><br><h2>Classes</h2></td></tr> | |
120 | <tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="g_i_l_0387.html">binary_operation_obj</a></td></tr> | |
121 | ||
122 | <tr><td class="mdescLeft"> </td><td class="mdescRight">A generic binary operation on views<p> | |
123 | 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. <a href="g_i_l_0387.html#_details">More...</a><br></td></tr> | |
124 | </table> | |
125 | </div> | |
126 | <hr size="1"><address style="text-align: right;"><small>Generated on Sat May 2 13:50:16 2009 for Generic Image Library by | |
127 | <a href="http://www.doxygen.org/index.html"> | |
128 | <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address> | |
129 | </body> | |
130 | </html> |