| /* Public Domain Curses */ |
| |
| #include "pdcos2.h" |
| |
| RCSID("$Id: pdcgetsc.c,v 1.39 2008/07/14 04:24:51 wmcbrine Exp $") |
| |
| /* return width of screen/viewport */ |
| |
| int PDC_get_columns(void) |
| { |
| #ifdef EMXVIDEO |
| int rows = 0; |
| #else |
| VIOMODEINFO modeInfo = {0}; |
| #endif |
| int cols = 0; |
| const char *env_cols; |
| |
| PDC_LOG(("PDC_get_columns() - called\n")); |
| |
| #ifdef EMXVIDEO |
| v_dimen(&cols, &rows); |
| #else |
| modeInfo.cb = sizeof(modeInfo); |
| VioGetMode(&modeInfo, 0); |
| cols = modeInfo.col; |
| #endif |
| env_cols = getenv("COLS"); |
| |
| if (env_cols) |
| cols = min(atoi(env_cols), cols); |
| |
| PDC_LOG(("PDC_get_columns() - returned: cols %d\n", cols)); |
| |
| return cols; |
| } |
| |
| /* get the cursor size/shape */ |
| |
| int PDC_get_cursor_mode(void) |
| { |
| #ifdef EMXVIDEO |
| int curstart = 0, curend = 0; |
| #else |
| VIOCURSORINFO cursorInfo; |
| #endif |
| PDC_LOG(("PDC_get_cursor_mode() - called\n")); |
| |
| #ifdef EMXVIDEO |
| v_getctype(&curstart, &curend); |
| return (curstart << 8) | curend; |
| #else |
| VioGetCurType (&cursorInfo, 0); |
| |
| return (cursorInfo.yStart << 8) | cursorInfo.cEnd; |
| #endif |
| } |
| |
| /* return number of screen rows */ |
| |
| int PDC_get_rows(void) |
| { |
| #ifdef EMXVIDEO |
| int cols = 0; |
| #else |
| VIOMODEINFO modeInfo = {0}; |
| #endif |
| int rows = 0; |
| const char *env_rows; |
| |
| PDC_LOG(("PDC_get_rows() - called\n")); |
| |
| /* use the value from LINES environment variable, if set. MH 10-Jun-92 */ |
| /* and use the minimum of LINES and *ROWS. MH 18-Jun-92 */ |
| |
| #ifdef EMXVIDEO |
| v_dimen(&cols, &rows); |
| #else |
| modeInfo.cb = sizeof(modeInfo); |
| VioGetMode(&modeInfo, 0); |
| rows = modeInfo.row; |
| #endif |
| env_rows = getenv("LINES"); |
| |
| if (env_rows) |
| rows = min(atoi(env_rows), rows); |
| |
| PDC_LOG(("PDC_get_rows() - returned: rows %d\n", rows)); |
| |
| return rows; |
| } |