~vcs-imports/ipfire/ipfire-2.x

« back to all changes in this revision

Viewing changes to src/patches/slang-utf8-acs.patch

  • Committer: Dirk Wagner
  • Date: 2014-12-23 08:02:23 UTC
  • mfrom: (4405.56.108)
  • Revision ID: git-v1:601f8347ccb1e9c5e3f250ff26d4097ecd698875
Merge branch 'next' of ssh://git.ipfire.org/pub/git/ipfire-2.x into asterisk-update

Show diffs side-by-side

added added

removed removed

Lines of Context:
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;