Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  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:             */
  103.