File: Tutf.h

package info (click to toggle)
twin 0.4.0-4
  • links: PTS
  • area: main
  • in suites: woody
  • size: 3,804 kB
  • ctags: 23,904
  • sloc: ansic: 61,860; cpp: 1,023; makefile: 777; sh: 552; lex: 302; yacc: 231
file content (257 lines) | stat: -rw-r--r-- 8,014 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
/*
 *  Tutf.h  --  include for ASCII/VGA/UTF/UNICODE pseudographics characters database
 *
 *  This library requires libTw headers too (NOT libTw shared library, just the headers)
 * 
 *  Copyright (C) 2001 by Massimiliano Ghilardi
 *
 *  This library is free software you can redistribute it and/or
 *  modify it under the terms of the GNU Library General Public
 *  License as published by the Free Software Foundation either
 *  version 2 of the License, or (at your option) any later version.
 *
 */

#ifndef _TUTF_H
#define _TUTF_H

#include <Tw/Twtypes.h>

#include <Tutf/compiler.h>
#include <Tutf/version.h>

#ifdef __cplusplus
 extern "C" {
#endif
#if 0
 }
#endif


/* get the canonical name of a charset */
#define T_MAP(alias)	T_CAT(T_MAP_,alias)

#define T_LIST(alias,EL)	T_CAT(T_LIST_,T_MAP(alias))(EL)
#define T_NLIST(alias,EL)	T_CAT(T_NLIST_,T_MAP(alias))(EL)
#define T_NAME(alias)		T_CAT(T_NAME_,T_MAP(alias))
#define T_UTF(map,name)		T_CAT(T_CAT(T_,T_MAP(map)),name)


#define T_MAP_UTF_16	UTF_16
#define T_MAP_TF_16	UTF_16
#define T_MAP_U6	UTF_16
#define T_MAP_UNICODE	UTF_16
#define T_MAP_ISO_10646_1	UTF_16
#define T_MAP_ISO10646_1	UTF_16
#define T_NAME_UTF_16	"UTF-16"
#define T_ALIASES_UTF_16	"TF-16", "u6", "Unicode", "ISO-10646-1", "ISO10646-1"


#define T_MAP_ANSI_X3_4		ANSI_X3_4
#define T_MAP_ANSI_X3_4_1968	ANSI_X3_4
#define T_MAP_ANSI_X3_4_1986	ANSI_X3_4
#define T_MAP_ISO_646_IRV_1991	ANSI_X3_4
#define T_MAP_ISO646_US		ANSI_X3_4
#define T_MAP_ISO_IR_6		ANSI_X3_4
#define T_MAP_ASCII		ANSI_X3_4
#define T_MAP_US_ASCII		ANSI_X3_4
#define T_MAP_US		ANSI_X3_4
#define T_MAP_367		ANSI_X3_4
#define T_MAP_CP367		ANSI_X3_4
#define T_MAP_IBM367		ANSI_X3_4
#define T_NAME_ANSI_X3_4	"ANSI_X3.4"
#define T_ALIASES_ANSI_X3_4	"ANSI_X3.4-1968", "ANSI_X3.4-1986", "ISO_646.irv:1991", "ISO646-US", "iso-ir-6", "ASCII", "US-ASCII", "us", "367", "cp367", "IBM367"


#define T_MAP_ISO_8859_1	ISO_8859_1
#define T_MAP_ISO_8859_1_1987	ISO_8859_1
#define T_MAP_ISO8859_1		ISO_8859_1
#define T_MAP_819		ISO_8859_1
#define T_MAP_CP819		ISO_8859_1
#define T_MAP_IBM819		ISO_8859_1
#define T_MAP_ISO_IR_100	ISO_8859_1
#define T_MAP_L1		ISO_8859_1
#define T_MAP_LAT1		ISO_8859_1
#define T_MAP_LATIN1		ISO_8859_1
#define T_MAP_LATIN_1		ISO_8859_1
#define T_NAME_ISO_8859_1	"ISO-8859-1"
#define T_ALIASES_ISO_8859_1	"ISO_8859-1:1987", "ISO8859-1", "819", "CP819", "IBM819", "iso-ir-100", "l1", "lat1", "latin1", "Latin-1"


