1 /***************************************************************************/
2 /*                                                                         */
3 /*  ftbbox.h                                                               */
4 /*                                                                         */
5 /*    FreeType exact bbox computation (specification).                     */
6 /*                                                                         */
7 /*  Copyright 1996-2015 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 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 FT_END_HEADER
92 
93 #endif /* __FTBBOX_H__ */
94 
95 
96 /* END */
97 
98 
99 /* Local Variables: */
100 /* coding: utf-8    */
101 /* End:             */
102