[FREETYPE] Improve font rendering with font hinting workaround (#1771)
[reactos.git] / sdk / lib / 3rdparty / freetype / include / freetype / ftbitmap.h
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 */