Home | History | Annotate | Download | only in freetype2
      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 Bzier 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