Blame src/base/ftotval.c

Packit cf904d
/***************************************************************************/
Packit cf904d
/*                                                                         */
Packit cf904d
/*  ftotval.c                                                              */
Packit cf904d
/*                                                                         */
Packit cf904d
/*    FreeType API for validating OpenType tables (body).                  */
Packit cf904d
/*                                                                         */
Packit cf904d
/*  Copyright 2004-2017 by                                                 */
Packit cf904d
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
Packit cf904d
/*                                                                         */
Packit cf904d
/*  This file is part of the FreeType project, and may only be used,       */
Packit cf904d
/*  modified, and distributed under the terms of the FreeType project      */
Packit cf904d
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
Packit cf904d
/*  this file you indicate that you have read the license and              */
Packit cf904d
/*  understand and accept it fully.                                        */
Packit cf904d
/*                                                                         */
Packit cf904d
/***************************************************************************/
Packit cf904d
Packit cf904d
#include <ft2build.h>
Packit cf904d
#include FT_INTERNAL_DEBUG_H
Packit cf904d
Packit cf904d
#include FT_INTERNAL_OBJECTS_H
Packit cf904d
#include FT_SERVICE_OPENTYPE_VALIDATE_H
Packit cf904d
#include FT_OPENTYPE_VALIDATE_H
Packit cf904d
Packit cf904d
Packit cf904d
  /* documentation is in ftotval.h */
Packit cf904d
Packit cf904d
  FT_EXPORT_DEF( FT_Error )
Packit cf904d
  FT_OpenType_Validate( FT_Face    face,
Packit cf904d
                        FT_UInt    validation_flags,
Packit cf904d
                        FT_Bytes  *BASE_table,
Packit cf904d
                        FT_Bytes  *GDEF_table,
Packit cf904d
                        FT_Bytes  *GPOS_table,
Packit cf904d
                        FT_Bytes  *GSUB_table,
Packit cf904d
                        FT_Bytes  *JSTF_table )
Packit cf904d
  {
Packit cf904d
    FT_Service_OTvalidate  service;
Packit cf904d
    FT_Error               error;
Packit cf904d
Packit cf904d
Packit cf904d
    if ( !face )
Packit cf904d
    {
Packit cf904d
      error = FT_THROW( Invalid_Face_Handle );
Packit cf904d
      goto Exit;
Packit cf904d
    }
Packit cf904d
Packit cf904d
    if ( !( BASE_table &&
Packit cf904d
            GDEF_table &&
Packit cf904d
            GPOS_table &&
Packit cf904d
            GSUB_table &&
Packit cf904d
            JSTF_table ) )
Packit cf904d
    {
Packit cf904d
      error = FT_THROW( Invalid_Argument );
Packit cf904d
      goto Exit;
Packit cf904d
    }
Packit cf904d
Packit cf904d
    FT_FACE_FIND_GLOBAL_SERVICE( face, service, OPENTYPE_VALIDATE );
Packit cf904d
Packit cf904d
    if ( service )
Packit cf904d
      error = service->validate( face,
Packit cf904d
                                 validation_flags,
Packit cf904d
                                 BASE_table,
Packit cf904d
                                 GDEF_table,
Packit cf904d
                                 GPOS_table,
Packit cf904d
                                 GSUB_table,
Packit cf904d
                                 JSTF_table );
Packit cf904d
    else
Packit cf904d
      error = FT_THROW( Unimplemented_Feature );
Packit cf904d
Packit cf904d
  Exit:
Packit cf904d
    return error;
Packit cf904d
  }
Packit cf904d
Packit cf904d
Packit cf904d
  FT_EXPORT_DEF( void )
Packit cf904d
  FT_OpenType_Free( FT_Face   face,
Packit cf904d
                    FT_Bytes  table )
Packit cf904d
  {
Packit cf904d
    FT_Memory  memory;
Packit cf904d
Packit cf904d
Packit cf904d
    if ( !face )
Packit cf904d
      return;
Packit cf904d
Packit cf904d
    memory = FT_FACE_MEMORY( face );
Packit cf904d
Packit cf904d
    FT_FREE( table );
Packit cf904d
  }
Packit cf904d
Packit cf904d
Packit cf904d
/* END */