blob: 4b4baaf957a91c0e99b5ccf8e9614f7dca8a920b [file] [log] [blame]
Werner Lemberge3c11d72000-06-16 06:49:56 +00001/***************************************************************************/
2/* */
3/* cidobjs.h */
4/* */
5/* CID objects manager (specification). */
6/* */
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/***************************************************************************/
David Turner04aa8002000-06-01 03:27:48 +000017
Werner Lemberge3c11d72000-06-16 06:49:56 +000018
Werner Lemberg90d99642000-12-09 00:45:38 +000019#ifndef __CIDOBJS_H__
20#define __CIDOBJS_H__
David Turner04aa8002000-06-01 03:27:48 +000021
Werner Lembergcc069be2000-12-08 16:17:16 +000022
23#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
28
David Turner04aa8002000-06-01 03:27:48 +000029
David Turner19ed8af2000-12-08 02:42:29 +000030FT_BEGIN_HEADER
Werner Lemberge3c11d72000-06-16 06:49:56 +000031
Werner Lemberg90d99642000-12-09 00:45:38 +000032
David Turner04aa8002000-06-01 03:27:48 +000033 /* The following structures must be defined by the hinter */
David Turnera1be2dc2000-06-27 23:20:35 +000034 typedef struct CID_Size_Hints_ CID_Size_Hints;
35 typedef struct CID_Glyph_Hints_ CID_Glyph_Hints;
David Turner04aa8002000-06-01 03:27:48 +000036
Werner Lemberge3c11d72000-06-16 06:49:56 +000037
38 /*************************************************************************/
39 /* */
40 /* <Type> */
Werner Lembergdeb4e982000-06-29 03:14:25 +000041 /* CID_Driver */
Werner Lemberge3c11d72000-06-16 06:49:56 +000042 /* */
43 /* <Description> */
44 /* A handle to a Type 1 driver object. */
45 /* */
David Turnera1be2dc2000-06-27 23:20:35 +000046 typedef struct CID_DriverRec_* CID_Driver;
David Turner04aa8002000-06-01 03:27:48 +000047
48
Werner Lemberge3c11d72000-06-16 06:49:56 +000049 /*************************************************************************/
50 /* */
51 /* <Type> */
Werner Lembergdeb4e982000-06-29 03:14:25 +000052 /* CID_Size */
Werner Lemberge3c11d72000-06-16 06:49:56 +000053 /* */
54 /* <Description> */
55 /* A handle to a Type 1 size object. */
56 /* */
David Turnera1be2dc2000-06-27 23:20:35 +000057 typedef struct CID_SizeRec_* CID_Size;
David Turner04aa8002000-06-01 03:27:48 +000058
59
Werner Lemberge3c11d72000-06-16 06:49:56 +000060 /*************************************************************************/
61 /* */
62 /* <Type> */
Werner Lembergdeb4e982000-06-29 03:14:25 +000063 /* CID_GlyphSlot */
Werner Lemberge3c11d72000-06-16 06:49:56 +000064 /* */
65 /* <Description> */
66 /* A handle to a Type 1 glyph slot object. */
67 /* */
David Turnera1be2dc2000-06-27 23:20:35 +000068 typedef struct CID_GlyphSlotRec_* CID_GlyphSlot;
David Turner04aa8002000-06-01 03:27:48 +000069
70
Werner Lemberge3c11d72000-06-16 06:49:56 +000071 /*************************************************************************/
72 /* */
73 /* <Type> */
Werner Lembergdeb4e982000-06-29 03:14:25 +000074 /* CID_CharMap */
Werner Lemberge3c11d72000-06-16 06:49:56 +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 Lembergdeb4e982000-06-29 03:14:25 +000084 typedef struct CID_CharMapRec_* CID_CharMap;
David Turner04aa8002000-06-01 03:27:48 +000085
86
Werner Lemberge3c11d72000-06-16 06:49:56 +000087 /*************************************************************************/
88 /* */
Werner Lembergac39ecd2000-06-30 22:24:36 +000089 /* HERE BEGINS THE TYPE 1 SPECIFIC STUFF */
Werner Lemberge3c11d72000-06-16 06:49:56 +000090 /* */
91 /*************************************************************************/
David Turner04aa8002000-06-01 03:27:48 +000092
David Turner04aa8002000-06-01 03:27:48 +000093
Werner Lembergac39ecd2000-06-30 22:24:36 +000094 typedef struct CID_SizeRec_
David Turner04aa8002000-06-01 03:27:48 +000095 {
Werner Lembergac39ecd2000-06-30 22:24:36 +000096 FT_SizeRec root;
97 FT_Bool valid;
David Turner04aa8002000-06-01 03:27:48 +000098
David Turnera1be2dc2000-06-27 23:20:35 +000099 } CID_SizeRec;
David Turner04aa8002000-06-01 03:27:48 +0000100
101
Werner Lembergac39ecd2000-06-30 22:24:36 +0000102 typedef struct CID_GlyphSlotRec_
David Turner04aa8002000-06-01 03:27:48 +0000103 {
104 FT_GlyphSlotRec root;
105
David Turnerf9b8dec2000-06-16 19:34:52 +0000106 FT_Bool hint;
107 FT_Bool scaled;
David Turner04aa8002000-06-01 03:27:48 +0000108
David Turnerf9b8dec2000-06-16 19:34:52 +0000109 FT_Fixed x_scale;
110 FT_Fixed y_scale;
David Turner04aa8002000-06-01 03:27:48 +0000111
David Turnera1be2dc2000-06-27 23:20:35 +0000112 } CID_GlyphSlotRec;
David Turner04aa8002000-06-01 03:27:48 +0000113
114
David Turner76a5f622000-11-04 01:55:49 +0000115 FT_LOCAL
Werner Lembergac39ecd2000-06-30 22:24:36 +0000116 FT_Error CID_Init_Face( FT_Stream stream,
117 CID_Face face,
118 FT_Int face_index,
119 FT_Int num_params,
120 FT_Parameter* params );
David Turner04aa8002000-06-01 03:27:48 +0000121
David Turner76a5f622000-11-04 01:55:49 +0000122 FT_LOCAL
Werner Lemberge3c11d72000-06-16 06:49:56 +0000123 void CID_Done_Face( CID_Face face );
David Turner04aa8002000-06-01 03:27:48 +0000124
125
David Turner76a5f622000-11-04 01:55:49 +0000126 FT_LOCAL
David Turnera1be2dc2000-06-27 23:20:35 +0000127 FT_Error CID_Init_Driver( CID_Driver driver );
David Turner04aa8002000-06-01 03:27:48 +0000128
David Turner76a5f622000-11-04 01:55:49 +0000129 FT_LOCAL
David Turnera1be2dc2000-06-27 23:20:35 +0000130 void CID_Done_Driver( CID_Driver driver );
David Turner04aa8002000-06-01 03:27:48 +0000131
132
David Turner19ed8af2000-12-08 02:42:29 +0000133FT_END_HEADER
Werner Lemberge3c11d72000-06-16 06:49:56 +0000134
Werner Lemberg90d99642000-12-09 00:45:38 +0000135#endif /* __CIDOBJS_H__ */
David Turner04aa8002000-06-01 03:27:48 +0000136
137
138/* END */