1/***************************************************************************/
2/*                                                                         */
3/*  ftotval.c                                                              */
4/*                                                                         */
5/*    FreeType API for validating OpenType tables (body).                  */
6/*                                                                         */
7/*  Copyright 2004, 2006, 2008, 2010, 2013 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 "../../include/ft2build.h"
19#include "../../include/freetype/internal/ftdebug.h"
20
21#include "../../include/freetype/internal/ftobjs.h"
22#include "../../include/freetype/internal/services/svotval.h"
23#include "../../include/freetype/ftotval.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 */
92