svsfnt.h revision ec0bab5697bb31ba980810145f62e3799946ec60
1cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/***************************************************************************/
2cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*                                                                         */
305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*  svsfnt.h                                                               */
4cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*                                                                         */
505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*    The FreeType SFNT table loading service (specification).             */
6cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*                                                                         */
705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*  Copyright 2003, 2004, 2009, 2012 by                                    */
805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
9cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*                                                                         */
10cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*  This file is part of the FreeType project, and may only be used,       */
11cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*  modified, and distributed under the terms of the FreeType project      */
12cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*  this file you indicate that you have read the license and              */
14cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*  understand and accept it fully.                                        */
15cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*                                                                         */
1605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/***************************************************************************/
17cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
18cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
19cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef __SVSFNT_H__
20cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define __SVSFNT_H__
21cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#include FT_INTERNAL_SERVICE_H
23cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include FT_TRUETYPE_TABLES_H
2405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2605436638acc7c010349a69c3395f1a57c642dc62Ying WangFT_BEGIN_HEADER
2705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /*
3005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   *  SFNT table loading service.
3105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   */
3205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define FT_SERVICE_ID_SFNT_TABLE  "sfnt-table"
3405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /*
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
97FT_END_HEADER
98
99
100#endif /* __SVSFNT_H__ */
101
102
103/* END */
104