Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4759 right-hear 1
/***************************************************************************/
2
/*                                                                         */
3
/*  ftrender.h                                                             */
4
/*                                                                          */
5
/*    FreeType renderer modules public interface (specification).          */
6
/*                                                                         */
7
/*  Copyright 1996-2001, 2005, 2006, 2010 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 __FTRENDER_H__
20
#define __FTRENDER_H__
21
 
22
 
23
#include 
24
#include FT_MODULE_H
25
#include FT_GLYPH_H
26
 
27
 
28
FT_BEGIN_HEADER
29
 
30
 
31
  /*************************************************************************/
32
  /*                                                                       */
33
  /* 
*/
34
  /*    module_management                                                  */
35
  /*                                                                       */
36
  /*************************************************************************/
37
 
38
 
39
  /* create a new glyph object */
40
  typedef FT_Error
41
  (*FT_Glyph_InitFunc)( FT_Glyph      glyph,
42
                        FT_GlyphSlot  slot );
43
 
44
  /* destroys a given glyph object */
45
  typedef void
46
  (*FT_Glyph_DoneFunc)( FT_Glyph  glyph );
47
 
48
  typedef void
49
  (*FT_Glyph_TransformFunc)( FT_Glyph          glyph,
50
                             const FT_Matrix*  matrix,
51
                             const FT_Vector*  delta );
52
 
53
  typedef void
54
  (*FT_Glyph_GetBBoxFunc)( FT_Glyph  glyph,
55
                           FT_BBox*  abbox );
56
 
57
  typedef FT_Error
58
  (*FT_Glyph_CopyFunc)( FT_Glyph   source,
59
                        FT_Glyph   target );
60
 
61
  typedef FT_Error
62
  (*FT_Glyph_PrepareFunc)( FT_Glyph      glyph,
63
                           FT_GlyphSlot  slot );
64
 
65
/* deprecated */
66
#define FT_Glyph_Init_Func       FT_Glyph_InitFunc
67
#define FT_Glyph_Done_Func       FT_Glyph_DoneFunc
68
#define FT_Glyph_Transform_Func  FT_Glyph_TransformFunc
69
#define FT_Glyph_BBox_Func       FT_Glyph_GetBBoxFunc
70
#define FT_Glyph_Copy_Func       FT_Glyph_CopyFunc
71
#define FT_Glyph_Prepare_Func    FT_Glyph_PrepareFunc
72
 
73
 
74
  struct  FT_Glyph_Class_
75
  {
76
    FT_Long                 glyph_size;
77
    FT_Glyph_Format         glyph_format;
78
    FT_Glyph_InitFunc       glyph_init;
79
    FT_Glyph_DoneFunc       glyph_done;
80
    FT_Glyph_CopyFunc       glyph_copy;
81
    FT_Glyph_TransformFunc  glyph_transform;
82
    FT_Glyph_GetBBoxFunc    glyph_bbox;
83
    FT_Glyph_PrepareFunc    glyph_prepare;
84
  };
85
 
86
 
87
  typedef FT_Error
88
  (*FT_Renderer_RenderFunc)( FT_Renderer       renderer,
89
                             FT_GlyphSlot      slot,
90
                             FT_UInt           mode,
91
                             const FT_Vector*  origin );
92
 
93
  typedef FT_Error
94
  (*FT_Renderer_TransformFunc)( FT_Renderer       renderer,
95
                                FT_GlyphSlot      slot,
96
                                const FT_Matrix*  matrix,
97
                                const FT_Vector*  delta );
98
 
99
 
100
  typedef void
101
  (*FT_Renderer_GetCBoxFunc)( FT_Renderer   renderer,
102
                              FT_GlyphSlot  slot,
103
                              FT_BBox*      cbox );
104
 
105
 
106
  typedef FT_Error
107
  (*FT_Renderer_SetModeFunc)( FT_Renderer  renderer,
108
                              FT_ULong     mode_tag,
109
                              FT_Pointer   mode_ptr );
110
 
111
/* deprecated identifiers */
112
#define FTRenderer_render  FT_Renderer_RenderFunc
113
#define FTRenderer_transform  FT_Renderer_TransformFunc
114
#define FTRenderer_getCBox  FT_Renderer_GetCBoxFunc
115
#define FTRenderer_setMode  FT_Renderer_SetModeFunc
116
 
117
 
118
  /*************************************************************************/
119
  /*                                                                       */
120
  /*                                                               */
