]>
Commit | Line | Data |
---|---|---|
cab737ed MT |
1 | --- slang-1.4.5/src/slang.h.acs 2002-07-09 00:03:57.000000000 -0400 |
2 | +++ slang-1.4.5/src/slang.h 2002-07-09 00:11:06.000000000 -0400 | |
3 | @@ -1255,6 +1255,8 @@ | |
4 | ||
5 | #ifdef UTF8 | |
6 | typedef int SLsmg_Char_Type; | |
7 | +extern SLtt_Char_Type SLcurses_Acs_Map [128]; | |
8 | +#define acs_map SLcurses_Acs_Map | |
9 | #define SLSMG_EXTRACT_CHAR(x) ((x) & 0xFFFFFF) | |
10 | #define SLSMG_EXTRACT_COLOR(x) (((x)>>24)&0xFF) | |
11 | #define SLSMG_BUILD_CHAR(ch,color) (((SLsmg_Char_Type)(wchar_t)(ch))|((color)<<24)) | |
12 | @@ -1396,7 +1398,11 @@ | |
13 | extern void SLsmg_set_screen_start (int *, int *); | |
14 | extern void SLsmg_draw_hline (unsigned int); | |
15 | extern void SLsmg_draw_vline (int); | |
16 | +#ifdef UTF8 | |
17 | +extern void SLsmg_draw_object (int, int, SLsmg_Char_Type); | |
18 | +#else | |
19 | extern void SLsmg_draw_object (int, int, unsigned char); | |
20 | +#endif | |
21 | extern void SLsmg_draw_box (int, int, unsigned int, unsigned int); | |
22 | extern int SLsmg_get_column(void); | |
23 | extern int SLsmg_get_row(void); | |
24 | @@ -1408,6 +1414,9 @@ | |
25 | extern int SLsmg_Display_Eight_Bit; | |
26 | extern int SLsmg_Tab_Width; | |
27 | ||
28 | +extern int SLsmg_Is_Unicode; | |
29 | +extern int SLsmg_Setlocale; | |
30 | + | |
31 | #define SLSMG_NEWLINE_IGNORED 0 /* default */ | |
32 | #define SLSMG_NEWLINE_MOVES 1 /* moves to next line, column 0 */ | |
33 | #define SLSMG_NEWLINE_SCROLLS 2 /* moves but scrolls at bottom of screen */ | |
34 | @@ -1465,31 +1474,79 @@ | |
35 | # define SLSMG_BOARD_CHAR '#' | |
36 | # define SLSMG_BLOCK_CHAR '#' | |
37 | # else | |
38 | -# define SLSMG_HLINE_CHAR 'q' | |
39 | -# define SLSMG_VLINE_CHAR 'x' | |
40 | -# define SLSMG_ULCORN_CHAR 'l' | |
41 | -# define SLSMG_URCORN_CHAR 'k' | |
42 | -# define SLSMG_LLCORN_CHAR 'm' | |
43 | -# define SLSMG_LRCORN_CHAR 'j' | |
44 | -# define SLSMG_CKBRD_CHAR 'a' | |
45 | -# define SLSMG_RTEE_CHAR 'u' | |
46 | -# define SLSMG_LTEE_CHAR 't' | |
47 | -# define SLSMG_UTEE_CHAR 'w' | |
48 | -# define SLSMG_DTEE_CHAR 'v' | |
49 | -# define SLSMG_PLUS_CHAR 'n' | |
50 | -# define SLSMG_DIAMOND_CHAR '`' | |
51 | -# define SLSMG_DEGREE_CHAR 'f' | |
52 | -# define SLSMG_PLMINUS_CHAR 'g' | |
53 | -# define SLSMG_BULLET_CHAR '~' | |
54 | -# define SLSMG_LARROW_CHAR ',' | |
55 | -# define SLSMG_RARROW_CHAR '+' | |
56 | -# define SLSMG_DARROW_CHAR '.' | |
57 | -# define SLSMG_UARROW_CHAR '-' | |
58 | -# define SLSMG_BOARD_CHAR 'h' | |
59 | -# define SLSMG_BLOCK_CHAR '0' | |
60 | +# define SLSMG_HLINE_CHAR (acs_map['q']) | |
61 | +# define SLSMG_VLINE_CHAR (acs_map['x']) | |
62 | +# define SLSMG_ULCORN_CHAR (acs_map['l']) | |
63 | +# define SLSMG_URCORN_CHAR (acs_map['k']) | |
64 | +# define SLSMG_LLCORN_CHAR (acs_map['m']) | |
65 | +# define SLSMG_LRCORN_CHAR (acs_map['j']) | |
66 | +# define SLSMG_CKBRD_CHAR (acs_map['a']) | |
67 | +# define SLSMG_RTEE_CHAR (acs_map['u']) | |
68 | +# define SLSMG_LTEE_CHAR (acs_map['t']) | |
69 | +# define SLSMG_UTEE_CHAR (acs_map['v']) | |
70 | +# define SLSMG_DTEE_CHAR (acs_map['w']) | |
71 | +# define SLSMG_PLUS_CHAR (acs_map['n']) | |
72 | +# define SLSMG_DIAMOND_CHAR (acs_map['`']) | |
73 | +# define SLSMG_DEGREE_CHAR (acs_map['f']) | |
74 | +# define SLSMG_PLMINUS_CHAR (acs_map['g']) | |
75 | +# define SLSMG_BULLET_CHAR (acs_map['~']) | |
76 | +# define SLSMG_LARROW_CHAR (acs_map[',']) | |
77 | +# define SLSMG_RARROW_CHAR (acs_map['+']) | |
78 | +# define SLSMG_DARROW_CHAR (acs_map['.']) | |
79 | +# define SLSMG_UARROW_CHAR (acs_map['-']) | |
80 | +# define SLSMG_BOARD_CHAR (acs_map['h']) | |
81 | +# define SLSMG_BLOCK_CHAR (acs_map['0']) | |
82 | +# | |
83 | +# define SLSMG_HLINE_CHAR_TERM 'q' | |
84 | +# define SLSMG_VLINE_CHAR_TERM 'x' | |
85 | +# define SLSMG_ULCORN_CHAR_TERM 'l' | |
86 | +# define SLSMG_URCORN_CHAR_TERM 'k' | |
87 | +# define SLSMG_LLCORN_CHAR_TERM 'm' | |
88 | +# define SLSMG_LRCORN_CHAR_TERM 'j' | |
89 | +# define SLSMG_CKBRD_CHAR_TERM 'a' | |
90 | +# define SLSMG_RTEE_CHAR_TERM 'u' | |
91 | +# define SLSMG_LTEE_CHAR_TERM 't' | |
92 | +# define SLSMG_UTEE_CHAR_TERM 'v' | |
93 | +# define SLSMG_DTEE_CHAR_TERM 'w' | |
94 | +# define SLSMG_PLUS_CHAR_TERM 'n' | |
95 | +# define SLSMG_DIAMOND_CHAR_TERM '`' | |
96 | +# define SLSMG_DEGREE_CHAR_TERM 'f' | |
97 | +# define SLSMG_PLMINUS_CHAR_TERM 'g' | |
98 | +# define SLSMG_BULLET_CHAR_TERM '~' | |
99 | +# define SLSMG_LARROW_CHAR_TERM ',' | |
100 | +# define SLSMG_RARROW_CHAR_TERM '+' | |
101 | +# define SLSMG_DARROW_CHAR_TERM '.' | |
102 | +# define SLSMG_UARROW_CHAR_TERM '-' | |
103 | +# define SLSMG_BOARD_CHAR_TERM 'h' | |
104 | +# define SLSMG_BLOCK_CHAR_TERM '0' | |
105 | # endif /* AMIGA */ | |
106 | #endif /* IBMPC_SYSTEM */ | |
107 | ||
108 | +#ifdef UTF8 | |
109 | +# define SLSMG_HLINE_CHAR_UNICODE 0x2500 | |
110 | +# define SLSMG_VLINE_CHAR_UNICODE 0x2502 | |
111 | +# define SLSMG_ULCORN_CHAR_UNICODE 0x250c | |
112 | +# define SLSMG_URCORN_CHAR_UNICODE 0x2510 | |
113 | +# define SLSMG_LLCORN_CHAR_UNICODE 0x2514 | |
114 | +# define SLSMG_LRCORN_CHAR_UNICODE 0x2518 | |
115 | +# define SLSMG_RTEE_CHAR_UNICODE 0x2524 | |
116 | +# define SLSMG_LTEE_CHAR_UNICODE 0x251c | |
117 | +# define SLSMG_UTEE_CHAR_UNICODE 0x2534 | |
118 | +# define SLSMG_DTEE_CHAR_UNICODE 0x252c | |
119 | +# define SLSMG_PLUS_CHAR_UNICODE 0x253c | |
120 | +# define SLSMG_CKBRD_CHAR_UNICODE 0x2592 | |
121 | +# define SLSMG_DIAMOND_CHAR_UNICODE 0x25c6 | |
122 | +# define SLSMG_DEGREE_CHAR_UNICODE 0x00b0 | |
123 | +# define SLSMG_PLMINUS_CHAR_UNICODE 0x00b1 | |
124 | +# define SLSMG_BULLET_CHAR_UNICODE 0x00b7 | |
125 | +# define SLSMG_LARROW_CHAR_UNICODE 0x2190 | |
126 | +# define SLSMG_RARROW_CHAR_UNICODE 0x2192 | |
127 | +# define SLSMG_DARROW_CHAR_UNICODE 0x2193 | |
128 | +# define SLSMG_UARROW_CHAR_UNICODE 0x2191 | |
129 | +# define SLSMG_BOARD_CHAR_UNICODE 0x2592 | |
130 | +# define SLSMG_BLOCK_CHAR_UNICODE 0x25ae | |
131 | +#endif | |
132 | + | |
133 | #ifndef IBMPC_SYSTEM | |
134 | # define SLSMG_COLOR_BLACK 0x000000 | |
135 | # define SLSMG_COLOR_RED 0x000001 | |
136 | --- slang-1.4.5/src/slcurses.c.acs 2002-07-09 00:03:57.000000000 -0400 | |
137 | +++ slang-1.4.5/src/slcurses.c 2002-07-09 00:09:03.000000000 -0400 | |
138 | @@ -331,40 +331,63 @@ | |
139 | /* SLtt_set_mono (A_BLINK >> 8, NULL, SLTT_BLINK_MASK); */ | |
140 | SLtt_set_mono ((A_BOLD|A_UNDERLINE) >> 8, NULL, SLTT_ULINE_MASK|SLTT_BOLD_MASK); | |
141 | SLtt_set_mono ((A_REVERSE|A_UNDERLINE) >> 8, NULL, SLTT_ULINE_MASK|SLTT_REV_MASK); | |
142 | + | |
143 | + SLcurses_init_acs_map(); | |
144 | + | |
145 | + return SLcurses_Stdscr; | |
146 | +} | |
147 | ||
148 | +void SLcurses_init_acs_map() | |
149 | +{ | |
150 | if (SLtt_Has_Alt_Charset) | |
151 | { | |
152 | - SLcurses_Acs_Map[SLSMG_ULCORN_CHAR] = SLSMG_ULCORN_CHAR | A_ALTCHARSET; | |
153 | - SLcurses_Acs_Map[SLSMG_URCORN_CHAR] = SLSMG_URCORN_CHAR | A_ALTCHARSET; | |
154 | - SLcurses_Acs_Map[SLSMG_LLCORN_CHAR] = SLSMG_LLCORN_CHAR | A_ALTCHARSET; | |
155 | - SLcurses_Acs_Map[SLSMG_LRCORN_CHAR] = SLSMG_LRCORN_CHAR | A_ALTCHARSET; | |
156 | - SLcurses_Acs_Map[SLSMG_UTEE_CHAR] = SLSMG_UTEE_CHAR | A_ALTCHARSET; | |
157 | - SLcurses_Acs_Map[SLSMG_DTEE_CHAR] = SLSMG_DTEE_CHAR | A_ALTCHARSET; | |
158 | - SLcurses_Acs_Map[SLSMG_LTEE_CHAR] = SLSMG_LTEE_CHAR | A_ALTCHARSET; | |
159 | - SLcurses_Acs_Map[SLSMG_RTEE_CHAR] = SLSMG_RTEE_CHAR | A_ALTCHARSET; | |
160 | - SLcurses_Acs_Map[SLSMG_VLINE_CHAR] = SLSMG_VLINE_CHAR | A_ALTCHARSET; | |
161 | - SLcurses_Acs_Map[SLSMG_HLINE_CHAR] = SLSMG_HLINE_CHAR | A_ALTCHARSET; | |
162 | - SLcurses_Acs_Map[SLSMG_PLUS_CHAR] = SLSMG_PLUS_CHAR | A_ALTCHARSET; | |
163 | - SLcurses_Acs_Map[SLSMG_CKBRD_CHAR] = SLSMG_CKBRD_CHAR | A_ALTCHARSET; | |
164 | + if (SLsmg_Is_Unicode) | |
165 | + { | |
166 | + SLcurses_Acs_Map['l'] = SLSMG_ULCORN_CHAR_UNICODE; | |
167 | + SLcurses_Acs_Map['k'] = SLSMG_URCORN_CHAR_UNICODE; | |
168 | + SLcurses_Acs_Map['m'] = SLSMG_LLCORN_CHAR_UNICODE; | |
169 | + SLcurses_Acs_Map['j'] = SLSMG_LRCORN_CHAR_UNICODE; | |
170 | + SLcurses_Acs_Map['v'] = SLSMG_UTEE_CHAR_UNICODE; | |
171 | + SLcurses_Acs_Map['w'] = SLSMG_DTEE_CHAR_UNICODE; | |
172 | + SLcurses_Acs_Map['t'] = SLSMG_LTEE_CHAR_UNICODE; | |
173 | + SLcurses_Acs_Map['u'] = SLSMG_RTEE_CHAR_UNICODE; | |
174 | + SLcurses_Acs_Map['x'] = SLSMG_VLINE_CHAR_UNICODE; | |
175 | + SLcurses_Acs_Map['q'] = SLSMG_HLINE_CHAR_UNICODE; | |
176 | + SLcurses_Acs_Map['n'] = SLSMG_PLUS_CHAR_UNICODE; | |
177 | + SLcurses_Acs_Map['a'] = SLSMG_CKBRD_CHAR_UNICODE; | |
178 | + } | |
179 | + else | |
180 | + { | |
181 | + SLcurses_Acs_Map['l'] = SLSMG_ULCORN_CHAR_TERM | A_ALTCHARSET; | |
182 | + SLcurses_Acs_Map['k'] = SLSMG_URCORN_CHAR_TERM | A_ALTCHARSET; | |
183 | + SLcurses_Acs_Map['m'] = SLSMG_LLCORN_CHAR_TERM | A_ALTCHARSET; | |
184 | + SLcurses_Acs_Map['j'] = SLSMG_LRCORN_CHAR_TERM | A_ALTCHARSET; | |
185 | + SLcurses_Acs_Map['v'] = SLSMG_UTEE_CHAR_TERM | A_ALTCHARSET; | |
186 | + SLcurses_Acs_Map['w'] = SLSMG_DTEE_CHAR_TERM | A_ALTCHARSET; | |
187 | + SLcurses_Acs_Map['t'] = SLSMG_LTEE_CHAR_TERM | A_ALTCHARSET; | |
188 | + SLcurses_Acs_Map['u'] = SLSMG_RTEE_CHAR_TERM | A_ALTCHARSET; | |
189 | + SLcurses_Acs_Map['x'] = SLSMG_VLINE_CHAR_TERM | A_ALTCHARSET; | |
190 | + SLcurses_Acs_Map['q'] = SLSMG_HLINE_CHAR_TERM | A_ALTCHARSET; | |
191 | + SLcurses_Acs_Map['n'] = SLSMG_PLUS_CHAR_TERM | A_ALTCHARSET; | |
192 | + SLcurses_Acs_Map['a'] = SLSMG_CKBRD_CHAR_TERM | A_ALTCHARSET; | |
193 | + } | |
194 | } | |
195 | else | |
196 | { | |
197 | /* ugly defaults to use on terminals which don't support graphics */ | |
198 | - SLcurses_Acs_Map[SLSMG_ULCORN_CHAR] = '+'; | |
199 | - SLcurses_Acs_Map[SLSMG_URCORN_CHAR] = '+'; | |
200 | - SLcurses_Acs_Map[SLSMG_LLCORN_CHAR] = '+'; | |
201 | - SLcurses_Acs_Map[SLSMG_LRCORN_CHAR] = '+'; | |
202 | - SLcurses_Acs_Map[SLSMG_UTEE_CHAR] = '+'; | |
203 | - SLcurses_Acs_Map[SLSMG_DTEE_CHAR] = '+'; | |
204 | - SLcurses_Acs_Map[SLSMG_LTEE_CHAR] = '+'; | |
205 | - SLcurses_Acs_Map[SLSMG_RTEE_CHAR] = '+'; | |
206 | - SLcurses_Acs_Map[SLSMG_VLINE_CHAR] = '|'; | |
207 | - SLcurses_Acs_Map[SLSMG_HLINE_CHAR] = '-'; | |
208 | - SLcurses_Acs_Map[SLSMG_PLUS_CHAR] = '+'; | |
209 | - SLcurses_Acs_Map[SLSMG_CKBRD_CHAR] = '#'; | |
210 | + SLcurses_Acs_Map['l'] = '+'; | |
211 | + SLcurses_Acs_Map['k'] = '+'; | |
212 | + SLcurses_Acs_Map['m'] = '+'; | |
213 | + SLcurses_Acs_Map['j'] = '+'; | |
214 | + SLcurses_Acs_Map['v'] = '+'; | |
215 | + SLcurses_Acs_Map['w'] = '+'; | |
216 | + SLcurses_Acs_Map['t'] = '+'; | |
217 | + SLcurses_Acs_Map['u'] = '+'; | |
218 | + SLcurses_Acs_Map['x'] = '|'; | |
219 | + SLcurses_Acs_Map['q'] = '-'; | |
220 | + SLcurses_Acs_Map['n'] = '+'; | |
221 | + SLcurses_Acs_Map['a'] = '#'; | |
222 | } | |
223 | - | |
224 | - return SLcurses_Stdscr; | |
225 | } | |
226 | ||
227 | int SLcurses_wattrset (SLcurses_Window_Type *w, SLtt_Char_Type ch) | |
228 | --- slang-1.4.5/src/slcurses.h.acs 2002-02-10 02:39:19.000000000 -0500 | |
229 | +++ slang-1.4.5/src/slcurses.h 2002-07-09 00:03:57.000000000 -0400 | |
230 | @@ -141,6 +141,7 @@ | |
231 | ||
232 | extern int SLcurses_nodelay (SLcurses_Window_Type *, int); | |
233 | extern SLcurses_Window_Type *SLcurses_initscr (void); | |
234 | +extern void SLcurses_init_acs_map (void); | |
235 | #define initscr SLcurses_initscr | |
236 | ||
237 | extern int SLcurses_cbreak (void); | |
238 | @@ -222,21 +222,21 @@ | |
239 | extern SLtt_Char_Type SLcurses_Acs_Map [128]; | |
240 | #define acs_map SLcurses_Acs_Map | |
241 | ||
242 | -#define ACS_ULCORNER (acs_map[SLSMG_ULCORN_CHAR]) | |
243 | -#define ACS_URCORNER (acs_map[SLSMG_URCORN_CHAR]) | |
244 | -#define ACS_LRCORNER (acs_map[SLSMG_LRCORN_CHAR]) | |
245 | -#define ACS_LLCORNER (acs_map[SLSMG_LLCORN_CHAR]) | |
246 | -#define ACS_TTEE (acs_map[SLSMG_UTEE_CHAR]) | |
247 | -#define ACS_LTEE (acs_map[SLSMG_LTEE_CHAR]) | |
248 | -#define ACS_RTEE (acs_map[SLSMG_RTEE_CHAR]) | |
249 | -#define ACS_BTEE (acs_map[SLSMG_DTEE_CHAR]) | |
250 | -#define ACS_PLUS (acs_map[SLSMG_PLUS_CHAR]) | |
251 | -#define ACS_VLINE (acs_map[SLSMG_VLINE_CHAR]) | |
252 | -#define ACS_HLINE (acs_map[SLSMG_HLINE_CHAR]) | |
253 | +#define ACS_ULCORNER SLSMG_ULCORN_CHAR | |
254 | +#define ACS_URCORNER SLSMG_URCORN_CHAR | |
255 | +#define ACS_LRCORNER SLSMG_LRCORN_CHAR | |
256 | +#define ACS_LLCORNER SLSMG_LLCORN_CHAR | |
257 | +#define ACS_TTEE SLSMG_UTEE_CHAR | |
258 | +#define ACS_LTEE SLSMG_LTEE_CHAR | |
259 | +#define ACS_RTEE SLSMG_RTEE_CHAR | |
260 | +#define ACS_BTEE SLSMG_DTEE_CHAR | |
261 | +#define ACS_PLUS SLSMG_PLUS_CHAR | |
262 | +#define ACS_VLINE SLSMG_VLINE_CHAR | |
263 | +#define ACS_HLINE SLSMG_HLINE_CHAR | |
264 | #define ACS_S1 '-' | |
265 | #define ACS_S9 '-' | |
266 | #define ACS_DIAMOND '&' | |
267 | -#define ACS_CKBOARD (acs_map[SLSMG_CKBRD_CHAR]) | |
268 | +#define ACS_CKBOARD SLSMG_CKBRD_CHAR | |
269 | #define ACS_DEGREE 'o' | |
270 | #define ACS_PLMINUS '+' | |
271 | #define ACS_BULLET '*' | |
272 | --- slang-1.4.5/src/slsmg.c.acs 2002-07-09 00:03:57.000000000 -0400 | |
273 | +++ slang-1.4.5/src/slsmg.c 2002-07-09 00:03:57.000000000 -0400 | |
274 | @@ -10,6 +10,9 @@ | |
275 | ||
276 | #include "slang.h" | |
277 | #include "_slang.h" | |
278 | +#include "slcurses.h" | |
279 | + | |
280 | +#include <locale.h> | |
281 | ||
282 | typedef struct Screen_Type | |
283 | { | |
284 | @@ -44,9 +47,9 @@ | |
285 | */ | |
286 | ||
287 | #ifndef IBMPC_SYSTEM | |
288 | -#define ALT_CHAR_FLAG 0x80 | |
289 | +static int ALT_CHAR_FLAG=0x80; | |
290 | #else | |
291 | -#define ALT_CHAR_FLAG 0x00 | |
292 | +static int ALT_CHAR_FLAG=0x00; | |
293 | #endif | |
294 | ||
295 | #if SLTT_HAS_NON_BCE_SUPPORT && !defined(IBMPC_SYSTEM) | |
296 | @@ -54,6 +57,8 @@ | |
297 | static int Bce_Color_Offset; | |
298 | #endif | |
299 | ||
300 | +int SLsmg_Is_Unicode = 0; | |
301 | +int SLsmg_Setlocale = 1; | |
302 | int SLsmg_Newline_Behavior = 0; | |
303 | int SLsmg_Backspace_Moves = 0; | |
304 | /* Backward compatibility. Not used. */ | |
305 | @@ -184,6 +189,8 @@ | |
306 | return;/* alt chars not used and the alt bit | |
307 | * is used to indicate a blink. | |
308 | */ | |
309 | + if (SLsmg_Is_Unicode) | |
310 | + ALT_CHAR_FLAG=0x00; | |
311 | ||
312 | if (i) This_Alt_Char = ALT_CHAR_FLAG; | |
313 | else This_Alt_Char = 0; | |
314 | @@ -348,6 +355,8 @@ | |
315 | #ifndef IBMPC_SYSTEM | |
316 | int alt_char_set_flag; | |
317 | ||
318 | + if (SLsmg_Is_Unicode) | |
319 | + ALT_CHAR_FLAG = 0x00; | |
320 | alt_char_set_flag = ((This_Color & ALT_CHAR_FLAG) | |
321 | && ((tt_Use_Blink_For_ACS == NULL) | |
322 | || (*tt_Use_Blink_For_ACS == 0))); | |
323 | @@ -1221,6 +1230,20 @@ | |
324 | Smg_Inited = 0; | |
325 | } | |
326 | ||
327 | +static void SLsmg_check_unicode(void) | |
328 | +{ | |
329 | + char *s,*t; | |
330 | + | |
331 | + if (SLsmg_Setlocale) | |
332 | + s = setlocale(LC_ALL, ""); | |
333 | + else | |
334 | + s = setlocale(LC_ALL, NULL); | |
335 | + if (s && (strstr(s,"UTF-8") || strstr(s,"utf8"))) { | |
336 | + SLsmg_Is_Unicode = 1; | |
337 | + return; | |
338 | + } | |
339 | + SLsmg_Is_Unicode = 0; | |
340 | +} | |
341 | ||
342 | static int init_smg (void) | |
343 | { | |
344 | @@ -1242,6 +1265,8 @@ | |
345 | This_Col = This_Row = Start_Col = Start_Row = 0; | |
346 | ||
347 | This_Alt_Char = 0; | |
348 | + SLsmg_check_unicode (); | |
349 | + SLcurses_init_acs_map (); | |
350 | SLsmg_set_color (0); | |
351 | Cls_Flag = 1; | |
352 | #ifndef IBMPC_SYSTEM | |
353 | @@ -1386,7 +1411,11 @@ | |
354 | } | |
355 | } | |
356 | ||
357 | +#ifdef UTF8 | |
358 | +void SLsmg_draw_object (int r, int c, SLsmg_Char_Type object) | |
359 | +#else | |
360 | void SLsmg_draw_object (int r, int c, unsigned char object) | |
361 | +#endif | |
362 | { | |
363 | This_Row = r; This_Col = c; | |
364 | ||
365 | @@ -1405,7 +1434,7 @@ | |
366 | ||
367 | void SLsmg_draw_hline (unsigned int n) | |
368 | { | |
369 | - static unsigned char hbuf[16]; | |
370 | + SLsmg_Char_Type ch = SLSMG_HLINE_CHAR; | |
371 | int count; | |
372 | int cmin, cmax; | |
373 | int final_col = This_Col + (int) n; | |
374 | @@ -1421,11 +1450,6 @@ | |
375 | return; | |
376 | } | |
377 | ||
378 | - if (hbuf[0] == 0) | |
379 | - { | |
380 | - SLMEMSET ((char *) hbuf, SLSMG_HLINE_CHAR, 16); | |
381 | - } | |
382 | - | |
383 | n = (unsigned int)(cmax - cmin); | |
384 | count = n / 16; | |
385 | ||
386 | @@ -1433,10 +1457,10 @@ | |
387 | This_Color |= ALT_CHAR_FLAG; | |
388 | This_Col = cmin; | |
389 | ||
390 | - SLsmg_write_nchars ((char *) hbuf, n % 16); | |
391 | - while (count-- > 0) | |
392 | + SLsmg_draw_object(This_Row, This_Col, ch); | |
393 | + while (n-- > 0) | |
394 | { | |
395 | - SLsmg_write_nchars ((char *) hbuf, 16); | |
396 | + SLsmg_draw_object(This_Row, This_Col, ch); | |
397 | } | |
398 | ||
399 | This_Color = save_color; | |
400 | @@ -1445,7 +1469,7 @@ | |
401 | ||
402 | void SLsmg_draw_vline (int n) | |
403 | { | |
404 | - unsigned char ch = SLSMG_VLINE_CHAR; | |
405 | + SLsmg_Char_Type ch = SLSMG_VLINE_CHAR; | |
406 | int c = This_Col, rmin, rmax; | |
407 | int final_row = This_Row + n; | |
408 | int save_color; | |
409 | @@ -1466,7 +1490,7 @@ | |
410 | for (This_Row = rmin; This_Row < rmax; This_Row++) | |
411 | { | |
412 | This_Col = c; | |
413 | - SLsmg_write_nchars ((char *) &ch, 1); | |
414 | + SLsmg_draw_object (This_Row, This_Col, ch); | |
415 | } | |
416 | ||
417 | This_Col = c; This_Row = final_row; |