<!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"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.13"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>lensfun: example.c</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ extensions: ["tex2jax.js"], jax: ["input/TeX","output/HTML-CSS"], }); MathJax.Hub.Config({ messageStyle: "none" }); </script><script type="text/javascript" src="http://lensfun.sourceforge.net/mathjax/MathJax.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">lensfun  <span id="projectnumber">0.3.2.0</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.13 --> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> $(function() { initMenu('',false,false,'search.php','Search'); }); </script> <div id="main-nav"></div> </div><!-- top --> <div class="header"> <div class="headertitle"> <div class="title">example.c</div> </div> </div><!--header--> <div class="contents"> <p>Sample program demonstrating basic usage of C API.</p> <div class="fragment"><div class="line"><span class="comment">/*</span></div><div class="line"><span class="comment"> A simple example of library usage from plain C</span></div><div class="line"><span class="comment">*/</span></div><div class="line"></div><div class="line"><span class="preprocessor">#include "<a class="code" href="lensfun_8h.html">lensfun.h</a>"</span></div><div class="line"><span class="preprocessor">#include <stdio.h></span></div><div class="line"><span class="preprocessor">#include <locale.h></span></div><div class="line"><span class="preprocessor">#include <glib.h></span></div><div class="line"></div><div class="line"><span class="keywordtype">int</span> main ()</div><div class="line">{</div><div class="line"> <span class="keywordtype">int</span> i, j;</div><div class="line"> <span class="keyword">const</span> <span class="keyword">struct </span><a name="_a0"></a><a class="code" href="structlfMount.html">lfMount</a> *<span class="keyword">const</span> *mounts;</div><div class="line"> <span class="keyword">const</span> <span class="keyword">struct </span><a name="_a1"></a><a class="code" href="structlfCamera.html">lfCamera</a> *<span class="keyword">const</span> *cameras;</div><div class="line"> <span class="keyword">const</span> <span class="keyword">struct </span><a name="_a2"></a><a class="code" href="structlfLens.html">lfLens</a> *<span class="keyword">const</span> *lenses;</div><div class="line"> <span class="keyword">struct </span><a name="_a3"></a><a class="code" href="structlfDatabase.html">lfDatabase</a> *ldb;</div><div class="line"> <a class="code" href="group__Auxiliary.html#gaf84c98d42624e1181549de773ac49ad7">lfError</a> e;</div><div class="line"></div><div class="line"> <span class="comment">/* Initialize locale in order to get translated names */</span></div><div class="line"> setlocale (LC_ALL, <span class="stringliteral">""</span>);</div><div class="line"></div><div class="line"> ldb = <a name="a4"></a><a class="code" href="group__Database.html#gafe325d433f28864ccde87dba92e1ccdb">lf_db_new</a> ();</div><div class="line"> <span class="keywordflow">if</span> (!ldb)</div><div class="line"> {</div><div class="line"> fprintf (stderr, <span class="stringliteral">"Failed to create database\n"</span>);</div><div class="line"> <span class="keywordflow">return</span> -1;</div><div class="line"> }</div><div class="line"></div><div class="line"> g_print (<span class="stringliteral">"HomeDataDir: %s\n"</span>, ldb-><a name="a5"></a><a class="code" href="structlfDatabase.html#a447ef93e9d8d443b0f42d0ed7b837184">HomeDataDir</a>);</div><div class="line"></div><div class="line"> <a name="a6"></a><a class="code" href="group__Database.html#ga61b028cbe1b70c5157e7e767efb2958b">lf_db_load</a> (ldb);</div><div class="line"></div><div class="line"> g_print (<span class="stringliteral">"< --------------- < Mounts > --------------- >\n"</span>);</div><div class="line"> mounts = <a name="a7"></a><a class="code" href="group__Database.html#ga7b28821aeff291b19faea19f30f67122">lf_db_get_mounts</a> (ldb);</div><div class="line"> <span class="keywordflow">for</span> (i = 0; mounts [i]; i++)</div><div class="line"> {</div><div class="line"> g_print (<span class="stringliteral">"Mount: %s\n"</span>, <a name="a8"></a><a class="code" href="group__Auxiliary.html#ga8cfd1f7b20aa190b3ac4556301fdf299">lf_mlstr_get</a> (mounts [i]->Name));</div><div class="line"> <span class="keywordflow">if</span> (mounts [i]->Compat)</div><div class="line"> <span class="keywordflow">for</span> (j = 0; mounts [i]-><a name="a9"></a><a class="code" href="structlfMount.html#ac75b5ff5639ea88097083e72613ebefb">Compat</a> [j]; j++)</div><div class="line"> g_print (<span class="stringliteral">"\tCompat: %s\n"</span>, mounts [i]->Compat [j]);</div><div class="line"> }</div><div class="line"></div><div class="line"> g_print (<span class="stringliteral">"< --------------- < Cameras > --------------- >\n"</span>);</div><div class="line"> cameras = <a name="a10"></a><a class="code" href="group__Database.html#gaab916b701cdae0a8233cfd5748b8b938">lf_db_get_cameras</a> (ldb);</div><div class="line"> <span class="keywordflow">for</span> (i = 0; cameras [i]; i++)</div><div class="line"> {</div><div class="line"> g_print (<span class="stringliteral">"Camera: %s / %s %s%s%s\n"</span>,</div><div class="line"> <a class="code" href="group__Auxiliary.html#ga8cfd1f7b20aa190b3ac4556301fdf299">lf_mlstr_get</a> (cameras [i]->Maker),</div><div class="line"> <a class="code" href="group__Auxiliary.html#ga8cfd1f7b20aa190b3ac4556301fdf299">lf_mlstr_get</a> (cameras [i]->Model),</div><div class="line"> cameras [i]->Variant ? <span class="stringliteral">"("</span> : <span class="stringliteral">""</span>,</div><div class="line"> cameras [i]->Variant ? <a class="code" href="group__Auxiliary.html#ga8cfd1f7b20aa190b3ac4556301fdf299">lf_mlstr_get</a> (cameras [i]->Variant) : <span class="stringliteral">""</span>,</div><div class="line"> cameras [i]->Variant ? <span class="stringliteral">")"</span> : <span class="stringliteral">""</span>);</div><div class="line"> g_print (<span class="stringliteral">"\tMount: %s\n"</span>, <a name="a11"></a><a class="code" href="group__Database.html#gab42f6e09d5a9d16d59329e6230a1240a">lf_db_mount_name</a> (ldb, cameras [i]->Mount));</div><div class="line"> g_print (<span class="stringliteral">"\tCrop factor: %g\n"</span>, cameras [i]->CropFactor);</div><div class="line"> }</div><div class="line"></div><div class="line"> g_print (<span class="stringliteral">"< --------------- < Lenses > --------------- >\n"</span>);</div><div class="line"> lenses = <a name="a12"></a><a class="code" href="group__Database.html#ga297cf57b26e675397d49604b7abba11f">lf_db_get_lenses</a> (ldb);</div><div class="line"> <span class="keywordflow">for</span> (i = 0; lenses [i]; i++)</div><div class="line"> {</div><div class="line"> g_print (<span class="stringliteral">"Lens: %s / %s\n"</span>,</div><div class="line"> <a class="code" href="group__Auxiliary.html#ga8cfd1f7b20aa190b3ac4556301fdf299">lf_mlstr_get</a> (lenses [i]->Maker),</div><div class="line"> <a class="code" href="group__Auxiliary.html#ga8cfd1f7b20aa190b3ac4556301fdf299">lf_mlstr_get</a> (lenses [i]->Model));</div><div class="line"> g_print (<span class="stringliteral">"\tCrop factor: %g\n"</span>, lenses [i]->CropFactor);</div><div class="line"> g_print (<span class="stringliteral">"\tAspect ratio: %g\n"</span>, lenses [i]->AspectRatio);</div><div class="line"> g_print (<span class="stringliteral">"\tFocal: %g-%g\n"</span>, lenses [i]->MinFocal, lenses [i]->MaxFocal);</div><div class="line"> g_print (<span class="stringliteral">"\tAperture: %g-%g\n"</span>, lenses [i]->MinAperture, lenses [i]->MaxAperture);</div><div class="line"> g_print (<span class="stringliteral">"\tCenter: %g,%g\n"</span>, lenses [i]->CenterX, lenses [i]->CenterY);</div><div class="line"> <span class="keywordflow">if</span> (lenses [i]->Mounts)</div><div class="line"> <span class="keywordflow">for</span> (j = 0; lenses [i]-><a name="a13"></a><a class="code" href="structlfLens.html#a0204591948b9b9a4b19d697780c36e83">Mounts</a> [j]; j++)</div><div class="line"> g_print (<span class="stringliteral">"\tMount: %s\n"</span>, <a class="code" href="group__Database.html#gab42f6e09d5a9d16d59329e6230a1240a">lf_db_mount_name</a> (ldb, lenses [i]->Mounts [j]));</div><div class="line"> }</div><div class="line"></div><div class="line"> g_print (<span class="stringliteral">"< ---< Saving database into one big file >--- >\n"</span>);</div><div class="line"> e = <a name="a14"></a><a class="code" href="group__Database.html#gaa4cdbd5b21f7ce5fba41001a2109fbfe">lf_db_save_file</a> (ldb, <span class="stringliteral">"example-big.xml"</span>, mounts, cameras, lenses);</div><div class="line"> <span class="keywordflow">if</span> (e != <a name="a15"></a><a class="code" href="group__Auxiliary.html#ggaf84c98d42624e1181549de773ac49ad7a6419ef83b513591890978b83dd296765">LF_NO_ERROR</a>)</div><div class="line"> fprintf (stderr, <span class="stringliteral">"Failed writing to file, error code %d\n"</span>, e);</div><div class="line"></div><div class="line"> <a name="a16"></a><a class="code" href="group__Database.html#gaf62bd4cfa25f2145e4102a70a0baf7b7">lf_db_destroy</a> (ldb);</div><div class="line"> <span class="keywordflow">return</span> 0;</div><div class="line">}</div></div><!-- fragment --> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Fri Dec 15 2017 20:15:22 for lensfun by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.13 </small></address> </body> </html>