Sophie

Sophie

distrib > Mandriva > 2011.0 > x86_64 > by-pkgid > e4e5aca55b6d7244e6bae95bf4fde3ca > files > 240

lib64edelib-devel-2.0-1.x86_64.rpm

<!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"/>
<title>edelib: FontCache Class Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />



</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">edelib
   &#160;<span id="projectnumber">2.0.0</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.6.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="namespaceedelib.html">edelib</a>      </li>
      <li class="navelem"><a class="el" href="classedelib_1_1FontCache.html">FontCache</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">FontCache Class Reference<div class="ingroups"><a class="el" href="group__widgets.html">FLTK widgets and functions</a></div></div>  </div>
</div><!--header-->
<div class="contents">
<!-- doxytag: class="edelib::FontCache" -->
<p>Allow readable font names and cache their access.  
 <a href="classedelib_1_1FontCache.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="FontCache_8h_source.html">edelib/FontCache.h</a>&gt;</code></p>

<p><a href="classedelib_1_1FontCache-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1FontCache.html#a1f75893c594ba6825d220cbd42f33b88">FontCache</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1FontCache.html#ae3e0892dbfacca309b20b242a8fccb4e">~FontCache</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1FontCache.html#adc142abc7e083f84b2eb4b868f931699">load</a> (const char *dir, const char *db=&quot;edelib-font-cache&quot;, const char *prefix=&quot;ede&quot;)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1FontCache.html#aef4e3f36523c526a49710bde7429124b">load</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1FontCache.html#ae683fe63c33c388e9ba1c6392dd477eb">clear</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1FontCache.html#a2890d9256fe7da9e95af7ad5de1e2820">count</a> (void) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1FontCache.html#aa9553fe2a5d6ce95a166ecfafee43be5">find</a> (const char *n, Fl_Font &amp;font, int &amp;size)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1FontCache.html#ad4f48454bf1d261f3dd56fa042755825">for_each_font</a> (void(*)(const char *n, <a class="el" href="structedelib_1_1FontInfo.html">FontInfo</a> *, void *), void *data=((void *) 0))</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1FontCache.html#a2d63c97a97530a367cf5c9afbfe18423">for_each_font_sorted</a> (void(*)(const char *n, <a class="el" href="structedelib_1_1FontInfo.html">FontInfo</a> *, void *), void *data=((void *) 0))</td></tr>
<tr><td colspan="2"><h2><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1FontCache.html#a9195f46c7c891f54d407a70b3c539e46">init_db</a> (const char *dir, const char *db=&quot;edelib-font-cache&quot;, const char *prefix=&quot;ede&quot;)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classedelib_1_1FontCache.html#add1e9b078225bb4ead2a3028bb6c9c1f">init_db</a> (void)</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Allow readable font names and cache their access. </p>
<p>FLTK does not provide any kind of facility for advanced font handling, and this class is to provide at least some basis for this. Each font in FLTK can only be accessed by it's index number, stored in internal font array and set by <em>labelfont()</em>. This scheme is inefficient for non standard fonts (not predefined inside FLTK) as index number can be different each time application starts, causing high probability to select different font face.</p>
<p><a class="el" href="classedelib_1_1FontCache.html" title="Allow readable font names and cache their access.">FontCache</a> tries to fix this; all fonts are prepopulated (either with <em><a class="el" href="classedelib_1_1FontCache.html#add1e9b078225bb4ead2a3028bb6c9c1f">FontCache::init_db()</a></em> or external tool like <em>edelib-update-font-cache</em>), where cache database will be stored in XDG cache directory (</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="namespaceedelib.html#aa6c536fe743cb23fb075ac1b2d86bf2a">user_cache_dir()</a>).</dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000017">Todo:</a></b></dt><dd>complete </dd></dl>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a1f75893c594ba6825d220cbd42f33b88"></a><!-- doxytag: member="edelib::FontCache::FontCache" ref="a1f75893c594ba6825d220cbd42f33b88" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classedelib_1_1FontCache.html">FontCache</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Constructor. </p>

</div>
</div>
<a class="anchor" id="ae3e0892dbfacca309b20b242a8fccb4e"></a><!-- doxytag: member="edelib::FontCache::~FontCache" ref="ae3e0892dbfacca309b20b242a8fccb4e" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">~<a class="el" href="classedelib_1_1FontCache.html">FontCache</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Destructor; closes any remaining database handlers. </p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="ae683fe63c33c388e9ba1c6392dd477eb"></a><!-- doxytag: member="edelib::FontCache::clear" ref="ae683fe63c33c388e9ba1c6392dd477eb" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classedelib_1_1FontCache.html#ae683fe63c33c388e9ba1c6392dd477eb">clear</a> </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Unload database (if loaded) and explicitly clear all internal data. </p>

</div>
</div>
<a class="anchor" id="a2890d9256fe7da9e95af7ad5de1e2820"></a><!-- doxytag: member="edelib::FontCache::count" ref="a2890d9256fe7da9e95af7ad5de1e2820" args="(void) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="classedelib_1_1FontCache.html#a2890d9256fe7da9e95af7ad5de1e2820">count</a> </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return number of fonts inside database. If database is not loaded or is unable to get font number, return -1. </p>

