Subversion Repositories Kolibri OS

Rev

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

  1. /***************************************************************************/
  2. /*                                                                         */
  3. /*  svsfnt.h                                                               */
  4. /*                                                                         */
  5. /*    The FreeType SFNT table loading service (specification).             */
  6. /*                                                                         */
  7. /*  Copyright 2003, 2004, 2009, 2012 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.  
  19. #ifndef __SVSFNT_H__
  20. #define __SVSFNT_H__
  21.  
  22. #include FT_INTERNAL_SERVICE_H
  23. #include FT_TRUETYPE_TABLES_H
  24.  
  25.  
  26. FT_BEGIN_HEADER
  27.  
  28.  
  29.   /*
  30.    *  SFNT table loading service.
  31.    */
  32.  
  33. #define FT_SERVICE_ID_SFNT_TABLE  "sfnt-table"
  34.  
  35.  
  36.   /*
  37.    * Used to implement FT_Load_Sfnt_Table().
  38.    */
  39.   typedef FT_Error
  40.   (*FT_SFNT_TableLoadFunc)( FT_Face    face,
  41.                             FT_ULong   tag,
  42.                             FT_Long    offset,
  43.                             FT_Byte*   buffer,
  44.                             FT_ULong*  length );
  45.  
  46.   /*
  47.    * Used to implement FT_Get_Sfnt_Table().
  48.    */
  49.   typedef void*
  50.   (*FT_SFNT_TableGetFunc)( FT_Face      face,
  51.                            FT_Sfnt_Tag  tag );
  52.  
  53.  
  54.   /*
  55.    * Used to implement FT_Sfnt_Table_Info().
  56.    */
  57.   typedef FT_Error
  58.   (*FT_SFNT_TableInfoFunc)( FT_Face    face,
  59.                             FT_UInt    idx,
  60.                             FT_ULong  *tag,
  61.                             FT_ULong  *offset,
  62.                             FT_ULong  *length );
  63.  
  64.  
  65.   FT_DEFINE_SERVICE( SFNT_Table )
  66.   {
  67.     FT_SFNT_TableLoadFunc  load_table;
  68.     FT_SFNT_TableGetFunc   get_table;
  69.     FT_SFNT_TableInfoFunc  table_info;
  70.   };
  71.  
  72.  
  73. #ifndef FT_CONFIG_OPTION_PIC
  74.  
  75. #define FT_DEFINE_SERVICE_SFNT_TABLEREC( class_, load_, get_, info_ )  \
  76.   static const FT_Service_SFNT_TableRec  class_ =                      \
  77.   {                                                                    \
  78.     load_, get_, info_                                                 \
  79.   };
  80.  
  81. #else /* FT_CONFIG_OPTION_PIC */
  82.  
  83. #define FT_DEFINE_SERVICE_SFNT_TABLEREC( class_, load_, get_, info_ ) \
  84.   void                                                                \
  85.   FT_Init_Class_ ## class_( FT_Service_SFNT_TableRec*  clazz )        \
  86.   {                                                                   \
  87.     clazz->load_table = load_;                                        \
  88.     clazz->get_table  = get_;                                         \
  89.     clazz->table_info = info_;                                        \
  90.   }
  91.  
  92. #endif /* FT_CONFIG_OPTION_PIC */
  93.  
  94.   /* */
  95.  
  96.  
  97. FT_END_HEADER
  98.  
  99.  
  100. #endif /* __SVSFNT_H__ */
  101.  
  102.  
  103. /* END */
  104.