diff options
Diffstat (limited to 'lib/libncurses/lib_addch.c')
| -rw-r--r-- | lib/libncurses/lib_addch.c | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/lib/libncurses/lib_addch.c b/lib/libncurses/lib_addch.c deleted file mode 100644 index 60386b4056fb..000000000000 --- a/lib/libncurses/lib_addch.c +++ /dev/null @@ -1,127 +0,0 @@ - -/* This work is copyrighted. See COPYRIGHT.OLD & COPYRIGHT.NEW for * -* details. If they are missing then this copy is in violation of * -* the copyright conditions. */ - -/* -** lib_addch.c -** -** The routine waddch(). -** -*/ - -#include "curses.priv.h" -#include "unctrl.h" - -static inline chtype render_char(WINDOW *win, chtype ch) -/* compute a rendition of the given char correct for the current context */ -{ - if (TextOf(ch) == ' ') - ch = ch_or_attr(ch, win->_bkgd); - else if (!(ch & A_ATTRIBUTES)) - ch = ch_or_attr(ch, (win->_bkgd & A_ATTRIBUTES)); - TR(TRACE_CHARPUT, ("bkg = %#lx -> ch = %#lx", win->_bkgd, ch)); - - return(ch); -} - -chtype _nc_background(WINDOW *win) -/* make render_char() visible while still allowing us to inline it below */ -{ - return(render_char(win, BLANK)); -} - -chtype _nc_render(WINDOW *win, chtype ch) -/* make render_char() visible while still allowing us to inline it below */ -{ - chtype c = render_char(win,ch); - return (ch_or_attr(c,win->_attrs)); -} - -static int -wladdch(WINDOW *win, chtype c, bool literal) -{ -int x, y; -int newx; -chtype ch = c; - - x = win->_curx; - y = win->_cury; - - if (y > win->_maxy || x > win->_maxx || y < 0 || x < 0) - return(ERR); - - /* ugly, but necessary --- and, bizarrely enough, even portable! */ - if (literal) - goto noctrl; - - switch (ch&A_CHARTEXT) { - case '\t': - for (newx = x + (8 - (x & 07)); x < newx; x++) - if (waddch(win, ' ') == ERR) - return(ERR); - return(OK); - case '\n': - wclrtoeol(win); - x = 0; - goto newline; - case '\r': - x = 0; - break; - case '\b': - if (--x < 0) - x = 0; - break; - default: - if (ch < ' ') - return(waddstr(win, unctrl(ch))); - - /* FALL THROUGH */ - noctrl: - T(("win attr = %x", win->_attrs)); - ch = render_char(win, ch); - ch = ch_or_attr(ch,win->_attrs); - - if (win->_line[y][x] != ch) { - if (win->_firstchar[y] == _NOCHANGE) - win->_firstchar[y] = win->_lastchar[y] = x; - else if (x < win->_firstchar[y]) - win->_firstchar[y] = x; - else if (x > win->_lastchar[y]) - win->_lastchar[y] = x; - - } - - T(("char %d of line %d is %x", x, y, ch)); - win->_line[y][x++] = ch; - if (x > win->_maxx) { - x = 0; -newline: - y++; - if (y > win->_regbottom) { - y--; - if (win->_scroll) - scroll(win); - } - } - break; - } - - win->_curx = x; - win->_cury = y; - - return(OK); -} - -int waddch(WINDOW *win, chtype ch) -{ - TR(TRACE_CHARPUT, ("waddch(%x,%c (%x)) called", win, ch&A_CHARTEXT, ch)); - return wladdch(win, ch, FALSE); -} - -int wechochar(WINDOW *win, chtype ch) -{ - T(("wechochar(%x,%c (%x)) called", win, ch&A_CHARTEXT, ch)); - - return wladdch(win, ch, TRUE); -} |