#define T_MAP_ISO_8859_2	ISO_8859_2
#define T_MAP_ISO_8859_2_1987	ISO_8859_2
#define T_MAP_ISO8859_2		ISO_8859_2
#define T_MAP_912		ISO_8859_2
#define T_MAP_CP912		ISO_8859_2
#define T_MAP_IBM912		ISO_8859_2
#define T_MAP_ISO_IR_101	ISO_8859_2
#define T_MAP_L2		ISO_8859_2
#define T_MAP_LATIN2		ISO_8859_2
#define T_NAME_ISO_8859_2	"ISO-8859-2"
#define T_ALIASES_ISO_8859_2	"ISO_8859-2:1987", "ISO8859-2", "912", "CP912", "IBM912", "iso-ir-101", "l2", "latin2"


#define T_MAP_ISO_8859_3	ISO_8859_3
#define T_MAP_ISO_8859_3_1988	ISO_8859_3
#define T_MAP_ISO8859_3		ISO_8859_3
#define T_MAP_ISO_IR_109	ISO_8859_3
#define T_MAP_L3		ISO_8859_3
#define T_MAP_LATIN3		ISO_8859_3
#define T_NAME_ISO_8859_3	"ISO-8859-3"
#define T_ALIASES_ISO_8859_3	"ISO_8859-3:1988", "ISO8859-3", "iso-ir-109", "l3", "latin3"


#define T_MAP_ISO_8859_4	ISO_8859_4
#define T_MAP_ISO_8859_4_1988	ISO_8859_4
#define T_MAP_ISO8859_4		ISO_8859_4
#define T_MAP_ISO_IR_110	ISO_8859_4
#define T_MAP_L4		ISO_8859_4
#define T_MAP_LATIN4		ISO_8859_4
#define T_NAME_ISO_8859_4	"ISO-8859-4"
#define T_ALIASES_ISO_8859_4	"ISO_8859-4:1988", "ISO8859-4", "iso-ir-109", "l4", "latin4"


#define T_MAP_ISO_8859_5	ISO_8859_5
#define T_MAP_ISO_8859_5_1988	ISO_8859_5
#define T_MAP_ISO8859_5		ISO_8859_5
#define T_MAP_ISO_IR_144	ISO_8859_5
#define T_MAP_CYRILLIC		ISO_8859_5
#define T_NAME_ISO_8859_5	"ISO-8859-5"
#define T_ALIASES_ISO_8859_5	"ISO_8859-5:1988", "ISO8859-5", "iso-ir-144", "cyrillic"


#define T_MAP_ISO_8859_6	ISO_8859_6
#define T_MAP_ISO_8859_6_1987	ISO_8859_6
#define T_MAP_ISO8859_6		ISO_8859_6
#define T_MAP_ARABIC		ISO_8859_6
#define T_MAP_ASMO_708		ISO_8859_6
#define T_MAP_ECMA_114		ISO_8859_6
#define T_MAP_ISO_IR_127	ISO_8859_6
#define T_NAME_ISO_8859_6	"ISO-8859-6"
#define T_ALIASES_ISO_8859_6	"ISO_8859-6:1987", "ISO8859-6", "arabic", "ASMO-708", "ECMA-114", "iso-ir-127"

#define T_MAP_ISO_8859_7	ISO_8859_7
#define T_MAP_ISO_8859_7_1987	ISO_8859_7
#define T_MAP_ISO8859_7		ISO_8859_7
#define T_MAP_GREEK		ISO_8859_7
#define T_MAP_GREEK8		ISO_8859_7
#define T_MAP_ISO_IR_126	ISO_8859_7
#define T_MAP_ELOT_928		ISO_8859_7
#define T_MAP_ECMA_118		ISO_8859_7
#define T_NAME_ISO_8859_7	"ISO-8859-7"
#define T_ALIASES_ISO_8859_7	"ISO_8859-7:1987", "ISO8859-7", "greek", "greek8", "iso-ir-126", "ECMA-118", "ELOT_928"


#define T_MAP_ISO_8859_8	ISO_8859_8
#define T_MAP_ISO_8859_8_1988	ISO_8859_8
#define T_MAP_ISO8859_8		ISO_8859_8
#define T_MAP_HEBREW		ISO_8859_8
#define T_MAP_ISO_IR_138	ISO_8859_8
#define T_NAME_ISO_8859_8	"ISO-8859-8"
#define T_ALIASES_ISO_8859_8	"ISO_8859-8:1988", "ISO8859-8", "hebrew", "iso-ir-138"


