• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /****************************************************************************
2  *
3  * ftbbox.h
4  *
5  *   FreeType exact bbox computation (specification).
6  *
7  * Copyright 1996-2018 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 that returns _very_ quickly when the two boxes
64    *   coincide.  Otherwise, the outline Bezier arcs are traversed to
65    *   extract their extrema.
66    *
67    * @input:
68    *   outline ::
69    *     A pointer to the source outline.
70    *
71    * @output:
72    *   abbox ::
73    *     The outline's exact bounding box.
74    *
75    * @return:
76    *   FreeType error code.  0~means success.
77    *
78    * @note:
79    *   If the font is tricky and the glyph has been loaded with
80    *   @FT_LOAD_NO_SCALE, the resulting BBox is meaningless.  To get
81    *   reasonable values for the BBox it is necessary to load the glyph
82    *   at a large ppem value (so that the hinting instructions can
83    *   properly shift and scale the subglyphs), then extracting the BBox,
84    *   which can be eventually converted back to font units.
85    */
86   FT_EXPORT( FT_Error )
87   FT_Outline_Get_BBox( FT_Outline*  outline,
88                        FT_BBox     *abbox );
89 
90   /* */
91 
92 
93 FT_END_HEADER
94 
95 #endif /* FTBBOX_H_ */
96 
97 
98 /* END */
99 
100 
101 /* Local Variables: */
102 /* coding: utf-8    */
103 /* End:             */
104