/****************************************************************************
- * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
+ * Copyright 2018-2019,2020 Thomas E. Dickey *
+ * Copyright 1998-2014,2017 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 *
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_vidattr.c,v 1.68 2014/03/08 20:32:59 tom Exp $")
+MODULE_ID("$Id: lib_vidattr.c,v 1.78 2020/05/27 23:56:32 tom Exp $")
#define doPut(mode) \
TPUTS_TRACE(#mode); \
NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx mode, 1, outc)
#define TurnOn(mask, mode) \
- if ((turn_on & mask) && mode) { doPut(mode); }
+ if ((turn_on & mask) && mode) { \
+ TPUTS_TRACE(#mode); \
+ NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx mode, 1, outc); \
+ }
#define TurnOff(mask, mode) \
- if ((turn_off & mask) && mode) { doPut(mode); turn_off &= ~mask; }
+ if ((turn_off & mask) && mode) { \
+ TPUTS_TRACE(#mode); \
+ NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx mode, 1, outc); \
+ turn_off &= ~mask; \
+ }
/* if there is no current screen, assume we *can* do color */
#define SetColorsIf(why, old_attr) \
T((T_CALLED("vidputs(%p,%s)"), (void *) SP_PARM, _traceattr(newmode)));
- if (!IsTermInfo(SP_PARM))
+ if (!IsValidTIScreen(SP_PARM))
returnCode(ERR);
/* this allows us to go on whether or not newterm() has been called */
};
unsigned n;
int used = 0;
+#ifdef max_attributes /* not in U/Win */
int limit = (max_attributes <= 0) ? 1 : max_attributes;
+#else
+ int limit = 1;
+#endif
chtype retain = 0;
/*
}
turn_off = (~newmode & PreviousAttr) & ALL_BUT_COLOR;
- turn_on = (newmode & ~PreviousAttr) & ALL_BUT_COLOR;
+ turn_on = (newmode & ~(PreviousAttr & TPARM_ATTR)) & ALL_BUT_COLOR;
SetColorsIf(((pair == 0) && !fix_pair0), PreviousAttr);
if (turn_on || turn_off) {
TPUTS_TRACE("set_attributes");
NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx
- tparm(set_attributes,
- (newmode & A_STANDOUT) != 0,
- (newmode & A_UNDERLINE) != 0,
- (newmode & A_REVERSE) != 0,
- (newmode & A_BLINK) != 0,
- (newmode & A_DIM) != 0,
- (newmode & A_BOLD) != 0,
- (newmode & A_INVIS) != 0,
- (newmode & A_PROTECT) != 0,
- (newmode & A_ALTCHARSET) != 0),
+ TIPARM_9(set_attributes,
+ (newmode & A_STANDOUT) != 0,
+ (newmode & A_UNDERLINE) != 0,
+ (newmode & A_REVERSE) != 0,
+ (newmode & A_BLINK) != 0,
+ (newmode & A_DIM) != 0,
+ (newmode & A_BOLD) != 0,
+ (newmode & A_INVIS) != 0,
+ (newmode & A_PROTECT) != 0,
+ (newmode & A_ALTCHARSET) != 0),
1, outc);
PreviousAttr &= ALL_BUT_COLOR;
}
#if USE_ITALIC
TurnOn(A_ITALIC, enter_italics_mode);
#endif
-#if USE_WIDEC_SUPPORT
+#if USE_WIDEC_SUPPORT && defined(enter_horizontal_hl_mode)
TurnOn(A_HORIZONTAL, enter_horizontal_hl_mode);
TurnOn(A_LEFT, enter_left_hl_mode);
TurnOn(A_LOW, enter_low_hl_mode);
TurnOn(A_VERTICAL, enter_vertical_hl_mode);
#endif
/* *INDENT-ON* */
-
}
if (reverse)