1 /***************************************************************************/
   2 /*                                                                         */
   3 /*  ftbitmap.h                                                             */
   4 /*                                                                         */
   5 /*    FreeType utility functions for bitmaps (specification).              */
   6 /*                                                                         */
   7 /*  Copyright 2004-2018 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 handling @FT_Bitmap objects.   */
  49   /*    Note that none of the functions changes the bitmap's `flow' (as    */
  50   /*    indicated by the sign of the `pitch' field in `FT_Bitmap').        */
  51   /*                                                                       */
  52   /*************************************************************************/
  53 
  54 
  55   /*************************************************************************/
  56   /*                                                                       */
  57   /* <Function>                                                            */
  58   /*    FT_Bitmap_Init                                                     */
  59   /*                                                                       */
  60   /* <Description>                                                         */
  61   /*    Initialize a pointer to an @FT_Bitmap structure.                   */
  62   /*                                                                       */
  63   /* <InOut>                                                               */
  64   /*    abitmap :: A pointer to the bitmap structure.                      */
  65   /*                                                                       */
  66   /* <Note>                                                                */
  67   /*    A deprecated name for the same function is `FT_Bitmap_New'.        */
  68   /*                                                                       */
  69   FT_EXPORT( void )
  70   FT_Bitmap_Init( FT_Bitmap  *abitmap );
  71 
  72 
  73   /* deprecated */
  74   FT_EXPORT( void )
  75   FT_Bitmap_New( FT_Bitmap  *abitmap );
  76 
  77 
  78   /*************************************************************************/
  79   /*                                                                       */
  80   /* <Function>                                                            */
  81   /*    FT_Bitmap_Copy                                                     */
  82   /*                                                                       */
  83   /* <Description>                                                         */
  84   /*    Copy a bitmap into another one.                                    */
  85   /*                                                                       */
  86   /* <Input>                                                               */
  87   /*    library :: A handle to a library object.                           */
  88   /*                                                                       */
  89   /*    source  :: A handle to the source bitmap.                          */
  90   /*                                                                       */
  91   /* <Output>                                                              */
  92   /*    target  :: A handle to the target bitmap.                          */
  93   /*                                                                       */
  94   /* <Return>                                                              */
  95   /*    FreeType error code.  0~means success.                             */
  96   /*                                                                       */
  97   FT_EXPORT( FT_Error )
  98   FT_Bitmap_Copy( FT_Library        library,
  99                   const FT_Bitmap  *source,
 100                   FT_Bitmap        *target );
 101 
 102 
 103   /*************************************************************************/
 104   /*                                                                       */
 105   /* <Function>                                                            */
 106   /*    FT_Bitmap_Embolden                                                 */
 107   /*                                                                       */
 108   /* <Description>                                                         */
 109   /*    Embolden a bitmap.  The new bitmap will be about `xStrength'       */
 110   /*    pixels wider and `yStrength' pixels higher.  The left and bottom   */
 111   /*    borders are kept unchanged.                                        */
 112   /*                                                                       */
 113   /* <Input>                                                               */
 114   /*    library   :: A handle to a library object.                         */
 115   /*                                                                       */
 116   /*    xStrength :: How strong the glyph is emboldened horizontally.      */
 117   /*                 Expressed in 26.6 pixel format.                       */
 118   /*                                                                       */
 119   /*    yStrength :: How strong the glyph is emboldened vertically.        */
 120   /*                 Expressed in 26.6 pixel format.                       */
 121   /*                                                                       */
 122   /* <InOut>                                                               */
 123   /*    bitmap    :: A handle to the target bitmap.                        */
 124   /*                                                                       */
 125   /* <Return>                                                              */
 126   /*    FreeType error code.  0~means success.                             */
 127   /*                                                                       */
 128   /* <Note>                                                                */
 129   /*    The current implementation restricts `xStrength' to be less than   */
 130   /*    or equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO.      */
 131   /*                                                                       */
 132   /*    If you want to embolden the bitmap owned by a @FT_GlyphSlotRec,    */
 133   /*    you should call @FT_GlyphSlot_Own_Bitmap on the slot first.        */
 134   /*                                                                       */
 135   /*    Bitmaps in @FT_PIXEL_MODE_GRAY2 and @FT_PIXEL_MODE_GRAY@ format    */
 136   /*    are converted to @FT_PIXEL_MODE_GRAY format (i.e., 8bpp).          */
 137   /*                                                                       */
 138   FT_EXPORT( FT_Error )
 139   FT_Bitmap_Embolden( FT_Library  library,
 140                       FT_Bitmap*  bitmap,
 141                       FT_Pos      xStrength,
 142                       FT_Pos      yStrength );
 143 
 144 
 145   /*************************************************************************/
 146   /*                                                                       */
 147   /* <Function>                                                            */
 148   /*    FT_Bitmap_Convert                                                  */
 149   /*                                                                       */
 150   /* <Description>                                                         */
 151   /*    Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, 8bpp or 32bpp */
 152   /*    to a bitmap object with depth 8bpp, making the number of used      */
 153   /*    bytes line (a.k.a. the `pitch') a multiple of `alignment'.         */
 154   /*                                                                       */
 155   /* <Input>                                                               */
 156   /*    library   :: A handle to a library object.                         */
 157   /*                                                                       */
 158   /*    source    :: The source bitmap.                                    */
 159   /*                                                                       */
 160   /*    alignment :: The pitch of the bitmap is a multiple of this         */
 161   /*                 parameter.  Common values are 1, 2, or 4.             */
 162   /*                                                                       */
 163   /* <Output>                                                              */
 164   /*    target    :: The target bitmap.                                    */
 165   /*                                                                       */
 166   /* <Return>                                                              */
 167   /*    FreeType error code.  0~means success.                             */
 168   /*                                                                       */
 169   /* <Note>                                                                */
 170   /*    It is possible to call @FT_Bitmap_Convert multiple times without   */
 171   /*    calling @FT_Bitmap_Done (the memory is simply reallocated).        */
 172   /*                                                                       */
 173   /*    Use @FT_Bitmap_Done to finally remove the bitmap object.           */
 174   /*                                                                       */
 175   /*    The `library' argument is taken to have access to FreeType's       */
 176   /*    memory handling functions.                                         */
 177   /*                                                                       */
 178   FT_EXPORT( FT_Error )
 179   FT_Bitmap_Convert( FT_Library        library,
 180                      const FT_Bitmap  *source,
 181                      FT_Bitmap        *target,
 182                      FT_Int            alignment );
 183 
 184 
 185   /*************************************************************************/
 186   /*                                                                       */
 187   /* <Function>                                                            */
 188   /*    FT_GlyphSlot_Own_Bitmap                                            */
 189   /*                                                                       */
 190   /* <Description>                                                         */
 191   /*    Make sure that a glyph slot owns `slot->bitmap'.                   */
 192   /*                                                                       */
 193   /* <Input>                                                               */
 194   /*    slot :: The glyph slot.                                            */
 195   /*                                                                       */
 196   /* <Return>                                                              */
 197   /*    FreeType error code.  0~means success.                             */
 198   /*                                                                       */
 199   /* <Note>                                                                */
 200   /*    This function is to be used in combination with                    */
 201   /*    @FT_Bitmap_Embolden.                                               */
 202   /*                                                                       */
 203   FT_EXPORT( FT_Error )
 204   FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot  slot );
 205 
 206 
 207   /*************************************************************************/
 208   /*                                                                       */
 209   /* <Function>                                                            */
 210   /*    FT_Bitmap_Done                                                     */
 211   /*                                                                       */
 212   /* <Description>                                                         */
 213   /*    Destroy a bitmap object initialized with @FT_Bitmap_Init.          */
 214   /*                                                                       */
 215   /* <Input>                                                               */
 216   /*    library :: A handle to a library object.                           */
 217   /*                                                                       */
 218   /*    bitmap  :: The bitmap object to be freed.                          */
 219   /*                                                                       */
 220   /* <Return>                                                              */
 221   /*    FreeType error code.  0~means success.                             */
 222   /*                                                                       */
 223   /* <Note>                                                                */
 224   /*    The `library' argument is taken to have access to FreeType's       */
 225   /*    memory handling functions.                                         */
 226   /*                                                                       */
 227   FT_EXPORT( FT_Error )
 228   FT_Bitmap_Done( FT_Library  library,
 229                   FT_Bitmap  *bitmap );
 230 
 231 
 232   /* */
 233 
 234 
 235 FT_END_HEADER
 236 
 237 #endif /* FTBITMAP_H_ */
 238 
 239 
 240 /* END */