Path: blob/master/Utilities/cmpdcurses/pdcurses/addchstr.c
3153 views
/* PDCurses */12#include <curspriv.h>34/*man-start**************************************************************56addchstr7--------89### Synopsis1011int addchstr(const chtype *ch);12int addchnstr(const chtype *ch, int n);13int waddchstr(WINDOW *win, const chtype *ch);14int waddchnstr(WINDOW *win, const chtype *ch, int n);15int mvaddchstr(int y, int x, const chtype *ch);16int mvaddchnstr(int y, int x, const chtype *ch, int n);17int mvwaddchstr(WINDOW *, int y, int x, const chtype *ch);18int mvwaddchnstr(WINDOW *, int y, int x, const chtype *ch, int n);1920int add_wchstr(const cchar_t *wch);21int add_wchnstr(const cchar_t *wch, int n);22int wadd_wchstr(WINDOW *win, const cchar_t *wch);23int wadd_wchnstr(WINDOW *win, const cchar_t *wch, int n);24int mvadd_wchstr(int y, int x, const cchar_t *wch);25int mvadd_wchnstr(int y, int x, const cchar_t *wch, int n);26int mvwadd_wchstr(WINDOW *win, int y, int x, const cchar_t *wch);27int mvwadd_wchnstr(WINDOW *win, int y, int x, const cchar_t *wch,28int n);2930### Description3132These routines write a chtype or cchar_t string directly into the33window structure, starting at the current or specified position. The34four routines with n as the last argument copy at most n elements,35but no more than will fit on the line. If n == -1 then the whole36string is copied, up to the maximum number that will fit on the line.3738The cursor position is not advanced. These routines do not check for39newline or other special characters, nor does any line wrapping40occur.4142### Return Value4344All functions return OK or ERR.4546### Portability47X/Open ncurses NetBSD48addchstr Y Y Y49waddchstr Y Y Y50mvaddchstr Y Y Y51mvwaddchstr Y Y Y52addchnstr Y Y Y53waddchnstr Y Y Y54mvaddchnstr Y Y Y55mvwaddchnstr Y Y Y56add_wchstr Y Y Y57wadd_wchstr Y Y Y58mvadd_wchstr Y Y Y59mvwadd_wchstr Y Y Y60add_wchnstr Y Y Y61wadd_wchnstr Y Y Y62mvadd_wchnstr Y Y Y63mvwadd_wchnstr Y Y Y6465**man-end****************************************************************/6667#include <string.h>6869int waddchnstr(WINDOW *win, const chtype *ch, int n)70{71int y, x, maxx, minx;72chtype *ptr;7374PDC_LOG(("waddchnstr() - called: win=%p n=%d\n", win, n));7576if (!win || !ch || !n || n < -1)77return ERR;7879x = win->_curx;80y = win->_cury;81ptr = &(win->_y[y][x]);8283if (n == -1 || n > win->_maxx - x)84n = win->_maxx - x;8586minx = win->_firstch[y];87maxx = win->_lastch[y];8889for (; n && *ch; n--, x++, ptr++, ch++)90{91if (*ptr != *ch)92{93if (x < minx || minx == _NO_CHANGE)94minx = x;9596if (x > maxx)97maxx = x;9899PDC_LOG(("y %d x %d minx %d maxx %d *ptr %x *ch"100" %x firstch: %d lastch: %d\n",101y, x, minx, maxx, *ptr, *ch,102win->_firstch[y], win->_lastch[y]));103104*ptr = *ch;105}106}107108win->_firstch[y] = minx;109win->_lastch[y] = maxx;110111return OK;112}113114int addchstr(const chtype *ch)115{116PDC_LOG(("addchstr() - called\n"));117118return waddchnstr(stdscr, ch, -1);119}120121int addchnstr(const chtype *ch, int n)122{123PDC_LOG(("addchnstr() - called\n"));124125return waddchnstr(stdscr, ch, n);126}127128int waddchstr(WINDOW *win, const chtype *ch)129{130PDC_LOG(("waddchstr() - called: win=%p\n", win));131132return waddchnstr(win, ch, -1);133}134135int mvaddchstr(int y, int x, const chtype *ch)136{137PDC_LOG(("mvaddchstr() - called: y %d x %d\n", y, x));138139if (move(y, x) == ERR)140return ERR;141142return waddchnstr(stdscr, ch, -1);143}144145int mvaddchnstr(int y, int x, const chtype *ch, int n)146{147PDC_LOG(("mvaddchnstr() - called: y %d x %d n %d\n", y, x, n));148149if (move(y, x) == ERR)150return ERR;151152return waddchnstr(stdscr, ch, n);153}154155int mvwaddchstr(WINDOW *win, int y, int x, const chtype *ch)156{157PDC_LOG(("mvwaddchstr() - called:\n"));158159if (wmove(win, y, x) == ERR)160return ERR;161162return waddchnstr(win, ch, -1);163}164165int mvwaddchnstr(WINDOW *win, int y, int x, const chtype *ch, int n)166{167PDC_LOG(("mvwaddchnstr() - called: y %d x %d n %d \n", y, x, n));168169if (wmove(win, y, x) == ERR)170return ERR;171172return waddchnstr(win, ch, n);173}174175#ifdef PDC_WIDE176int wadd_wchnstr(WINDOW *win, const cchar_t *wch, int n)177{178PDC_LOG(("wadd_wchnstr() - called: win=%p n=%d\n", win, n));179180return waddchnstr(win, wch, n);181}182183int add_wchstr(const cchar_t *wch)184{185PDC_LOG(("add_wchstr() - called\n"));186187return wadd_wchnstr(stdscr, wch, -1);188}189190int add_wchnstr(const cchar_t *wch, int n)191{192PDC_LOG(("add_wchnstr() - called\n"));193194return wadd_wchnstr(stdscr, wch, n);195}196197int wadd_wchstr(WINDOW *win, const cchar_t *wch)198{199PDC_LOG(("wadd_wchstr() - called: win=%p\n", win));200201return wadd_wchnstr(win, wch, -1);202}203204int mvadd_wchstr(int y, int x, const cchar_t *wch)205{206PDC_LOG(("mvadd_wchstr() - called: y %d x %d\n", y, x));207208if (move(y, x) == ERR)209return ERR;210211return wadd_wchnstr(stdscr, wch, -1);212}213214int mvadd_wchnstr(int y, int x, const cchar_t *wch, int n)215{216PDC_LOG(("mvadd_wchnstr() - called: y %d x %d n %d\n", y, x, n));217218if (move(y, x) == ERR)219return ERR;220221return wadd_wchnstr(stdscr, wch, n);222}223224int mvwadd_wchstr(WINDOW *win, int y, int x, const cchar_t *wch)225{226PDC_LOG(("mvwadd_wchstr() - called:\n"));227228if (wmove(win, y, x) == ERR)229return ERR;230231return wadd_wchnstr(win, wch, -1);232}233234int mvwadd_wchnstr(WINDOW *win, int y, int x, const cchar_t *wch, int n)235{236PDC_LOG(("mvwadd_wchnstr() - called: y %d x %d n %d \n", y, x, n));237238if (wmove(win, y, x) == ERR)239return ERR;240241return wadd_wchnstr(win, wch, n);242}243#endif244245246