<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" | |
"http://www.w3.org/TR/html4/loose.dtd"> | |
<html> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | |
<title>FreeType-2.6.2 API Reference</title> | |
<style type="text/css"> | |
a:link { color: #0000EF; } | |
a:visited { color: #51188E; } | |
a:hover { color: #FF0000; } | |
body { font-family: Verdana, Geneva, Arial, Helvetica, serif; | |
color: #000000; | |
background: #FFFFFF; | |
width: 87%; | |
margin: auto; } | |
div.section { width: 75%; | |
margin: auto; } | |
div.section hr { margin: 4ex 0 1ex 0; } | |
div.section h4 { background-color: #EEEEFF; | |
font-size: medium; | |
font-style: oblique; | |
font-weight: bold; | |
margin: 3ex 0 1.5ex 9%; | |
padding: 0.3ex 0 0.3ex 1%; } | |
div.section p { margin: 1.5ex 0 1.5ex 10%; } | |
div.section pre { margin: 3ex 0 3ex 9%; | |
background-color: #D6E8FF; | |
padding: 2ex 0 2ex 1%; } | |
div.section table.fields { width: 90%; | |
margin: 1.5ex 0 1.5ex 10%; } | |
div.section table.toc { width: 95%; | |
margin: 1.5ex 0 1.5ex 5%; } | |
div.timestamp { text-align: center; | |
font-size: 69%; | |
margin: 1.5ex 0 1.5ex 0; } | |
h1 { text-align: center; } | |
h3 { font-size: medium; | |
margin: 4ex 0 1.5ex 0; } | |
p { text-align: justify; } | |
pre.colored { color: blue; } | |
span.keyword { font-family: monospace; | |
text-align: left; | |
white-space: pre; | |
color: darkblue; } | |
table.fields td.val { font-weight: bold; | |
text-align: right; | |
width: 30%; | |
vertical-align: baseline; | |
padding: 1ex 1em 1ex 0; } | |
table.fields td.desc { vertical-align: baseline; | |
padding: 1ex 0 1ex 1em; } | |
table.fields td.desc p:first-child { margin: 0; } | |
table.fields td.desc p { margin: 1.5ex 0 0 0; } | |
table.index { margin: 6ex auto 6ex auto; | |
border: 0; | |
border-collapse: separate; | |
border-spacing: 1em 0.3ex; } | |
table.index tr { padding: 0; } | |
table.index td { padding: 0; } | |
table.index-toc-link { width: 100%; | |
border: 0; | |
border-spacing: 0; | |
margin: 1ex 0 1ex 0; } | |
table.index-toc-link td.left { padding: 0 0.5em 0 0.5em; | |
font-size: 83%; | |
text-align: left; } | |
table.index-toc-link td.middle { padding: 0 0.5em 0 0.5em; | |
font-size: 83%; | |
text-align: center; } | |
table.index-toc-link td.right { padding: 0 0.5em 0 0.5em; | |
font-size: 83%; | |
text-align: right; } | |
table.synopsis { margin: 6ex auto 6ex auto; | |
border: 0; | |
border-collapse: separate; | |
border-spacing: 2em 0.6ex; } | |
table.synopsis tr { padding: 0; } | |
table.synopsis td { padding: 0; } | |
table.toc td.link { width: 30%; | |
text-align: right; | |
vertical-align: baseline; | |
padding: 1ex 1em 1ex 0; } | |
table.toc td.desc { vertical-align: baseline; | |
padding: 1ex 0 1ex 1em; | |
text-align: left; } | |
table.toc td.desc p:first-child { margin: 0; | |
text-align: left; } | |
table.toc td.desc p { margin: 1.5ex 0 0 0; | |
text-align: left; } | |
</style> | |
</head> | |
<body> | |
<table class="index-toc-link"><tr><td class="left">[<a href="ft2-index.html">Index</a>]</td><td class="right">[<a href="ft2-toc.html">TOC</a>]</td></tr></table> | |
<h1>FreeType-2.6.2 API Reference</h1> | |
<h1 id="error_enumerations">Error Enumerations</h1> | |
<p>The header file ‘fterrors.h’ (which is automatically included by ‘freetype.h’ defines the handling of FreeType's enumeration constants. It can also be used to generate error message strings with a small macro trick explained below.</p> | |
<p><b>Error</b> <b>Formats</b></p> | |
<p>The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be defined in ‘ftoption.h’ in order to make the higher byte indicate the module where the error has happened (this is not compatible with standard builds of FreeType&nbsp;2, however). See the file ‘ftmoderr.h’ for more details.</p> | |
<p><b>Error</b> <b>Message</b> <b>Strings</b></p> | |
<p>Error definitions are set up with special macros that allow client applications to build a table of error message strings. The strings are not included in a normal build of FreeType&nbsp;2 to save space (most client applications do not use them).</p> | |
<p>To do so, you have to define the following macros before including this file.</p> | |
<pre class="colored"> | |
FT_ERROR_START_LIST | |
</pre> | |
<p>This macro is called before anything else to define the start of the error list. It is followed by several FT_ERROR_DEF calls.</p> | |
<pre class="colored"> | |
FT_ERROR_DEF( e, v, s ) | |
</pre> | |
<p>This macro is called to define one single error. ‘e’ is the error code identifier (e.g., ‘Invalid_Argument’), ‘v’ is the error's numerical value, and ‘s’ is the corresponding error string.</p> | |
<pre class="colored"> | |
FT_ERROR_END_LIST | |
</pre> | |
<p>This macro ends the list.</p> | |
<p>Additionally, you have to undefine ‘__FTERRORS_H__’ before #including this file.</p> | |
<p>Here is a simple example.</p> | |
<pre class="colored"> | |
#undef __FTERRORS_H__ | |
#define FT_ERRORDEF( e, v, s ) { e, s }, | |
#define FT_ERROR_START_LIST { | |
#define FT_ERROR_END_LIST { 0, NULL } }; | |
const struct | |
{ | |
int err_code; | |
const char* err_msg; | |
} ft_errors[] = | |
#include FT_ERRORS_H | |
</pre> | |
<p>Note that ‘FT_Err_Ok’ is <i>not</i> defined with ‘FT_ERRORDEF’ but with ‘FT_NOERRORDEF’; it is always zero.</p> | |
</body> | |
</html> |