:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / include / freetype / ftmm.h
1 /***************************************************************************/
2 /*                                                                         */
3 /*  ftmm.h                                                                 */
4 /*                                                                         */
5 /*    FreeType Multiple Master font interface (specification).             */
6 /*                                                                         */
7 /*  Copyright 1996-2000 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 FTMM_H
20 #define FTMM_H
21
22 #include <freetype/t1tables.h>
23
24 #ifdef __cplusplus
25   extern "C" {
26 #endif
27
28
29   /*************************************************************************/
30   /*                                                                       */
31   /* <Struct>                                                              */
32   /*    FT_MM_Axis                                                         */
33   /*                                                                       */
34   /* <Description>                                                         */
35   /*    A simple structure used to model a given axis in design space for  */
36   /*    Multiple Masters fonts.                                            */
37   /*                                                                       */
38   /* <Fields>                                                              */
39   /*    name    :: The axis's name.                                        */
40   /*                                                                       */
41   /*    minimum :: The axis's minimum design coordinate.                   */
42   /*                                                                       */
43   /*    maximum :: The axis's maximum design coordinate.                   */
44   /*                                                                       */
45   typedef struct  FT_MM_Axis_
46   {
47     FT_String*  name;
48     FT_Long     minimum;
49     FT_Long     maximum;
50
51   } FT_MM_Axis;
52
53
54   /*************************************************************************/
55   /*                                                                       */
56   /* <Struct>                                                              */
57   /*    FT_Multi_Master                                                    */
58   /*                                                                       */
59   /* <Description>                                                         */
60   /*    A structure used to model the axes and space of a Multiple Masters */
61   /*    font.                                                              */
62   /*                                                                       */
63   /* <Fields>                                                              */
64   /*    num_axis    :: Number of axes.  Cannot exceed 4.                   */
65   /*                                                                       */
66   /*    num_designs :: Number of designs; should ne normally 2^num_axis    */
67   /*                   even though the Type 1 specification strangely      */
68   /*                   allows for intermediate designs to be present. This */
69   /*                   number cannot exceed 16.                            */
70   /*                                                                       */
71   /*    axis        :: A table of axis descriptors.                        */
72   /*                                                                       */
73   typedef struct  FT_Multi_Master_
74   {
75     FT_UInt     num_axis;
76     FT_UInt     num_designs;
77     FT_MM_Axis  axis[T1_MAX_MM_AXIS];
78
79   } FT_Multi_Master;
80
81
82   typedef FT_Error  (*FT_Get_MM_Func)( FT_Face           face,
83                                        FT_Multi_Master*  master );
84
85   typedef FT_Error  (*FT_Set_MM_Design_Func)( FT_Face   face,
86                                               FT_UInt   num_coords,
87                                               FT_Long*  coords );
88
89   typedef FT_Error  (*FT_Set_MM_Blend_Func)( FT_Face   face,
90                                              FT_UInt   num_coords,
91                                              FT_Long*  coords );
92
93
94   /*************************************************************************/
95   /*                                                                       */
96   /* <Function>                                                            */
97   /*    FT_Get_Multi_Master                                                */
98   /*                                                                       */
99   /* <Description>                                                         */
100   /*    Retrieves the Multiple Master descriptor of a given font.          */
101   /*                                                                       */
102   /* <Input>                                                               */
103   /*    face   :: A handle to the source face.                             */
104   /*                                                                       */
105   /* <Output>                                                              */
106   /*    master :: The Multiple Masters descriptor.                         */
107   /*                                                                       */
108   /* <Return>                                                              */
109   /*    FreeType error code.  0 means success.                             */
110   /*                                                                       */
111   FT_EXPORT_DEF( FT_Error )  FT_Get_Multi_Master( FT_Face           face,
112                                                   FT_Multi_Master*  master );
113
114
115   /*************************************************************************/
116   /*                                                                       */
117   /* <Function>                                                            */
118   /*    FT_Set_MM_Design_Coordinates                                       */
119   /*                                                                       */
120   /* <Description>                                                         */
121   /*    For Multiple Masters fonts, choose an interpolated font design     */
122   /*    through design coordinates.                                        */
123   /*                                                                       */
124   /* <Input>                                                               */
125   /*    face       :: A handle to the source face.                         */
126   /*                                                                       */
127   /*    num_coords :: The number of design coordinates (must be equal to   */
128   /*                  the number of axes in the font).                     */
129   /*                                                                       */
130   /*    coords     :: The design coordinates.                              */
131   /*                                                                       */
132   /* <Return>                                                              */
133   /*    FreeType error code.  0 means success.                             */
134   /*                                                                       */
135   FT_EXPORT_DEF( FT_Error )  FT_Set_MM_Design_Coordinates(
136                                FT_Face   face,
137                                FT_UInt   num_coords,
138                                FT_Long*  coords );
139
140
141   /*************************************************************************/
142   /*                                                                       */
143   /* <Function>                                                            */
144   /*    FT_Set_MM_Blend_Coordinates                                        */
145   /*                                                                       */
146   /* <Description>                                                         */
147   /*    For Multiple Masters fonts, choose an interpolated font design     */
148   /*    through normalized blend coordinates.                              */
149   /*                                                                       */
150   /* <Input>                                                               */
151   /*    face       :: A handle to the source face.                         */
152   /*                                                                       */
153   /*    num_coords :: The number of design coordinates (must be equal to   */
154   /*                  the number of axes in the font).                     */
155   /*                                                                       */
156   /*    coords     :: The design coordinates (each one must be between 0   */
157   /*                  and 1.0).                                            */
158   /*                                                                       */
159   /* <Return>                                                              */
160   /*    FreeType error code.  0 means success.                             */
161   /*                                                                       */
162   FT_EXPORT_DEF( FT_Error )  FT_Set_MM_Blend_Coordinates(
163                                FT_Face    face,
164                                FT_UInt    num_coords,
165                                FT_Fixed*  coords );
166
167
168 #ifdef __cplusplus
169   }
170 #endif
171
172 #endif /* FTMM_H */
173
174
175 /* END */