1 /***************************************************************************/
2 /*                                                                         */
3 /*  ftbitmap.h                                                             */
4 /*                                                                         */
5 /*    FreeType utility functions for bitmaps (specification).              */
6 /*                                                                         */
7 /*  Copyright 2004-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 #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 */
241