diff options
Diffstat (limited to 'lib/libcurses/toucholap.c')
| -rw-r--r-- | lib/libcurses/toucholap.c | 66 |
1 files changed, 35 insertions, 31 deletions
diff --git a/lib/libcurses/toucholap.c b/lib/libcurses/toucholap.c index 4404755a731c..8924ebe24798 100644 --- a/lib/libcurses/toucholap.c +++ b/lib/libcurses/toucholap.c @@ -1,6 +1,6 @@ /* - * Copyright (c) 1981 Regents of the University of California. - * All rights reserved. + * Copyright (c) 1981, 1993 + * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -32,42 +32,46 @@ */ #ifndef lint -static char sccsid[] = "@(#)toucholap.c 5.4 (Berkeley) 6/1/90"; +static char sccsid[] = "@(#)toucholap.c 8.1 (Berkeley) 6/4/93"; #endif /* not lint */ -# include "curses.ext" - -# define min(a,b) (a < b ? a : b) -# define max(a,b) (a > b ? a : b) +#include <curses.h> /* + * touchoverlap -- * Touch, on win2, the part that overlaps with win1. - * */ +int touchoverlap(win1, win2) -reg WINDOW *win1, *win2; { + register WINDOW *win1, *win2; +{ + register int y, endy, endx, starty, startx; - reg int x, y, endy, endx, starty, startx; - -# ifdef DEBUG - fprintf(outf, "TOUCHOVERLAP(%0.2o, %0.2o);\n", win1, win2); -# endif - starty = max(win1->_begy, win2->_begy); - startx = max(win1->_begx, win2->_begx); - endy = min(win1->_maxy + win1->_begy, win2->_maxy + win2->_begx); - endx = min(win1->_maxx + win1->_begx, win2->_maxx + win2->_begx); -# ifdef DEBUG - fprintf(outf, "TOUCHOVERLAP:from (%d,%d) to (%d,%d)\n", starty, startx, endy, endx); - fprintf(outf, "TOUCHOVERLAP:win1 (%d,%d) to (%d,%d)\n", win1->_begy, win1->_begx, win1->_begy + win1->_maxy, win1->_begx + win1->_maxx); - fprintf(outf, "TOUCHOVERLAP:win2 (%d,%d) to (%d,%d)\n", win2->_begy, win2->_begx, win2->_begy + win2->_maxy, win2->_begx + win2->_maxx); -# endif +#ifdef DEBUG + __CTRACE("touchoverlap: (%0.2o, %0.2o);\n", win1, win2); +#endif + starty = max(win1->begy, win2->begy); + startx = max(win1->begx, win2->begx); + endy = min(win1->maxy + win1->begy, win2->maxy + win2->begx); + endx = min(win1->maxx + win1->begx, win2->maxx + win2->begx); +#ifdef DEBUG + __CTRACE("touchoverlap: from (%d,%d) to (%d,%d)\n", + starty, startx, endy, endx); + __CTRACE("touchoverlap: win1 (%d,%d) to (%d,%d)\n", + win1->begy, win1->begx, win1->begy + win1->maxy, + win1->begx + win1->maxx); + __CTRACE("touchoverlap: win2 (%d,%d) to (%d,%d)\n", + win2->begy, win2->begx, win2->begy + win2->maxy, + win2->begx + win2->maxx); +#endif if (starty >= endy || startx >= endx) - return; - starty -= win2->_begy; - startx -= win2->_begx; - endy -= win2->_begy; - endx -= win2->_begx; - endx--; - for (y = starty; y < endy; y++) - touchline(win2, y, startx, endx); + return (OK); + starty -= win2->begy; + startx -= win2->begx; + endy -= win2->begy; + endx -= win2->begx; + for (--endx, y = starty; y < endy; y++) + __touchline(win2, y, startx, endx, 0); + return (OK); } + |
