1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/
2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  sfntpic.h                                                              */
4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*    The FreeType position independent code services for sfnt module.     */
6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  Copyright 2009, 2012 by                                                */
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  Oran Agra and Mickey Gabel.                                            */
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  This file is part of the FreeType project, and may only be used,       */
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  modified, and distributed under the terms of the FreeType project      */
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  this file you indicate that you have read the license and              */
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*  understand and accept it fully.                                        */
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/*                                                                         */
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef __SFNTPIC_H__
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define __SFNTPIC_H__
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_BEGIN_HEADER
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/freetype/internal/ftpic.h"
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef FT_CONFIG_OPTION_PIC
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define SFNT_SERVICES_GET            sfnt_services
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define SFNT_SERVICE_GLYPH_DICT_GET  sfnt_service_glyph_dict
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define SFNT_SERVICE_PS_NAME_GET     sfnt_service_ps_name
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define TT_SERVICE_CMAP_INFO_GET     tt_service_get_cmap_info
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define SFNT_SERVICES_GET            sfnt_services
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define TT_CMAP_CLASSES_GET          tt_cmap_classes
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define SFNT_SERVICE_SFNT_TABLE_GET  sfnt_service_sfnt_table
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define SFNT_SERVICE_BDF_GET         sfnt_service_bdf
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define SFNT_INTERFACE_GET           sfnt_interface
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#else /* FT_CONFIG_OPTION_PIC */
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* some include files required for members of sfntModulePIC */
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/freetype/internal/services/svgldict.h"
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/freetype/internal/services/svpostnm.h"
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/freetype/internal/services/svsfnt.h"
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/freetype/internal/services/svttcmap.h"
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef TT_CONFIG_OPTION_BDF
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "ttbdf.h"
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/freetype/internal/services/svbdf.h"
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/freetype/internal/ftdebug.h"
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/freetype/internal/ftstream.h"
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/freetype/internal/sfnt.h"
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "ttcmap.h"
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  typedef struct  sfntModulePIC_
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  {
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_ServiceDescRec*        sfnt_services;
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Service_GlyphDictRec   sfnt_service_glyph_dict;
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Service_PsFontNameRec  sfnt_service_ps_name;
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Service_TTCMapsRec     tt_service_get_cmap_info;
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    TT_CMap_Class*            tt_cmap_classes;
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Service_SFNT_TableRec  sfnt_service_sfnt_table;
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifdef TT_CONFIG_OPTION_BDF
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FT_Service_BDFRec         sfnt_service_bdf;
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    SFNT_Interface            sfnt_interface;
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  } sfntModulePIC;
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define GET_PIC( lib )                                      \
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          ( (sfntModulePIC*)( (lib)->pic_container.sfnt ) )
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define SFNT_SERVICES_GET                       \
79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          ( GET_PIC( library )->sfnt_services )
80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define SFNT_SERVICE_GLYPH_DICT_GET                       \
81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          ( GET_PIC( library )->sfnt_service_glyph_dict )
82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define SFNT_SERVICE_PS_NAME_GET                       \
83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          ( GET_PIC( library )->sfnt_service_ps_name )
84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define TT_SERVICE_CMAP_INFO_GET                           \
85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          ( GET_PIC( library )->tt_service_get_cmap_info )
86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define SFNT_SERVICES_GET                       \
87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          ( GET_PIC( library )->sfnt_services )
88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define TT_CMAP_CLASSES_GET                       \
89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          ( GET_PIC( library )->tt_cmap_classes )
90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define SFNT_SERVICE_SFNT_TABLE_GET                       \
91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          ( GET_PIC( library )->sfnt_service_sfnt_table )
92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define SFNT_SERVICE_BDF_GET                       \
93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          ( GET_PIC( library )->sfnt_service_bdf )
94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define SFNT_INTERFACE_GET                       \
95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov          ( GET_PIC( library )->sfnt_interface )
96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* see sfntpic.c for the implementation */
99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  void
100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  sfnt_module_class_pic_free( FT_Library  library );
101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  FT_Error
103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  sfnt_module_class_pic_init( FT_Library  library );
104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* FT_CONFIG_OPTION_PIC */
106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov  /* */
108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
109ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_END_HEADER
110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* __SFNTPIC_H__ */
112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */
115