/****************************************************************************
- * Copyright (c) 1998-2007,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2011 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 *
*/
#include <curses.priv.h>
-#include <term.h>
#ifndef CUR
-#define CUR SP_TERMTYPE
+#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_vidattr.c,v 1.56 2009/05/10 00:48:29 tom Exp $")
+MODULE_ID("$Id: lib_vidattr.c,v 1.62 2011/05/28 21:22:04 tom Exp $")
#define doPut(mode) \
TPUTS_TRACE(#mode); \
/* if there is no current screen, assume we *can* do color */
#define SetColorsIf(why,old_attr) \
if (can_color && (why)) { \
- int old_pair = PAIR_NUMBER(old_attr); \
+ int old_pair = PairNumber(old_attr); \
TR(TRACE_ATTRS, ("old pair = %d -- new pair = %d", old_pair, pair)); \
if ((pair != old_pair) \
|| (fix_pair0 && (pair == 0)) \
|| (reverse ^ ((old_attr & A_REVERSE) != 0))) { \
- NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_ARGx \
- old_pair, pair, reverse, outc); \
+ NCURSES_SP_NAME(_nc_do_color)(NCURSES_SP_ARGx \
+ (short) old_pair, \
+ (short) pair, \
+ reverse, outc); \
} \
}
#endif
newmode &= A_ATTRIBUTES;
- T((T_CALLED("vidputs(%s)"), _traceattr(newmode)));
+
+ T((T_CALLED("vidputs(%p,%s)"), (void *) SP_PARM, _traceattr(newmode)));
+
+ if (!IsTermInfo(SP_PARM))
+ returnCode(ERR);
/* this allows us to go on whether or not newterm() has been called */
if (SP_PARM)
* A_ALTCHARSET (256) down 2 to line up. We use the NCURSES_BITS
* macro so this will work properly for the wide-character layout.
*/
- unsigned value = no_color_video;
+ unsigned value = (unsigned) no_color_video;
attr_t mask = NCURSES_BITS((value & 63)
| ((value & 192) << 1)
| ((value & 256) >> 2), 8);
if (newmode == PreviousAttr)
returnCode(OK);
- pair = PAIR_NUMBER(newmode);
+ pair = PairNumber(newmode);
if (reverse) {
newmode &= ~A_REVERSE;
returnCode(OK);
}
+#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
-NCURSES_SP_NAME(vidattr) (NCURSES_SP_DCLx
- chtype newmode)
+vidputs(chtype newmode, NCURSES_OUTC outc)
{
- return NCURSES_SP_NAME(vidputs) (NCURSES_SP_ARGx
+ SetSafeOutcWrapper(outc);
+ return NCURSES_SP_NAME(vidputs) (CURRENT_SCREEN,
newmode,
- NCURSES_SP_NAME(_nc_outch));
+ _nc_outc_wrapper);
}
+#endif
-#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
-vidputs(chtype newmode, NCURSES_OUTC outc)
+NCURSES_SP_NAME(vidattr) (NCURSES_SP_DCLx chtype newmode)
{
- SetSafeOutcWrapper(outc);
- return NCURSES_SP_NAME(vidputs) (CURRENT_SCREEN, newmode, _nc_outc_wrapper);
+ T((T_CALLED("vidattr(%p,%s)"), (void *) SP_PARM, _traceattr(newmode)));
+ returnCode(NCURSES_SP_NAME(vidputs) (NCURSES_SP_ARGx
+ newmode,
+ NCURSES_SP_NAME(_nc_outch)));
}
+#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
vidattr(chtype newmode)
{
- T((T_CALLED("vidattr(%s)"), _traceattr(newmode)));
-
- returnCode(vidputs(newmode, _nc_outch));
+ return NCURSES_SP_NAME(vidattr) (CURRENT_SCREEN, newmode);
}
#endif
{
chtype attrs = A_NORMAL;
- T((T_CALLED("termattrs()")));
- if (enter_alt_charset_mode)
- attrs |= A_ALTCHARSET;
+ T((T_CALLED("termattrs(%p)"), (void *) SP_PARM));
+
+ if (HasTerminal(SP_PARM)) {
+#ifdef USE_TERM_DRIVER
+ attrs = CallDriver(SP_PARM, conattr);
+#else
+
+ if (enter_alt_charset_mode)
+ attrs |= A_ALTCHARSET;
- if (enter_blink_mode)
- attrs |= A_BLINK;
+ if (enter_blink_mode)
+ attrs |= A_BLINK;
- if (enter_bold_mode)
- attrs |= A_BOLD;
+ if (enter_bold_mode)
+ attrs |= A_BOLD;
- if (enter_dim_mode)
- attrs |= A_DIM;
+ if (enter_dim_mode)
+ attrs |= A_DIM;
- if (enter_reverse_mode)
- attrs |= A_REVERSE;
+ if (enter_reverse_mode)
+ attrs |= A_REVERSE;
- if (enter_standout_mode)
- attrs |= A_STANDOUT;
+ if (enter_standout_mode)
+ attrs |= A_STANDOUT;
- if (enter_protected_mode)
- attrs |= A_PROTECT;
+ if (enter_protected_mode)
+ attrs |= A_PROTECT;
- if (enter_secure_mode)
- attrs |= A_INVIS;
+ if (enter_secure_mode)
+ attrs |= A_INVIS;
- if (enter_underline_mode)
- attrs |= A_UNDERLINE;
+ if (enter_underline_mode)
+ attrs |= A_UNDERLINE;
- if (SP_PARM->_coloron)
- attrs |= A_COLOR;
+ if (SP_PARM->_coloron)
+ attrs |= A_COLOR;
+#endif
+ }
returnChtype(attrs);
}