<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>libcaca documentation</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head> <body> <!-- Generated by Doxygen 1.8.11 --> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">libcaca bitmap font handling</div> </div> </div><!--header--> <div class="contents"> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:gaac9551a53a284e9a17e4e67d6400fbf0"><td class="memItemLeft" align="right" valign="top">__extern <a class="el" href="caca_8h.html#adaa37a82c01b73275fa3d446ec511ad4">caca_font_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__caca__font.html#gaac9551a53a284e9a17e4e67d6400fbf0">caca_load_font</a> (void const *, size_t)</td></tr> <tr class="memdesc:gaac9551a53a284e9a17e4e67d6400fbf0"><td class="mdescLeft"> </td><td class="mdescRight">Load a font from memory for future use. <a href="#gaac9551a53a284e9a17e4e67d6400fbf0">More...</a><br /></td></tr> <tr class="separator:gaac9551a53a284e9a17e4e67d6400fbf0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gac5329825d3dbadf2d004ff90d808f15f"><td class="memItemLeft" align="right" valign="top">__extern char const *const * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__caca__font.html#gac5329825d3dbadf2d004ff90d808f15f">caca_get_font_list</a> (void)</td></tr> <tr class="memdesc:gac5329825d3dbadf2d004ff90d808f15f"><td class="mdescLeft"> </td><td class="mdescRight">Get available builtin fonts. <a href="#gac5329825d3dbadf2d004ff90d808f15f">More...</a><br /></td></tr> <tr class="separator:gac5329825d3dbadf2d004ff90d808f15f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga0580a5e28afd8ec5a82bc49b32d4c040"><td class="memItemLeft" align="right" valign="top">__extern int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__caca__font.html#ga0580a5e28afd8ec5a82bc49b32d4c040">caca_get_font_width</a> (<a class="el" href="caca_8h.html#adaa37a82c01b73275fa3d446ec511ad4">caca_font_t</a> const *)</td></tr> <tr class="memdesc:ga0580a5e28afd8ec5a82bc49b32d4c040"><td class="mdescLeft"> </td><td class="mdescRight">Get a font's standard glyph width. <a href="#ga0580a5e28afd8ec5a82bc49b32d4c040">More...</a><br /></td></tr> <tr class="separator:ga0580a5e28afd8ec5a82bc49b32d4c040"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaea47dfd5abc7224d5030fdf3961e7377"><td class="memItemLeft" align="right" valign="top">__extern int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__caca__font.html#gaea47dfd5abc7224d5030fdf3961e7377">caca_get_font_height</a> (<a class="el" href="caca_8h.html#adaa37a82c01b73275fa3d446ec511ad4">caca_font_t</a> const *)</td></tr> <tr class="memdesc:gaea47dfd5abc7224d5030fdf3961e7377"><td class="mdescLeft"> </td><td class="mdescRight">Get a font's standard glyph height. <a href="#gaea47dfd5abc7224d5030fdf3961e7377">More...</a><br /></td></tr> <tr class="separator:gaea47dfd5abc7224d5030fdf3961e7377"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gab6ce2db91a640fb8214e2dd37016756f"><td class="memItemLeft" align="right" valign="top">__extern uint32_t const * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__caca__font.html#gab6ce2db91a640fb8214e2dd37016756f">caca_get_font_blocks</a> (<a class="el" href="caca_8h.html#adaa37a82c01b73275fa3d446ec511ad4">caca_font_t</a> const *)</td></tr> <tr class="memdesc:gab6ce2db91a640fb8214e2dd37016756f"><td class="mdescLeft"> </td><td class="mdescRight">Get a font's list of supported glyphs. <a href="#gab6ce2db91a640fb8214e2dd37016756f">More...</a><br /></td></tr> <tr class="separator:gab6ce2db91a640fb8214e2dd37016756f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga64f055de5dd43137d099aa30e56a5dd6"><td class="memItemLeft" align="right" valign="top">__extern int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__caca__font.html#ga64f055de5dd43137d099aa30e56a5dd6">caca_render_canvas</a> (<a class="el" href="caca_8h.html#aae0f6938d08e6e0abbcd5a8c06504ab8">caca_canvas_t</a> const *, <a class="el" href="caca_8h.html#adaa37a82c01b73275fa3d446ec511ad4">caca_font_t</a> const *, void *, int, int, int)</td></tr> <tr class="memdesc:ga64f055de5dd43137d099aa30e56a5dd6"><td class="mdescLeft"> </td><td class="mdescRight">Render the canvas onto an image buffer. <a href="#ga64f055de5dd43137d099aa30e56a5dd6">More...</a><br /></td></tr> <tr class="separator:ga64f055de5dd43137d099aa30e56a5dd6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gad4c4277906b727073789c570f9f1c47d"><td class="memItemLeft" align="right" valign="top">__extern int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__caca__font.html#gad4c4277906b727073789c570f9f1c47d">caca_free_font</a> (<a class="el" href="caca_8h.html#adaa37a82c01b73275fa3d446ec511ad4">caca_font_t</a> *)</td></tr> <tr class="memdesc:gad4c4277906b727073789c570f9f1c47d"><td class="mdescLeft"> </td><td class="mdescRight">Free a font structure. <a href="#gad4c4277906b727073789c570f9f1c47d">More...</a><br /></td></tr> <tr class="separator:gad4c4277906b727073789c570f9f1c47d"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <p>These functions provide bitmap font handling routines and high quality canvas to bitmap rendering. </p> <h2 class="groupheader">Function Documentation</h2> <a class="anchor" id="gaac9551a53a284e9a17e4e67d6400fbf0"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">__extern <a class="el" href="caca_8h.html#adaa37a82c01b73275fa3d446ec511ad4">caca_font_t</a>* caca_load_font </td> <td>(</td> <td class="paramtype">void const * </td> <td class="paramname"><em>data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">size_t </td> <td class="paramname"><em>size</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>This function loads a font and returns a handle to its internal structure. The handle can then be used with <a class="el" href="group__caca__font.html#ga64f055de5dd43137d099aa30e56a5dd6" title="Render the canvas onto an image buffer. ">caca_render_canvas()</a> for bitmap output.</p> <p>Internal fonts can also be loaded: if <code>size</code> is set to 0, <code>data</code> must be a string containing the internal font name.</p> <p>If <code>size</code> is non-zero, the <code>size</code> bytes of memory at address <code>data</code> are loaded as a font. This memory are must not be freed by the calling program until the font handle has been freed with <a class="el" href="group__caca__font.html#gad4c4277906b727073789c570f9f1c47d" title="Free a font structure. ">caca_free_font()</a>.</p> <p>If an error occurs, NULL is returned and <b>errno</b> is set accordingly:</p><ul> <li><code>ENOENT</code> Requested built-in font does not exist.</li> <li><code>EINVAL</code> Invalid font data in memory area.</li> <li><code>ENOMEM</code> Not enough memory to allocate font structure.</li> </ul> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">data</td><td>The memory area containing the font or its name. </td></tr> <tr><td class="paramname">size</td><td>The size of the memory area, or 0 if the font name is given. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>A font handle or NULL in case of error. </dd></dl> <p>Referenced by <a class="el" href="group__caca__importexport.html#ga264bcf9f821d67f33bd5ee5aa5e048a0">caca_get_export_list()</a>, and <a class="el" href="group__caca__font.html#ga64f055de5dd43137d099aa30e56a5dd6">caca_render_canvas()</a>.</p> </div> </div> <a class="anchor" id="gac5329825d3dbadf2d004ff90d808f15f"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">__extern char const* const* caca_get_font_list </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Return a list of available builtin fonts. The list is a NULL-terminated array of strings.</p> <p>This function never fails.</p> <dl class="section return"><dt>Returns</dt><dd>An array of strings. </dd></dl> <p>Referenced by <a class="el" href="group__caca__importexport.html#ga264bcf9f821d67f33bd5ee5aa5e048a0">caca_get_export_list()</a>, and <a class="el" href="group__caca__font.html#ga64f055de5dd43137d099aa30e56a5dd6">caca_render_canvas()</a>.</p> </div> </div> <a class="anchor" id="ga0580a5e28afd8ec5a82bc49b32d4c040"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">__extern int caca_get_font_width </td> <td>(</td> <td class="paramtype"><a class="el" href="caca_8h.html#adaa37a82c01b73275fa3d446ec511ad4">caca_font_t</a> const * </td> <td class="paramname"><em>f</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Return the standard value for the current font's glyphs. Most glyphs in the font will have this width, except fullwidth characters.</p> <p>This function never fails.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">f</td><td>The font, as returned by <a class="el" href="group__caca__font.html#gaac9551a53a284e9a17e4e67d6400fbf0" title="Load a font from memory for future use. ">caca_load_font()</a> </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The standard glyph width. </dd></dl> <p>Referenced by <a class="el" href="group__caca__importexport.html#ga264bcf9f821d67f33bd5ee5aa5e048a0">caca_get_export_list()</a>, and <a class="el" href="group__caca__font.html#ga64f055de5dd43137d099aa30e56a5dd6">caca_render_canvas()</a>.</p> </div> </div> <a class="anchor" id="gaea47dfd5abc7224d5030fdf3961e7377"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">__extern int caca_get_font_height </td> <td>(</td> <td class="paramtype"><a class="el" href="caca_8h.html#adaa37a82c01b73275fa3d446ec511ad4">caca_font_t</a> const * </td> <td class="paramname"><em>f</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Returns the standard value for the current font's glyphs. Most glyphs in the font will have this height.</p> <p>This function never fails.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">f</td><td>The font, as returned by <a class="el" href="group__caca__font.html#gaac9551a53a284e9a17e4e67d6400fbf0" title="Load a font from memory for future use. ">caca_load_font()</a> </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The standard glyph height. </dd></dl> <p>Referenced by <a class="el" href="group__caca__importexport.html#ga264bcf9f821d67f33bd5ee5aa5e048a0">caca_get_export_list()</a>, and <a class="el" href="group__caca__font.html#ga64f055de5dd43137d099aa30e56a5dd6">caca_render_canvas()</a>.</p> </div> </div> <a class="anchor" id="gab6ce2db91a640fb8214e2dd37016756f"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">__extern uint32_t const* caca_get_font_blocks </td> <td>(</td> <td class="paramtype"><a class="el" href="caca_8h.html#adaa37a82c01b73275fa3d446ec511ad4">caca_font_t</a> const * </td> <td class="paramname"><em>f</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>This function returns the list of Unicode blocks supported by the given font. The list is a zero-terminated list of indices. Here is an example:</p> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> {</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  0x0000, 0x0080, // Basic latin: A, B, C, a, b, c</div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>  0x0080, 0x0100, // Latin-1 supplement: "A, 'e, ^u</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>  0x0530, 0x0590, // Armenian</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  0x0000, 0x0000, // END</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> };</div></div><!-- fragment --><p>This function never fails.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">f</td><td>The font, as returned by <a class="el" href="group__caca__font.html#gaac9551a53a284e9a17e4e67d6400fbf0" title="Load a font from memory for future use. ">caca_load_font()</a> </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The list of Unicode blocks supported by the font. </dd></dl> <p>Referenced by <a class="el" href="group__caca__font.html#ga64f055de5dd43137d099aa30e56a5dd6">caca_render_canvas()</a>.</p> </div> </div> <a class="anchor" id="ga64f055de5dd43137d099aa30e56a5dd6"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">__extern int caca_render_canvas </td> <td>(</td> <td class="paramtype"><a class="el" href="caca_8h.html#aae0f6938d08e6e0abbcd5a8c06504ab8">caca_canvas_t</a> const * </td> <td class="paramname"><em>cv</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="caca_8h.html#adaa37a82c01b73275fa3d446ec511ad4">caca_font_t</a> const * </td> <td class="paramname"><em>f</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>buf</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>width</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>height</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>pitch</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>This function renders the given canvas on an image buffer using a specific font. The pixel format is fixed (32-bit ARGB, 8 bits for each component).</p> <p>The required image width can be computed using <a class="el" href="group__libcaca.html#gad85b2ff4c7f952b3cc32f117343a6375" title="Get the canvas width. ">caca_get_canvas_width()</a> and <a class="el" href="group__caca__font.html#ga0580a5e28afd8ec5a82bc49b32d4c040" title="Get a font's standard glyph width. ">caca_get_font_width()</a>. The required height can be computed using <a class="el" href="group__libcaca.html#gaa529140e8cf31379a6b57af7c37c9d2f" title="Get the canvas height. ">caca_get_canvas_height()</a> and <a class="el" href="group__caca__font.html#gaea47dfd5abc7224d5030fdf3961e7377" title="Get a font's standard glyph height. ">caca_get_font_height()</a>.</p> <p>Glyphs that do not fit in the image buffer are currently not rendered at all. They may be cropped instead in future versions.</p> <p>If an error occurs, -1 is returned and <b>errno</b> is set accordingly:</p><ul> <li><code>EINVAL</code> Specified width, height or pitch is invalid.</li> </ul> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">cv</td><td>The canvas to render </td></tr> <tr><td class="paramname">f</td><td>The font, as returned by <a class="el" href="group__caca__font.html#gaac9551a53a284e9a17e4e67d6400fbf0" title="Load a font from memory for future use. ">caca_load_font()</a> </td></tr> <tr><td class="paramname">buf</td><td>The image buffer </td></tr> <tr><td class="paramname">width</td><td>The width (in pixels) of the image buffer </td></tr> <tr><td class="paramname">height</td><td>The height (in pixels) of the image buffer </td></tr> <tr><td class="paramname">pitch</td><td>The pitch (in bytes) of an image buffer line. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 in case of success, -1 if an error occurred. </dd></dl> <p>References <a class="el" href="group__caca__attributes.html#gaa673f18e9b8b2e52f4e67788cc41df4d">caca_attr_to_argb64()</a>, <a class="el" href="group__caca__font.html#gad4c4277906b727073789c570f9f1c47d">caca_free_font()</a>, <a class="el" href="group__caca__font.html#gab6ce2db91a640fb8214e2dd37016756f">caca_get_font_blocks()</a>, <a class="el" href="group__caca__font.html#gaea47dfd5abc7224d5030fdf3961e7377">caca_get_font_height()</a>, <a class="el" href="group__caca__font.html#gac5329825d3dbadf2d004ff90d808f15f">caca_get_font_list()</a>, <a class="el" href="group__caca__font.html#ga0580a5e28afd8ec5a82bc49b32d4c040">caca_get_font_width()</a>, and <a class="el" href="group__caca__font.html#gaac9551a53a284e9a17e4e67d6400fbf0">caca_load_font()</a>.</p> <p>Referenced by <a class="el" href="group__caca__importexport.html#ga264bcf9f821d67f33bd5ee5aa5e048a0">caca_get_export_list()</a>.</p> </div> </div> <a class="anchor" id="gad4c4277906b727073789c570f9f1c47d"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">__extern int caca_free_font </td> <td>(</td> <td class="paramtype"><a class="el" href="caca_8h.html#adaa37a82c01b73275fa3d446ec511ad4">caca_font_t</a> * </td> <td class="paramname"><em>f</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>This function frees all data allocated by <a class="el" href="group__caca__font.html#gaac9551a53a284e9a17e4e67d6400fbf0" title="Load a font from memory for future use. ">caca_load_font()</a>. The font structure is no longer usable by other libcaca functions. Once this function has returned, the memory area that was given to <a class="el" href="group__caca__font.html#gaac9551a53a284e9a17e4e67d6400fbf0" title="Load a font from memory for future use. ">caca_load_font()</a> can be freed.</p> <p>This function never fails.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">f</td><td>The font, as returned by <a class="el" href="group__caca__font.html#gaac9551a53a284e9a17e4e67d6400fbf0" title="Load a font from memory for future use. ">caca_load_font()</a> </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>This function always returns 0. </dd></dl> <p>Referenced by <a class="el" href="group__caca__importexport.html#ga264bcf9f821d67f33bd5ee5aa5e048a0">caca_get_export_list()</a>, and <a class="el" href="group__caca__font.html#ga64f055de5dd43137d099aa30e56a5dd6">caca_render_canvas()</a>.</p> </div> </div> </div><!-- contents --> </body> </html>