|
|
| |
#ifdef UTF8 | #ifdef UTF8 |
typedef int SLsmg_Char_Type; | typedef int SLsmg_Char_Type; |
|
extern SLtt_Char_Type SLcurses_Acs_Map [128]; |
|
#define acs_map SLcurses_Acs_Map |
#define SLSMG_EXTRACT_CHAR(x) ((x) & 0xFFFFFF) | #define SLSMG_EXTRACT_CHAR(x) ((x) & 0xFFFFFF) |
#define SLSMG_EXTRACT_COLOR(x) (((x)>>24)&0xFF) | #define SLSMG_EXTRACT_COLOR(x) (((x)>>24)&0xFF) |
#define SLSMG_BUILD_CHAR(ch,color) (((SLsmg_Char_Type)(wchar_t)(ch))|((color)<<24)) | #define SLSMG_BUILD_CHAR(ch,color) (((SLsmg_Char_Type)(wchar_t)(ch))|((color)<<24)) |
|
|
extern void SLsmg_set_screen_start (int *, int *); | extern void SLsmg_set_screen_start (int *, int *); |
extern void SLsmg_draw_hline (unsigned int); | extern void SLsmg_draw_hline (unsigned int); |
extern void SLsmg_draw_vline (int); | extern void SLsmg_draw_vline (int); |
|
#ifdef UTF8 |
|
extern void SLsmg_draw_object (int, int, SLsmg_Char_Type); |
|
#else |
extern void SLsmg_draw_object (int, int, unsigned char); | extern void SLsmg_draw_object (int, int, unsigned char); |
|
#endif |
extern void SLsmg_draw_box (int, int, unsigned int, unsigned int); | extern void SLsmg_draw_box (int, int, unsigned int, unsigned int); |
extern int SLsmg_get_column(void); | extern int SLsmg_get_column(void); |
extern int SLsmg_get_row(void); | extern int SLsmg_get_row(void); |
|
|
extern int SLsmg_Display_Eight_Bit; | extern int SLsmg_Display_Eight_Bit; |
extern int SLsmg_Tab_Width; | extern int SLsmg_Tab_Width; |
| |
|
extern int SLsmg_Is_Unicode; |
|
extern int SLsmg_Setlocale; |
|
|
#define SLSMG_NEWLINE_IGNORED 0 /* default */ | #define SLSMG_NEWLINE_IGNORED 0 /* default */ |
#define SLSMG_NEWLINE_MOVES 1 /* moves to next line, column 0 */ | #define SLSMG_NEWLINE_MOVES 1 /* moves to next line, column 0 */ |
#define SLSMG_NEWLINE_SCROLLS 2 /* moves but scrolls at bottom of screen */ | #define SLSMG_NEWLINE_SCROLLS 2 /* moves but scrolls at bottom of screen */ |
|
|
# define SLSMG_BOARD_CHAR '#' | # define SLSMG_BOARD_CHAR '#' |
# define SLSMG_BLOCK_CHAR '#' | # define SLSMG_BLOCK_CHAR '#' |
# else | # else |
# define SLSMG_HLINE_CHAR 'q' |
# define SLSMG_HLINE_CHAR (acs_map['q']) |
# define SLSMG_VLINE_CHAR 'x' |
# define SLSMG_VLINE_CHAR (acs_map['x']) |
# define SLSMG_ULCORN_CHAR 'l' |
# define SLSMG_ULCORN_CHAR (acs_map['l']) |
# define SLSMG_URCORN_CHAR 'k' |
# define SLSMG_URCORN_CHAR (acs_map['k']) |
# define SLSMG_LLCORN_CHAR 'm' |
# define SLSMG_LLCORN_CHAR (acs_map['m']) |
# define SLSMG_LRCORN_CHAR 'j' |
# define SLSMG_LRCORN_CHAR (acs_map['j']) |
# define SLSMG_CKBRD_CHAR 'a' |
# define SLSMG_CKBRD_CHAR (acs_map['a']) |
# define SLSMG_RTEE_CHAR 'u' |
# define SLSMG_RTEE_CHAR (acs_map['u']) |
# define SLSMG_LTEE_CHAR 't' |
# define SLSMG_LTEE_CHAR (acs_map['t']) |
# define SLSMG_UTEE_CHAR 'w' |
# define SLSMG_UTEE_CHAR (acs_map['v']) |
# define SLSMG_DTEE_CHAR 'v' |
# define SLSMG_DTEE_CHAR (acs_map['w']) |
# define SLSMG_PLUS_CHAR 'n' |
# define SLSMG_PLUS_CHAR (acs_map['n']) |
# define SLSMG_DIAMOND_CHAR '`' |
# define SLSMG_DIAMOND_CHAR (acs_map['`']) |
# define SLSMG_DEGREE_CHAR 'f' |
# define SLSMG_DEGREE_CHAR (acs_map['f']) |
# define SLSMG_PLMINUS_CHAR 'g' |
# define SLSMG_PLMINUS_CHAR (acs_map['g']) |
# define SLSMG_BULLET_CHAR '~' |
# define SLSMG_BULLET_CHAR (acs_map['~']) |
# define SLSMG_LARROW_CHAR ',' |
# define SLSMG_LARROW_CHAR (acs_map[',']) |
# define SLSMG_RARROW_CHAR '+' |
# define SLSMG_RARROW_CHAR (acs_map['+']) |
# define SLSMG_DARROW_CHAR '.' |
# define SLSMG_DARROW_CHAR (acs_map['.']) |
# define SLSMG_UARROW_CHAR '-' |
# define SLSMG_UARROW_CHAR (acs_map['-']) |
# define SLSMG_BOARD_CHAR 'h' |
# define SLSMG_BOARD_CHAR (acs_map['h']) |
# define SLSMG_BLOCK_CHAR '0' |
# define SLSMG_BLOCK_CHAR (acs_map['0']) |
|
# |
|
# define SLSMG_HLINE_CHAR_TERM 'q' |
|
# define SLSMG_VLINE_CHAR_TERM 'x' |
|
# define SLSMG_ULCORN_CHAR_TERM 'l' |
|
# define SLSMG_URCORN_CHAR_TERM 'k' |
|
# define SLSMG_LLCORN_CHAR_TERM 'm' |
|
# define SLSMG_LRCORN_CHAR_TERM 'j' |
|
# define SLSMG_CKBRD_CHAR_TERM 'a' |
|
# define SLSMG_RTEE_CHAR_TERM 'u' |
|
# define SLSMG_LTEE_CHAR_TERM 't' |
|
# define SLSMG_UTEE_CHAR_TERM 'v' |
|
# define SLSMG_DTEE_CHAR_TERM 'w' |
|
# define SLSMG_PLUS_CHAR_TERM 'n' |
|
# define SLSMG_DIAMOND_CHAR_TERM '`' |
|
# define SLSMG_DEGREE_CHAR_TERM 'f' |
|
# define SLSMG_PLMINUS_CHAR_TERM 'g' |
|
# define SLSMG_BULLET_CHAR_TERM '~' |
|
# define SLSMG_LARROW_CHAR_TERM ',' |
|
# define SLSMG_RARROW_CHAR_TERM '+' |
|
# define SLSMG_DARROW_CHAR_TERM '.' |
|
# define SLSMG_UARROW_CHAR_TERM '-' |
|
# define SLSMG_BOARD_CHAR_TERM 'h' |
|
# define SLSMG_BLOCK_CHAR_TERM '0' |
# endif /* AMIGA */ | # endif /* AMIGA */ |
#endif /* IBMPC_SYSTEM */ | #endif /* IBMPC_SYSTEM */ |
| |
|
#ifdef UTF8 |
|
# define SLSMG_HLINE_CHAR_UNICODE 0x2500 |
|
# define SLSMG_VLINE_CHAR_UNICODE 0x2502 |
|
# define SLSMG_ULCORN_CHAR_UNICODE 0x250c |
|
# define SLSMG_URCORN_CHAR_UNICODE 0x2510 |
|
# define SLSMG_LLCORN_CHAR_UNICODE 0x2514 |
|
# define SLSMG_LRCORN_CHAR_UNICODE 0x2518 |
|
# define SLSMG_RTEE_CHAR_UNICODE 0x2524 |
|
# define SLSMG_LTEE_CHAR_UNICODE 0x251c |
|
# define SLSMG_UTEE_CHAR_UNICODE 0x2534 |
|
# define SLSMG_DTEE_CHAR_UNICODE 0x252c |
|
# define SLSMG_PLUS_CHAR_UNICODE 0x253c |
|
# define SLSMG_CKBRD_CHAR_UNICODE 0x2592 |
|
# define SLSMG_DIAMOND_CHAR_UNICODE 0x25c6 |
|
# define SLSMG_DEGREE_CHAR_UNICODE 0x00b0 |
|
# define SLSMG_PLMINUS_CHAR_UNICODE 0x00b1 |
|
# define SLSMG_BULLET_CHAR_UNICODE 0x00b7 |
|
# define SLSMG_LARROW_CHAR_UNICODE 0x2190 |
|
# define SLSMG_RARROW_CHAR_UNICODE 0x2192 |
|
# define SLSMG_DARROW_CHAR_UNICODE 0x2193 |
|
# define SLSMG_UARROW_CHAR_UNICODE 0x2191 |
|
# define SLSMG_BOARD_CHAR_UNICODE 0x2592 |
|
# define SLSMG_BLOCK_CHAR_UNICODE 0x25ae |
|
#endif |
|
|
#ifndef IBMPC_SYSTEM | #ifndef IBMPC_SYSTEM |
# define SLSMG_COLOR_BLACK 0x000000 | # define SLSMG_COLOR_BLACK 0x000000 |
# define SLSMG_COLOR_RED 0x000001 | # define SLSMG_COLOR_RED 0x000001 |
|
|
/* SLtt_set_mono (A_BLINK >> 8, NULL, SLTT_BLINK_MASK); */ | /* SLtt_set_mono (A_BLINK >> 8, NULL, SLTT_BLINK_MASK); */ |
SLtt_set_mono ((A_BOLD|A_UNDERLINE) >> 8, NULL, SLTT_ULINE_MASK|SLTT_BOLD_MASK); | SLtt_set_mono ((A_BOLD|A_UNDERLINE) >> 8, NULL, SLTT_ULINE_MASK|SLTT_BOLD_MASK); |
SLtt_set_mono ((A_REVERSE|A_UNDERLINE) >> 8, NULL, SLTT_ULINE_MASK|SLTT_REV_MASK); | SLtt_set_mono ((A_REVERSE|A_UNDERLINE) >> 8, NULL, SLTT_ULINE_MASK|SLTT_REV_MASK); |
|
|
|
SLcurses_init_acs_map(); |
|
|
|
return SLcurses_Stdscr; |
|
} |
| |
|
void SLcurses_init_acs_map() |
|
{ |
if (SLtt_Has_Alt_Charset) | if (SLtt_Has_Alt_Charset) |
{ | { |
SLcurses_Acs_Map[SLSMG_ULCORN_CHAR] = SLSMG_ULCORN_CHAR | A_ALTCHARSET; |
if (SLsmg_Is_Unicode) |
SLcurses_Acs_Map[SLSMG_URCORN_CHAR] = SLSMG_URCORN_CHAR | A_ALTCHARSET; |
{ |
SLcurses_Acs_Map[SLSMG_LLCORN_CHAR] = SLSMG_LLCORN_CHAR | A_ALTCHARSET; |
SLcurses_Acs_Map['l'] = SLSMG_ULCORN_CHAR_UNICODE; |
SLcurses_Acs_Map[SLSMG_LRCORN_CHAR] = SLSMG_LRCORN_CHAR | A_ALTCHARSET; |
SLcurses_Acs_Map['k'] = SLSMG_URCORN_CHAR_UNICODE; |
SLcurses_Acs_Map[SLSMG_UTEE_CHAR] = SLSMG_UTEE_CHAR | A_ALTCHARSET; |
SLcurses_Acs_Map['m'] = SLSMG_LLCORN_CHAR_UNICODE; |
SLcurses_Acs_Map[SLSMG_DTEE_CHAR] = SLSMG_DTEE_CHAR | A_ALTCHARSET; |
SLcurses_Acs_Map['j'] = SLSMG_LRCORN_CHAR_UNICODE; |
SLcurses_Acs_Map[SLSMG_LTEE_CHAR] = SLSMG_LTEE_CHAR | A_ALTCHARSET; |
SLcurses_Acs_Map['v'] = SLSMG_UTEE_CHAR_UNICODE; |
SLcurses_Acs_Map[SLSMG_RTEE_CHAR] = SLSMG_RTEE_CHAR | A_ALTCHARSET; |
SLcurses_Acs_Map['w'] = SLSMG_DTEE_CHAR_UNICODE; |
SLcurses_Acs_Map[SLSMG_VLINE_CHAR] = SLSMG_VLINE_CHAR | A_ALTCHARSET; |
SLcurses_Acs_Map['t'] = SLSMG_LTEE_CHAR_UNICODE; |
SLcurses_Acs_Map[SLSMG_HLINE_CHAR] = SLSMG_HLINE_CHAR | A_ALTCHARSET; |
SLcurses_Acs_Map['u'] = SLSMG_RTEE_CHAR_UNICODE; |
SLcurses_Acs_Map[SLSMG_PLUS_CHAR] = SLSMG_PLUS_CHAR | A_ALTCHARSET; |
SLcurses_Acs_Map['x'] = SLSMG_VLINE_CHAR_UNICODE; |
SLcurses_Acs_Map[SLSMG_CKBRD_CHAR] = SLSMG_CKBRD_CHAR | A_ALTCHARSET; |
SLcurses_Acs_Map['q'] = SLSMG_HLINE_CHAR_UNICODE; |
|
SLcurses_Acs_Map['n'] = SLSMG_PLUS_CHAR_UNICODE; |
|
SLcurses_Acs_Map['a'] = SLSMG_CKBRD_CHAR_UNICODE; |
|
} |
|
else |
|
{ |
|
SLcurses_Acs_Map['l'] = SLSMG_ULCORN_CHAR_TERM | A_ALTCHARSET; |
|
SLcurses_Acs_Map['k'] = SLSMG_URCORN_CHAR_TERM | A_ALTCHARSET; |
|
SLcurses_Acs_Map['m'] = SLSMG_LLCORN_CHAR_TERM | A_ALTCHARSET; |
|
SLcurses_Acs_Map['j'] = SLSMG_LRCORN_CHAR_TERM | A_ALTCHARSET; |
|
SLcurses_Acs_Map['v'] = SLSMG_UTEE_CHAR_TERM | A_ALTCHARSET; |
|
SLcurses_Acs_Map['w'] = SLSMG_DTEE_CHAR_TERM | A_ALTCHARSET; |
|
SLcurses_Acs_Map['t'] = SLSMG_LTEE_CHAR_TERM | A_ALTCHARSET; |
|
SLcurses_Acs_Map['u'] = SLSMG_RTEE_CHAR_TERM | A_ALTCHARSET; |
|
SLcurses_Acs_Map['x'] = SLSMG_VLINE_CHAR_TERM | A_ALTCHARSET; |
|
SLcurses_Acs_Map['q'] = SLSMG_HLINE_CHAR_TERM | A_ALTCHARSET; |
|
SLcurses_Acs_Map['n'] = SLSMG_PLUS_CHAR_TERM | A_ALTCHARSET; |
|
SLcurses_Acs_Map['a'] = SLSMG_CKBRD_CHAR_TERM | A_ALTCHARSET; |
|
} |
} | } |
else | else |
{ | { |
/* ugly defaults to use on terminals which don't support graphics */ | /* ugly defaults to use on terminals which don't support graphics */ |
SLcurses_Acs_Map[SLSMG_ULCORN_CHAR] = '+'; |
SLcurses_Acs_Map['l'] = '+'; |
SLcurses_Acs_Map[SLSMG_URCORN_CHAR] = '+'; |
SLcurses_Acs_Map['k'] = '+'; |
SLcurses_Acs_Map[SLSMG_LLCORN_CHAR] = '+'; |
SLcurses_Acs_Map['m'] = '+'; |
SLcurses_Acs_Map[SLSMG_LRCORN_CHAR] = '+'; |
SLcurses_Acs_Map['j'] = '+'; |
SLcurses_Acs_Map[SLSMG_UTEE_CHAR] = '+'; |
SLcurses_Acs_Map['v'] = '+'; |
SLcurses_Acs_Map[SLSMG_DTEE_CHAR] = '+'; |
SLcurses_Acs_Map['w'] = '+'; |
SLcurses_Acs_Map[SLSMG_LTEE_CHAR] = '+'; |
SLcurses_Acs_Map['t'] = '+'; |
SLcurses_Acs_Map[SLSMG_RTEE_CHAR] = '+'; |
SLcurses_Acs_Map['u'] = '+'; |
SLcurses_Acs_Map[SLSMG_VLINE_CHAR] = '|'; |
SLcurses_Acs_Map['x'] = '|'; |
SLcurses_Acs_Map[SLSMG_HLINE_CHAR] = '-'; |
SLcurses_Acs_Map['q'] = '-'; |
SLcurses_Acs_Map[SLSMG_PLUS_CHAR] = '+'; |
SLcurses_Acs_Map['n'] = '+'; |
SLcurses_Acs_Map[SLSMG_CKBRD_CHAR] = '#'; |
SLcurses_Acs_Map['a'] = '#'; |
} | } |
|
|
return SLcurses_Stdscr; |
|
} | } |
| |
int SLcurses_wattrset (SLcurses_Window_Type *w, SLtt_Char_Type ch) | int SLcurses_wattrset (SLcurses_Window_Type *w, SLtt_Char_Type ch) |
|
|
| |
extern int SLcurses_nodelay (SLcurses_Window_Type *, int); | extern int SLcurses_nodelay (SLcurses_Window_Type *, int); |
extern SLcurses_Window_Type *SLcurses_initscr (void); | extern SLcurses_Window_Type *SLcurses_initscr (void); |
|
extern void SLcurses_init_acs_map (void); |
#define initscr SLcurses_initscr | #define initscr SLcurses_initscr |
| |
extern int SLcurses_cbreak (void); | extern int SLcurses_cbreak (void); |
|
|
extern SLtt_Char_Type SLcurses_Acs_Map [128]; | extern SLtt_Char_Type SLcurses_Acs_Map [128]; |
#define acs_map SLcurses_Acs_Map | #define acs_map SLcurses_Acs_Map |
| |
#define ACS_ULCORNER (acs_map[SLSMG_ULCORN_CHAR]) |
#define ACS_ULCORNER SLSMG_ULCORN_CHAR |
#define ACS_URCORNER (acs_map[SLSMG_URCORN_CHAR]) |
#define ACS_URCORNER SLSMG_URCORN_CHAR |
#define ACS_LRCORNER (acs_map[SLSMG_LRCORN_CHAR]) |
#define ACS_LRCORNER SLSMG_LRCORN_CHAR |
#define ACS_LLCORNER (acs_map[SLSMG_LLCORN_CHAR]) |
#define ACS_LLCORNER SLSMG_LLCORN_CHAR |
#define ACS_TTEE (acs_map[SLSMG_UTEE_CHAR]) |
#define ACS_TTEE SLSMG_UTEE_CHAR |
#define ACS_LTEE (acs_map[SLSMG_LTEE_CHAR]) |
#define ACS_LTEE SLSMG_LTEE_CHAR |
#define ACS_RTEE (acs_map[SLSMG_RTEE_CHAR]) |
#define ACS_RTEE SLSMG_RTEE_CHAR |
#define ACS_BTEE (acs_map[SLSMG_DTEE_CHAR]) |
#define ACS_BTEE SLSMG_DTEE_CHAR |
#define ACS_PLUS (acs_map[SLSMG_PLUS_CHAR]) |
#define ACS_PLUS SLSMG_PLUS_CHAR |
#define ACS_VLINE (acs_map[SLSMG_VLINE_CHAR]) |
#define ACS_VLINE SLSMG_VLINE_CHAR |
#define ACS_HLINE (acs_map[SLSMG_HLINE_CHAR]) |
#define ACS_HLINE SLSMG_HLINE_CHAR |
#define ACS_S1 '-' | #define ACS_S1 '-' |
#define ACS_S9 '-' | #define ACS_S9 '-' |
#define ACS_DIAMOND '&' | #define ACS_DIAMOND '&' |
#define ACS_CKBOARD (acs_map[SLSMG_CKBRD_CHAR]) |
#define ACS_CKBOARD SLSMG_CKBRD_CHAR |
#define ACS_DEGREE 'o' | #define ACS_DEGREE 'o' |
#define ACS_PLMINUS '+' | #define ACS_PLMINUS '+' |
#define ACS_BULLET '*' | #define ACS_BULLET '*' |
|
|
| |
#include "slang.h" | #include "slang.h" |
#include "_slang.h" | #include "_slang.h" |
|
#include "slcurses.h" |
|
|
|
#include <locale.h> |
| |
typedef struct Screen_Type | typedef struct Screen_Type |
{ | { |
|
|
*/ | */ |
| |
#ifndef IBMPC_SYSTEM | #ifndef IBMPC_SYSTEM |
#define ALT_CHAR_FLAG 0x80 |
static int ALT_CHAR_FLAG=0x80; |
#else | #else |
#define ALT_CHAR_FLAG 0x00 |
static int ALT_CHAR_FLAG=0x00; |
#endif | #endif |
| |
#if SLTT_HAS_NON_BCE_SUPPORT && !defined(IBMPC_SYSTEM) | #if SLTT_HAS_NON_BCE_SUPPORT && !defined(IBMPC_SYSTEM) |
|
|
static int Bce_Color_Offset; | static int Bce_Color_Offset; |
#endif | #endif |
| |
|
int SLsmg_Is_Unicode = 0; |
|
int SLsmg_Setlocale = 1; |
int SLsmg_Newline_Behavior = 0; | int SLsmg_Newline_Behavior = 0; |
int SLsmg_Backspace_Moves = 0; | int SLsmg_Backspace_Moves = 0; |
/* Backward compatibility. Not used. */ | /* Backward compatibility. Not used. */ |
|
|
return;/* alt chars not used and the alt bit | return;/* alt chars not used and the alt bit |
* is used to indicate a blink. | * is used to indicate a blink. |
*/ | */ |
|
if (SLsmg_Is_Unicode) |
|
ALT_CHAR_FLAG=0x00; |
| |
if (i) This_Alt_Char = ALT_CHAR_FLAG; | if (i) This_Alt_Char = ALT_CHAR_FLAG; |
else This_Alt_Char = 0; | else This_Alt_Char = 0; |
|
|
#ifndef IBMPC_SYSTEM | #ifndef IBMPC_SYSTEM |
int alt_char_set_flag; | int alt_char_set_flag; |
| |
|
if (SLsmg_Is_Unicode) |
|
ALT_CHAR_FLAG = 0x00; |
alt_char_set_flag = ((This_Color & ALT_CHAR_FLAG) | alt_char_set_flag = ((This_Color & ALT_CHAR_FLAG) |
&& ((tt_Use_Blink_For_ACS == NULL) | && ((tt_Use_Blink_For_ACS == NULL) |
|| (*tt_Use_Blink_For_ACS == 0))); | || (*tt_Use_Blink_For_ACS == 0))); |
|
|
Smg_Inited = 0; | Smg_Inited = 0; |
} | } |
| |
|
static void SLsmg_check_unicode(void) |
|
{ |
|
char *s,*t; |
|
|
|
if (SLsmg_Setlocale) |
|
s = setlocale(LC_ALL, ""); |
|
else |
|
s = setlocale(LC_ALL, NULL); |
|
if (s && (strstr(s,"UTF-8") || strstr(s,"utf8"))) { |
|
SLsmg_Is_Unicode = 1; |
|
return; |
|
} |
|
SLsmg_Is_Unicode = 0; |
|
} |
| |
static int init_smg (void) | static int init_smg (void) |
{ | { |
|
|
This_Col = This_Row = Start_Col = Start_Row = 0; | This_Col = This_Row = Start_Col = Start_Row = 0; |
| |
This_Alt_Char = 0; | This_Alt_Char = 0; |
|
SLsmg_check_unicode (); |
|
SLcurses_init_acs_map (); |
SLsmg_set_color (0); | SLsmg_set_color (0); |
Cls_Flag = 1; | Cls_Flag = 1; |
#ifndef IBMPC_SYSTEM | #ifndef IBMPC_SYSTEM |
|
|
} | } |
} | } |
| |
|
#ifdef UTF8 |
|
void SLsmg_draw_object (int r, int c, SLsmg_Char_Type object) |
|
#else |
void SLsmg_draw_object (int r, int c, unsigned char object) | void SLsmg_draw_object (int r, int c, unsigned char object) |
|
#endif |
{ | { |
This_Row = r; This_Col = c; | This_Row = r; This_Col = c; |
| |
|
|
| |
void SLsmg_draw_hline (unsigned int n) | void SLsmg_draw_hline (unsigned int n) |
{ | { |
static unsigned char hbuf[16]; |
SLsmg_Char_Type ch = SLSMG_HLINE_CHAR; |
int count; | int count; |
int cmin, cmax; | int cmin, cmax; |
int final_col = This_Col + (int) n; | int final_col = This_Col + (int) n; |
|
|
return; | return; |
} | } |
| |
if (hbuf[0] == 0) |
|
{ |
|
SLMEMSET ((char *) hbuf, SLSMG_HLINE_CHAR, 16); |
|
} |
|
|
|
n = (unsigned int)(cmax - cmin); | n = (unsigned int)(cmax - cmin); |
count = n / 16; | count = n / 16; |
| |
|
|
This_Color |= ALT_CHAR_FLAG; | This_Color |= ALT_CHAR_FLAG; |
This_Col = cmin; | This_Col = cmin; |
| |
SLsmg_write_nchars ((char *) hbuf, n % 16); |
SLsmg_draw_object(This_Row, This_Col, ch); |
while (count-- > 0) |
while (n-- > 0) |
{ | { |
SLsmg_write_nchars ((char *) hbuf, 16); |
SLsmg_draw_object(This_Row, This_Col, ch); |
} | } |
| |
This_Color = save_color; | This_Color = save_color; |
|
|
| |
void SLsmg_draw_vline (int n) | void SLsmg_draw_vline (int n) |
{ | { |
unsigned char ch = SLSMG_VLINE_CHAR; |
SLsmg_Char_Type ch = SLSMG_VLINE_CHAR; |
int c = This_Col, rmin, rmax; | int c = This_Col, rmin, rmax; |
int final_row = This_Row + n; | int final_row = This_Row + n; |
int save_color; | int save_color; |
|
|
for (This_Row = rmin; This_Row < rmax; This_Row++) | for (This_Row = rmin; This_Row < rmax; This_Row++) |
{ | { |
This_Col = c; | This_Col = c; |
SLsmg_write_nchars ((char *) &ch, 1); |
SLsmg_draw_object (This_Row, This_Col, ch); |
} | } |
| |
This_Col = c; This_Row = final_row; | This_Col = c; This_Row = final_row; |