aeeb8ce4fc989c70e9462a3c1695a24c4aab1143
[reactos.git] / reactos / lib / 3rdparty / freetype / src / base / ftgxval.c
1 /***************************************************************************/
2 /* */
3 /* ftgxval.c */
4 /* */
5 /* FreeType API for validating TrueTyepGX/AAT tables (body). */
6 /* */
7 /* Copyright 2004, 2005, 2006, 2010 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 <ft2build.h>
29 #include FT_INTERNAL_OBJECTS_H
30 #include FT_SERVICE_GX_VALIDATE_H
31
32
33 /* documentation is in ftgxval.h */
34
35 FT_EXPORT_DEF( FT_Error )
36 FT_TrueTypeGX_Validate( FT_Face face,
37 FT_UInt validation_flags,
38 FT_Bytes tables[FT_VALIDATE_GX_LENGTH],
39 FT_UInt table_length )
40 {
41 FT_Service_GXvalidate service;
42 FT_Error error;
43
44
45 if ( !face )
46 {
47 error = FT_Err_Invalid_Face_Handle;
48 goto Exit;
49 }
50
51 if ( tables == NULL )
52 {
53 error = FT_Err_Invalid_Argument;
54 goto Exit;
55 }
56
57 FT_FACE_FIND_GLOBAL_SERVICE( face, service, GX_VALIDATE );
58
59 if ( service )
60 error = service->validate( face,
61 validation_flags,
62 tables,
63 table_length );
64 else
65 error = FT_Err_Unimplemented_Feature;
66
67 Exit:
68 return error;
69 }
70
71
72 FT_EXPORT_DEF( void )
73 FT_TrueTypeGX_Free( FT_Face face,
74 FT_Bytes table )
75 {
76 FT_Memory memory;
77
78
79 if ( !face )
80 return;
81
82 memory = FT_FACE_MEMORY( face );
83
84 FT_FREE( table );
85 }
86
87
88 FT_EXPORT_DEF( FT_Error )
89 FT_ClassicKern_Validate( FT_Face face,
90 FT_UInt validation_flags,
91 FT_Bytes *ckern_table )
92 {
93 FT_Service_CKERNvalidate service;
94 FT_Error error;
95
96
97 if ( !face )
98 {
99 error = FT_Err_Invalid_Face_Handle;
100 goto Exit;
101 }
102
103 if ( ckern_table == NULL )
104 {
105 error = FT_Err_Invalid_Argument;
106 goto Exit;
107 }
108
109 FT_FACE_FIND_GLOBAL_SERVICE( face, service, CLASSICKERN_VALIDATE );
110
111 if ( service )
112 error = service->validate( face,
113 validation_flags,
114 ckern_table );
115 else
116 error = FT_Err_Unimplemented_Feature;
117
118 Exit:
119 return error;
120 }
121
122
123 FT_EXPORT_DEF( void )
124 FT_ClassicKern_Free( FT_Face face,
125 FT_Bytes table )
126 {
127 FT_Memory memory;
128
129
130 if ( !face )
131 return;
132
133 memory = FT_FACE_MEMORY( face );
134
135
136 FT_FREE( table );
137 }
138
139
140 /* END */