add an initial patch (doesn't build yet).
[AROS-Contrib.git] / vpdf / fontcache.h
blobcd5869dc09534e699d515f4a3030e2d6b7f9f49d
1 #ifndef VPDF_FONTCACHE_H
2 #define VPDF_FONTCACHE_H
4 /* custom fontconfig types */
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
10 enum {
11 FC_ETYPE_STRING = 1,
12 FC_ETYPE_INTEGER,
13 FC_ETYPE_POINTER
17 #define FC_WEIGHT_THIN 0
18 #define FC_WEIGHT_EXTRALIGHT 40
19 #define FC_WEIGHT_ULTRALIGHT FC_WEIGHT_EXTRALIGHT
20 #define FC_WEIGHT_LIGHT 50
21 #define FC_WEIGHT_BOOK 75
22 #define FC_WEIGHT_REGULAR 80
23 #define FC_WEIGHT_NORMAL FC_WEIGHT_REGULAR
24 #define FC_WEIGHT_MEDIUM 100
25 #define FC_WEIGHT_DEMIBOLD 180
26 #define FC_WEIGHT_SEMIBOLD FC_WEIGHT_DEMIBOLD
27 #define FC_WEIGHT_BOLD 200
28 #define FC_WEIGHT_EXTRABOLD 205
29 #define FC_WEIGHT_ULTRABOLD FC_WEIGHT_EXTRABOLD
30 #define FC_WEIGHT_BLACK 210
31 #define FC_WEIGHT_HEAVY FC_WEIGHT_BLACK
32 #define FC_WEIGHT_EXTRABLACK 215
33 #define FC_WEIGHT_ULTRABLACK FC_WEIGHT_EXTRABLACK
35 #define FC_SLANT_ROMAN 0
36 #define FC_SLANT_ITALIC 100
37 #define FC_SLANT_OBLIQUE 110
39 #define FC_WIDTH_ULTRACONDENSED 50
40 #define FC_WIDTH_EXTRACONDENSED 63
41 #define FC_WIDTH_CONDENSED 75
42 #define FC_WIDTH_SEMICONDENSED 87
43 #define FC_WIDTH_NORMAL 100
44 #define FC_WIDTH_SEMIEXPANDED 113
45 #define FC_WIDTH_EXPANDED 125
46 #define FC_WIDTH_EXTRAEXPANDED 150
47 #define FC_WIDTH_ULTRAEXPANDED 200
49 #define FC_PROPORTIONAL 0
50 #define FC_DUAL 90
51 #define FC_MONO 100
52 #define FC_CHARCELL 110
54 enum {
55 FC_FAMILY = 0,
56 //FC_FAMILYLANG,
57 FC_FULLNAME,
58 //FC_FULLNAMELANG,
59 FC_STYLE,
60 //FC_STYLELANG,
61 FC_FILE,
62 FC_INDEX, /* index of a face in font file */
63 FC_WEIGHT,
64 FC_WIDTH,
65 FC_SLANT,
66 //FC_DECORATIVE,
67 //FC_CHARSET,
68 FC_LANG,
69 //FC_PROPORTIONAL,
70 FC_SPACING,
71 FC_SERIF,
72 FC_LAST_CRITERIA,
75 static int fcelementpriority[] = {
76 99,
77 //{FC_FAMILYLANG, 9},
78 98,
79 //{FC_FULLNAMELANG, 8},
80 97,
81 //{FC_STYLELANG, 7},
82 100,
84 96,
85 95,
86 94,
87 //{FC_DECORATIVE, 93},
88 //{FC_CHARSET, 6},
89 92,
90 //{FC_PROPORTIONAL, 91},
91 90,
92 89,
97 struct fontpattern
99 struct MinNode n;
100 struct List entries;
103 union patternvalue
105 int i;
106 char *s;
107 void *p;
110 struct patternentry
112 struct MinNode n;
113 int element;
114 int type;
115 int id; /* multiple elements can be on the list */
116 int excluding; /* for patterns used as match criteria */
117 union patternvalue value;
120 int fcPatternAddString(struct fontpattern *pat, int element, char *value);
121 int fcPatternAddInteger(struct fontpattern *pat, int element, int value);
122 int fcPatternAddExcludingInteger(struct fontpattern *pat, int element, int value);
123 char *fcPatternGetString(struct fontpattern *pat, int element, int id);
124 int fcPatternGetInteger(struct fontpattern *pat, int element, int id);
125 struct patternentry *fcPatternGetEntry(struct fontpattern *pat, int element, int id);
126 struct fontpattern *fcPatternAlloc(void);
127 void fcPatternDestroy(struct fontpattern *fd);
128 struct fontcache *fcCreate(char *directories[]);
129 void fcDestroy(struct fontcache *cache);
130 struct fontpattern *fcMatch(struct fontcache *cache, struct fontpattern *pat, int *matchingcriteria);
132 struct fontcache *fcLoad(char *fname);
133 int fcSave(struct fontcache *fontcache, char *fname);
134 int fcAddPattern(struct fontcache *fontcache, struct fontpattern *pat);
136 #ifdef __cplusplus
138 #endif
140 #endif