</div>
</div>
<a class="anchor" id="aa9553fe2a5d6ce95a166ecfafee43be5"></a><!-- doxytag: member="edelib::FontCache::find" ref="aa9553fe2a5d6ce95a166ecfafee43be5" args="(const char *n, Fl_Font &amp;font, int &amp;size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classedelib_1_1FontCache.html#aa9553fe2a5d6ce95a166ecfafee43be5">find</a> </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>n</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Fl_Font &amp;&#160;</td>
          <td class="paramname"><em>font</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int &amp;&#160;</td>
          <td class="paramname"><em>size</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Try to find given face and size in given database path. If found, register it as FLTK font and set font id and size. </p>

</div>
</div>
<a class="anchor" id="ad4f48454bf1d261f3dd56fa042755825"></a><!-- doxytag: member="edelib::FontCache::for_each_font" ref="ad4f48454bf1d261f3dd56fa042755825" args="(void(*)(const char *n, FontInfo *, void *), void *data=((void *) 0))" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classedelib_1_1FontCache.html#ad4f48454bf1d261f3dd56fa042755825">for_each_font</a> </td>
          <td>(</td>
          <td class="paramtype">void(*)(const char *n, <a class="el" href="structedelib_1_1FontInfo.html">FontInfo</a> *, void *)&#160;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>data</em> = <code>((void&#160;*)&#160;0)</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This function can be used to iterate all fonts, where on each font will be called callback. Fonts will not be in sorted order. </p>

</div>
</div>
<a class="anchor" id="a2d63c97a97530a367cf5c9afbfe18423"></a><!-- doxytag: member="edelib::FontCache::for_each_font_sorted" ref="a2d63c97a97530a367cf5c9afbfe18423" args="(void(*)(const char *n, FontInfo *, void *), void *data=((void *) 0))" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classedelib_1_1FontCache.html#a2d63c97a97530a367cf5c9afbfe18423">for_each_font_sorted</a> </td>
          <td>(</td>
          <td class="paramtype">void(*)(const char *n, <a class="el" href="structedelib_1_1FontInfo.html">FontInfo</a> *, void *)&#160;</td>
          <td class="paramname">, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>data</em> = <code>((void&#160;*)&#160;0)</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Iterate over fonts, just as <em><a class="el" href="classedelib_1_1FontCache.html#ad4f48454bf1d261f3dd56fa042755825">for_each_font()</a></em>, except fonts will be sorted. To operate like this, all database keys must be fetched first and them sorted in memory. After that, it will access to database content.</p>
<p>This function is clearly inefficient if called on large database. </p>

</div>
</div>
<a class="anchor" id="a9195f46c7c891f54d407a70b3c539e46"></a><!-- doxytag: member="edelib::FontCache::init_db" ref="a9195f46c7c891f54d407a70b3c539e46" args="(const char *dir, const char *db=&quot;edelib&#45;font&#45;cache&quot;, const char *prefix=&quot;ede&quot;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int <a class="el" href="classedelib_1_1FontCache.html#a9195f46c7c891f54d407a70b3c539e46">init_db</a> </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>dir</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>db</em> = <code>&quot;edelib-font-cache&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>prefix</em> = <code>&quot;ede&quot;</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Initialize font cache database on given path and return number of stored fonts. It will call <em>Fl::set_fonts("-*")</em>, which will in turn open display and register all available fonts to FLTK.</p>
<p>This function is not meant to be used directly from application that wants to access font faces. Calling it, it will register unnecessary fonts in FLTK and will increase application memory usage. Here it is so external tools can use it. </p>

</div>
</div>
<a class="anchor" id="add1e9b078225bb4ead2a3028bb6c9c1f"></a><!-- doxytag: member="edelib::FontCache::init_db" ref="add1e9b078225bb4ead2a3028bb6c9c1f" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int <a class="el" href="classedelib_1_1FontCache.html#a9195f46c7c891f54d407a70b3c539e46">init_db</a> </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Call <a class="el" href="classedelib_1_1FontCache.html#add1e9b078225bb4ead2a3028bb6c9c1f">init_db()</a> with <em><a class="el" href="namespaceedelib.html#aa6c536fe743cb23fb075ac1b2d86bf2a">user_cache_dir()</a></em> path. </p>

</div>
</div>
<a class="anchor" id="adc142abc7e083f84b2eb4b868f931699"></a><!-- doxytag: member="edelib::FontCache::load" ref="adc142abc7e083f84b2eb4b868f931699" args="(const char *dir, const char *db=&quot;edelib&#45;font&#45;cache&quot;, const char *prefix=&quot;ede&quot;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classedelib_1_1FontCache.html#adc142abc7e083f84b2eb4b868f931699">load</a> </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>dir</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>db</em> = <code>&quot;edelib-font-cache&quot;</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>prefix</em> = <code>&quot;ede&quot;</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Try to load database in given folder with given name. If fails somehow (database does not exists or it is not valid), it will return false. </p>

</div>
</div>
<a class="anchor" id="aef4e3f36523c526a49710bde7429124b"></a><!-- doxytag: member="edelib::FontCache::load" ref="aef4e3f36523c526a49710bde7429124b" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classedelib_1_1FontCache.html#adc142abc7e083f84b2eb4b868f931699">load</a> </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Call <a class="el" href="classedelib_1_1FontCache.html#aef4e3f36523c526a49710bde7429124b">load()</a> with <em><a class="el" href="namespaceedelib.html#aa6c536fe743cb23fb075ac1b2d86bf2a">user_cache_dir()</a></em> path. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>edelib/<a class="el" href="FontCache_8h_source.html">FontCache.h</a></li>
</ul>
</div><!-- contents -->


<hr class="footer"/><address class="footer"><small>
Generated on Tue Jun 5 2012 17:49:03 for edelib by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.6.1
</small></address>

</body>
</html>