svmm.h revision 295ffce55e0198e7a9f7d46b33f5c2b4147bf821
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 25FT_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 99FT_END_HEADER 100 101#endif /* __SVMM_H__ */ 102 103 104/* END */ 105