Home | History | Annotate | Download | only in freetype
      1 /***************************************************************************/
      2 /*                                                                         */
      3 /*  ftbitmap.h                                                             */
      4 /*                                                                         */
      5 /*    FreeType utility functions for bitmaps (specification).              */
      6 /*                                                                         */
      7 /*  Copyright 2004, 2005, 2006, 2008 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 #ifndef __FTBITMAP_H__
     20 #define __FTBITMAP_H__
     21 
     22 
     23 #include <ft2build.h>
     24 #include FT_FREETYPE_H
     25 
     26 #ifdef FREETYPE_H
     27 #error "freetype.h of FreeType 1 has been loaded!"
     28 #error "Please fix the directory search order for header files"
     29 #error "so that freetype.h of FreeType 2 is found first."
     30 #endif
     31 
     32 
     33 FT_BEGIN_HEADER
     34 
     35 
     36   /*************************************************************************/
     37   /*                                                                       */
     38   /* <Section>                                                             */
     39   /*    bitmap_handling                                                    */
     40   /*                                                                       */
     41   /* <Title>                                                               */
     42   /*    Bitmap Handling                                                    */
     43   /*                                                                       */
     44   /* <Abstract>                                                            */
     45   /*    Handling FT_Bitmap objects.                                        */
     46   /*                                                                       */
     47   /* <Description>                                                         */
     48   /*    This section contains functions for converting FT_Bitmap objects.  */
     49   /*                                                                       */
     50   /*************************************************************************/
     51 
     52 
     53   /*************************************************************************/
     54   /*                                                                       */
     55   /* <Function>                                                            */
     56   /*    FT_Bitmap_New                                                      */
     57   /*                                                                       */
     58   /* <Description>                                                         */
     59   /*    Initialize a pointer to an @FT_Bitmap structure.                   */
     60   /*                                                                       */
     61   /* <InOut>                                                               */
     62   /*    abitmap :: A pointer to the bitmap structure.                      */
     63   /*                                                                       */
     64   FT_EXPORT( void )
     65   FT_Bitmap_New( FT_Bitmap  *abitmap );
     66 
     67 
     68   /*************************************************************************/
     69   /*                                                                       */
     70   /* <Function>                                                            */
     71   /*    FT_Bitmap_Copy                                                     */
     72   /*                                                                       */
     73   /* <Description>                                                         */
     74   /*    Copy a bitmap into another one.                                    */
     75   /*                                                                       */
     76   /* <Input>                                                               */
     77   /*    library :: A handle to a library object.                           */
     78   /*                                                                       */
     79   /*    source  :: A handle to the source bitmap.                          */
     80   /*                                                                       */
     81   /* <Output>                                                              */
     82   /*    target  :: A handle to the target bitmap.                          */
     83   /*                                                                       */
     84   /* <Return>                                                              */
     85   /*    FreeType error code.  0~means success.                             */
     86   /*                                                                       */
     87   FT_EXPORT( FT_Error )
     88   FT_Bitmap_Copy( FT_Library        library,
     89                   const FT_Bitmap  *source,
     90                   FT_Bitmap        *target);
     91 
     92 
     93   /*************************************************************************/
     94   /*                                                                       */
     95   /* <Function>                                                            */
     96   /*    FT_Bitmap_Embolden                                                 */
     97   /*                                                                       */
     98   /* <Description>                                                         */
     99   /*    Embolden a bitmap.  The new bitmap will be about `xStrength'       */
    100   /*    pixels wider and `yStrength' pixels higher.  The left and bottom   */
    101   /*    borders are kept unchanged.                                        */
    102   /*                                                                       */
    103   /* <Input>                                                               */
    104   /*    library   :: A handle to a library object.                         */
    105   /*                                                                       */
    106   /*    xStrength :: How strong the glyph is emboldened horizontally.      */
    107   /*                 Expressed in 26.6 pixel format.                       */
    108   /*                                                                       */
    109   /*    yStrength :: How strong the glyph is emboldened vertically.        */
    110   /*                 Expressed in 26.6 pixel format.                       */
    111   /*                                                                       */
    112   /* <InOut>                                                               */
    113   /*    bitmap    :: A handle to the target bitmap.                        */
    114   /*                                                                       */
    115   /* <Return>                                                              */
    116   /*    FreeType error code.  0~means success.                             */
    117   /*                                                                       */
    118   /* <Note>                                                                */
    119   /*    The current implementation restricts `xStrength' to be less than   */
    120   /*    or equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO.      */
    121   /*                                                                       */
    122   /*    If you want to embolden the bitmap owned by a @FT_GlyphSlotRec,    */
    123   /*    you should call @FT_GlyphSlot_Own_Bitmap on the slot first.        */
    124   /*                                                                       */
    125   FT_EXPORT( FT_Error )
    126   FT_Bitmap_Embolden( FT_Library  library,
    127                       FT_Bitmap*  bitmap,
    128                       FT_Pos      xStrength,
    129                       FT_Pos      yStrength );
    130 
    131 
    132   /*************************************************************************/
    133   /*                                                                       */
    134   /* <Function>                                                            */
    135   /*    FT_Bitmap_Convert                                                  */
    136   /*                                                                       */
    137   /* <Description>                                                         */
    138   /*    Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, or 8bpp to a  */
    139   /*    bitmap object with depth 8bpp, making the number of used bytes per */
    140   /*    line (a.k.a. the `pitch') a multiple of `alignment'.               */
    141   /*                                                                       */
    142   /* <Input>                                                               */
    143   /*    library   :: A handle to a library object.                         */
    144   /*                                                                       */
    145   /*    source    :: The source bitmap.                                    */
    146   /*                                                                       */
    147   /*    alignment :: The pitch of the bitmap is a multiple of this         */
    148   /*                 parameter.  Common values are 1, 2, or 4.             */
    149   /*                                                                       */
    150   /* <Output>                                                              */
    151   /*    target    :: The target bitmap.                                    */
    152   /*                                                                       */
    153   /* <Return>                                                              */
    154   /*    FreeType error code.  0~means success.                             */
    155   /*                                                                       */
    156   /* <Note>                                                                */
    157   /*    It is possible to call @FT_Bitmap_Convert multiple times without   */
    158   /*    calling @FT_Bitmap_Done (the memory is simply reallocated).        */
    159   /*                                                                       */
    160   /*    Use @FT_Bitmap_Done to finally remove the bitmap object.           */
    161   /*                                                                       */
    162   /*    The `library' argument is taken to have access to FreeType's       */
    163   /*    memory handling functions.                                         */
    164   /*                                                                       */
    165   FT_EXPORT( FT_Error )
    166   FT_Bitmap_Convert( FT_Library        library,
    167                      const FT_Bitmap  *source,
    168                      FT_Bitmap        *target,
    169                      FT_Int            alignment );
    170 
    171 
    172   /*************************************************************************/
    173   /*                                                                       */
    174   /* <Function>                                                            */
    175   /*    FT_GlyphSlot_Own_Bitmap                                            */
    176   /*                                                                       */
    177   /* <Description>                                                         */
    178   /*    Make sure that a glyph slot owns `slot->bitmap'.                   */
    179   /*                                                                       */
    180   /* <Input>                                                               */
    181   /*    slot :: The glyph slot.                                            */
    182   /*                                                                       */
    183   /* <Return>                                                              */
    184   /*    FreeType error code.  0~means success.                             */
    185   /*                                                                       */
    186   /* <Note>                                                                */
    187   /*    This function is to be used in combination with                    */
    188   /*    @FT_Bitmap_Embolden.                                               */
    189   /*                                                                       */
    190   FT_EXPORT( FT_Error )
    191   FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot  slot );
    192 
    193 
    194   /*************************************************************************/
    195   /*                                                                       */
    196   /* <Function>                                                            */
    197   /*    FT_Bitmap_Done                                                     */
    198   /*                                                                       */
    199   /* <Description>                                                         */
    200   /*    Destroy a bitmap object created with @FT_Bitmap_New.               */
    201   /*                                                                       */
    202   /* <Input>                                                               */
    203   /*    library :: A handle to a library object.                           */
    204   /*                                                                       */
    205   /*    bitmap  :: The bitmap object to be freed.                          */
    206   /*                                                                       */
    207   /* <Return>                                                              */
    208   /*    FreeType error code.  0~means success.                             */
    209   /*                                                                       */
    210   /* <Note>                                                                */
    211   /*    The `library' argument is taken to have access to FreeType's       */
    212   /*    memory handling functions.                                         */
    213   /*                                                                       */
    214   FT_EXPORT( FT_Error )
    215   FT_Bitmap_Done( FT_Library  library,
    216                   FT_Bitmap  *bitmap );
    217 
    218 
    219   /* */
    220 
    221 
    222 FT_END_HEADER
    223 
    224 #endif /* __FTBITMAP_H__ */
    225 
    226 
    227 /* END */
    228