misc/libfreetype/include/freetype/internal/services/svmm.h
changeset 5172 88f2e05288ba
equal deleted inserted replaced
5171:f9283dc4860d 5172:88f2e05288ba
       
     1 /***************************************************************************/
       
     2 /*                                                                         */
       
     3 /*  svmm.h                                                                 */
       
     4 /*                                                                         */
       
     5 /*    The FreeType Multiple Masters and GX var services (specification).   */
       
     6 /*                                                                         */
       
     7 /*  Copyright 2003, 2004 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 #ifndef FT_CONFIG_OPTION_PIC
       
    72 
       
    73 #define FT_DEFINE_SERVICE_MULTIMASTERSREC(class_, get_mm_, set_mm_design_,   \
       
    74         set_mm_blend_, get_mm_var_, set_var_design_)                         \
       
    75   static const FT_Service_MultiMastersRec class_ =                           \
       
    76   {                                                                          \
       
    77     get_mm_, set_mm_design_, set_mm_blend_, get_mm_var_, set_var_design_     \
       
    78   };
       
    79 
       
    80 #else /* FT_CONFIG_OPTION_PIC */ 
       
    81 
       
    82 #define FT_DEFINE_SERVICE_MULTIMASTERSREC(class_, get_mm_, set_mm_design_,   \
       
    83         set_mm_blend_, get_mm_var_, set_var_design_)                         \
       
    84   void                                                                       \
       
    85   FT_Init_Class_##class_( FT_Service_MultiMastersRec*  clazz )               \
       
    86   {                                                                          \
       
    87     clazz->get_mm = get_mm_;                                                 \
       
    88     clazz->set_mm_design = set_mm_design_;                                   \
       
    89     clazz->set_mm_blend = set_mm_blend_;                                     \
       
    90     clazz->get_mm_var = get_mm_var_;                                         \
       
    91     clazz->set_var_design = set_var_design_;                                 \
       
    92   } 
       
    93 
       
    94 #endif /* FT_CONFIG_OPTION_PIC */ 
       
    95 
       
    96   /* */
       
    97 
       
    98 
       
    99 FT_END_HEADER
       
   100 
       
   101 #endif /* __SVMM_H__ */
       
   102 
       
   103 
       
   104 /* END */