1 /***************************************************************************/
2 /*                                                                         */
3 /*  ftbitmap.h                                                             */
4 /*                                                                         */
5 /*    FreeType utility functions for bitmaps (specification).              */
6 /*                                                                         */
7 /*  Copyright 2004-2006, 2008, 2013 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, 8bpp or 32bpp */
139   /*    to a bitmap object with depth 8bpp, making the number of used      */
140   /*    bytes 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