|
1 /***************************************************************************/ |
|
2 /* */ |
|
3 /* ftbbox.h */ |
|
4 /* */ |
|
5 /* FreeType exact bbox computation (specification). */ |
|
6 /* */ |
|
7 /* Copyright 1996-2001, 2003, 2007, 2011 by */ |
|
8 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ |
|
9 /* */ |
|
10 /* This file is part of the FreeType project, and may only be used, */ |
|
11 /* modified, and distributed under the terms of the FreeType project */ |
|
12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ |
|
13 /* this file you indicate that you have read the license and */ |
|
14 /* understand and accept it fully. */ |
|
15 /* */ |
|
16 /***************************************************************************/ |
|
17 |
|
18 |
|
19 /*************************************************************************/ |
|
20 /* */ |
|
21 /* This component has a _single_ role: to compute exact outline bounding */ |
|
22 /* boxes. */ |
|
23 /* */ |
|
24 /* It is separated from the rest of the engine for various technical */ |
|
25 /* reasons. It may well be integrated in `ftoutln' later. */ |
|
26 /* */ |
|
27 /*************************************************************************/ |
|
28 |
|
29 |
|
30 #ifndef __FTBBOX_H__ |
|
31 #define __FTBBOX_H__ |
|
32 |
|
33 |
|
34 #include <ft2build.h> |
|
35 #include FT_FREETYPE_H |
|
36 |
|
37 #ifdef FREETYPE_H |
|
38 #error "freetype.h of FreeType 1 has been loaded!" |
|
39 #error "Please fix the directory search order for header files" |
|
40 #error "so that freetype.h of FreeType 2 is found first." |
|
41 #endif |
|
42 |
|
43 |
|
44 FT_BEGIN_HEADER |
|
45 |
|
46 |
|
47 /*************************************************************************/ |
|
48 /* */ |
|
49 /* <Section> */ |
|
50 /* outline_processing */ |
|
51 /* */ |
|
52 /*************************************************************************/ |
|
53 |
|
54 |
|
55 /*************************************************************************/ |
|
56 /* */ |
|
57 /* <Function> */ |
|
58 /* FT_Outline_Get_BBox */ |
|
59 /* */ |
|
60 /* <Description> */ |
|
61 /* Compute the exact bounding box of an outline. This is slower */ |
|
62 /* than computing the control box. However, it uses an advanced */ |
|
63 /* algorithm which returns _very_ quickly when the two boxes */ |
|
64 /* coincide. Otherwise, the outline Bézier arcs are traversed to */ |
|
65 /* extract their extrema. */ |
|
66 /* */ |
|
67 /* <Input> */ |
|
68 /* outline :: A pointer to the source outline. */ |
|
69 /* */ |
|
70 /* <Output> */ |
|
71 /* abbox :: The outline's exact bounding box. */ |
|
72 /* */ |
|
73 /* <Return> */ |
|
74 /* FreeType error code. 0~means success. */ |
|
75 /* */ |
|
76 /* <Note> */ |
|
77 /* If the font is tricky and the glyph has been loaded with */ |
|
78 /* @FT_LOAD_NO_SCALE, the resulting BBox is meaningless. To get */ |
|
79 /* reasonable values for the BBox it is necessary to load the glyph */ |
|
80 /* at a large ppem value (so that the hinting instructions can */ |
|
81 /* properly shift and scale the subglyphs), then extracting the BBox */ |
|
82 /* which can be eventually converted back to font units. */ |
|
83 /* */ |
|
84 FT_EXPORT( FT_Error ) |
|
85 FT_Outline_Get_BBox( FT_Outline* outline, |
|
86 FT_BBox *abbox ); |
|
87 |
|
88 |
|
89 /* */ |
|
90 |
|
91 |
|
92 FT_END_HEADER |
|
93 |
|
94 #endif /* __FTBBOX_H__ */ |
|
95 |
|
96 |
|
97 /* END */ |
|
98 |
|
99 |
|
100 /* Local Variables: */ |
|
101 /* coding: utf-8 */ |
|
102 /* End: */ |