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 "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
44FT_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
92FT_END_HEADER
93
94#endif /* __FTBBOX_H__ */
95
96
97/* END */
98
99
100/* Local Variables: */
101/* coding: utf-8    */
102/* End:             */
103