121
  /*    FT_Renderer_Class                                                  */
122
  /*                                                                       */
123
  /*                                                          */
124
  /*    The renderer module class descriptor.                              */
125
  /*                                                                       */
126
  /*                                                               */
127
  /*    root            :: The root @FT_Module_Class fields.               */
128
  /*                                                                       */
129
  /*    glyph_format    :: The glyph image format this renderer handles.   */
130
  /*                                                                       */
131
  /*    render_glyph    :: A method used to render the image that is in a  */
132
  /*                       given glyph slot into a bitmap.                 */
133
  /*                                                                       */
134
  /*    transform_glyph :: A method used to transform the image that is in */
135
  /*                       a given glyph slot.                             */
136
  /*                                                                       */
137
  /*    get_glyph_cbox  :: A method used to access the glyph's cbox.       */
138
  /*                                                                       */
139
  /*    set_mode        :: A method used to pass additional parameters.    */
140
  /*                                                                       */
141
  /*    raster_class    :: For @FT_GLYPH_FORMAT_OUTLINE renderers only.    */
142
  /*                       This is a pointer to its raster's class.        */
143
  /*                                                                       */
144
  typedef struct  FT_Renderer_Class_
145
  {
146
    FT_Module_Class            root;
147
 
148
    FT_Glyph_Format            glyph_format;
149
 
150
    FT_Renderer_RenderFunc     render_glyph;
151
    FT_Renderer_TransformFunc  transform_glyph;
152
    FT_Renderer_GetCBoxFunc    get_glyph_cbox;
153
    FT_Renderer_SetModeFunc    set_mode;
154
 
155
    FT_Raster_Funcs*           raster_class;
156
 
157
  } FT_Renderer_Class;
158
 
159
 
160
  /*************************************************************************/
161
  /*                                                                       */
162
  /*                                                             */
163
  /*    FT_Get_Renderer                                                    */
164
  /*                                                                       */
165
  /*                                                          */
166
  /*    Retrieve the current renderer for a given glyph format.            */
167
  /*                                                                       */
168
  /*                                                                */
169
  /*    library :: A handle to the library object.                         */
170
  /*                                                                       */
171
  /*    format  :: The glyph format.                                       */
172
  /*                                                                       */
173
  /*                                                               */
174
  /*    A renderer handle.  0~if none found.                               */
175
  /*                                                                       */
176
  /*                                                                 */
177
  /*    An error will be returned if a module already exists by that name, */
178
  /*    or if the module requires a version of FreeType that is too great. */
179
  /*                                                                       */
180
  /*    To add a new renderer, simply use @FT_Add_Module.  To retrieve a   */
181
  /*    renderer by its name, use @FT_Get_Module.                          */
182
  /*                                                                       */
183
  FT_EXPORT( FT_Renderer )
184
  FT_Get_Renderer( FT_Library       library,
185
                   FT_Glyph_Format  format );
186
 
187
 
188
  /*************************************************************************/
189
  /*                                                                       */
190
  /*                                                             */
191
  /*    FT_Set_Renderer                                                    */
192
  /*                                                                       */
193
  /*                                                          */
194
  /*    Set the current renderer to use, and set additional mode.          */
195
  /*                                                                       */
196
  /*                                                                */
197
  /*    library    :: A handle to the library object.                      */
198
  /*                                                                       */
199
  /*                                                                */
200
  /*    renderer   :: A handle to the renderer object.                     */
201
  /*                                                                       */
202
  /*    num_params :: The number of additional parameters.                 */
203
  /*                                                                       */
204
  /*    parameters :: Additional parameters.                               */
205
  /*                                                                       */
206
  /*                                                               */
207
  /*    FreeType error code.  0~means success.                             */
208
  /*                                                                       */
209
  /*                                                                 */
210
  /*    In case of success, the renderer will be used to convert glyph     */
211
  /*    images in the renderer's known format into bitmaps.                */
212
  /*                                                                       */
213
  /*    This doesn't change the current renderer for other formats.        */
214
  /*                                                                       */
215
  FT_EXPORT( FT_Error )
216
  FT_Set_Renderer( FT_Library     library,
217
                   FT_Renderer    renderer,
218
                   FT_UInt        num_params,
219
                   FT_Parameter*  parameters );
220
 
221
 
222
  /* */
223
 
224
 
225
FT_END_HEADER
226
 
227
#endif /* __FTRENDER_H__ */
228
 
229
 
230
/* END */