summaryrefslogtreecommitdiff
path: root/Utilities/cmpdcurses/pdcurses/inch.c
diff options
context:
space:
mode:
Diffstat (limited to 'Utilities/cmpdcurses/pdcurses/inch.c')
-rw-r--r--Utilities/cmpdcurses/pdcurses/inch.c126
1 files changed, 126 insertions, 0 deletions
diff --git a/Utilities/cmpdcurses/pdcurses/inch.c b/Utilities/cmpdcurses/pdcurses/inch.c
new file mode 100644
index 0000000000..e3275a8c95
--- /dev/null
+++ b/Utilities/cmpdcurses/pdcurses/inch.c
@@ -0,0 +1,126 @@
+/* PDCurses */
+
+#include <curspriv.h>
+
+/*man-start**************************************************************
+
+inch
+----
+
+### Synopsis
+
+ chtype inch(void);
+ chtype winch(WINDOW *win);
+ chtype mvinch(int y, int x);
+ chtype mvwinch(WINDOW *win, int y, int x);
+
+ int in_wch(cchar_t *wcval);
+ int win_wch(WINDOW *win, cchar_t *wcval);
+ int mvin_wch(int y, int x, cchar_t *wcval);
+ int mvwin_wch(WINDOW *win, int y, int x, cchar_t *wcval);
+
+### Description
+
+ The inch() functions retrieve the character and attribute from the
+ current or specified window position, in the form of a chtype. If a
+ NULL window is specified, (chtype)ERR is returned.
+
+ The in_wch() functions are the wide-character versions; instead of
+ returning a chtype, they store a cchar_t at the address specified by
+ wcval, and return OK or ERR. (No value is stored when ERR is
+ returned.) Note that in PDCurses, chtype and cchar_t are the same.
+
+### Portability
+ X/Open ncurses NetBSD
+ inch Y Y Y
+ winch Y Y Y
+ mvinch Y Y Y
+ mvwinch Y Y Y
+ in_wch Y Y Y
+ win_wch Y Y Y
+ mvin_wch Y Y Y
+ mvwin_wch Y Y Y
+
+**man-end****************************************************************/
+
+chtype winch(WINDOW *win)
+{
+ PDC_LOG(("winch() - called\n"));
+
+ if (!win)
+ return (chtype)ERR;
+
+ return win->_y[win->_cury][win->_curx];
+}
+
+chtype inch(void)
+{
+ PDC_LOG(("inch() - called\n"));
+
+ return winch(stdscr);
+}
+
+chtype mvinch(int y, int x)
+{
+ PDC_LOG(("mvinch() - called\n"));
+
+ if (move(y, x) == ERR)
+ return (chtype)ERR;
+
+ return stdscr->_y[stdscr->_cury][stdscr->_curx];
+}
+
+chtype mvwinch(WINDOW *win, int y, int x)
+{
+ PDC_LOG(("mvwinch() - called\n"));
+
+ if (wmove(win, y, x) == ERR)
+ return (chtype)ERR;
+
+ return win->_y[win->_cury][win->_curx];
+}
+
+#ifdef PDC_WIDE
+int win_wch(WINDOW *win, cchar_t *wcval)
+{
+ PDC_LOG(("win_wch() - called\n"));
+
+ if (!win || !wcval)
+ return ERR;
+
+ *wcval = win->_y[win->_cury][win->_curx];
+
+ return OK;
+}
+
+int in_wch(cchar_t *wcval)
+{
+ PDC_LOG(("in_wch() - called\n"));
+
+ return win_wch(stdscr, wcval);
+}
+
+int mvin_wch(int y, int x, cchar_t *wcval)
+{
+ PDC_LOG(("mvin_wch() - called\n"));
+
+ if (!wcval || (move(y, x) == ERR))
+ return ERR;
+
+ *wcval = stdscr->_y[stdscr->_cury][stdscr->_curx];
+
+ return OK;
+}
+
+int mvwin_wch(WINDOW *win, int y, int x, cchar_t *wcval)
+{
+ PDC_LOG(("mvwin_wch() - called\n"));
+
+ if (!wcval || (wmove(win, y, x) == ERR))
+ return ERR;
+
+ *wcval = win->_y[win->_cury][win->_curx];
+
+ return OK;
+}
+#endif