Merge 25584, 25588.
[reactos.git] / reactos / dll / 3rdparty / freetype / include / freetype / ftsizes.h
1 /***************************************************************************/
2 /* */
3 /* ftsizes.h */
4 /* */
5 /* FreeType size objects management (specification). */
6 /* */
7 /* Copyright 1996-2001, 2003, 2004, 2006 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 /*************************************************************************/
20 /* */
21 /* Typical application would normally not need to use these functions. */
22 /* However, they have been placed in a public API for the rare cases */
23 /* where they are needed. */
24 /* */
25 /*************************************************************************/
26
27
28 #ifndef __FTSIZES_H__
29 #define __FTSIZES_H__
30
31
32 #include <ft2build.h>
33 #include FT_FREETYPE_H
34
35 #ifdef FREETYPE_H
36 #error "freetype.h of FreeType 1 has been loaded!"
37 #error "Please fix the directory search order for header files"
38 #error "so that freetype.h of FreeType 2 is found first."
39 #endif
40
41
42 FT_BEGIN_HEADER
43
44
45 /*************************************************************************/
46 /* */
47 /* <Section> */
48 /* sizes_management */
49 /* */
50 /* <Title> */
51 /* Size Management */
52 /* */
53 /* <Abstract> */
54 /* Managing multiple sizes per face. */
55 /* */
56 /* <Description> */
57 /* When creating a new face object (e.g., with @FT_New_Face), an */
58 /* @FT_Size object is automatically created and used to store all */
59 /* pixel-size dependent information, available in the `face->size' */
60 /* field. */
61 /* */
62 /* It is however possible to create more sizes for a given face, */
63 /* mostly in order to manage several character pixel sizes of the */
64 /* same font family and style. See @FT_New_Size and @FT_Done_Size. */
65 /* */
66 /* Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only */
67 /* modify the contents of the current `active' size; you thus need */
68 /* to use @FT_Activate_Size to change it. */
69 /* */
70 /* 99% of applications won't need the functions provided here, */
71 /* especially if they use the caching sub-system, so be cautious */
72 /* when using these. */
73 /* */
74 /*************************************************************************/
75
76
77 /*************************************************************************/
78 /* */
79 /* <Function> */
80 /* FT_New_Size */
81 /* */
82 /* <Description> */
83 /* Create a new size object from a given face object. */
84 /* */
85 /* <Input> */
86 /* face :: A handle to a parent face object. */
87 /* */
88 /* <Output> */
89 /* asize :: A handle to a new size object. */
90 /* */
91 /* <Return> */
92 /* FreeType error code. 0 means success. */
93 /* */
94 /* <Note> */
95 /* You need to call @FT_Activate_Size in order to select the new size */
96 /* for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size, */
97 /* @FT_Load_Glyph, @FT_Load_Char, etc. */
98 /* */
99 FT_EXPORT( FT_Error )
100 FT_New_Size( FT_Face face,
101 FT_Size* size );
102
103
104 /*************************************************************************/
105 /* */
106 /* <Function> */
107 /* FT_Done_Size */
108 /* */
109 /* <Description> */
110 /* Discard a given size object. Note that @FT_Done_Face */
111 /* automatically discards all size objects allocated with */
112 /* @FT_New_Size. */
113 /* */
114 /* <Input> */
115 /* size :: A handle to a target size object. */
116 /* */
117 /* <Return> */
118 /* FreeType error code. 0 means success. */
119 /* */
120 FT_EXPORT( FT_Error )
121 FT_Done_Size( FT_Size size );
122
123
124 /*************************************************************************/
125 /* */
126 /* <Function> */
127 /* FT_Activate_Size */
128 /* */
129 /* <Description> */
130 /* Even though it is possible to create several size objects for a */
131 /* given face (see @FT_New_Size for details), functions like */
132 /* @FT_Load_Glyph or @FT_Load_Char only use the last-created one to */
133 /* determine the `current character pixel size'. */
134 /* */
135 /* This function can be used to `activate' a previously created size */
136 /* object. */
137 /* */
138 /* <Input> */
139 /* size :: A handle to a target size object. */
140 /* */
141 /* <Return> */
142 /* FreeType error code. 0 means success. */
143 /* */
144 /* <Note> */
145 /* If `face' is the size's parent face object, this function changes */
146 /* the value of `face->size' to the input size handle. */
147 /* */
148 FT_EXPORT( FT_Error )
149 FT_Activate_Size( FT_Size size );
150
151 /* */
152
153
154 FT_END_HEADER
155
156 #endif /* __FTSIZES_H__ */
157
158
159 /* END */