// * this is for making emacs happy: -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 2007 Free Software Foundation, Inc. *
+ * Copyright (c) 2007-2012,2014 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 *
#include "internal.h"
#include "cursesw.h"
-MODULE_ID("$Id: cursesw.cc,v 1.47 2007/03/03 21:49:24 tom Exp $")
+MODULE_ID("$Id: cursesw.cc,v 1.54 2014/02/01 22:10:42 tom Exp $")
#define COLORS_NEED_INITIALIZATION -1
#define COLORS_NOT_INITIALIZED 0
}
+int
+NCursesWindow::scanw(const char* fmt, va_list args)
+{
+ int result = ERR;
+
+ result = ::vw_scanw (w, const_cast<NCURSES_CONST char *>(fmt), args);
+
+ return result;
+}
+
+
+int
+NCursesWindow::scanw(int y, int x, const char* fmt, va_list args)
+{
+ int result = ERR;
+
+ if (::wmove(w, y, x) != ERR) {
+ result = ::vw_scanw (w, const_cast<NCURSES_CONST char *>(fmt), args);
+ }
+ return result;
+}
+
+
int
NCursesWindow::printw(const char * fmt, ...)
{
}
+int
+NCursesWindow::printw(const char * fmt, va_list args)
+{
+ int result = ::vw_printw(w, fmt, args);
+ return result;
+}
+
+
+int
+NCursesWindow::printw(int y, int x, const char * fmt, va_list args)
+{
+ int result = ::wmove(w, y, x);
+ if (result == OK) {
+ result = ::vw_printw(w, fmt, args);
+ }
+ return result;
+}
+
+
void
NCursesWindow::set_keyboard(void)
{
constructing();
w = static_cast<WINDOW *>(0);
- set_keyboard();
}
NCursesWindow::NCursesWindow(int nlines, int ncols, int begin_y, int begin_x)
set_keyboard();
}
-NCursesWindow::NCursesWindow(WINDOW* &window)
+NCursesWindow::NCursesWindow(WINDOW* window)
: w(0), alloced(FALSE), par(0), subwins(0), sib(0)
{
constructing();
- w = window;
+ // We used to use a reference on the "window" parameter, but we cannot do
+ // that with an opaque pointer (see NCURSES_OPAQUE). If the parameter was
+ // "::stdscr", that is first set via the "constructing() call, and is null
+ // up to that point. So we allow a null pointer here as meaning the "same"
+ // as "::stdscr".
+ w = window ? window : ::stdscr;
set_keyboard();
}
NCursesWindow::NCursesWindow(WINDOW *win, int ncols)
: w(0), alloced(FALSE), par(0), subwins(0), sib(0)
{
+ (void) ncols;
initialize();
w = win;
- assert((w->_maxx +1 ) == ncols);
}
int _nc_xx_ripoff_init(WINDOW *w, int ncols)
{
+ (void) ncols;
int res = ERR;
RIPOFFINIT init = *prip++;
if (init) {
- NCursesWindow* W = new NCursesWindow(w,ncols);
- res = init(*W);
+ res = init(*(new NCursesWindow(w,ncols)));
}
return res;
}
}
}
-short
+NCURSES_PAIRS_T
NCursesWindow::getPair() const
{
- return static_cast<short>(PAIR_NUMBER(getattrs(w)));
+ return static_cast<NCURSES_PAIRS_T>(PAIR_NUMBER(getattrs(w)));
}
-short
+NCURSES_COLOR_T
NCursesWindow::getcolor(int getback) const
{
- short fore, back;
+ NCURSES_COLOR_T fore, back;
if (HaveColors()) {
if (::pair_content(getPair(), &fore, &back) == ERR)
return (HaveColors()) ? COLORS : 1;
}
-short
+NCURSES_PAIRS_T
NCursesWindow::getcolor() const
{
return (HaveColors()) ? getPair() : 0;
}
int
-NCursesWindow::setpalette(short fore, short back, short pair)
+NCursesWindow::setpalette(NCURSES_COLOR_T fore, NCURSES_COLOR_T back, NCURSES_PAIRS_T pair)
{
return (HaveColors()) ? ::init_pair(pair, fore, back) : OK;
}
int
-NCursesWindow::setpalette(short fore, short back)
+NCursesWindow::setpalette(NCURSES_COLOR_T fore, NCURSES_COLOR_T back)
{
return setpalette(fore, back, getPair());
}
int
-NCursesWindow::setcolor(short pair)
+NCursesWindow::setcolor(NCURSES_PAIRS_T pair)
{
if (HaveColors()) {
if ((pair < 1) || (pair > COLOR_PAIRS))
#if HAVE_HAS_KEY
bool NCursesWindow::has_mouse() const
{
- return ((::has_key(KEY_MOUSE) || ::_nc_has_mouse())
+ return ((::has_key(KEY_MOUSE) || ::has_mouse())
? TRUE : FALSE);
}
#endif