1295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/***************************************************************************/
2295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/*                                                                         */
3295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/*  sfntpic.h                                                              */
4295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/*                                                                         */
5295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/*    The FreeType position independent code services for sfnt module.     */
6295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/*                                                                         */
7a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang/*  Copyright 2009, 2012 by                                                */
8295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/*  Oran Agra and Mickey Gabel.                                            */
9295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/*                                                                         */
10295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/*  This file is part of the FreeType project, and may only be used,       */
11295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/*  modified, and distributed under the terms of the FreeType project      */
12295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/*  this file you indicate that you have read the license and              */
14295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/*  understand and accept it fully.                                        */
15295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/*                                                                         */
16295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/***************************************************************************/
17295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
18295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
19295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#ifndef __SFNTPIC_H__
20295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#define __SFNTPIC_H__
21295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
22e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang
23295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' TurnerFT_BEGIN_HEADER
24295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
25295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#include FT_INTERNAL_PIC_H
26295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
27a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
28a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#ifndef FT_CONFIG_OPTION_PIC
29a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
30a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define SFNT_SERVICES_GET            sfnt_services
31a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define SFNT_SERVICE_GLYPH_DICT_GET  sfnt_service_glyph_dict
32a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define SFNT_SERVICE_PS_NAME_GET     sfnt_service_ps_name
33a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define TT_SERVICE_CMAP_INFO_GET     tt_service_get_cmap_info
34a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define SFNT_SERVICES_GET            sfnt_services
35a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define TT_CMAP_CLASSES_GET          tt_cmap_classes
36a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define SFNT_SERVICE_SFNT_TABLE_GET  sfnt_service_sfnt_table
37a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define SFNT_SERVICE_BDF_GET         sfnt_service_bdf
38a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define SFNT_INTERFACE_GET           sfnt_interface
39295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
40295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#else /* FT_CONFIG_OPTION_PIC */
41295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
42a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang  /* some include files required for members of sfntModulePIC */
43295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#include FT_SERVICE_GLYPH_DICT_H
44295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#include FT_SERVICE_POSTSCRIPT_NAME_H
45295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#include FT_SERVICE_SFNT_H
46295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#include FT_SERVICE_TT_CMAP_H
47a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
48295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#ifdef TT_CONFIG_OPTION_BDF
49295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#include "ttbdf.h"
50295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#include FT_SERVICE_BDF_H
51295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#endif
52a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
53295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#include FT_INTERNAL_DEBUG_H
54295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#include FT_INTERNAL_STREAM_H
55295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#include FT_INTERNAL_SFNT_H
56295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#include "ttcmap.h"
57295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
58a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
59a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang  typedef struct  sfntModulePIC_
60295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  {
61a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    FT_ServiceDescRec*        sfnt_services;
62a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    FT_Service_GlyphDictRec   sfnt_service_glyph_dict;
63295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner    FT_Service_PsFontNameRec  sfnt_service_ps_name;
64a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    FT_Service_TTCMapsRec     tt_service_get_cmap_info;
65a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    TT_CMap_Class*            tt_cmap_classes;
66a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    FT_Service_SFNT_TableRec  sfnt_service_sfnt_table;
67295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#ifdef TT_CONFIG_OPTION_BDF
68a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    FT_Service_BDFRec         sfnt_service_bdf;
69295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#endif
70a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang    SFNT_Interface            sfnt_interface;
71a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
72295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner  } sfntModulePIC;
73295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
74a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
75a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define GET_PIC( lib )                                      \
76a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang          ( (sfntModulePIC*)( (lib)->pic_container.sfnt ) )
77a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
78a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define SFNT_SERVICES_GET                       \
79a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang          ( GET_PIC( library )->sfnt_services )
80a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define SFNT_SERVICE_GLYPH_DICT_GET                       \
81a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang          ( GET_PIC( library )->sfnt_service_glyph_dict )
82a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define SFNT_SERVICE_PS_NAME_GET                       \
83a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang          ( GET_PIC( library )->sfnt_service_ps_name )
84a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define TT_SERVICE_CMAP_INFO_GET                           \
85a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang          ( GET_PIC( library )->tt_service_get_cmap_info )
86a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define SFNT_SERVICES_GET                       \
87a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang          ( GET_PIC( library )->sfnt_services )
88a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define TT_CMAP_CLASSES_GET                       \
89a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang          ( GET_PIC( library )->tt_cmap_classes )
90a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define SFNT_SERVICE_SFNT_TABLE_GET                       \
91a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang          ( GET_PIC( library )->sfnt_service_sfnt_table )
92a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define SFNT_SERVICE_BDF_GET                       \
93a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang          ( GET_PIC( library )->sfnt_service_bdf )
94a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang#define SFNT_INTERFACE_GET                       \
95a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang          ( GET_PIC( library )->sfnt_interface )
96a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
97295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
98e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang  /* see sfntpic.c for the implementation */
99e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang  void
100e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang  sfnt_module_class_pic_free( FT_Library  library );
101e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang
102e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang  FT_Error
103e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang  sfnt_module_class_pic_init( FT_Library  library );
104e3b631da8034f7c6ecc6d809cd9e46d306215c32Xianzhu Wang
105295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#endif /* FT_CONFIG_OPTION_PIC */
106295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
107a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang  /* */
108295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
109295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' TurnerFT_END_HEADER
110295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
111295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#endif /* __SFNTPIC_H__ */
112295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
113295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
114295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/* END */
115