blob: 4a19104d4ec4d61aab6b956f204f3ee8f62f2f9b [file] [log] [blame]
David Turner3469d0d2000-07-19 20:02:14 +00001/***************************************************************************/
2/* */
3/* ahglyph.h */
4/* */
Werner Lemberg04563542000-07-24 06:01:34 +00005/* Routines used to load and analyze a given glyph before hinting */
6/* (specification). */
David Turner3469d0d2000-07-19 20:02:14 +00007/* */
Werner Lemberg04563542000-07-24 06:01:34 +00008/* Copyright 2000 Catharon Productions Inc. */
David Turner3469d0d2000-07-19 20:02:14 +00009/* Author: David Turner */
10/* */
11/* This file is part of the Catharon Typography Project and shall only */
12/* be used, modified, and distributed under the terms of the Catharon */
13/* Open Source License that should come with this file under the name */
Werner Lemberg04563542000-07-24 06:01:34 +000014/* `CatharonLicense.txt'. By continuing to use, modify, or distribute */
David Turner3469d0d2000-07-19 20:02:14 +000015/* this file you indicate that you have read the license and */
16/* understand and accept it fully. */
17/* */
Werner Lemberg04563542000-07-24 06:01:34 +000018/* Note that this license is compatible with the FreeType license. */
David Turner3469d0d2000-07-19 20:02:14 +000019/* */
20/***************************************************************************/
Werner Lemberg04563542000-07-24 06:01:34 +000021
22
Werner Lemberg90d99642000-12-09 00:45:38 +000023#ifndef __AHGLYPH_H__
24#define __AHGLYPH_H__
David Turner3469d0d2000-07-19 20:02:14 +000025
Werner Lembergcc069be2000-12-08 16:17:16 +000026
27#include <ft2build.h>
28#include FT_SOURCE_FILE(autohint,ahtypes.h)
29
Werner Lemberg04563542000-07-24 06:01:34 +000030
David Turner19ed8af2000-12-08 02:42:29 +000031FT_BEGIN_HEADER
Werner Lembergc713d922000-08-01 13:17:04 +000032
Werner Lembergcc069be2000-12-08 16:17:16 +000033
Werner Lemberg04563542000-07-24 06:01:34 +000034 typedef enum AH_UV_
David Turner3469d0d2000-07-19 20:02:14 +000035 {
36 ah_uv_fxy,
37 ah_uv_fyx,
38 ah_uv_oxy,
39 ah_uv_oyx,
40 ah_uv_ox,
41 ah_uv_oy,
42 ah_uv_yx,
Werner Lemberg04563542000-07-24 06:01:34 +000043 ah_uv_xy /* should always be last! */
David Turner3469d0d2000-07-19 20:02:14 +000044
45 } AH_UV;
46
Werner Lemberg04563542000-07-24 06:01:34 +000047
David Turner76a5f622000-11-04 01:55:49 +000048 FT_LOCAL
David Turner3469d0d2000-07-19 20:02:14 +000049 void ah_setup_uv( AH_Outline* outline,
50 AH_UV source );
51
52
53 /* AH_Outline functions - they should be typically called in this order */
54
David Turner76a5f622000-11-04 01:55:49 +000055 FT_LOCAL
Werner Lemberg04563542000-07-24 06:01:34 +000056 FT_Error ah_outline_new( FT_Memory memory,
57 AH_Outline** aoutline );
David Turner3469d0d2000-07-19 20:02:14 +000058
David Turner76a5f622000-11-04 01:55:49 +000059 FT_LOCAL
Werner Lemberg04563542000-07-24 06:01:34 +000060 FT_Error ah_outline_load( AH_Outline* outline,
61 FT_Face face );
David Turner3469d0d2000-07-19 20:02:14 +000062
David Turner76a5f622000-11-04 01:55:49 +000063 FT_LOCAL
Werner Lemberg04563542000-07-24 06:01:34 +000064 void ah_outline_compute_segments( AH_Outline* outline );
David Turner3469d0d2000-07-19 20:02:14 +000065
David Turner76a5f622000-11-04 01:55:49 +000066 FT_LOCAL
Werner Lemberg04563542000-07-24 06:01:34 +000067 void ah_outline_link_segments( AH_Outline* outline );
David Turner3469d0d2000-07-19 20:02:14 +000068
David Turner76a5f622000-11-04 01:55:49 +000069 FT_LOCAL
Werner Lemberg04563542000-07-24 06:01:34 +000070 void ah_outline_detect_features( AH_Outline* outline );
David Turner3469d0d2000-07-19 20:02:14 +000071
David Turner76a5f622000-11-04 01:55:49 +000072 FT_LOCAL
Werner Lemberg04563542000-07-24 06:01:34 +000073 void ah_outline_compute_blue_edges( AH_Outline* outline,
74 AH_Face_Globals* globals );
David Turner3469d0d2000-07-19 20:02:14 +000075
David Turner76a5f622000-11-04 01:55:49 +000076 FT_LOCAL
Werner Lemberg04563542000-07-24 06:01:34 +000077 void ah_outline_scale_blue_edges( AH_Outline* outline,
78 AH_Face_Globals* globals );
David Turner3469d0d2000-07-19 20:02:14 +000079
David Turner76a5f622000-11-04 01:55:49 +000080 FT_LOCAL
Werner Lemberg04563542000-07-24 06:01:34 +000081 void ah_outline_save( AH_Outline* outline, AH_Loader* loader );
David Turner3469d0d2000-07-19 20:02:14 +000082
David Turner76a5f622000-11-04 01:55:49 +000083 FT_LOCAL
Werner Lemberg04563542000-07-24 06:01:34 +000084 void ah_outline_done( AH_Outline* outline );
David Turner3469d0d2000-07-19 20:02:14 +000085
Werner Lembergcc069be2000-12-08 16:17:16 +000086
David Turner19ed8af2000-12-08 02:42:29 +000087FT_END_HEADER
Werner Lembergc713d922000-08-01 13:17:04 +000088
Werner Lemberg90d99642000-12-09 00:45:38 +000089#endif /* __AHGLYPH_H__ */
Werner Lemberg04563542000-07-24 06:01:34 +000090
91
92/* END */