blob: 8c83fa7a36af7629a5235b58fc53e8cf0ea09b37 [file] [log] [blame]
Werner Lemberg7fa51b52000-07-08 19:51:42 +00001/***************************************************************************/
2/* */
Werner Lembergb5084e12000-10-28 17:10:06 +00003/* t1objs.h */
Werner Lemberg7fa51b52000-07-08 19:51:42 +00004/* */
Werner Lembergb5084e12000-10-28 17:10:06 +00005/* Type 1 objects manager (specification). */
Werner Lemberg7fa51b52000-07-08 19:51:42 +00006/* */
7/* Copyright 1996-2000 by */
8/* David Turner, Robert Wilhelm, and Werner Lemberg. */
9/* */
10/* This file is part of the FreeType project, and may only be used, */
11/* modified, and distributed under the terms of the FreeType project */
12/* license, LICENSE.TXT. By continuing to use, modify, or distribute */
13/* this file you indicate that you have read the license and */
14/* understand and accept it fully. */
15/* */
16/***************************************************************************/
17
David Turner2dfb5ac2000-01-27 14:02:04 +000018
Werner Lemberg90d99642000-12-09 00:45:38 +000019#ifndef __T1OBJS_H__
20#define __T1OBJS_H__
David Turner2dfb5ac2000-01-27 14:02:04 +000021
Werner Lembergcc069be2000-12-08 16:17:16 +000022
David Turner19ed8af2000-12-08 02:42:29 +000023#include <ft2build.h>
24#include FT_INTERNAL_OBJECTS_H
25#include FT_CONFIG_CONFIG_H
26#include FT_INTERNAL_TYPE1_ERRORS_H
27#include FT_INTERNAL_TYPE1_TYPES_H
David Turner2dfb5ac2000-01-27 14:02:04 +000028
Werner Lembergcc069be2000-12-08 16:17:16 +000029
David Turner19ed8af2000-12-08 02:42:29 +000030FT_BEGIN_HEADER
David Turner2dfb5ac2000-01-27 14:02:04 +000031
Werner Lembergcc069be2000-12-08 16:17:16 +000032
David Turner2dfb5ac2000-01-27 14:02:04 +000033 /* The following structures must be defined by the hinter */
Werner Lembergb5084e12000-10-28 17:10:06 +000034 typedef struct T1_Size_Hints_ T1_Size_Hints;
35 typedef struct T1_Glyph_Hints_ T1_Glyph_Hints;
David Turner2dfb5ac2000-01-27 14:02:04 +000036
Werner Lemberg7fa51b52000-07-08 19:51:42 +000037
38 /*************************************************************************/
39 /* */
40 /* <Type> */
Werner Lembergb5084e12000-10-28 17:10:06 +000041 /* T1_Driver */
Werner Lemberg7fa51b52000-07-08 19:51:42 +000042 /* */
43 /* <Description> */
44 /* A handle to a Type 1 driver object. */
45 /* */
Werner Lembergb5084e12000-10-28 17:10:06 +000046 typedef struct T1_DriverRec_ *T1_Driver;
David Turner2dfb5ac2000-01-27 14:02:04 +000047
48
Werner Lemberg7fa51b52000-07-08 19:51:42 +000049 /*************************************************************************/
50 /* */
51 /* <Type> */
Werner Lembergb5084e12000-10-28 17:10:06 +000052 /* T1_Size */
Werner Lemberg7fa51b52000-07-08 19:51:42 +000053 /* */
54 /* <Description> */
55 /* A handle to a Type 1 size object. */
56 /* */
Werner Lembergb5084e12000-10-28 17:10:06 +000057 typedef struct T1_SizeRec_* T1_Size;
David Turner2dfb5ac2000-01-27 14:02:04 +000058
59
Werner Lemberg7fa51b52000-07-08 19:51:42 +000060 /*************************************************************************/
61 /* */
62 /* <Type> */
Werner Lembergb5084e12000-10-28 17:10:06 +000063 /* T1_GlyphSlot */
Werner Lemberg7fa51b52000-07-08 19:51:42 +000064 /* */
65 /* <Description> */
66 /* A handle to a Type 1 glyph slot object. */
67 /* */
Werner Lembergb5084e12000-10-28 17:10:06 +000068 typedef struct T1_GlyphSlotRec_* T1_GlyphSlot;
David Turner2dfb5ac2000-01-27 14:02:04 +000069
70
Werner Lemberg7fa51b52000-07-08 19:51:42 +000071 /*************************************************************************/
72 /* */
73 /* <Type> */
Werner Lembergb5084e12000-10-28 17:10:06 +000074 /* T1_CharMap */
Werner Lemberg7fa51b52000-07-08 19:51:42 +000075 /* */
76 /* <Description> */
77 /* A handle to a Type 1 character mapping object. */
78 /* */
79 /* <Note> */
80 /* The Type 1 format doesn't use a charmap but an encoding table. */
81 /* The driver is responsible for making up charmap objects */
82 /* corresponding to these tables. */
83 /* */
Werner Lembergb5084e12000-10-28 17:10:06 +000084 typedef struct T1_CharMapRec_* T1_CharMap;
David Turner2dfb5ac2000-01-27 14:02:04 +000085
86
Werner Lemberg7fa51b52000-07-08 19:51:42 +000087 /*************************************************************************/
88 /* */
89 /* HERE BEGINS THE TYPE1 SPECIFIC STUFF */
90 /* */
91 /*************************************************************************/
David Turnere49ab252000-05-16 23:44:38 +000092
David Turner2dfb5ac2000-01-27 14:02:04 +000093
Werner Lemberg7fa51b52000-07-08 19:51:42 +000094 /*************************************************************************/
95 /* */
96 /* <Type> */
Werner Lembergb5084e12000-10-28 17:10:06 +000097 /* T1_SizeRec */
Werner Lemberg7fa51b52000-07-08 19:51:42 +000098 /* */
99 /* <Description> */
100 /* Type 1 size record. */
101 /* */
Werner Lembergb5084e12000-10-28 17:10:06 +0000102 typedef struct T1_SizeRec_
David Turner2dfb5ac2000-01-27 14:02:04 +0000103 {
104 FT_SizeRec root;
David Turnerf9b8dec2000-06-16 19:34:52 +0000105 FT_Bool valid;
Werner Lembergb5084e12000-10-28 17:10:06 +0000106 T1_Size_Hints* hints; /* defined in the hinter. This allows */
David Turner2dfb5ac2000-01-27 14:02:04 +0000107 /* us to experiment with different */
108 /* hinting schemes without having to */
Werner Lembergb5084e12000-10-28 17:10:06 +0000109 /* change `t1objs' each time. */
110 } T1_SizeRec;
David Turner2dfb5ac2000-01-27 14:02:04 +0000111
112
Werner Lemberg7fa51b52000-07-08 19:51:42 +0000113 /*************************************************************************/
114 /* */
115 /* <Type> */
Werner Lembergb5084e12000-10-28 17:10:06 +0000116 /* T1_GlyphSlotRec */
Werner Lemberg7fa51b52000-07-08 19:51:42 +0000117 /* */
118 /* <Description> */
119 /* Type 1 glyph slot record. */
120 /* */
Werner Lembergb5084e12000-10-28 17:10:06 +0000121 typedef struct T1_GlyphSlotRec_
David Turner2dfb5ac2000-01-27 14:02:04 +0000122 {
123 FT_GlyphSlotRec root;
124
David Turnerf9b8dec2000-06-16 19:34:52 +0000125 FT_Bool hint;
126 FT_Bool scaled;
David Turnere49ab252000-05-16 23:44:38 +0000127
David Turnerf9b8dec2000-06-16 19:34:52 +0000128 FT_Int max_points;
129 FT_Int max_contours;
David Turner2dfb5ac2000-01-27 14:02:04 +0000130
131 FT_Fixed x_scale;
132 FT_Fixed y_scale;
133
Werner Lembergb5084e12000-10-28 17:10:06 +0000134 T1_Glyph_Hints* hints; /* defined in the hinter */
David Turner2dfb5ac2000-01-27 14:02:04 +0000135
Werner Lembergb5084e12000-10-28 17:10:06 +0000136 } T1_GlyphSlotRec;
David Turner2dfb5ac2000-01-27 14:02:04 +0000137
138
David Turner76a5f622000-11-04 01:55:49 +0000139 FT_LOCAL
Werner Lembergb5084e12000-10-28 17:10:06 +0000140 FT_Error T1_Init_Face( FT_Stream stream,
Werner Lemberg7fa51b52000-07-08 19:51:42 +0000141 T1_Face face,
142 FT_Int face_index,
143 FT_Int num_params,
144 FT_Parameter* params );
David Turner2dfb5ac2000-01-27 14:02:04 +0000145
David Turner76a5f622000-11-04 01:55:49 +0000146 FT_LOCAL
Werner Lembergb5084e12000-10-28 17:10:06 +0000147 void T1_Done_Face( T1_Face face );
David Turner2dfb5ac2000-01-27 14:02:04 +0000148
David Turner76a5f622000-11-04 01:55:49 +0000149 FT_LOCAL
Werner Lembergb5084e12000-10-28 17:10:06 +0000150 FT_Error T1_Init_Driver( T1_Driver driver );
David Turner2dfb5ac2000-01-27 14:02:04 +0000151
David Turner76a5f622000-11-04 01:55:49 +0000152 FT_LOCAL
Werner Lembergb5084e12000-10-28 17:10:06 +0000153 void T1_Done_Driver( T1_Driver driver );
David Turner2dfb5ac2000-01-27 14:02:04 +0000154
Werner Lemberg7fa51b52000-07-08 19:51:42 +0000155
David Turner19ed8af2000-12-08 02:42:29 +0000156FT_END_HEADER
David Turner2dfb5ac2000-01-27 14:02:04 +0000157
Werner Lemberg90d99642000-12-09 00:45:38 +0000158#endif /* __T1OBJS_H__ */
David Turner2dfb5ac2000-01-27 14:02:04 +0000159
160
161/* END */