Imported Upstream version 2.10.4
[platform/upstream/freetype2.git] / include / freetype / internal / services / svsfnt.h
1 /****************************************************************************
2  *
3  * svsfnt.h
4  *
5  *   The FreeType SFNT table loading service (specification).
6  *
7  * Copyright (C) 2003-2020 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 <freetype/internal/ftserv.h>
23 #include <freetype/tttables.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 #define FT_DEFINE_SERVICE_SFNT_TABLEREC( class_, load_, get_, info_ )  \
74   static const FT_Service_SFNT_TableRec  class_ =                      \
75   {                                                                    \
76     load_, get_, info_                                                 \
77   };
78
79   /* */
80
81
82 FT_END_HEADER
83
84
85 #endif /* SVSFNT_H_ */
86
87
88 /* END */