1 /***************************************************************************/ 2 /* */ 3 /* psauxmod.c */ 4 /* */ 5 /* FreeType auxiliary PostScript module implementation (body). */ 6 /* */ 7 /* Copyright 2000-2015 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 #include <ft2build.h> 20 #include "psauxmod.h" 21 #include "psobjs.h" 22 #include "t1decode.h" 23 #include "t1cmap.h" 24 25 #ifndef T1_CONFIG_OPTION_NO_AFM 26 #include "afmparse.h" 27 #endif 28 29 30 FT_CALLBACK_TABLE_DEF 31 const PS_Table_FuncsRec ps_table_funcs = 32 { 33 ps_table_new, 34 ps_table_done, 35 ps_table_add, 36 ps_table_release 37 }; 38 39 40 FT_CALLBACK_TABLE_DEF 41 const PS_Parser_FuncsRec ps_parser_funcs = 42 { 43 ps_parser_init, 44 ps_parser_done, 45 ps_parser_skip_spaces, 46 ps_parser_skip_PS_token, 47 ps_parser_to_int, 48 ps_parser_to_fixed, 49 ps_parser_to_bytes, 50 ps_parser_to_coord_array, 51 ps_parser_to_fixed_array, 52 ps_parser_to_token, 53 ps_parser_to_token_array, 54 ps_parser_load_field, 55 ps_parser_load_field_table 56 }; 57 58 59 FT_CALLBACK_TABLE_DEF 60 const T1_Builder_FuncsRec t1_builder_funcs = 61 { 62 t1_builder_init, 63 t1_builder_done, 64 t1_builder_check_points, 65 t1_builder_add_point, 66 t1_builder_add_point1, 67 t1_builder_add_contour, 68 t1_builder_start_point, 69 t1_builder_close_contour 70 }; 71 72 73 FT_CALLBACK_TABLE_DEF 74 const T1_Decoder_FuncsRec t1_decoder_funcs = 75 { 76 t1_decoder_init, 77 t1_decoder_done, 78 t1_decoder_parse_charstrings 79 }; 80 81 82 #ifndef T1_CONFIG_OPTION_NO_AFM 83 FT_CALLBACK_TABLE_DEF 84 const AFM_Parser_FuncsRec afm_parser_funcs = 85 { 86 afm_parser_init, 87 afm_parser_done, 88 afm_parser_parse 89 }; 90 #endif 91 92 93 FT_CALLBACK_TABLE_DEF 94 const T1_CMap_ClassesRec t1_cmap_classes = 95 { 96 &t1_cmap_standard_class_rec, 97 &t1_cmap_expert_class_rec, 98 &t1_cmap_custom_class_rec, 99 &t1_cmap_unicode_class_rec 100 }; 101 102 103 static 104 const PSAux_Interface psaux_interface = 105 { 106 &ps_table_funcs, 107 &ps_parser_funcs, 108 &t1_builder_funcs, 109 &t1_decoder_funcs, 110 t1_decrypt, 111 112 (const T1_CMap_ClassesRec*) &t1_cmap_classes, 113 114 #ifndef T1_CONFIG_OPTION_NO_AFM 115 &afm_parser_funcs, 116 #else 117 0, 118 #endif 119 }; 120 121 122 FT_CALLBACK_TABLE_DEF 123 const FT_Module_Class psaux_module_class = 124 { 125 0, 126 sizeof ( FT_ModuleRec ), 127 "psaux", 128 0x20000L, 129 0x20000L, 130 131 &psaux_interface, /* module-specific interface */ 132 133 (FT_Module_Constructor)0, 134 (FT_Module_Destructor) 0, 135 (FT_Module_Requester) 0 136 }; 137 138 139 /* END */ 140