home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 22 gnu
/
22-gnu.zip
/
GNU_1OF3.ZIP
/
HEADERS.ZIP
/
g++-include
/
CursesW.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-03-06
|
9KB
|
384 lines
// This may look like C code, but it is really -*- C++ -*-
/*
Copyright (C) 1989 Free Software Foundation
written by Eric Newton (newton@rocky.oswego.edu)
This file is part of the GNU C++ Library. This library is free
software; you can redistribute it and/or modify it under the terms of
the GNU Library General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your
option) any later version. This library is distributed in the hope
that it will be useful, but WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef _CursesWindow_h
#ifdef __GNUG__
#pragma interface
#endif
#define _CursesWindow_h
#include <curses.h>
/*
*
* C++ class for windows.
*
*
*/
class CursesWindow
{
protected:
static int count; // count of all active windows:
// We rely on the c++ promise that
// all otherwise uninitialized
// static class vars are set to 0
WINDOW * w; // the curses WINDOW
int alloced; // true if we own the WINDOW
CursesWindow* par; // parent, if subwindow
CursesWindow* subwins; // head of subwindows list
CursesWindow* sib; // next subwindow of parent
void kill_subwindows(); // disable all subwindows
public:
CursesWindow(WINDOW* &window); // useful only for stdscr
CursesWindow(int lines, // number of lines
int cols, // number of columns
int begin_y, // line origin
int begin_x); // col origin
CursesWindow(CursesWindow& par, // parent window
int lines, // number of lines
int cols, // number of columns
int by, // absolute or relative
int bx, // origins:
char absrel = 'a'); // if `a', by & bx are
// absolute screen pos,
// else if `r', they are
// relative to par origin
~CursesWindow();
// terminal status
int lines(); // number of lines on terminal, *not* window
int cols(); // number of cols on terminal, *not* window
// window status
int height(); // number of lines in this window
int width(); // number of cols in this window
int begx(); // smallest x coord in window
int begy(); // smallest y coord in window
int maxx(); // largest x coord in window
int maxy(); // largest x coord in window
// window positioning
int move(int y, int x);
// coordinate positioning
void getyx(int& y, int& x);
int mvcur(int sy, int ey, int sx, int ex);
// input
int getch();
int getstr(char * str);
int scanw(const char *, ...);
// input + positioning
int mvgetch(int y, int x);
int mvgetstr(int y, int x, char * str);
int mvscanw(int, int, const char*, ...);
// output
int addch(const char ch);
int addstr(const char * str);
int printw(const char * fmt, ...);
int inch();
int insch(char c);
int insertln();
// output + positioning
int mvaddch(int y, int x, char ch);
int mvaddstr(int y, int x, const char * str);
int mvprintw(int y, int x, const char * fmt, ...);
int mvinch(int y, int x);
int mvinsch(int y, int x, char ch);
// borders
int box(char vert, char hor);
// erasure
int erase();
int clear();
int clearok(cbool bf);
int clrtobot();
int clrtoeol();
int delch();
int mvdelch(int y, int x);
int deleteln();
// screen control
int scroll();
int scrollok(cbool bf);
int touchwin();
int refresh();
int leaveok(cbool bf);
int flushok(cbool bf);
int standout();
int standend();
// multiple window control
int overlay(CursesWindow &win);
int overwrite(CursesWindow &win);
// traversal support
CursesWindow* child();
CursesWindow* sibling();
CursesWindow* parent();
};
inline int CursesWindow::begx()
{
return w->_begx;
}
inline int CursesWindow::begy()
{
return w->_begy;
}
inline int CursesWindow::maxx()
{
return w->_maxx;
}
inline int CursesWindow::maxy()
{
return w->_maxy;
}
inline int CursesWindow::height()
{
return maxy() - begy() + 1;
}
inline int CursesWindow::width()
{
return maxx() - begx() + 1;
}
inline int CursesWindow::box(char vert, char hor)
{
return ::box(w, vert, hor);
}
inline int CursesWindow::overlay(CursesWindow &win)
{
return ::overlay(w, win.w);
}
inline int CursesWindow::overwrite(CursesWindow &win)
{
return ::overwrite(w, win.w);
}
inline int CursesWindow::scroll()
{
return ::scroll(w);
}
inline int CursesWindow::touchwin()
{
return ::touchwin(w);
}
inline int CursesWindow::addch(const char ch)
{
return ::waddch(w, ch);
}
inline int CursesWindow::addstr(const char * str)
{
return ::waddstr(w, str);
}
inline int CursesWindow::clear()
{
return ::wclear(w);
}
inline int CursesWindow::clrtobot()
{
return ::wclrtobot(w);
}
inline int CursesWindow::clrtoeol()
{
return ::wclrtoeol(w);
}
inline int CursesWindow::delch()
{
return ::wdelch(w);
}
inline int CursesWindow::deleteln()
{
return ::wdeleteln(w);
}
inline int CursesWindow::erase()
{
return ::werase(w);
}
inline int CursesWindow::getch()
{
return ::wgetch(w);
}
inline int CursesWindow::getstr(char * str)
{
return ::wgetstr(w, str);
}
inline int CursesWindow::inch()
{
return winch(w);
}
inline int CursesWindow::insch(char c)
{
return ::winsch(w, c);
}
inline int CursesWindow::insertln()
{
return ::winsertln(w);
}
inline int CursesWindow::move(int y, int x)
{
return ::wmove(w, y, x);
}
inline int CursesWindow::mvcur(int sy, int ey, int sx, int ex)
{
return ::mvcur(sy, ey, sx,ex);
}
inline int CursesWindow::mvaddch(int y, int x, char ch)
{
return (::wmove(w, y, x)==ERR) ? ERR : ::waddch(w, ch);
}
inline int CursesWindow::mvgetch(int y, int x)
{
return (::wmove(w, y, x)==ERR) ? ERR : ::wgetch(w);
}
inline int CursesWindow::mvaddstr(int y, int x, const char * str)
{
return (::wmove(w, y, x)==ERR) ? ERR : ::waddstr(w, str);
}
inline int CursesWindow::mvgetstr(int y, int x, char * str)
{
return (::wmove(w, y, x)==ERR) ? ERR : ::wgetstr(w, str);
}
inline int CursesWindow::mvinch(int y, int x)
{
return (::wmove(w, y, x)==ERR) ? ERR : ::winch(w);
}
inline int CursesWindow::mvdelch(int y, int x)
{
return (::wmove(w, y, x)==ERR) ? ERR : ::wdelch(w);
}
inline int CursesWindow::mvinsch(int y, int x, char ch)
{
return (::wmove(w, y, x)==ERR) ? ERR : ::winsch(w, ch);
}
inline int CursesWindow::refresh()
{
return ::wrefresh(w);
}
inline int CursesWindow::clearok(cbool bf)
{
return ::clearok(w,bf);
}
inline int CursesWindow::leaveok(cbool bf)
{
return ::leaveok(w,bf);
}
inline int CursesWindow::scrollok(cbool bf)
{
return ::scrollok(w,bf);
}
inline int CursesWindow::flushok(cbool bf)
{
return ::flushok(w, bf);
}
inline void CursesWindow::getyx(int& y, int& x)
{
::getyx(w, y, x);
}
inline int CursesWindow::standout()
{
return ::wstandout(w);
}
inline int CursesWindow::standend()
{
return ::wstandend(w);
}
inline int CursesWindow::lines()
{
return LINES;
}
inline int CursesWindow::cols()
{
return COLS;
}
inline CursesWindow* CursesWindow::child()
{
return subwins;
}
inline CursesWindow* CursesWindow::parent()
{
return par;
}
inline CursesWindow* CursesWindow::sibling()
{
return sib;
}
#endif