7dbf5ba3fe6f4c38e5e121a87572a12227891fcc
[reactos.git] / reactos / lib / 3rdparty / freetype / include / freetype / ftbitmap.h
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 */