Mon, 03 Aug 2009 23:41:04 +0100
added dep/*.d and obj/*.o to hgignore
philpem@5 | 1 | xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
philpem@5 | 2 | <head> |
philpem@5 | 3 | <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></meta> |
philpem@5 | 4 | <title>The CImg Library - C++ Template Image Processing Toolkit</title> |
philpem@5 | 5 | <meta content="David Tschumperle" name="author"></meta> |
philpem@5 | 6 | <link rel="shortcut icon" type="image/x-icon" href="http://cimg.sourceforge.net/favicon.ico"></link> |
philpem@5 | 7 | <link rel="icon" type="image/png" href="favicon.png"></link> |
philpem@5 | 8 | <link href="doxygen.css" rel="stylesheet" type="text/css"> |
philpem@5 | 9 | <link href="tabs.css" rel="stylesheet" type="text/css"> |
philpem@5 | 10 | <style type="text/css"> |
philpem@5 | 11 | <!-- |
philpem@5 | 12 | body {background-color:white; font-family:sans-serif; } |
philpem@5 | 13 | a:active{text-decoration:none; color:#303090} |
philpem@5 | 14 | a:link{text-decoration:none; color:#303090} |
philpem@5 | 15 | a:visited{text-decoration:none; color:#303090} |
philpem@5 | 16 | a:hover{text-decoration:underline; color:#4E9F71} |
philpem@5 | 17 | --> |
philpem@5 | 18 | </style> |
philpem@5 | 19 | <script language="JavaScript" type="text/javascript"> |
philpem@5 | 20 | <!-- Original: Eric King (eric_andrew_king@hotmail.com) is used to display images in popup windows --> |
philpem@5 | 21 | <!-- Web Site: http://redrival.com/eak/ --> |
philpem@5 | 22 | <!-- This script and many more are available free online at --> |
philpem@5 | 23 | <!-- The JavaScript Source!! http://javascript.internet.com --> |
philpem@5 | 24 | <!-- Begin |
philpem@5 | 25 | function NewWindow(mypage, myname, w, h, scroll) { |
philpem@5 | 26 | var winl = (screen.width - w) / 2; |
philpem@5 | 27 | var wint = (screen.height - h) / 2; |
philpem@5 | 28 | winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable' |
philpem@5 | 29 | win = window.open(mypage, myname, winprops) |
philpem@5 | 30 | if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); } |
philpem@5 | 31 | } |
philpem@5 | 32 | // End --> |
philpem@5 | 33 | </script> |
philpem@5 | 34 | </head> |
philpem@5 | 35 | <body> |
philpem@5 | 36 | <table align="center" border="0" cellpadding="0" cellspacing="0" width="100%"> |
philpem@5 | 37 | <tbody><tr><td> |
philpem@5 | 38 | <hr noshade="noshade" size="1" width="90%"></hr> |
philpem@5 | 39 | <center> |
philpem@5 | 40 | <br/> |
philpem@5 | 41 | <a href="http://cimg.sourceforge.net"><img src="http://cimg.sourceforge.net/img/CImgLogo.jpg" alt="" border="0"></img></a><br/> |
philpem@5 | 42 | <br/> |
philpem@5 | 43 | </center> |
philpem@5 | 44 | <hr noshade="noshade" size="1" width="90%"></hr> |
philpem@5 | 45 | <center> |
philpem@5 | 46 | <table bgcolor="#EEEEFF" style="width: 90%; text-align: left; margin-left: auto; margin-right: auto;" border="0" cellpadding="3" cellspacing="0"> |
philpem@5 | 47 | <tbody><tr><td style="text-align: center; vertical-align: top;"> |
philpem@5 | 48 | <font color="#FFFFFF" face="Arial,Helvetica" size="-1"> |
philpem@5 | 49 | <b>[</b> <a target="_parent" href="http://cimg.sourceforge.net/index.shtml">Main</a> <b>]</b> |
philpem@5 | 50 | <b>[</b> <a target="_parent" href="http://cimg.sourceforge.net/news.shtml">News</a><b>] </b> |
philpem@5 | 51 | <b>[</b> <a target="_parent" href="http://cimg.sourceforge.net/download.shtml">Download</a> <b>]</b> |
philpem@5 | 52 | <b>[</b> <a target="_parent" href="http://cimg.sourceforge.net/screenshots.shtml">Screenshots</a> <b>]</b> |
philpem@5 | 53 | <b>[</b> <a target="_parent" href="http://cimg.sourceforge.net/reference/group__cimg__faq.html">FAQ</a> <b>]</b> |
philpem@5 | 54 | <b>[</b> <a target="_parent" href="http://cimg.sourceforge.net/reference/group__cimg__tutorial.html">Tutorial</a> <b>]</b> |
philpem@5 | 55 | <b>[</b> <a target="_parent" href="http://cimg.sourceforge.net/reference/index.html">Documentation</a> <b>]</b> |
philpem@5 | 56 | <b>[</b> <a target="_parent" href="http://sourceforge.net/forum/forum.php?forum_id=334630">Forum</a> <b>]</b> |
philpem@5 | 57 | <b>[</b> <a target="_parent" href="http://cimg.sourceforge.net/chat.shtml">Chat</a> <b>]</b> |
philpem@5 | 58 | <b>[</b> <a target="_parent" href="http://cimg.sourceforge.net/links.shtml">Links</a> <b>]</b> |
philpem@5 | 59 | </font> |
philpem@5 | 60 | </td></tr></tbody> |
philpem@5 | 61 | </table> |
philpem@5 | 62 | </center> |
philpem@5 | 63 | <hr noshade="noshade" size="1" width="90%"></hr> |
philpem@5 | 64 | </td></tr></tbody> |
philpem@5 | 65 | </table> |
philpem@5 | 66 | <!-- Generated by Doxygen 1.5.7.1 --> |
philpem@5 | 67 | <script type="text/javascript"> |
philpem@5 | 68 | <!-- |
philpem@5 | 69 | function changeDisplayState (e){ |
philpem@5 | 70 | var num=this.id.replace(/[^[0-9]/g,''); |
philpem@5 | 71 | var button=this.firstChild; |
philpem@5 | 72 | var sectionDiv=document.getElementById('dynsection'+num); |
philpem@5 | 73 | if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){ |
philpem@5 | 74 | sectionDiv.style.display='block'; |
philpem@5 | 75 | button.src='open.gif'; |
philpem@5 | 76 | }else{ |
philpem@5 | 77 | sectionDiv.style.display='none'; |
philpem@5 | 78 | button.src='closed.gif'; |
philpem@5 | 79 | } |
philpem@5 | 80 | } |
philpem@5 | 81 | function initDynSections(){ |
philpem@5 | 82 | var divs=document.getElementsByTagName('div'); |
philpem@5 | 83 | var sectionCounter=1; |
philpem@5 | 84 | for(var i=0;i<divs.length-1;i++){ |
philpem@5 | 85 | if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){ |
philpem@5 | 86 | var header=divs[i]; |
philpem@5 | 87 | var section=divs[i+1]; |
philpem@5 | 88 | var button=header.firstChild; |
philpem@5 | 89 | if (button!='IMG'){ |
philpem@5 | 90 | divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild); |
philpem@5 | 91 | button=document.createElement('img'); |
philpem@5 | 92 | divs[i].insertBefore(button,divs[i].firstChild); |
philpem@5 | 93 | } |
philpem@5 | 94 | header.style.cursor='pointer'; |
philpem@5 | 95 | header.onclick=changeDisplayState; |
philpem@5 | 96 | header.id='dynheader'+sectionCounter; |
philpem@5 | 97 | button.src='closed.gif'; |
philpem@5 | 98 | section.id='dynsection'+sectionCounter; |
philpem@5 | 99 | section.style.display='none'; |
philpem@5 | 100 | section.style.marginLeft='14px'; |
philpem@5 | 101 | sectionCounter++; |
philpem@5 | 102 | } |
philpem@5 | 103 | } |
philpem@5 | 104 | } |
philpem@5 | 105 | window.onload = initDynSections; |
philpem@5 | 106 | --> |
philpem@5 | 107 | </script> |
philpem@5 | 108 | <div class="navigation" id="top"> |
philpem@5 | 109 | <div class="tabs"> |
philpem@5 | 110 | <ul> |
philpem@5 | 111 | <li><a href="index.html"><span>Main Page</span></a></li> |
philpem@5 | 112 | <li><a href="modules.html"><span>Modules</span></a></li> |
philpem@5 | 113 | <li><a href="namespaces.html"><span>Namespaces</span></a></li> |
philpem@5 | 114 | <li><a href="annotated.html"><span>Classes</span></a></li> |
philpem@5 | 115 | </ul> |
philpem@5 | 116 | </div> |
philpem@5 | 117 | </div> |
philpem@5 | 118 | <div class="contents"> |
philpem@5 | 119 | <h1>Retrieving Command Line Arguments.</h1><table border="0" cellpadding="0" cellspacing="0"> |
philpem@5 | 120 | <tr><td></td></tr> |
philpem@5 | 121 | </table> |
philpem@5 | 122 | The CImg library offers facilities to retrieve command line arguments in a console-based program, as it is a commonly needed operation. Three macros <code>cimg_usage()</code>, <code>cimg_help()</code> and <code>cimg_option()</code> are defined for this purpose. Using these macros allows to easily retrieve options values from the command line. Invoking the compiled executable with the option <code>-h</code> or <code>--help</code> will automatically display the program usage, followed by the list of requested options.<h2><a class="anchor" name="so1"> |
philpem@5 | 123 | The cimg_usage() macro</a></h2> |
philpem@5 | 124 | The macro <code>cimg_usage(usage)</code> may be used to describe the program goal and usage. It is generally inserted one time after the <code>int main(int argc,char **argv)</code> definition.<p> |
philpem@5 | 125 | <dl compact><dt><b>Parameters:</b></dt><dd> |
philpem@5 | 126 | <table border="0" cellspacing="2" cellpadding="0"> |
philpem@5 | 127 | <tr><td valign="top"></td><td valign="top"><em>usage</em> </td><td>: A string describing the program goal and usage. </td></tr> |
philpem@5 | 128 | </table> |
philpem@5 | 129 | </dl> |
philpem@5 | 130 | <dl class="pre" compact><dt><b>Precondition:</b></dt><dd>The function where <code>cimg_usage()</code> is used must have correctly defined <code>argc</code> and <code>argv</code> variables.</dd></dl> |
philpem@5 | 131 | <h2><a class="anchor" name="so1_5"> |
philpem@5 | 132 | The cimg_help() macro</a></h2> |
philpem@5 | 133 | The macro <code>cimg_help(str)</code> will display the string <code>str</code> only if the <code>-help</code> or <code>--help</code> option are invoked when running the programm.<h2><a class="anchor" name="so2"> |
philpem@5 | 134 | The cimg_option() macro</a></h2> |
philpem@5 | 135 | The macro <code>cimg_option(name,default,usage)</code> may be used to retrieve an option value from the command line.<p> |
philpem@5 | 136 | <dl compact><dt><b>Parameters:</b></dt><dd> |
philpem@5 | 137 | <table border="0" cellspacing="2" cellpadding="0"> |
philpem@5 | 138 | <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>: The name of the option to be retrieved from the command line. </td></tr> |
philpem@5 | 139 | <tr><td valign="top"></td><td valign="top"><em>default</em> </td><td>: The default value returned by the macro if no options <code>name</code> has been specified when running the program. </td></tr> |
philpem@5 | 140 | <tr><td valign="top"></td><td valign="top"><em>usage</em> </td><td>: A brief explanation of the option. If <code>usage==0</code>, the option won't appear on the option list when invoking the executable with options <code>-h</code> or <code>--help</code> (hidden option).</td></tr> |
philpem@5 | 141 | </table> |
philpem@5 | 142 | </dl> |
philpem@5 | 143 | <dl class="return" compact><dt><b>Returns:</b></dt><dd><code>cimg_option()</code> returns an object that has the <em>same</em> <em>type</em> than the default value <code>default</code>. The return value is equal to the one specified on the command line. If no such option have been specified, the return value is equal to the default value <code>default</code>. Warning, this can be confusing in some situations (look at the end of the next section). </dd></dl> |
philpem@5 | 144 | <dl class="pre" compact><dt><b>Precondition:</b></dt><dd>The function where <code>cimg_option()</code> is used must have correctly defined <code>argc</code> and <code>argv</code> variables.</dd></dl> |
philpem@5 | 145 | <h2><a class="anchor" name="so3"> |
philpem@5 | 146 | Example of use</a></h2> |
philpem@5 | 147 | The code below uses the macros <code>cimg_usage()</code> and <code>cimg_option()</code>. It loads an image, smoothes it an quantifies it with a specified number of values. <div class="fragment"><pre class="fragment"><span class="preprocessor"> #include "CImg.h"</span> |
philpem@5 | 148 | <span class="keyword">using namespace </span>cimg_library; |
philpem@5 | 149 | <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc,<span class="keywordtype">char</span> **argv) { |
philpem@5 | 150 | cimg_usage(<span class="stringliteral">"Retrieve command line arguments"</span>); |
philpem@5 | 151 | <span class="keyword">const</span> <span class="keywordtype">char</span>* filename = cimg_option(<span class="stringliteral">"-i"</span>,<span class="stringliteral">"image.gif"</span>,<span class="stringliteral">"Input image file"</span>); |
philpem@5 | 152 | <span class="keyword">const</span> <span class="keywordtype">char</span>* output = cimg_option(<span class="stringliteral">"-o"</span>,(<span class="keywordtype">char</span>*)0,<span class="stringliteral">"Output image file"</span>); |
philpem@5 | 153 | <span class="keyword">const</span> <span class="keywordtype">double</span> sigma = cimg_option(<span class="stringliteral">"-s"</span>,1.0,<span class="stringliteral">"Standard variation of the gaussian smoothing"</span>); |
philpem@5 | 154 | <span class="keyword">const</span> <span class="keywordtype">int</span> nblevels = cimg_option(<span class="stringliteral">"-n"</span>,16,<span class="stringliteral">"Number of quantification levels"</span>); |
philpem@5 | 155 | <span class="keyword">const</span> <span class="keywordtype">bool</span> hidden = cimg_option(<span class="stringliteral">"-hidden"</span>,<span class="keyword">false</span>,0); <span class="comment">// This is a hidden option</span> |
philpem@5 | 156 | |
philpem@5 | 157 | CImg<unsigned char> img(filename); |
philpem@5 | 158 | img.blur(sigma).quantize(nblevels); |
philpem@5 | 159 | <span class="keywordflow">if</span> (output) img.save(output); <span class="keywordflow">else</span> img.display(<span class="stringliteral">"Output image"</span>); |
philpem@5 | 160 | <span class="keywordflow">if</span> (hidden) std::fprintf(stderr,<span class="stringliteral">"You found me !\n"</span>); |
philpem@5 | 161 | <span class="keywordflow">return</span> 0; |
philpem@5 | 162 | } |
philpem@5 | 163 | </pre></div><p> |
philpem@5 | 164 | Invoking the corresponding executable with <code>test -h -hidden -n 20 -i foo.jpg</code> will display : <div class="fragment"><pre class="fragment"> |
philpem@5 | 165 | ./test -h -hidden -n 20 -i foo.jpg |
philpem@5 | 166 | |
philpem@5 | 167 | test : Retrieve command line arguments (Oct 16 2004, 12:34:26) |
philpem@5 | 168 | |
philpem@5 | 169 | -i = foo.jpg : Input image file |
philpem@5 | 170 | -o = 0 : Output image file |
philpem@5 | 171 | -s = 1 : Standard variation of the gaussian smoothing |
philpem@5 | 172 | -n = 20 : Number of quantification levels |
philpem@5 | 173 | |
philpem@5 | 174 | You found me ! |
philpem@5 | 175 | </pre></div><p> |
philpem@5 | 176 | <dl class="warning" compact><dt><b>Warning:</b></dt><dd>As the type of object returned by the macro <code>cimg_option(option,default,usage)</code> is defined by the type of <code>default</code>, undesired casts may appear when writting code such as : <div class="fragment"><pre class="fragment"> <span class="keyword">const</span> <span class="keywordtype">double</span> sigma = cimg_option(<span class="stringliteral">"-val"</span>,0,<span class="stringliteral">"A floating point value"</span>); |
philpem@5 | 177 | </pre></div> In this case, <code>sigma</code> will always be equal to an integer (since the default value <code>0</code> is an integer). When passing a float value on the command line, a <em>float</em> <em>to</em> <em>integer</em> cast is then done, truncating the given parameter to an integer value (this is surely not a desired behavior). You must specify <code>0.0</code> as the default value in this case.</dd></dl> |
philpem@5 | 178 | <h2><a class="anchor" name="so4"> |
philpem@5 | 179 | How to learn more about command line options ?</a></h2> |
philpem@5 | 180 | You should take a look at the examples <code>examples/gmic.cpp</code> provided in the CImg Library package. This is a command line based image converter which intensively uses the <code>cimg_option()</code> and <code>cimg_usage()</code> macros to retrieve command line parameters. </div> |
philpem@5 | 181 | <hr noshade="noshade" size="1" width="100%"> |
philpem@5 | 182 | <a href="http://sourceforge.net"> |
philpem@5 | 183 | <img src="http://sourceforge.net/sflogo.php?group_id=96492&type=3" border="0" height="37" width="125"></img> |
philpem@5 | 184 | </a> |
philpem@5 | 185 | <!-- Start of StatCounter Code --> |
philpem@5 | 186 | <script type="text/javascript" language="javascript"> |
philpem@5 | 187 | <!-- |
philpem@5 | 188 | var sc_project=895001; |
philpem@5 | 189 | var sc_invisible=1; |
philpem@5 | 190 | var sc_partition=7; |
philpem@5 | 191 | var sc_security="5ea85181"; |
philpem@5 | 192 | //--> |
philpem@5 | 193 | </script> |
philpem@5 | 194 | <script type="text/javascript" language="javascript" src="http://www.statcounter.com/counter/counter.js"></script><noscript><a href="http://www.statcounter.com/" target="_blank"><img src="http://c8.statcounter.com/counter.php?sc_project=895001&java=0&security=5ea85181&invisible=1" alt="counter stats" border="0"></a> </noscript> |
philpem@5 | 195 | <!-- End of StatCounter Code --> |
philpem@5 | 196 | </body> |
philpem@5 | 197 | </html> |