xref: /netbsd-src/lib/libcurses/getyx.c (revision 6348e3f32a4431b45d07e1da16fd7b12725a45e7)
1 /*	$NetBSD: getyx.c,v 1.8 2024/12/23 02:58:03 blymn Exp $	*/
2 
3 /*
4  * Copyright (c) 2000 The NetBSD Foundation, Inc.
5  * All rights reserved.
6  *
7  * This code is derived from software contributed to The NetBSD Foundation
8  * by Julian Coleman.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 #include <sys/cdefs.h>
33 #ifndef lint
34 __RCSID("$NetBSD: getyx.c,v 1.8 2024/12/23 02:58:03 blymn Exp $");
35 #endif				/* not lint */
36 
37 #include <stdlib.h>
38 
39 #include "curses.h"
40 #include "curses_private.h"
41 
42 /*
43  * getpary --
44  *      Get the y position of the window relative to the parent window
45  * return -1 if not a subwindow.
46  */
47 int
48 getpary(WINDOW *win)
49 {
50 
51 	if (win == NULL)
52 		return -1;
53 
54 	if (win->orig == NULL)
55 		return -1;
56 
57 	return win->begy - win->orig->begy;
58 }
59 
60 /*
61  * getparx --
62  *      Get the x position of the window relative to the parent window
63  * return -1 if not a subwindow.
64  */
65 int
66 getparx(WINDOW *win)
67 {
68 
69 	if (win == NULL)
70 		return -1;
71 
72 	if (win->orig == NULL)
73 		return -1;
74 
75 	return win->begx - win->orig->begx;
76 }
77 
78 /*
79  * getcury --
80  *	Get current y position on window.
81  */
82 int
83 getcury(WINDOW *win)
84 {
85 
86 	if (__predict_false(win == NULL))
87 		return ERR;
88 
89 	return win->cury;
90 }
91 
92 /*
93  * getcurx --
94  *	Get current x position on window.
95  */
96 int
97 getcurx(WINDOW *win)
98 {
99 
100 	if (__predict_false(win == NULL))
101 		return ERR;
102 
103 	return win->curx;
104 }
105 
106 /*
107  * getbegy --
108  *	Get begin y position on window.
109  */
110 int
111 getbegy(WINDOW *win)
112 {
113 
114 	if (__predict_false(win == NULL))
115 		return ERR;
116 
117 	return win->begy;
118 }
119 
120 /*
121  * getbegx --
122  *	Get begin x position on window.
123  */
124 int
125 getbegx(WINDOW *win)
126 {
127 
128 	if (__predict_false(win == NULL))
129 		return ERR;
130 
131 	return win->begx;
132 }
133 
134 /*
135  * getmaxy --
136  *	Get maximum y position on window.
137  */
138 int
139 getmaxy(WINDOW *win)
140 {
141 
142 	if (__predict_false(win == NULL))
143 		return ERR;
144 
145 	return win->maxy;
146 }
147 
148 /*
149  * getmaxx --
150  *	Get maximum x position on window.
151  */
152 int
153 getmaxx(WINDOW *win)
154 {
155 
156 	if (__predict_false(win == NULL))
157 		return ERR;
158 
159 	return win->maxx;
160 }
161