nuclear@0: /***************************************************************************/ nuclear@0: /* */ nuclear@0: /* svmm.h */ nuclear@0: /* */ nuclear@0: /* The FreeType Multiple Masters and GX var services (specification). */ nuclear@0: /* */ nuclear@0: /* Copyright 2003, 2004 by */ nuclear@0: /* David Turner, Robert Wilhelm, and Werner Lemberg. */ nuclear@0: /* */ nuclear@0: /* This file is part of the FreeType project, and may only be used, */ nuclear@0: /* modified, and distributed under the terms of the FreeType project */ nuclear@0: /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ nuclear@0: /* this file you indicate that you have read the license and */ nuclear@0: /* understand and accept it fully. */ nuclear@0: /* */ nuclear@0: /***************************************************************************/ nuclear@0: nuclear@0: nuclear@0: #ifndef __SVMM_H__ nuclear@0: #define __SVMM_H__ nuclear@0: nuclear@0: #include FT_INTERNAL_SERVICE_H nuclear@0: nuclear@0: nuclear@0: FT_BEGIN_HEADER nuclear@0: nuclear@0: nuclear@0: /* nuclear@0: * A service used to manage multiple-masters data in a given face. nuclear@0: * nuclear@0: * See the related APIs in `ftmm.h' (FT_MULTIPLE_MASTERS_H). nuclear@0: * nuclear@0: */ nuclear@0: nuclear@0: #define FT_SERVICE_ID_MULTI_MASTERS "multi-masters" nuclear@0: nuclear@0: nuclear@0: typedef FT_Error nuclear@0: (*FT_Get_MM_Func)( FT_Face face, nuclear@0: FT_Multi_Master* master ); nuclear@0: nuclear@0: typedef FT_Error nuclear@0: (*FT_Get_MM_Var_Func)( FT_Face face, nuclear@0: FT_MM_Var* *master ); nuclear@0: nuclear@0: typedef FT_Error nuclear@0: (*FT_Set_MM_Design_Func)( FT_Face face, nuclear@0: FT_UInt num_coords, nuclear@0: FT_Long* coords ); nuclear@0: nuclear@0: typedef FT_Error nuclear@0: (*FT_Set_Var_Design_Func)( FT_Face face, nuclear@0: FT_UInt num_coords, nuclear@0: FT_Fixed* coords ); nuclear@0: nuclear@0: typedef FT_Error nuclear@0: (*FT_Set_MM_Blend_Func)( FT_Face face, nuclear@0: FT_UInt num_coords, nuclear@0: FT_Long* coords ); nuclear@0: nuclear@0: nuclear@0: FT_DEFINE_SERVICE( MultiMasters ) nuclear@0: { nuclear@0: FT_Get_MM_Func get_mm; nuclear@0: FT_Set_MM_Design_Func set_mm_design; nuclear@0: FT_Set_MM_Blend_Func set_mm_blend; nuclear@0: FT_Get_MM_Var_Func get_mm_var; nuclear@0: FT_Set_Var_Design_Func set_var_design; nuclear@0: }; nuclear@0: nuclear@0: #ifndef FT_CONFIG_OPTION_PIC nuclear@0: nuclear@0: #define FT_DEFINE_SERVICE_MULTIMASTERSREC(class_, get_mm_, set_mm_design_, \ nuclear@0: set_mm_blend_, get_mm_var_, set_var_design_) \ nuclear@0: static const FT_Service_MultiMastersRec class_ = \ nuclear@0: { \ nuclear@0: get_mm_, set_mm_design_, set_mm_blend_, get_mm_var_, set_var_design_ \ nuclear@0: }; nuclear@0: nuclear@0: #else /* FT_CONFIG_OPTION_PIC */ nuclear@0: nuclear@0: #define FT_DEFINE_SERVICE_MULTIMASTERSREC(class_, get_mm_, set_mm_design_, \ nuclear@0: set_mm_blend_, get_mm_var_, set_var_design_) \ nuclear@0: void \ nuclear@0: FT_Init_Class_##class_( FT_Service_MultiMastersRec* clazz ) \ nuclear@0: { \ nuclear@0: clazz->get_mm = get_mm_; \ nuclear@0: clazz->set_mm_design = set_mm_design_; \ nuclear@0: clazz->set_mm_blend = set_mm_blend_; \ nuclear@0: clazz->get_mm_var = get_mm_var_; \ nuclear@0: clazz->set_var_design = set_var_design_; \ nuclear@0: } nuclear@0: nuclear@0: #endif /* FT_CONFIG_OPTION_PIC */ nuclear@0: nuclear@0: /* */ nuclear@0: nuclear@0: nuclear@0: FT_END_HEADER nuclear@0: nuclear@0: #endif /* __SVMM_H__ */ nuclear@0: nuclear@0: nuclear@0: /* END */