• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
FT_DEFINE_SERVICE(SFNT_Table)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