xref: /aosp_15_r20/external/coreboot/payloads/libpayload/curses/PDCurses/pdcurses/getyx.c (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /* Public Domain Curses */
2 
3 #include <curspriv.h>
4 
5 RCSID("$Id: getyx.c,v 1.29 2008/07/15 17:13:26 wmcbrine Exp $")
6 
7 /*man-start**************************************************************
8 
9   Name:                                                         getyx
10 
11   Synopsis:
12         void getyx(WINDOW *win, int y, int x);
13         void getparyx(WINDOW *win, int y, int x);
14         void getbegyx(WINDOW *win, int y, int x);
15         void getmaxyx(WINDOW *win, int y, int x);
16 
17         void getsyx(int y, int x);
18         int setsyx(int y, int x);
19 
20         int getbegy(WINDOW *win);
21         int getbegx(WINDOW *win);
22         int getcury(WINDOW *win);
23         int getcurx(WINDOW *win);
24         int getpary(WINDOW *win);
25         int getparx(WINDOW *win);
26         int getmaxy(WINDOW *win);
27         int getmaxx(WINDOW *win);
28 
29   Description:
30         The getyx() macro (defined in curses.h -- the prototypes here
31         are merely illustrative) puts the current cursor position of the
32         specified window into y and x. getbegyx() and getmaxyx() return
33         the starting coordinates and size of the specified window,
34         respectively. getparyx() returns the starting coordinates of the
35         parent's window, if the specified window is a subwindow;
36         otherwise it sets y and x to -1. These are all macros.
37 
38         getsyx() gets the coordinates of the virtual screen cursor, and
39         stores them in y and x. If leaveok() is TRUE, it returns -1, -1.
40         If lines have been removed with ripoffline(), then getsyx()
41         includes these lines in its count; so, the returned y and x
42         values should only be used with setsyx().
43 
44         setsyx() sets the virtual screen cursor to the y, x coordinates.
45         If y, x are -1, -1, leaveok() is set TRUE.
46 
47         getsyx() and setsyx() are meant to be used by a library routine
48         that manipulates curses windows without altering the position of
49         the cursor. Note that getsyx() is defined only as a macro.
50 
51         getbegy(), getbegx(), getcurx(), getcury(), getmaxy(),
52         getmaxx(), getpary(), and getparx() return the appropriate
53         coordinate or size values, or ERR in the case of a NULL window.
54 
55   Portability                                X/Open    BSD    SYS V
56         getyx                                   Y       Y       Y
57         getparyx                                -       -      4.0
58         getbegyx                                -       -      3.0
59         getmaxyx                                -       -      3.0
60         getsyx                                  -       -      3.0
61         setsyx                                  -       -      3.0
62         getbegy                                 -       -       -
63         getbegx                                 -       -       -
64         getcury                                 -       -       -
65         getcurx                                 -       -       -
66         getpary                                 -       -       -
67         getparx                                 -       -       -
68         getmaxy                                 -       -       -
69         getmaxx                                 -       -       -
70 
71 **man-end****************************************************************/
72 
getbegy(WINDOW * win)73 int getbegy(WINDOW *win)
74 {
75     PDC_LOG(("getbegy() - called\n"));
76 
77     return win ? win->_begy : ERR;
78 }
79 
getbegx(WINDOW * win)80 int getbegx(WINDOW *win)
81 {
82     PDC_LOG(("getbegx() - called\n"));
83 
84     return win ? win->_begx : ERR;
85 }
86 
getcury(WINDOW * win)87 int getcury(WINDOW *win)
88 {
89     PDC_LOG(("getcury() - called\n"));
90 
91     return win ? win->_cury : ERR;
92 }
93 
getcurx(WINDOW * win)94 int getcurx(WINDOW *win)
95 {
96     PDC_LOG(("getcurx() - called\n"));
97 
98     return win ? win->_curx : ERR;
99 }
100 
getpary(WINDOW * win)101 int getpary(WINDOW *win)
102 {
103     PDC_LOG(("getpary() - called\n"));
104 
105     return win ? win->_pary : ERR;
106 }
107 
getparx(WINDOW * win)108 int getparx(WINDOW *win)
109 {
110     PDC_LOG(("getparx() - called\n"));
111 
112     return win ? win->_parx : ERR;
113 }
114 
getmaxy(WINDOW * win)115 int getmaxy(WINDOW *win)
116 {
117     PDC_LOG(("getmaxy() - called\n"));
118 
119     return win ? win->_maxy : ERR;
120 }
121 
getmaxx(WINDOW * win)122 int getmaxx(WINDOW *win)
123 {
124     PDC_LOG(("getmaxx() - called\n"));
125 
126     return win ? win->_maxx : ERR;
127 }
128 
setsyx(int y,int x)129 int setsyx(int y, int x)
130 {
131     PDC_LOG(("setsyx() - called\n"));
132 
133     if(y == -1 && x == -1)
134     {
135         curscr->_leaveit = TRUE;
136         return OK;
137     }
138     else if (y == -1 || x == -1)
139     {
140         return OK;
141     }
142     else
143     {
144         curscr->_leaveit = FALSE;
145         wmove(curscr, y, x);
146 	return OK;
147     }
148 }
149