t1objs.h revision 19ed8afe60bbc5becf0fbbe3987a91b35a36aad4
17fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/***************************************************************************/
27fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/*                                                                         */
3b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg/*  t1objs.h                                                               */
47fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/*                                                                         */
5b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg/*    Type 1 objects manager (specification).                              */
67fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/*                                                                         */
77fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/*  Copyright 1996-2000 by                                                 */
87fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
97fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/*                                                                         */
107fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/*  This file is part of the FreeType project, and may only be used,       */
117fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/*  modified, and distributed under the terms of the FreeType project      */
127fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
137fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/*  this file you indicate that you have read the license and              */
147fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/*  understand and accept it fully.                                        */
157fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/*                                                                         */
167fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg/***************************************************************************/
177fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg
182dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
19b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg#ifndef T1OBJS_H
20b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg#define T1OBJS_H
212dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
2219ed8afe60bbc5becf0fbbe3987a91b35a36aad4David Turner#include <ft2build.h>
2319ed8afe60bbc5becf0fbbe3987a91b35a36aad4David Turner#include FT_INTERNAL_OBJECTS_H
2419ed8afe60bbc5becf0fbbe3987a91b35a36aad4David Turner#include FT_CONFIG_CONFIG_H
2519ed8afe60bbc5becf0fbbe3987a91b35a36aad4David Turner#include FT_INTERNAL_TYPE1_ERRORS_H
2619ed8afe60bbc5becf0fbbe3987a91b35a36aad4David Turner#include FT_INTERNAL_TYPE1_TYPES_H
272dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
2819ed8afe60bbc5becf0fbbe3987a91b35a36aad4David TurnerFT_BEGIN_HEADER
292dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
302dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner  /* The following structures must be defined by the hinter */
31b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  typedef struct T1_Size_Hints_   T1_Size_Hints;
32b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  typedef struct T1_Glyph_Hints_  T1_Glyph_Hints;
332dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
347fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg
357fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*************************************************************************/
367fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
377fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /* <Type>                                                                */
38b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  /*    T1_Driver                                                          */
397fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
407fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /* <Description>                                                         */
417fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*    A handle to a Type 1 driver object.                                */
427fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
43b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  typedef struct T1_DriverRec_   *T1_Driver;
442dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
452dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
467fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*************************************************************************/
477fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
487fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /* <Type>                                                                */
49b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  /*    T1_Size                                                            */
507fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
517fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /* <Description>                                                         */
527fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*    A handle to a Type 1 size object.                                  */
537fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
54b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  typedef struct T1_SizeRec_*  T1_Size;
552dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
562dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
577fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*************************************************************************/
587fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
597fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /* <Type>                                                                */
60b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  /*    T1_GlyphSlot                                                       */
617fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
627fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /* <Description>                                                         */
637fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*    A handle to a Type 1 glyph slot object.                            */
647fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
65b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  typedef struct T1_GlyphSlotRec_*  T1_GlyphSlot;
662dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
672dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
687fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*************************************************************************/
697fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
707fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /* <Type>                                                                */
71b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  /*    T1_CharMap                                                         */
727fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
737fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /* <Description>                                                         */
747fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*    A handle to a Type 1 character mapping object.                     */
757fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
767fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /* <Note>                                                                */
777fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*    The Type 1 format doesn't use a charmap but an encoding table.     */
787fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*    The driver is responsible for making up charmap objects            */
797fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*    corresponding to these tables.                                     */
807fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
81b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  typedef struct T1_CharMapRec_*   T1_CharMap;
822dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
832dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
847fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*************************************************************************/
857fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
867fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                  HERE BEGINS THE TYPE1 SPECIFIC STUFF                 */
877fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
887fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*************************************************************************/
892dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
90e49ab25c0822e1043be29e836944c7886f4e8990David Turner
917fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*************************************************************************/
927fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
937fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /* <Type>                                                                */
94b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  /*    T1_SizeRec                                                         */
957fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
967fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /* <Description>                                                         */
977fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*    Type 1 size record.                                                */
987fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
99b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  typedef struct  T1_SizeRec_
1002dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner  {
1012dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner    FT_SizeRec      root;
102f9b8dec437dd84060bcd82a555c92fecff848aa7David Turner    FT_Bool         valid;
103b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg    T1_Size_Hints*  hints;  /* defined in the hinter. This allows */
1042dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner                            /* us to experiment with different    */
1052dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner                            /* hinting schemes without having to  */
106b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg                            /* change `t1objs' each time.         */
107b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  } T1_SizeRec;
1082dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
1092dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
1107fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*************************************************************************/
1117fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
1127fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /* <Type>                                                                */
113b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  /*    T1_GlyphSlotRec                                                    */
1147fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
1157fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /* <Description>                                                         */
1167fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*    Type 1 glyph slot record.                                          */
1177fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg  /*                                                                       */
118b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  typedef struct  T1_GlyphSlotRec_
1192dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner  {
1202dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner    FT_GlyphSlotRec  root;
1212dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
122f9b8dec437dd84060bcd82a555c92fecff848aa7David Turner    FT_Bool          hint;
123f9b8dec437dd84060bcd82a555c92fecff848aa7David Turner    FT_Bool          scaled;
124e49ab25c0822e1043be29e836944c7886f4e8990David Turner
125f9b8dec437dd84060bcd82a555c92fecff848aa7David Turner    FT_Int           max_points;
126f9b8dec437dd84060bcd82a555c92fecff848aa7David Turner    FT_Int           max_contours;
1272dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
1282dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner    FT_Fixed         x_scale;
1292dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner    FT_Fixed         y_scale;
1302dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
131b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg    T1_Glyph_Hints*  hints;  /* defined in the hinter */
1322dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
133b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  } T1_GlyphSlotRec;
1342dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
1352dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
13676a5f62323d4fe3319d3d5410ded0ff9cab1f8c5David Turner  FT_LOCAL
137b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  FT_Error  T1_Init_Face( FT_Stream      stream,
1387fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg                          T1_Face        face,
1397fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg                          FT_Int         face_index,
1407fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg                          FT_Int         num_params,
1417fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg                          FT_Parameter*  params );
1422dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
14376a5f62323d4fe3319d3d5410ded0ff9cab1f8c5David Turner  FT_LOCAL
144b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  void  T1_Done_Face( T1_Face  face );
1452dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
14676a5f62323d4fe3319d3d5410ded0ff9cab1f8c5David Turner  FT_LOCAL
147b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  FT_Error  T1_Init_Driver( T1_Driver  driver );
1482dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
14976a5f62323d4fe3319d3d5410ded0ff9cab1f8c5David Turner  FT_LOCAL
150b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg  void  T1_Done_Driver( T1_Driver  driver );
1512dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
1527fa51b5535dc05a91b96aac57835bf1473a24339Werner Lemberg
15319ed8afe60bbc5becf0fbbe3987a91b35a36aad4David TurnerFT_END_HEADER
1542dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
155b5084e11f7d2d73e0687dee6314c560b8fe6d4cbWerner Lemberg#endif /* T1OBJS_H */
1562dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
1572dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner
1582dfb5aca285baf50eed6c0a9520069614a2e5cf5David Turner/* END */
159