Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4349 Serge 1
/***************************************************************************/
2
/*                                                                         */
3
/*  svmm.h                                                                 */
4
/*                                                                         */
5
/*    The FreeType Multiple Masters and GX var services (specification).   */
6
/*                                                                         */
7
/*  Copyright 2003, 2004, 2009, 2012 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 __SVMM_H__
20
#define __SVMM_H__
21
 
22
#include FT_INTERNAL_SERVICE_H
23
 
24
 
25
FT_BEGIN_HEADER
26
 
27
 
28
  /*
29
   *  A service used to manage multiple-masters data in a given face.
30
   *
31
   *  See the related APIs in `ftmm.h' (FT_MULTIPLE_MASTERS_H).
32
   *
33
   */
34
 
35
#define FT_SERVICE_ID_MULTI_MASTERS  "multi-masters"
36
 
37
 
38
  typedef FT_Error
39
  (*FT_Get_MM_Func)( FT_Face           face,
40
                     FT_Multi_Master*  master );
41
 
42
  typedef FT_Error
43
  (*FT_Get_MM_Var_Func)( FT_Face      face,
44
                         FT_MM_Var*  *master );
45
 
46
  typedef FT_Error
47
  (*FT_Set_MM_Design_Func)( FT_Face   face,
48
                            FT_UInt   num_coords,
49
                            FT_Long*  coords );
50
 
51
  typedef FT_Error
52
  (*FT_Set_Var_Design_Func)( FT_Face    face,
53
                             FT_UInt    num_coords,
54
                             FT_Fixed*  coords );
55
 
56
  typedef FT_Error
57
  (*FT_Set_MM_Blend_Func)( FT_Face   face,
58
                           FT_UInt   num_coords,
59
                           FT_Long*  coords );
60
 
61
 
62
  FT_DEFINE_SERVICE( MultiMasters )
63
  {
64
    FT_Get_MM_Func          get_mm;
65
    FT_Set_MM_Design_Func   set_mm_design;
66
    FT_Set_MM_Blend_Func    set_mm_blend;
67
    FT_Get_MM_Var_Func      get_mm_var;
68
    FT_Set_Var_Design_Func  set_var_design;
69
  };
70
 
71
 
72
#ifndef FT_CONFIG_OPTION_PIC
73
 
74
#define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_,                          \
75
                                           get_mm_,                         \
76
                                           set_mm_design_,                  \
77
                                           set_mm_blend_,                   \
78
                                           get_mm_var_,                     \
79
                                           set_var_design_ )                \
80
  static const FT_Service_MultiMastersRec  class_ =                         \
81
  {                                                                         \
82
    get_mm_, set_mm_design_, set_mm_blend_, get_mm_var_, set_var_design_    \
83
  };
84
 
85
#else /* FT_CONFIG_OPTION_PIC */
86
 
87
#define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_,                          \
88
                                           get_mm_,                         \
89
                                           set_mm_design_,                  \
90
                                           set_mm_blend_,                   \
91
                                           get_mm_var_,                     \
92
                                           set_var_design_ )                \
93
  void                                                                      \
94
  FT_Init_Class_ ## class_( FT_Service_MultiMastersRec*  clazz )            \
95
  {                                                                         \
96
    clazz->get_mm         = get_mm_;                                        \
97
    clazz->set_mm_design  = set_mm_design_;                                 \
98
    clazz->set_mm_blend   = set_mm_blend_;                                  \
99
    clazz->get_mm_var     = get_mm_var_;                                    \
100
    clazz->set_var_design = set_var_design_;                                \
101
  }
102
 
103
#endif /* FT_CONFIG_OPTION_PIC */
104
 
105
  /* */
106
 
107
 
108
FT_END_HEADER
109
 
110
#endif /* __SVMM_H__ */
111
 
112
 
113
/* END */