[FREETYPE] Update to v2.9.0 and use this as a chance to slim down our lib a bit....
[reactos.git] / sdk / lib / 3rdparty / freetype / src / base / ftotval.c
1 /***************************************************************************/
2 /* */
3 /* ftotval.c */
4 /* */
5 /* FreeType API for validating OpenType tables (body). */
6 /* */
7 /* Copyright 2004-2018 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 #include <ft2build.h>
19 #include FT_INTERNAL_DEBUG_H
20
21 #include FT_INTERNAL_OBJECTS_H
22 #include FT_SERVICE_OPENTYPE_VALIDATE_H
23 #include FT_OPENTYPE_VALIDATE_H
24
25
26 /* documentation is in ftotval.h */
27
28 FT_EXPORT_DEF( FT_Error )
29 FT_OpenType_Validate( FT_Face face,
30 FT_UInt validation_flags,
31 FT_Bytes *BASE_table,
32 FT_Bytes *GDEF_table,
33 FT_Bytes *GPOS_table,
34 FT_Bytes *GSUB_table,
35 FT_Bytes *JSTF_table )
36 {
37 FT_Service_OTvalidate service;
38 FT_Error error;
39
40
41 if ( !face )
42 {
43 error = FT_THROW( Invalid_Face_Handle );
44 goto Exit;
45 }
46
47 if ( !( BASE_table &&
48 GDEF_table &&
49 GPOS_table &&
50 GSUB_table &&
51 JSTF_table ) )
52 {
53 error = FT_THROW( Invalid_Argument );
54 goto Exit;
55 }
56
57 FT_FACE_FIND_GLOBAL_SERVICE( face, service, OPENTYPE_VALIDATE );
58
59 if ( service )
60 error = service->validate( face,
61 validation_flags,
62 BASE_table,
63 GDEF_table,
64 GPOS_table,
65 GSUB_table,
66 JSTF_table );
67 else
68 error = FT_THROW( Unimplemented_Feature );
69
70 Exit:
71 return error;
72 }
73
74
75 FT_EXPORT_DEF( void )
76 FT_OpenType_Free( FT_Face face,
77 FT_Bytes table )
78 {
79 FT_Memory memory;
80
81
82 if ( !face )
83 return;
84
85 memory = FT_FACE_MEMORY( face );
86
87 FT_FREE( table );
88 }
89
90
91 /* END */