Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /***************************************************************************/
  2. /*                                                                         */
  3. /*  ftgxval.c                                                              */
  4. /*                                                                         */
  5. /*    FreeType API for validating TrueTyepGX/AAT tables (body).            */
  6. /*                                                                         */
  7. /*  Copyright 2004-2006, 2010, 2013 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 == NULL )
  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 == NULL )
  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.