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 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. #ifndef FT_CONFIG_OPTION_PIC
  73.  
  74. #define FT_DEFINE_SERVICE_SFNT_TABLEREC(class_, load_, get_, info_)  \
  75.   static const FT_Service_SFNT_TableRec class_ =                     \
  76.   {                                                                  \
  77.     load_, get_, info_                                               \
  78.   };
  79.  
  80. #else /* FT_CONFIG_OPTION_PIC */
  81.  
  82. #define FT_DEFINE_SERVICE_SFNT_TABLEREC(class_, load_, get_, info_) \
  83.   void                                                              \
  84.   FT_Init_Class_##class_( FT_Service_SFNT_TableRec*  clazz )        \
  85.   {                                                                 \
  86.     clazz->load_table = load_;                                      \
  87.     clazz->get_table = get_;                                        \
  88.     clazz->table_info = info_;                                      \
  89.   }
  90.  
  91. #endif /* FT_CONFIG_OPTION_PIC */
  92.  
  93.   /* */
  94.  
  95.  
  96. FT_END_HEADER
  97.  
  98.  
  99. #endif /* __SVSFNT_H__ */
  100.  
  101.  
  102. /* END */
  103.