1/***************************************************************************/
2/*                                                                         */
3/*  cf2ft.h                                                                */
4/*                                                                         */
5/*    FreeType Glue Component to Adobe's Interpreter (specification).      */
6/*                                                                         */
7/*  Copyright 2013 Adobe Systems Incorporated.                             */
8/*                                                                         */
9/*  This software, and all works of authorship, whether in source or       */
10/*  object code form as indicated by the copyright notice(s) included      */
11/*  herein (collectively, the "Work") is made available, and may only be   */
12/*  used, modified, and distributed under the FreeType Project License,    */
13/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
14/*  FreeType Project License, each contributor to the Work hereby grants   */
15/*  to any individual or legal entity exercising permissions granted by    */
16/*  the FreeType Project License and this section (hereafter, "You" or     */
17/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
18/*  royalty-free, irrevocable (except as stated in this section) patent    */
19/*  license to make, have made, use, offer to sell, sell, import, and      */
20/*  otherwise transfer the Work, where such license applies only to those  */
21/*  patent claims licensable by such contributor that are necessarily      */
22/*  infringed by their contribution(s) alone or by combination of their    */
23/*  contribution(s) with the Work to which such contribution(s) was        */
24/*  submitted.  If You institute patent litigation against any entity      */
25/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
26/*  the Work or a contribution incorporated within the Work constitutes    */
27/*  direct or contributory patent infringement, then any patent licenses   */
28/*  granted to You under this License for that Work shall terminate as of  */
29/*  the date such litigation is filed.                                     */
30/*                                                                         */
31/*  By using, modifying, or distributing the Work you indicate that you    */
32/*  have read and understood the terms and conditions of the               */
33/*  FreeType Project License as well as those provided in this section,    */
34/*  and you accept them fully.                                             */
35/*                                                                         */
36/***************************************************************************/
37
38
39#ifndef __CF2FT_H__
40#define __CF2FT_H__
41
42
43#include "cf2types.h"
44
45
46  /* TODO: disable asserts for now */
47#define CF2_NDEBUG
48
49
50#include FT_SYSTEM_H
51
52#include "cf2glue.h"
53#include "cffgload.h"    /* for CFF_Decoder */
54
55
56FT_BEGIN_HEADER
57
58
59  FT_LOCAL( FT_Error )
60  cf2_decoder_parse_charstrings( CFF_Decoder*  decoder,
61                                 FT_Byte*      charstring_base,
62                                 FT_ULong      charstring_len );
63
64  FT_LOCAL( CFF_SubFont )
65  cf2_getSubfont( CFF_Decoder*  decoder );
66
67
68  FT_LOCAL( CF2_Fixed )
69  cf2_getPpemY( CFF_Decoder*  decoder );
70  FT_LOCAL( CF2_Fixed )
71  cf2_getStdVW( CFF_Decoder*  decoder );
72  FT_LOCAL( CF2_Fixed )
73  cf2_getStdHW( CFF_Decoder*  decoder );
74
75  FT_LOCAL( void )
76  cf2_getBlueMetrics( CFF_Decoder*  decoder,
77                      CF2_Fixed*    blueScale,
78                      CF2_Fixed*    blueShift,
79                      CF2_Fixed*    blueFuzz );
80  FT_LOCAL( void )
81  cf2_getBlueValues( CFF_Decoder*  decoder,
82                     size_t*       count,
83                     FT_Pos*      *data );
84  FT_LOCAL( void )
85  cf2_getOtherBlues( CFF_Decoder*  decoder,
86                     size_t*       count,
87                     FT_Pos*      *data );
88  FT_LOCAL( void )
89  cf2_getFamilyBlues( CFF_Decoder*  decoder,
90                      size_t*       count,
91                      FT_Pos*      *data );
92  FT_LOCAL( void )
93  cf2_getFamilyOtherBlues( CFF_Decoder*  decoder,
94                           size_t*       count,
95                           FT_Pos*      *data );
96
97  FT_LOCAL( CF2_Int )
98  cf2_getLanguageGroup( CFF_Decoder*  decoder );
99
100  FT_LOCAL( CF2_Int )
101  cf2_initGlobalRegionBuffer( CFF_Decoder*  decoder,
102                              CF2_UInt      idx,
103                              CF2_Buffer    buf );
104  FT_LOCAL( FT_Error )
105  cf2_getSeacComponent( CFF_Decoder*  decoder,
106                        CF2_UInt      code,
107                        CF2_Buffer    buf );
108  FT_LOCAL( void )
109  cf2_freeSeacComponent( CFF_Decoder*  decoder,
110                         CF2_Buffer    buf );
111  FT_LOCAL( CF2_Int )
112  cf2_initLocalRegionBuffer( CFF_Decoder*  decoder,
113                             CF2_UInt      idx,
114                             CF2_Buffer    buf );
115
116  FT_LOCAL( CF2_Fixed )
117  cf2_getDefaultWidthX( CFF_Decoder*  decoder );
118  FT_LOCAL( CF2_Fixed )
119  cf2_getNominalWidthX( CFF_Decoder*  decoder );
120
121
122  /*
123   * FreeType client outline
124   *
125   * process output from the charstring interpreter
126   */
127  typedef struct  CF2_OutlineRec_
128  {
129    CF2_OutlineCallbacksRec  root;        /* base class must be first */
130    CFF_Decoder*             decoder;
131
132  } CF2_OutlineRec, *CF2_Outline;
133
134
135  FT_LOCAL( void )
136  cf2_outline_reset( CF2_Outline  outline );
137  FT_LOCAL( void )
138  cf2_outline_close( CF2_Outline  outline );
139
140
141FT_END_HEADER
142
143
144#endif /* __CF2FT_H__ */
145
146
147/* END */
148