1 /* Public Domain Curses */
2 
3 #include "pdcos2.h"
4 
5 /* return width of screen/viewport */
6 
PDC_get_columns(void)7 int PDC_get_columns(void)
8 {
9 #ifdef EMXVIDEO
10     int rows = 0;
11 #else
12     VIOMODEINFO modeInfo = {0};
13 #endif
14     int cols = 0;
15     const char *env_cols;
16 
17     PDC_LOG(("PDC_get_columns() - called\n"));
18 
19 #ifdef EMXVIDEO
20     v_dimen(&cols, &rows);
21 #else
22     modeInfo.cb = sizeof(modeInfo);
23     VioGetMode(&modeInfo, 0);
24     cols = modeInfo.col;
25 #endif
26     env_cols = getenv("COLS");
27 
28     if (env_cols)
29         cols = min(atoi(env_cols), cols);
30 
31     PDC_LOG(("PDC_get_columns() - returned: cols %d\n", cols));
32 
33     return cols;
34 }
35 
36 /* get the cursor size/shape */
37 
PDC_get_cursor_mode(void)38 int PDC_get_cursor_mode(void)
39 {
40 #ifdef EMXVIDEO
41     int curstart = 0, curend = 0;
42 #else
43     VIOCURSORINFO cursorInfo;
44 #endif
45     PDC_LOG(("PDC_get_cursor_mode() - called\n"));
46 
47 #ifdef EMXVIDEO
48     v_getctype(&curstart, &curend);
49     return (curstart << 8) | curend;
50 #else
51     VioGetCurType (&cursorInfo, 0);
52 
53     return (cursorInfo.yStart << 8) | cursorInfo.cEnd;
54 #endif
55 }
56 
57 /* return number of screen rows */
58 
PDC_get_rows(void)59 int PDC_get_rows(void)
60 {
61 #ifdef EMXVIDEO
62     int cols = 0;
63 #else
64     VIOMODEINFO modeInfo = {0};
65 #endif
66     int rows = 0;
67     const char *env_rows;
68 
69     PDC_LOG(("PDC_get_rows() - called\n"));
70 
71     /* use the value from LINES environment variable, if set. MH 10-Jun-92 */
72     /* and use the minimum of LINES and *ROWS.                MH 18-Jun-92 */
73 
74 #ifdef EMXVIDEO
75     v_dimen(&cols, &rows);
76 #else
77     modeInfo.cb = sizeof(modeInfo);
78     VioGetMode(&modeInfo, 0);
79     rows = modeInfo.row;
80 #endif
81     env_rows = getenv("LINES");
82 
83     if (env_rows)
84         rows = min(atoi(env_rows), rows);
85 
86     PDC_LOG(("PDC_get_rows() - returned: rows %d\n", rows));
87 
88     return rows;
89 }
90