Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
3918 | Serge | 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 |
||
29 | #include FT_INTERNAL_DEBUG_H |
||
30 | |||
31 | #include FT_INTERNAL_OBJECTS_H |
||
32 | #include FT_SERVICE_GX_VALIDATE_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 */ |