Home | History | Annotate | Download | only in base
      1 /***************************************************************************/
      2 /*                                                                         */
      3 /*  ftgxval.c                                                              */
      4 /*                                                                         */
      5 /*    FreeType API for validating TrueTypeGX/AAT tables (body).            */
      6 /*                                                                         */
      7 /*  Copyright 2004-2018 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_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 )
     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 )
    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 */
    143