/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
* and: Thomas E. Dickey 1996-on *
+ * and: Juergen Pfeifer 2008 *
****************************************************************************/
#include <curses.priv.h>
-#include <term.h> /* ena_acs, acs_chars */
#ifndef CUR
-#define CUR SP_TERMTYPE
+#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_acs.c,v 1.39 2009/05/10 00:48:29 tom Exp $")
+MODULE_ID("$Id: lib_acs.c,v 1.45 2014/03/08 20:32:59 tom Exp $")
#if BROKEN_LINKER || USE_REENTRANT
#define MyBuffer _nc_prescreen.real_acs_map
};
#endif
-NCURSES_EXPORT(void)
-_nc_init_acs(void)
+#ifdef USE_TERM_DRIVER
+NCURSES_EXPORT(chtype)
+NCURSES_SP_NAME(_nc_acs_char) (NCURSES_SP_DCLx int c)
{
-#if NCURSES_SP_FUNCS
- SCREEN *sp = CURRENT_SCREEN;
+ chtype *map;
+ if (c < 0 || c >= ACS_LEN)
+ return (chtype) 0;
+ map = (SP_PARM != 0) ? SP_PARM->_acs_map :
+#if BROKEN_LINKER || USE_REENTRANT
+ _nc_prescreen.real_acs_map
+#else
+ acs_map
#endif
+ ;
+ return map[c];
+}
+#endif /* USE_TERM_DRIVER */
+
+NCURSES_EXPORT(void)
+NCURSES_SP_NAME(_nc_init_acs) (NCURSES_SP_DCL0)
+{
chtype *fake_map = acs_map;
- chtype *real_map = SP != 0 ? SP->_acs_map : fake_map;
+ chtype *real_map = SP_PARM != 0 ? SP_PARM->_acs_map : fake_map;
int j;
T(("initializing ACS map"));
if (real_map != fake_map) {
for (j = 1; j < ACS_LEN; ++j) {
real_map[j] = 0;
- fake_map[j] = A_ALTCHARSET | j;
- if (SP)
- SP->_screen_acs_map[j] = FALSE;
+ fake_map[j] = A_ALTCHARSET | (chtype) j;
+ if (SP_PARM)
+ SP_PARM->_screen_acs_map[j] = FALSE;
}
} else {
for (j = 1; j < ACS_LEN; ++j) {
real_map['{'] = '*'; /* should be greek pi */
real_map['|'] = '!'; /* should be not-equal */
real_map['}'] = 'f'; /* should be pound-sterling symbol */
+ /* thick-line-drawing */
+ real_map['L'] = '+'; /* upper left corner */
+ real_map['M'] = '+'; /* lower left corner */
+ real_map['K'] = '+'; /* upper right corner */
+ real_map['J'] = '+'; /* lower right corner */
+ real_map['T'] = '+'; /* tee pointing left */
+ real_map['U'] = '+'; /* tee pointing right */
+ real_map['V'] = '+'; /* tee pointing up */
+ real_map['W'] = '+'; /* tee pointing down */
+ real_map['Q'] = '-'; /* horizontal line */
+ real_map['X'] = '|'; /* vertical line */
+ real_map['N'] = '+'; /* large plus or crossover */
+ /* double-line-drawing */
+ real_map['C'] = '+'; /* upper left corner */
+ real_map['D'] = '+'; /* lower left corner */
+ real_map['B'] = '+'; /* upper right corner */
+ real_map['A'] = '+'; /* lower right corner */
+ real_map['G'] = '+'; /* tee pointing left */
+ real_map['F'] = '+'; /* tee pointing right */
+ real_map['H'] = '+'; /* tee pointing up */
+ real_map['I'] = '+'; /* tee pointing down */
+ real_map['R'] = '-'; /* horizontal line */
+ real_map['Y'] = '|'; /* vertical line */
+ real_map['E'] = '+'; /* large plus or crossover */
+#ifdef USE_TERM_DRIVER
+ CallDriver_2(SP_PARM, td_initacs, real_map, fake_map);
+#else
if (ena_acs != NULL) {
- TPUTS_TRACE("ena_acs");
- putp(ena_acs);
+ NCURSES_PUTP2("ena_acs", ena_acs);
}
#if NCURSES_EXT_FUNCS
/*
size_t i;
for (i = 1; i < ACS_LEN; ++i) {
if (real_map[i] == 0) {
- real_map[i] = i;
+ real_map[i] = (chtype) i;
if (real_map != fake_map) {
if (SP != 0)
SP->_screen_acs_map[i] = TRUE;
_nc_unlock_global(tracef);
}
#endif /* TRACE */
+#endif
}
+
+#if NCURSES_SP_FUNCS
+NCURSES_EXPORT(void)
+_nc_init_acs(void)
+{
+ NCURSES_SP_NAME(_nc_init_acs) (CURRENT_SCREEN);
+}
+#endif