misc/libfreetype/include/freetype/ftbitmap.h
changeset 9431 0f5961910e27
parent 9357 a501f5ec7b34
parent 9429 7a97a554ac80
child 9433 f0a8ac191839
equal deleted inserted replaced
9357:a501f5ec7b34 9431:0f5961910e27
     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 */