OLD | NEW |
| (Empty) |
1 /***************************************************************************/ | |
2 /* */ | |
3 /* ftgxval.c */ | |
4 /* */ | |
5 /* FreeType API for validating TrueTyepGX/AAT tables (body). */ | |
6 /* */ | |
7 /* Copyright 2004-2006, 2010, 2013 by */ | |
8 /* Masatake YAMATO, Redhat K.K, */ | |
9 /* David Turner, Robert Wilhelm, and Werner Lemberg. */ | |
10 /* */ | |
11 /* This file is part of the FreeType project, and may only be used, */ | |
12 /* modified, and distributed under the terms of the FreeType project */ | |
13 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ | |
14 /* this file you indicate that you have read the license and */ | |
15 /* understand and accept it fully. */ | |
16 /* */ | |
17 /***************************************************************************/ | |
18 | |
19 /***************************************************************************/ | |
20 /* */ | |
21 /* gxvalid is derived from both gxlayout module and otvalid module. */ | |
22 /* Development of gxlayout is supported by the Information-technology */ | |
23 /* Promotion Agency(IPA), Japan. */ | |
24 /* */ | |
25 /***************************************************************************/ | |
26 | |
27 | |
28 #include "../../include/ft2build.h" | |
29 #include "../../include/freetype/internal/ftdebug.h" | |
30 | |
31 #include "../../include/freetype/internal/ftobjs.h" | |
32 #include "../../include/freetype/internal/services/svgxval.h" | |
33 | |
34 | |
35 /* documentation is in ftgxval.h */ | |
36 | |
37 FT_EXPORT_DEF( FT_Error ) | |
38 FT_TrueTypeGX_Validate( FT_Face face, | |
39 FT_UInt validation_flags, | |
40 FT_Bytes tables[FT_VALIDATE_GX_LENGTH], | |
41 FT_UInt table_length ) | |
42 { | |
43 FT_Service_GXvalidate service; | |
44 FT_Error error; | |
45 | |
46 | |
47 if ( !face ) | |
48 { | |
49 error = FT_THROW( Invalid_Face_Handle ); | |
50 goto Exit; | |
51 } | |
52 | |
53 if ( tables == NULL ) | |
54 { | |
55 error = FT_THROW( Invalid_Argument ); | |
56 goto Exit; | |
57 } | |
58 | |
59 FT_FACE_FIND_GLOBAL_SERVICE( face, service, GX_VALIDATE ); | |
60 | |
61 if ( service ) | |
62 error = service->validate( face, | |
63 validation_flags, | |
64 tables, | |
65 table_length ); | |
66 else | |
67 error = FT_THROW( Unimplemented_Feature ); | |
68 | |
69 Exit: | |
70 return error; | |
71 } | |
72 | |
73 | |
74 FT_EXPORT_DEF( void ) | |
75 FT_TrueTypeGX_Free( FT_Face face, | |
76 FT_Bytes table ) | |
77 { | |
78 FT_Memory memory; | |
79 | |
80 | |
81 if ( !face ) | |
82 return; | |
83 | |
84 memory = FT_FACE_MEMORY( face ); | |
85 | |
86 FT_FREE( table ); | |
87 } | |
88 | |
89 | |
90 FT_EXPORT_DEF( FT_Error ) | |
91 FT_ClassicKern_Validate( FT_Face face, | |
92 FT_UInt validation_flags, | |
93 FT_Bytes *ckern_table ) | |
94 { | |
95 FT_Service_CKERNvalidate service; | |
96 FT_Error error; | |
97 | |
98 | |
99 if ( !face ) | |
100 { | |
101 error = FT_THROW( Invalid_Face_Handle ); | |
102 goto Exit; | |
103 } | |
104 | |
105 if ( ckern_table == NULL ) | |
106 { | |
107 error = FT_THROW( Invalid_Argument ); | |
108 goto Exit; | |
109 } | |
110 | |
111 FT_FACE_FIND_GLOBAL_SERVICE( face, service, CLASSICKERN_VALIDATE ); | |
112 | |
113 if ( service ) | |
114 error = service->validate( face, | |
115 validation_flags, | |
116 ckern_table ); | |
117 else | |
118 error = FT_THROW( Unimplemented_Feature ); | |
119 | |
120 Exit: | |
121 return error; | |
122 } | |
123 | |
124 | |
125 FT_EXPORT_DEF( void ) | |
126 FT_ClassicKern_Free( FT_Face face, | |
127 FT_Bytes table ) | |
128 { | |
129 FT_Memory memory; | |
130 | |
131 | |
132 if ( !face ) | |
133 return; | |
134 | |
135 memory = FT_FACE_MEMORY( face ); | |
136 | |
137 | |
138 FT_FREE( table ); | |
139 } | |
140 | |
141 | |
142 /* END */ | |
OLD | NEW |