blob: aea60c3333c21006901f291b523bf0f451e1d667 [file] [log] [blame]
David Turner3469d0d2000-07-19 20:02:14 +00001/***************************************************************************/
2/* */
3/* ahloader.h */
4/* */
Werner Lembergc3dd1512000-07-26 14:11:15 +00005/* Glyph loader for the auto-hinting module (declaration only). */
David Turner3469d0d2000-07-19 20:02:14 +00006/* */
Werner Lembergc3dd1512000-07-26 14:11:15 +00007/* Copyright 2000 Catharon Productions Inc. */
David Turner3469d0d2000-07-19 20:02:14 +00008/* Author: David Turner */
9/* */
10/* This file is part of the Catharon Typography Project and shall only */
11/* be used, modified, and distributed under the terms of the Catharon */
12/* Open Source License that should come with this file under the name */
Werner Lembergc3dd1512000-07-26 14:11:15 +000013/* `CatharonLicense.txt'. By continuing to use, modify, or distribute */
David Turner3469d0d2000-07-19 20:02:14 +000014/* this file you indicate that you have read the license and */
15/* understand and accept it fully. */
16/* */
Werner Lembergc3dd1512000-07-26 14:11:15 +000017/* Note that this license is compatible with the FreeType license. */
David Turner3469d0d2000-07-19 20:02:14 +000018/* */
19/***************************************************************************/
Werner Lembergc3dd1512000-07-26 14:11:15 +000020
21
22 /*************************************************************************/
23 /* */
24 /* This defines the AH_GlyphLoader type in two different ways: */
25 /* */
26 /* - If the module is compiled within FreeType 2, the type is simply a */
27 /* typedef to FT_GlyphLoader. */
28 /* */
29 /* - If the module is compiled as a standalone object, AH_GlyphLoader */
30 /* has its own implementation. */
31 /* */
32 /*************************************************************************/
33
34
Werner Lemberg90d99642000-12-09 00:45:38 +000035#ifndef __AHLOADER_H__
36#define __AHLOADER_H__
37
Werner Lembergc3dd1512000-07-26 14:11:15 +000038
David Turner19ed8af2000-12-08 02:42:29 +000039#include <ft2build.h>
David Turner3469d0d2000-07-19 20:02:14 +000040
Werner Lemberg90d99642000-12-09 00:45:38 +000041
David Turner19ed8af2000-12-08 02:42:29 +000042FT_BEGIN_HEADER
Werner Lembergc713d922000-08-01 13:17:04 +000043
Werner Lemberg90d99642000-12-09 00:45:38 +000044
David Turner3469d0d2000-07-19 20:02:14 +000045#ifdef _STANDALONE_
46
Werner Lembergc3dd1512000-07-26 14:11:15 +000047 typedef struct AH_GlyphLoad_
David Turner3469d0d2000-07-19 20:02:14 +000048 {
Werner Lembergc3dd1512000-07-26 14:11:15 +000049 FT_Outline outline; /* outline */
50 FT_UInt num_subglyphs; /* number of subglyphs */
51 FT_SubGlyph* subglyphs; /* subglyphs */
52 FT_Vector* extra_points; /* extra points table */
David Turner3469d0d2000-07-19 20:02:14 +000053
54 } AH_GlyphLoad;
55
56
Werner Lembergc3dd1512000-07-26 14:11:15 +000057 struct AH_GlyphLoader_
David Turner3469d0d2000-07-19 20:02:14 +000058 {
59 FT_Memory memory;
60 FT_UInt max_points;
61 FT_UInt max_contours;
62 FT_UInt max_subglyphs;
63 FT_Bool use_extra;
64
65 AH_GlyphLoad base;
66 AH_GlyphLoad current;
67
Werner Lembergc3dd1512000-07-26 14:11:15 +000068 void* other; /* for possible future extensions */
David Turner3469d0d2000-07-19 20:02:14 +000069 };
70
71
David Turner76a5f622000-11-04 01:55:49 +000072 FT_LOCAL
Werner Lembergc3dd1512000-07-26 14:11:15 +000073 FT_Error AH_GlyphLoader_New( FT_Memory memory,
74 AH_GlyphLoader** aloader );
David Turner3469d0d2000-07-19 20:02:14 +000075
David Turner76a5f622000-11-04 01:55:49 +000076 FT_LOCAL
Werner Lembergc3dd1512000-07-26 14:11:15 +000077 FT_Error AH_GlyphLoader_Create_Extra( AH_GlyphLoader* loader );
David Turner3469d0d2000-07-19 20:02:14 +000078
David Turner76a5f622000-11-04 01:55:49 +000079 FT_LOCAL
Werner Lembergc3dd1512000-07-26 14:11:15 +000080 void AH_GlyphLoader_Done( AH_GlyphLoader* loader );
David Turner3469d0d2000-07-19 20:02:14 +000081
David Turner76a5f622000-11-04 01:55:49 +000082 FT_LOCAL
Werner Lembergc3dd1512000-07-26 14:11:15 +000083 void AH_GlyphLoader_Reset( AH_GlyphLoader* loader );
David Turner3469d0d2000-07-19 20:02:14 +000084
David Turner76a5f622000-11-04 01:55:49 +000085 FT_LOCAL
Werner Lembergc3dd1512000-07-26 14:11:15 +000086 void AH_GlyphLoader_Rewind( AH_GlyphLoader* loader );
David Turner3469d0d2000-07-19 20:02:14 +000087
David Turner76a5f622000-11-04 01:55:49 +000088 FT_LOCAL
Werner Lembergc3dd1512000-07-26 14:11:15 +000089 FT_Error AH_GlyphLoader_Check_Points( AH_GlyphLoader* loader,
90 FT_UInt n_points,
91 FT_UInt n_contours );
David Turner3469d0d2000-07-19 20:02:14 +000092
David Turner76a5f622000-11-04 01:55:49 +000093 FT_LOCAL
Werner Lembergc3dd1512000-07-26 14:11:15 +000094 FT_Error AH_GlyphLoader_Check_Subglyphs( AH_GlyphLoader* loader,
95 FT_UInt n_subs );
David Turner3469d0d2000-07-19 20:02:14 +000096
David Turner76a5f622000-11-04 01:55:49 +000097 FT_LOCAL
Werner Lembergc3dd1512000-07-26 14:11:15 +000098 void AH_GlyphLoader_Prepare( AH_GlyphLoader* loader );
David Turner3469d0d2000-07-19 20:02:14 +000099
David Turner76a5f622000-11-04 01:55:49 +0000100 FT_LOCAL
Werner Lembergc3dd1512000-07-26 14:11:15 +0000101 void AH_GlyphLoader_Add( AH_GlyphLoader* loader );
David Turner3469d0d2000-07-19 20:02:14 +0000102
David Turner76a5f622000-11-04 01:55:49 +0000103 FT_LOCAL
Werner Lembergc3dd1512000-07-26 14:11:15 +0000104 FT_Error AH_GlyphLoader_Copy_Points( AH_GlyphLoader* target,
105 FT_GlyphLoader* source );
David Turner3469d0d2000-07-19 20:02:14 +0000106
Werner Lembergc3dd1512000-07-26 14:11:15 +0000107#else /* _STANDALONE */
David Turner3469d0d2000-07-19 20:02:14 +0000108
David Turner19ed8af2000-12-08 02:42:29 +0000109#include FT_INTERNAL_OBJECTS_H
David Turner3469d0d2000-07-19 20:02:14 +0000110
111 #define AH_Load FT_GlyphLoad
112 #define AH_Loader FT_GlyphLoader
113
114 #define ah_loader_new FT_GlyphLoader_New
115 #define ah_loader_done FT_GlyphLoader_Done
116 #define ah_loader_reset FT_GlyphLoader_Reset
117 #define ah_loader_rewind FT_GlyphLoader_Rewind
118 #define ah_loader_create_extra FT_GlyphLoader_Create_Extra
119 #define ah_loader_check_points FT_GlyphLoader_Check_Points
120 #define ah_loader_check_subglyphs FT_GlyphLoader_Check_Subglyphs
121 #define ah_loader_prepare FT_GlyphLoader_Prepare
122 #define ah_loader_add FT_GlyphLoader_Add
123 #define ah_loader_copy_points FT_GlyphLoader_Copy_Points
124
Werner Lembergc3dd1512000-07-26 14:11:15 +0000125#endif /* _STANDALONE_ */
David Turner3469d0d2000-07-19 20:02:14 +0000126
Werner Lemberg90d99642000-12-09 00:45:38 +0000127
David Turner19ed8af2000-12-08 02:42:29 +0000128FT_END_HEADER
Werner Lembergc713d922000-08-01 13:17:04 +0000129
Werner Lemberg90d99642000-12-09 00:45:38 +0000130#endif /* __AHLOADER_H__ */
Werner Lembergc3dd1512000-07-26 14:11:15 +0000131
132
133/* END */