#define T_MAP_ISO_8859_9	ISO_8859_9
#define T_MAP_ISO_8859_9_1989	ISO_8859_9
#define T_MAP_ISO8859_9		ISO_8859_9
#define T_MAP_L5		ISO_8859_9
#define T_MAP_LATIN5		ISO_8859_9
#define T_MAP_ISO_IR_148	ISO_8859_9
#define T_NAME_ISO_8859_9	"ISO-8859-9"
#define T_ALIASES_ISO_8859_9	"ISO_8859-9:1989", "ISO8859-9", "l5", "latin5", "iso-ir-148"


#define T_MAP_IBM437	IBM437
#define T_MAP_437	IBM437
#define T_MAP_CP437	IBM437
#define T_NAME_IBM437	"IBM437"
#define T_ALIASES_IBM437	"437", "CP437"


#define T_MAP_IBM850	IBM850
#define T_MAP_850	IBM850
#define T_MAP_CP850	IBM850
#define T_NAME_IBM850	"IBM850"
#define T_ALIASES_IBM850	"850", "CP850"


#define T_MAP_IBM865	IBM865
#define T_MAP_865	IBM865
#define T_MAP_CP865	IBM865
#define T_NAME_IBM865	"IBM865"
#define T_ALIASES_IBM865	"865", "CP865"


#define T_MAP_CP866	CP866
#define T_MAP_866	CP866
#define T_NAME_CP866	"CP866"
#define T_ALIASES_CP866	"866"



typedef hwfont *Tutf_array;
typedef hwfont (*Tutf_function)(hwfont);




/* get the charset `id' (opaque) from a charset alias */
uldat Tutf_charset_id(TUTF_CONST byte * alias);

/* get the canonical name from the charset `id' */
TUTF_CONST byte *Tutf_charset_name(uldat id);

/* get the canonical name from a charset alias */
TUTF_CONST byte *Tutf_charset_alias(TUTF_CONST byte * alias);




/* return a function capable to translate from UTF-16 to given charset */
Tutf_function Tutf_UTF_16_to_charset_function(uldat id);

/* return the array to translate from given charset to UTF-16 */
Tutf_array Tutf_charset_to_UTF_16_array(uldat id);


/* specific translation functions */
hwfont Tutf_UTF_16_to_ANSI_X3_4(hwfont c);
hwfont Tutf_UTF_16_to_ISO_8859_1(hwfont c);
hwfont Tutf_UTF_16_to_ISO_8859_2(hwfont c);
hwfont Tutf_UTF_16_to_ISO_8859_3(hwfont c);
hwfont Tutf_UTF_16_to_ISO_8859_4(hwfont c);
hwfont Tutf_UTF_16_to_ISO_8859_5(hwfont c);
hwfont Tutf_UTF_16_to_ISO_8859_6(hwfont c);
hwfont Tutf_UTF_16_to_ISO_8859_7(hwfont c);
hwfont Tutf_UTF_16_to_ISO_8859_8(hwfont c);
hwfont Tutf_UTF_16_to_ISO_8859_9(hwfont c);
hwfont Tutf_UTF_16_to_IBM437(hwfont c);
hwfont Tutf_UTF_16_to_IBM850(hwfont c);
hwfont Tutf_UTF_16_to_IBM865(hwfont c);
hwfont Tutf_UTF_16_to_CP866(hwfont c);

/* specific translation arrays */
extern hwfont Tutf_ANSI_X3_4_to_UTF_16[0x100];
extern hwfont Tutf_ISO_8859_1_to_UTF_16[0x100];
extern hwfont Tutf_ISO_8859_2_to_UTF_16[0x100];
extern hwfont Tutf_ISO_8859_3_to_UTF_16[0x100];
extern hwfont Tutf_ISO_8859_4_to_UTF_16[0x100];
extern hwfont Tutf_ISO_8859_5_to_UTF_16[0x100];
extern hwfont Tutf_ISO_8859_6_to_UTF_16[0x100];
extern hwfont Tutf_ISO_8859_7_to_UTF_16[0x100];
extern hwfont Tutf_ISO_8859_8_to_UTF_16[0x100];
extern hwfont Tutf_ISO_8859_9_to_UTF_16[0x100];
extern hwfont Tutf_IBM437_to_UTF_16[0x100];
extern hwfont Tutf_IBM850_to_UTF_16[0x100];
extern hwfont Tutf_IBM865_to_UTF_16[0x100];
extern hwfont Tutf_CP866_to_UTF_16[0x100];

extern hwfont Tutf_IBM437_to_ANSI_X3_4[0x100];


#ifdef __cplusplus
}
#endif

#endif /* _TUTF_H */