Subversion Repositories Kolibri OS

Rev

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

  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 */
  105.