Subversion Repositories Kolibri OS

Rev

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, 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 */
  114.