Upload tizen 2.0 beta source
[framework/graphics/freetype.git] / docs / reference / ft2-computations.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2 "http://www.w3.org/TR/html4/loose.dtd">
3 <html>
4 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6 <title>FreeType-2.4.9 API Reference</title>
7 <style type="text/css">
8   body { font-family: Verdana, Geneva, Arial, Helvetica, serif;
9          color: #000000;
10          background: #FFFFFF; }
11
12   p { text-align: justify; }
13   h1 { text-align: center; }
14   li { text-align: justify; }
15   td { padding: 0 0.5em 0 0.5em; }
16   td.left { padding: 0 0.5em 0 0.5em;
17             text-align: left; }
18
19   a:link { color: #0000EF; }
20   a:visited { color: #51188E; }
21   a:hover { color: #FF0000; }
22
23   span.keyword { font-family: monospace;
24                  text-align: left;
25                  white-space: pre;
26                  color: darkblue; }
27
28   pre.colored { color: blue; }
29
30   ul.empty { list-style-type: none; }
31 </style>
32 </head>
33 <body>
34
35 <table align=center><tr><td><font size=-1>[<a href="ft2-index.html">Index</a>]</font></td>
36 <td width="100%"></td>
37 <td><font size=-1>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
38 <center><h1>FreeType-2.4.9 API Reference</h1></center>
39
40 <center><h1>
41 Computations
42 </h1></center>
43 <h2>Synopsis</h2>
44 <table align=center cellspacing=5 cellpadding=0 border=0>
45 <tr><td></td><td><a href="#FT_MulDiv">FT_MulDiv</a></td><td></td><td><a href="#FT_Matrix_Invert">FT_Matrix_Invert</a></td><td></td><td><a href="#FT_Tan">FT_Tan</a></td></tr>
46 <tr><td></td><td><a href="#FT_MulFix">FT_MulFix</a></td><td></td><td><a href="#FT_Angle">FT_Angle</a></td><td></td><td><a href="#FT_Atan2">FT_Atan2</a></td></tr>
47 <tr><td></td><td><a href="#FT_DivFix">FT_DivFix</a></td><td></td><td><a href="#FT_ANGLE_PI">FT_ANGLE_PI</a></td><td></td><td><a href="#FT_Angle_Diff">FT_Angle_Diff</a></td></tr>
48 <tr><td></td><td><a href="#FT_RoundFix">FT_RoundFix</a></td><td></td><td><a href="#FT_ANGLE_2PI">FT_ANGLE_2PI</a></td><td></td><td><a href="#FT_Vector_Unit">FT_Vector_Unit</a></td></tr>
49 <tr><td></td><td><a href="#FT_CeilFix">FT_CeilFix</a></td><td></td><td><a href="#FT_ANGLE_PI2">FT_ANGLE_PI2</a></td><td></td><td><a href="#FT_Vector_Rotate">FT_Vector_Rotate</a></td></tr>
50 <tr><td></td><td><a href="#FT_FloorFix">FT_FloorFix</a></td><td></td><td><a href="#FT_ANGLE_PI4">FT_ANGLE_PI4</a></td><td></td><td><a href="#FT_Vector_Length">FT_Vector_Length</a></td></tr>
51 <tr><td></td><td><a href="#FT_Vector_Transform">FT_Vector_Transform</a></td><td></td><td><a href="#FT_Sin">FT_Sin</a></td><td></td><td><a href="#FT_Vector_Polarize">FT_Vector_Polarize</a></td></tr>
52 <tr><td></td><td><a href="#FT_Matrix_Multiply">FT_Matrix_Multiply</a></td><td></td><td><a href="#FT_Cos">FT_Cos</a></td><td></td><td><a href="#FT_Vector_From_Polar">FT_Vector_From_Polar</a></td></tr>
53 </table><br><br>
54
55 <table align=center width="87%"><tr><td>
56 <p>This section contains various functions used to perform computations on 16.16 fixed-float numbers or 2d vectors.</p>
57 </td></tr></table><br>
58 <table align=center width="75%"><tr><td>
59 <h4><a name="FT_MulDiv">FT_MulDiv</a></h4>
60 <table align=center width="87%"><tr><td>
61 Defined in FT_FREETYPE_H (freetype/freetype.h).
62 </td></tr></table><br>
63 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
64
65   FT_EXPORT( <a href="ft2-basic_types.html#FT_Long">FT_Long</a> )
66   <b>FT_MulDiv</b>( <a href="ft2-basic_types.html#FT_Long">FT_Long</a>  a,
67              <a href="ft2-basic_types.html#FT_Long">FT_Long</a>  b,
68              <a href="ft2-basic_types.html#FT_Long">FT_Long</a>  c );
69
70 </pre></table><br>
71 <table align=center width="87%"><tr><td>
72 <p>A very simple function used to perform the computation &lsquo;(a*b)/c&rsquo; with maximal accuracy (it uses a 64-bit intermediate integer whenever necessary).</p>
73 <p>This function isn't necessarily as fast as some processor specific operations, but is at least completely portable.</p>
74 </td></tr></table><br>
75 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
76 <p></p>
77 <table cellpadding=3 border=0>
78 <tr valign=top><td><b>a</b></td><td>
79 <p>The first multiplier.</p>
80 </td></tr>
81 <tr valign=top><td><b>b</b></td><td>
82 <p>The second multiplier.</p>
83 </td></tr>
84 <tr valign=top><td><b>c</b></td><td>
85 <p>The divisor.</p>
86 </td></tr>
87 </table>
88 </td></tr></table>
89 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td>
90 <p>The result of &lsquo;(a*b)/c&rsquo;. This function never traps when trying to divide by zero; it simply returns &lsquo;MaxInt&rsquo; or &lsquo;MinInt&rsquo; depending on the signs of &lsquo;a&rsquo; and &lsquo;b&rsquo;.</p>
91 </td></tr></table>
92 </td></tr></table>
93 <hr width="75%">
94 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
95 <td width="100%"></td>
96 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
97
98 <table align=center width="75%"><tr><td>
99 <h4><a name="FT_MulFix">FT_MulFix</a></h4>
100 <table align=center width="87%"><tr><td>
101 Defined in FT_FREETYPE_H (freetype/freetype.h).
102 </td></tr></table><br>
103 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
104
105   FT_EXPORT( <a href="ft2-basic_types.html#FT_Long">FT_Long</a> )
106   <b>FT_MulFix</b>( <a href="ft2-basic_types.html#FT_Long">FT_Long</a>  a,
107              <a href="ft2-basic_types.html#FT_Long">FT_Long</a>  b );
108
109 </pre></table><br>
110 <table align=center width="87%"><tr><td>
111 <p>A very simple function used to perform the computation &lsquo;(a*b)/0x10000&rsquo; with maximal accuracy. Most of the time this is used to multiply a given value by a 16.16 fixed float factor.</p>
112 </td></tr></table><br>
113 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
114 <p></p>
115 <table cellpadding=3 border=0>
116 <tr valign=top><td><b>a</b></td><td>
117 <p>The first multiplier.</p>
118 </td></tr>
119 <tr valign=top><td><b>b</b></td><td>
120 <p>The second multiplier. Use a 16.16 factor here whenever possible (see note below).</p>
121 </td></tr>
122 </table>
123 </td></tr></table>
124 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td>
125 <p>The result of &lsquo;(a*b)/0x10000&rsquo;.</p>
126 </td></tr></table>
127 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
128 <p>This function has been optimized for the case where the absolute value of &lsquo;a&rsquo; is less than 2048, and &lsquo;b&rsquo; is a 16.16 scaling factor. As this happens mainly when scaling from notional units to fractional pixels in FreeType, it resulted in noticeable speed improvements between versions 2.x and 1.x.</p>
129 <p>As a conclusion, always try to place a 16.16 factor as the <i>second</i> argument of this function; this can make a great difference.</p>
130 </td></tr></table>
131 </td></tr></table>
132 <hr width="75%">
133 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
134 <td width="100%"></td>
135 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
136
137 <table align=center width="75%"><tr><td>
138 <h4><a name="FT_DivFix">FT_DivFix</a></h4>
139 <table align=center width="87%"><tr><td>
140 Defined in FT_FREETYPE_H (freetype/freetype.h).
141 </td></tr></table><br>
142 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
143
144   FT_EXPORT( <a href="ft2-basic_types.html#FT_Long">FT_Long</a> )
145   <b>FT_DivFix</b>( <a href="ft2-basic_types.html#FT_Long">FT_Long</a>  a,
146              <a href="ft2-basic_types.html#FT_Long">FT_Long</a>  b );
147
148 </pre></table><br>
149 <table align=center width="87%"><tr><td>
150 <p>A very simple function used to perform the computation &lsquo;(a*0x10000)/b&rsquo; with maximal accuracy. Most of the time, this is used to divide a given value by a 16.16 fixed float factor.</p>
151 </td></tr></table><br>
152 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
153 <p></p>
154 <table cellpadding=3 border=0>
155 <tr valign=top><td><b>a</b></td><td>
156 <p>The first multiplier.</p>
157 </td></tr>
158 <tr valign=top><td><b>b</b></td><td>
159 <p>The second multiplier. Use a 16.16 factor here whenever possible (see note below).</p>
160 </td></tr>
161 </table>
162 </td></tr></table>
163 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td>
164 <p>The result of &lsquo;(a*0x10000)/b&rsquo;.</p>
165 </td></tr></table>
166 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
167 <p>The optimization for FT_DivFix() is simple: If (a&nbsp;&lt;&lt;&nbsp;16) fits in 32&nbsp;bits, then the division is computed directly. Otherwise, we use a specialized version of <a href="ft2-computations.html#FT_MulDiv">FT_MulDiv</a>.</p>
168 </td></tr></table>
169 </td></tr></table>
170 <hr width="75%">
171 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
172 <td width="100%"></td>
173 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
174
175 <table align=center width="75%"><tr><td>
176 <h4><a name="FT_RoundFix">FT_RoundFix</a></h4>
177 <table align=center width="87%"><tr><td>
178 Defined in FT_FREETYPE_H (freetype/freetype.h).
179 </td></tr></table><br>
180 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
181
182   FT_EXPORT( <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a> )
183   <b>FT_RoundFix</b>( <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a>  a );
184
185 </pre></table><br>
186 <table align=center width="87%"><tr><td>
187 <p>A very simple function used to round a 16.16 fixed number.</p>
188 </td></tr></table><br>
189 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
190 <p></p>
191 <table cellpadding=3 border=0>
192 <tr valign=top><td><b>a</b></td><td>
193 <p>The number to be rounded.</p>
194 </td></tr>
195 </table>
196 </td></tr></table>
197 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td>
198 <p>The result of &lsquo;(a + 0x8000) &amp; -0x10000&rsquo;.</p>
199 </td></tr></table>
200 </td></tr></table>
201 <hr width="75%">
202 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
203 <td width="100%"></td>
204 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
205
206 <table align=center width="75%"><tr><td>
207 <h4><a name="FT_CeilFix">FT_CeilFix</a></h4>
208 <table align=center width="87%"><tr><td>
209 Defined in FT_FREETYPE_H (freetype/freetype.h).
210 </td></tr></table><br>
211 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
212
213   FT_EXPORT( <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a> )
214   <b>FT_CeilFix</b>( <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a>  a );
215
216 </pre></table><br>
217 <table align=center width="87%"><tr><td>
218 <p>A very simple function used to compute the ceiling function of a 16.16 fixed number.</p>
219 </td></tr></table><br>
220 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
221 <p></p>
222 <table cellpadding=3 border=0>
223 <tr valign=top><td><b>a</b></td><td>
224 <p>The number for which the ceiling function is to be computed.</p>
225 </td></tr>
226 </table>
227 </td></tr></table>
228 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td>
229 <p>The result of &lsquo;(a + 0x10000 - 1) &amp; -0x10000&rsquo;.</p>
230 </td></tr></table>
231 </td></tr></table>
232 <hr width="75%">
233 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
234 <td width="100%"></td>
235 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
236
237 <table align=center width="75%"><tr><td>
238 <h4><a name="FT_FloorFix">FT_FloorFix</a></h4>
239 <table align=center width="87%"><tr><td>
240 Defined in FT_FREETYPE_H (freetype/freetype.h).
241 </td></tr></table><br>
242 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
243
244   FT_EXPORT( <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a> )
245   <b>FT_FloorFix</b>( <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a>  a );
246
247 </pre></table><br>
248 <table align=center width="87%"><tr><td>
249 <p>A very simple function used to compute the floor function of a 16.16 fixed number.</p>
250 </td></tr></table><br>
251 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
252 <p></p>
253 <table cellpadding=3 border=0>
254 <tr valign=top><td><b>a</b></td><td>
255 <p>The number for which the floor function is to be computed.</p>
256 </td></tr>
257 </table>
258 </td></tr></table>
259 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td>
260 <p>The result of &lsquo;a &amp; -0x10000&rsquo;.</p>
261 </td></tr></table>
262 </td></tr></table>
263 <hr width="75%">
264 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
265 <td width="100%"></td>
266 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
267
268 <table align=center width="75%"><tr><td>
269 <h4><a name="FT_Vector_Transform">FT_Vector_Transform</a></h4>
270 <table align=center width="87%"><tr><td>
271 Defined in FT_FREETYPE_H (freetype/freetype.h).
272 </td></tr></table><br>
273 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
274
275   FT_EXPORT( <span class="keyword">void</span> )
276   <b>FT_Vector_Transform</b>( <a href="ft2-basic_types.html#FT_Vector">FT_Vector</a>*        vec,
277                        <span class="keyword">const</span> <a href="ft2-basic_types.html#FT_Matrix">FT_Matrix</a>*  matrix );
278
279 </pre></table><br>
280 <table align=center width="87%"><tr><td>
281 <p>Transform a single vector through a 2x2 matrix.</p>
282 </td></tr></table><br>
283 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td>
284 <p></p>
285 <table cellpadding=3 border=0>
286 <tr valign=top><td><b>vector</b></td><td>
287 <p>The target vector to transform.</p>
288 </td></tr>
289 </table>
290 </td></tr></table>
291 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
292 <p></p>
293 <table cellpadding=3 border=0>
294 <tr valign=top><td><b>matrix</b></td><td>
295 <p>A pointer to the source 2x2 matrix.</p>
296 </td></tr>
297 </table>
298 </td></tr></table>
299 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
300 <p>The result is undefined if either &lsquo;vector&rsquo; or &lsquo;matrix&rsquo; is invalid.</p>
301 </td></tr></table>
302 </td></tr></table>
303 <hr width="75%">
304 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
305 <td width="100%"></td>
306 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
307
308 <table align=center width="75%"><tr><td>
309 <h4><a name="FT_Matrix_Multiply">FT_Matrix_Multiply</a></h4>
310 <table align=center width="87%"><tr><td>
311 Defined in FT_GLYPH_H (freetype/ftglyph.h).
312 </td></tr></table><br>
313 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
314
315   FT_EXPORT( <span class="keyword">void</span> )
316   <b>FT_Matrix_Multiply</b>( <span class="keyword">const</span> <a href="ft2-basic_types.html#FT_Matrix">FT_Matrix</a>*  a,
317                       <a href="ft2-basic_types.html#FT_Matrix">FT_Matrix</a>*        b );
318
319 </pre></table><br>
320 <table align=center width="87%"><tr><td>
321 <p>Perform the matrix operation &lsquo;b = a*b&rsquo;.</p>
322 </td></tr></table><br>
323 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
324 <p></p>
325 <table cellpadding=3 border=0>
326 <tr valign=top><td><b>a</b></td><td>
327 <p>A pointer to matrix &lsquo;a&rsquo;.</p>
328 </td></tr>
329 </table>
330 </td></tr></table>
331 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td>
332 <p></p>
333 <table cellpadding=3 border=0>
334 <tr valign=top><td><b>b</b></td><td>
335 <p>A pointer to matrix &lsquo;b&rsquo;.</p>
336 </td></tr>
337 </table>
338 </td></tr></table>
339 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
340 <p>The result is undefined if either &lsquo;a&rsquo; or &lsquo;b&rsquo; is zero.</p>
341 </td></tr></table>
342 </td></tr></table>
343 <hr width="75%">
344 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
345 <td width="100%"></td>
346 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
347
348 <table align=center width="75%"><tr><td>
349 <h4><a name="FT_Matrix_Invert">FT_Matrix_Invert</a></h4>
350 <table align=center width="87%"><tr><td>
351 Defined in FT_GLYPH_H (freetype/ftglyph.h).
352 </td></tr></table><br>
353 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
354
355   FT_EXPORT( <a href="ft2-basic_types.html#FT_Error">FT_Error</a> )
356   <b>FT_Matrix_Invert</b>( <a href="ft2-basic_types.html#FT_Matrix">FT_Matrix</a>*  matrix );
357
358 </pre></table><br>
359 <table align=center width="87%"><tr><td>
360 <p>Invert a 2x2 matrix. Return an error if it can't be inverted.</p>
361 </td></tr></table><br>
362 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td>
363 <p></p>
364 <table cellpadding=3 border=0>
365 <tr valign=top><td><b>matrix</b></td><td>
366 <p>A pointer to the target matrix. Remains untouched in case of error.</p>
367 </td></tr>
368 </table>
369 </td></tr></table>
370 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td>
371 <p>FreeType error code. 0&nbsp;means success.</p>
372 </td></tr></table>
373 </td></tr></table>
374 <hr width="75%">
375 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
376 <td width="100%"></td>
377 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
378
379 <table align=center width="75%"><tr><td>
380 <h4><a name="FT_Angle">FT_Angle</a></h4>
381 <table align=center width="87%"><tr><td>
382 Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
383 </td></tr></table><br>
384 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
385
386   <span class="keyword">typedef</span> <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a>  <b>FT_Angle</b>;
387
388 </pre></table><br>
389 <table align=center width="87%"><tr><td>
390 <p>This type is used to model angle values in FreeType. Note that the angle is a 16.16 fixed float value expressed in degrees.</p>
391 </td></tr></table><br>
392 </td></tr></table>
393 <hr width="75%">
394 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
395 <td width="100%"></td>
396 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
397
398 <table align=center width="75%"><tr><td>
399 <h4><a name="FT_ANGLE_PI">FT_ANGLE_PI</a></h4>
400 <table align=center width="87%"><tr><td>
401 Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
402 </td></tr></table><br>
403 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
404
405 #define <b>FT_ANGLE_PI</b>  ( 180L &lt;&lt; 16 )
406
407 </pre></table><br>
408 <table align=center width="87%"><tr><td>
409 <p>The angle pi expressed in <a href="ft2-computations.html#FT_Angle">FT_Angle</a> units.</p>
410 </td></tr></table><br>
411 </td></tr></table>
412 <hr width="75%">
413 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
414 <td width="100%"></td>
415 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
416
417 <table align=center width="75%"><tr><td>
418 <h4><a name="FT_ANGLE_2PI">FT_ANGLE_2PI</a></h4>
419 <table align=center width="87%"><tr><td>
420 Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
421 </td></tr></table><br>
422 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
423
424 #define <b>FT_ANGLE_2PI</b>  ( <a href="ft2-computations.html#FT_ANGLE_PI">FT_ANGLE_PI</a> * 2 )
425
426 </pre></table><br>
427 <table align=center width="87%"><tr><td>
428 <p>The angle 2*pi expressed in <a href="ft2-computations.html#FT_Angle">FT_Angle</a> units.</p>
429 </td></tr></table><br>
430 </td></tr></table>
431 <hr width="75%">
432 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
433 <td width="100%"></td>
434 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
435
436 <table align=center width="75%"><tr><td>
437 <h4><a name="FT_ANGLE_PI2">FT_ANGLE_PI2</a></h4>
438 <table align=center width="87%"><tr><td>
439 Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
440 </td></tr></table><br>
441 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
442
443 #define <b>FT_ANGLE_PI2</b>  ( <a href="ft2-computations.html#FT_ANGLE_PI">FT_ANGLE_PI</a> / 2 )
444
445 </pre></table><br>
446 <table align=center width="87%"><tr><td>
447 <p>The angle pi/2 expressed in <a href="ft2-computations.html#FT_Angle">FT_Angle</a> units.</p>
448 </td></tr></table><br>
449 </td></tr></table>
450 <hr width="75%">
451 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
452 <td width="100%"></td>
453 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
454
455 <table align=center width="75%"><tr><td>
456 <h4><a name="FT_ANGLE_PI4">FT_ANGLE_PI4</a></h4>
457 <table align=center width="87%"><tr><td>
458 Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
459 </td></tr></table><br>
460 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
461
462 #define <b>FT_ANGLE_PI4</b>  ( <a href="ft2-computations.html#FT_ANGLE_PI">FT_ANGLE_PI</a> / 4 )
463
464 </pre></table><br>
465 <table align=center width="87%"><tr><td>
466 <p>The angle pi/4 expressed in <a href="ft2-computations.html#FT_Angle">FT_Angle</a> units.</p>
467 </td></tr></table><br>
468 </td></tr></table>
469 <hr width="75%">
470 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
471 <td width="100%"></td>
472 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
473
474 <table align=center width="75%"><tr><td>
475 <h4><a name="FT_Sin">FT_Sin</a></h4>
476 <table align=center width="87%"><tr><td>
477 Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
478 </td></tr></table><br>
479 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
480
481   FT_EXPORT( <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a> )
482   <b>FT_Sin</b>( <a href="ft2-computations.html#FT_Angle">FT_Angle</a>  angle );
483
484 </pre></table><br>
485 <table align=center width="87%"><tr><td>
486 <p>Return the sinus of a given angle in fixed point format.</p>
487 </td></tr></table><br>
488 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
489 <p></p>
490 <table cellpadding=3 border=0>
491 <tr valign=top><td><b>angle</b></td><td>
492 <p>The input angle.</p>
493 </td></tr>
494 </table>
495 </td></tr></table>
496 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td>
497 <p>The sinus value.</p>
498 </td></tr></table>
499 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
500 <p>If you need both the sinus and cosinus for a given angle, use the function <a href="ft2-computations.html#FT_Vector_Unit">FT_Vector_Unit</a>.</p>
501 </td></tr></table>
502 </td></tr></table>
503 <hr width="75%">
504 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
505 <td width="100%"></td>
506 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
507
508 <table align=center width="75%"><tr><td>
509 <h4><a name="FT_Cos">FT_Cos</a></h4>
510 <table align=center width="87%"><tr><td>
511 Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
512 </td></tr></table><br>
513 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
514
515   FT_EXPORT( <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a> )
516   <b>FT_Cos</b>( <a href="ft2-computations.html#FT_Angle">FT_Angle</a>  angle );
517
518 </pre></table><br>
519 <table align=center width="87%"><tr><td>
520 <p>Return the cosinus of a given angle in fixed point format.</p>
521 </td></tr></table><br>
522 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
523 <p></p>
524 <table cellpadding=3 border=0>
525 <tr valign=top><td><b>angle</b></td><td>
526 <p>The input angle.</p>
527 </td></tr>
528 </table>
529 </td></tr></table>
530 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td>
531 <p>The cosinus value.</p>
532 </td></tr></table>
533 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>note</b></em></td></tr><tr><td>
534 <p>If you need both the sinus and cosinus for a given angle, use the function <a href="ft2-computations.html#FT_Vector_Unit">FT_Vector_Unit</a>.</p>
535 </td></tr></table>
536 </td></tr></table>
537 <hr width="75%">
538 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
539 <td width="100%"></td>
540 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
541
542 <table align=center width="75%"><tr><td>
543 <h4><a name="FT_Tan">FT_Tan</a></h4>
544 <table align=center width="87%"><tr><td>
545 Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
546 </td></tr></table><br>
547 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
548
549   FT_EXPORT( <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a> )
550   <b>FT_Tan</b>( <a href="ft2-computations.html#FT_Angle">FT_Angle</a>  angle );
551
552 </pre></table><br>
553 <table align=center width="87%"><tr><td>
554 <p>Return the tangent of a given angle in fixed point format.</p>
555 </td></tr></table><br>
556 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
557 <p></p>
558 <table cellpadding=3 border=0>
559 <tr valign=top><td><b>angle</b></td><td>
560 <p>The input angle.</p>
561 </td></tr>
562 </table>
563 </td></tr></table>
564 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td>
565 <p>The tangent value.</p>
566 </td></tr></table>
567 </td></tr></table>
568 <hr width="75%">
569 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
570 <td width="100%"></td>
571 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
572
573 <table align=center width="75%"><tr><td>
574 <h4><a name="FT_Atan2">FT_Atan2</a></h4>
575 <table align=center width="87%"><tr><td>
576 Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
577 </td></tr></table><br>
578 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
579
580   FT_EXPORT( <a href="ft2-computations.html#FT_Angle">FT_Angle</a> )
581   <b>FT_Atan2</b>( <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a>  x,
582             <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a>  y );
583
584 </pre></table><br>
585 <table align=center width="87%"><tr><td>
586 <p>Return the arc-tangent corresponding to a given vector (x,y) in the 2d plane.</p>
587 </td></tr></table><br>
588 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
589 <p></p>
590 <table cellpadding=3 border=0>
591 <tr valign=top><td><b>x</b></td><td>
592 <p>The horizontal vector coordinate.</p>
593 </td></tr>
594 <tr valign=top><td><b>y</b></td><td>
595 <p>The vertical vector coordinate.</p>
596 </td></tr>
597 </table>
598 </td></tr></table>
599 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td>
600 <p>The arc-tangent value (i.e. angle).</p>
601 </td></tr></table>
602 </td></tr></table>
603 <hr width="75%">
604 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
605 <td width="100%"></td>
606 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
607
608 <table align=center width="75%"><tr><td>
609 <h4><a name="FT_Angle_Diff">FT_Angle_Diff</a></h4>
610 <table align=center width="87%"><tr><td>
611 Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
612 </td></tr></table><br>
613 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
614
615   FT_EXPORT( <a href="ft2-computations.html#FT_Angle">FT_Angle</a> )
616   <b>FT_Angle_Diff</b>( <a href="ft2-computations.html#FT_Angle">FT_Angle</a>  angle1,
617                  <a href="ft2-computations.html#FT_Angle">FT_Angle</a>  angle2 );
618
619 </pre></table><br>
620 <table align=center width="87%"><tr><td>
621 <p>Return the difference between two angles. The result is always constrained to the ]-PI..PI] interval.</p>
622 </td></tr></table><br>
623 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
624 <p></p>
625 <table cellpadding=3 border=0>
626 <tr valign=top><td><b>angle1</b></td><td>
627 <p>First angle.</p>
628 </td></tr>
629 <tr valign=top><td><b>angle2</b></td><td>
630 <p>Second angle.</p>
631 </td></tr>
632 </table>
633 </td></tr></table>
634 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td>
635 <p>Constrained value of &lsquo;value2-value1&rsquo;.</p>
636 </td></tr></table>
637 </td></tr></table>
638 <hr width="75%">
639 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
640 <td width="100%"></td>
641 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
642
643 <table align=center width="75%"><tr><td>
644 <h4><a name="FT_Vector_Unit">FT_Vector_Unit</a></h4>
645 <table align=center width="87%"><tr><td>
646 Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
647 </td></tr></table><br>
648 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
649
650   FT_EXPORT( <span class="keyword">void</span> )
651   <b>FT_Vector_Unit</b>( <a href="ft2-basic_types.html#FT_Vector">FT_Vector</a>*  vec,
652                   <a href="ft2-computations.html#FT_Angle">FT_Angle</a>    angle );
653
654 </pre></table><br>
655 <table align=center width="87%"><tr><td>
656 <p>Return the unit vector corresponding to a given angle. After the call, the value of &lsquo;vec.x&rsquo; will be &lsquo;sin(angle)&rsquo;, and the value of &lsquo;vec.y&rsquo; will be &lsquo;cos(angle)&rsquo;.</p>
657 <p>This function is useful to retrieve both the sinus and cosinus of a given angle quickly.</p>
658 </td></tr></table><br>
659 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>output</b></em></td></tr><tr><td>
660 <p></p>
661 <table cellpadding=3 border=0>
662 <tr valign=top><td><b>vec</b></td><td>
663 <p>The address of target vector.</p>
664 </td></tr>
665 </table>
666 </td></tr></table>
667 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
668 <p></p>
669 <table cellpadding=3 border=0>
670 <tr valign=top><td><b>angle</b></td><td>
671 <p>The address of angle.</p>
672 </td></tr>
673 </table>
674 </td></tr></table>
675 </td></tr></table>
676 <hr width="75%">
677 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
678 <td width="100%"></td>
679 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
680
681 <table align=center width="75%"><tr><td>
682 <h4><a name="FT_Vector_Rotate">FT_Vector_Rotate</a></h4>
683 <table align=center width="87%"><tr><td>
684 Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
685 </td></tr></table><br>
686 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
687
688   FT_EXPORT( <span class="keyword">void</span> )
689   <b>FT_Vector_Rotate</b>( <a href="ft2-basic_types.html#FT_Vector">FT_Vector</a>*  vec,
690                     <a href="ft2-computations.html#FT_Angle">FT_Angle</a>    angle );
691
692 </pre></table><br>
693 <table align=center width="87%"><tr><td>
694 <p>Rotate a vector by a given angle.</p>
695 </td></tr></table><br>
696 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>inout</b></em></td></tr><tr><td>
697 <p></p>
698 <table cellpadding=3 border=0>
699 <tr valign=top><td><b>vec</b></td><td>
700 <p>The address of target vector.</p>
701 </td></tr>
702 </table>
703 </td></tr></table>
704 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
705 <p></p>
706 <table cellpadding=3 border=0>
707 <tr valign=top><td><b>angle</b></td><td>
708 <p>The address of angle.</p>
709 </td></tr>
710 </table>
711 </td></tr></table>
712 </td></tr></table>
713 <hr width="75%">
714 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
715 <td width="100%"></td>
716 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
717
718 <table align=center width="75%"><tr><td>
719 <h4><a name="FT_Vector_Length">FT_Vector_Length</a></h4>
720 <table align=center width="87%"><tr><td>
721 Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
722 </td></tr></table><br>
723 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
724
725   FT_EXPORT( <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a> )
726   <b>FT_Vector_Length</b>( <a href="ft2-basic_types.html#FT_Vector">FT_Vector</a>*  vec );
727
728 </pre></table><br>
729 <table align=center width="87%"><tr><td>
730 <p>Return the length of a given vector.</p>
731 </td></tr></table><br>
732 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
733 <p></p>
734 <table cellpadding=3 border=0>
735 <tr valign=top><td><b>vec</b></td><td>
736 <p>The address of target vector.</p>
737 </td></tr>
738 </table>
739 </td></tr></table>
740 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>return</b></em></td></tr><tr><td>
741 <p>The vector length, expressed in the same units that the original vector coordinates.</p>
742 </td></tr></table>
743 </td></tr></table>
744 <hr width="75%">
745 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
746 <td width="100%"></td>
747 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
748
749 <table align=center width="75%"><tr><td>
750 <h4><a name="FT_Vector_Polarize">FT_Vector_Polarize</a></h4>
751 <table align=center width="87%"><tr><td>
752 Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
753 </td></tr></table><br>
754 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
755
756   FT_EXPORT( <span class="keyword">void</span> )
757   <b>FT_Vector_Polarize</b>( <a href="ft2-basic_types.html#FT_Vector">FT_Vector</a>*  vec,
758                       <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a>   *length,
759                       <a href="ft2-computations.html#FT_Angle">FT_Angle</a>   *angle );
760
761 </pre></table><br>
762 <table align=center width="87%"><tr><td>
763 <p>Compute both the length and angle of a given vector.</p>
764 </td></tr></table><br>
765 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
766 <p></p>
767 <table cellpadding=3 border=0>
768 <tr valign=top><td><b>vec</b></td><td>
769 <p>The address of source vector.</p>
770 </td></tr>
771 </table>
772 </td></tr></table>
773 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>output</b></em></td></tr><tr><td>
774 <p></p>
775 <table cellpadding=3 border=0>
776 <tr valign=top><td><b>length</b></td><td>
777 <p>The vector length.</p>
778 </td></tr>
779 <tr valign=top><td><b>angle</b></td><td>
780 <p>The vector angle.</p>
781 </td></tr>
782 </table>
783 </td></tr></table>
784 </td></tr></table>
785 <hr width="75%">
786 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
787 <td width="100%"></td>
788 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
789
790 <table align=center width="75%"><tr><td>
791 <h4><a name="FT_Vector_From_Polar">FT_Vector_From_Polar</a></h4>
792 <table align=center width="87%"><tr><td>
793 Defined in FT_TRIGONOMETRY_H (freetype/fttrigon.h).
794 </td></tr></table><br>
795 <table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>
796
797   FT_EXPORT( <span class="keyword">void</span> )
798   <b>FT_Vector_From_Polar</b>( <a href="ft2-basic_types.html#FT_Vector">FT_Vector</a>*  vec,
799                         <a href="ft2-basic_types.html#FT_Fixed">FT_Fixed</a>    length,
800                         <a href="ft2-computations.html#FT_Angle">FT_Angle</a>    angle );
801
802 </pre></table><br>
803 <table align=center width="87%"><tr><td>
804 <p>Compute vector coordinates from a length and angle.</p>
805 </td></tr></table><br>
806 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>output</b></em></td></tr><tr><td>
807 <p></p>
808 <table cellpadding=3 border=0>
809 <tr valign=top><td><b>vec</b></td><td>
810 <p>The address of source vector.</p>
811 </td></tr>
812 </table>
813 </td></tr></table>
814 <table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>input</b></em></td></tr><tr><td>
815 <p></p>
816 <table cellpadding=3 border=0>
817 <tr valign=top><td><b>length</b></td><td>
818 <p>The vector length.</p>
819 </td></tr>
820 <tr valign=top><td><b>angle</b></td><td>
821 <p>The vector angle.</p>
822 </td></tr>
823 </table>
824 </td></tr></table>
825 </td></tr></table>
826 <hr width="75%">
827 <table align=center width="75%"><tr><td><font size=-2>[<a href="ft2-index.html">Index</a>]</font></td>
828 <td width="100%"></td>
829 <td><font size=-2>[<a href="ft2-toc.html">TOC</a>]</font></td></tr></table>
830
831 </body>
832 </html>