xref: /netbsd-src/lib/libcurses/getyx.c (revision 6348e3f32a4431b45d07e1da16fd7b12725a45e7)
1*6348e3f3Sblymn /*	$NetBSD: getyx.c,v 1.8 2024/12/23 02:58:03 blymn Exp $	*/
270f4bbdcSjdc 
370f4bbdcSjdc /*
470f4bbdcSjdc  * Copyright (c) 2000 The NetBSD Foundation, Inc.
570f4bbdcSjdc  * All rights reserved.
670f4bbdcSjdc  *
770f4bbdcSjdc  * This code is derived from software contributed to The NetBSD Foundation
870f4bbdcSjdc  * by Julian Coleman.
970f4bbdcSjdc  *
1070f4bbdcSjdc  * Redistribution and use in source and binary forms, with or without
1170f4bbdcSjdc  * modification, are permitted provided that the following conditions
1270f4bbdcSjdc  * are met:
1370f4bbdcSjdc  * 1. Redistributions of source code must retain the above copyright
1470f4bbdcSjdc  *    notice, this list of conditions and the following disclaimer.
1570f4bbdcSjdc  * 2. Redistributions in binary form must reproduce the above copyright
1670f4bbdcSjdc  *    notice, this list of conditions and the following disclaimer in the
1770f4bbdcSjdc  *    documentation and/or other materials provided with the distribution.
1870f4bbdcSjdc  *
1970f4bbdcSjdc  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
2070f4bbdcSjdc  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
2170f4bbdcSjdc  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
2270f4bbdcSjdc  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
2370f4bbdcSjdc  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2470f4bbdcSjdc  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2570f4bbdcSjdc  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2670f4bbdcSjdc  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2770f4bbdcSjdc  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2870f4bbdcSjdc  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2970f4bbdcSjdc  * POSSIBILITY OF SUCH DAMAGE.
3070f4bbdcSjdc  */
3170f4bbdcSjdc 
3266cab71cSblymn #include <sys/cdefs.h>
3366cab71cSblymn #ifndef lint
34*6348e3f3Sblymn __RCSID("$NetBSD: getyx.c,v 1.8 2024/12/23 02:58:03 blymn Exp $");
3566cab71cSblymn #endif				/* not lint */
3666cab71cSblymn 
3770f4bbdcSjdc #include <stdlib.h>
3870f4bbdcSjdc 
3970f4bbdcSjdc #include "curses.h"
4070f4bbdcSjdc #include "curses_private.h"
4170f4bbdcSjdc 
4270f4bbdcSjdc /*
4323231c1aSblymn  * getpary --
44146d03e6Sandvar  *      Get the y position of the window relative to the parent window
4523231c1aSblymn  * return -1 if not a subwindow.
4623231c1aSblymn  */
4723231c1aSblymn int
4823231c1aSblymn getpary(WINDOW *win)
4923231c1aSblymn {
5050a63ac8Sroy 
5123231c1aSblymn 	if (win == NULL)
5223231c1aSblymn 		return -1;
5323231c1aSblymn 
5423231c1aSblymn 	if (win->orig == NULL)
5523231c1aSblymn 		return -1;
5623231c1aSblymn 
5750a63ac8Sroy 	return win->begy - win->orig->begy;
5823231c1aSblymn }
5923231c1aSblymn 
6023231c1aSblymn /*
6123231c1aSblymn  * getparx --
62146d03e6Sandvar  *      Get the x position of the window relative to the parent window
6323231c1aSblymn  * return -1 if not a subwindow.
6423231c1aSblymn  */
6523231c1aSblymn int
6623231c1aSblymn getparx(WINDOW *win)
6723231c1aSblymn {
6850a63ac8Sroy 
6923231c1aSblymn 	if (win == NULL)
7023231c1aSblymn 		return -1;
7123231c1aSblymn 
7223231c1aSblymn 	if (win->orig == NULL)
7323231c1aSblymn 		return -1;
7423231c1aSblymn 
7550a63ac8Sroy 	return win->begx - win->orig->begx;
7623231c1aSblymn }
7723231c1aSblymn 
7823231c1aSblymn /*
7970f4bbdcSjdc  * getcury --
8070f4bbdcSjdc  *	Get current y position on window.
8170f4bbdcSjdc  */
8270f4bbdcSjdc int
83aaf74682Sblymn getcury(WINDOW *win)
8470f4bbdcSjdc {
8550a63ac8Sroy 
86*6348e3f3Sblymn 	if (__predict_false(win == NULL))
87*6348e3f3Sblymn 		return ERR;
88*6348e3f3Sblymn 
8950a63ac8Sroy 	return win->cury;
9070f4bbdcSjdc }
9170f4bbdcSjdc 
9270f4bbdcSjdc /*
9370f4bbdcSjdc  * getcurx --
9470f4bbdcSjdc  *	Get current x position on window.
9570f4bbdcSjdc  */
9670f4bbdcSjdc int
97aaf74682Sblymn getcurx(WINDOW *win)
9870f4bbdcSjdc {
9950a63ac8Sroy 
100*6348e3f3Sblymn 	if (__predict_false(win == NULL))
101*6348e3f3Sblymn 		return ERR;
102*6348e3f3Sblymn 
10350a63ac8Sroy 	return win->curx;
10470f4bbdcSjdc }
10570f4bbdcSjdc 
10670f4bbdcSjdc /*
10770f4bbdcSjdc  * getbegy --
10870f4bbdcSjdc  *	Get begin y position on window.
10970f4bbdcSjdc  */
11070f4bbdcSjdc int
111aaf74682Sblymn getbegy(WINDOW *win)
11270f4bbdcSjdc {
11350a63ac8Sroy 
114*6348e3f3Sblymn 	if (__predict_false(win == NULL))
115*6348e3f3Sblymn 		return ERR;
116*6348e3f3Sblymn 
11750a63ac8Sroy 	return win->begy;
11870f4bbdcSjdc }
11970f4bbdcSjdc 
12070f4bbdcSjdc /*
12170f4bbdcSjdc  * getbegx --
12270f4bbdcSjdc  *	Get begin x position on window.
12370f4bbdcSjdc  */
12470f4bbdcSjdc int
125aaf74682Sblymn getbegx(WINDOW *win)
12670f4bbdcSjdc {
12750a63ac8Sroy 
128*6348e3f3Sblymn 	if (__predict_false(win == NULL))
129*6348e3f3Sblymn 		return ERR;
130*6348e3f3Sblymn 
13150a63ac8Sroy 	return win->begx;
13270f4bbdcSjdc }
13370f4bbdcSjdc 
13470f4bbdcSjdc /*
13570f4bbdcSjdc  * getmaxy --
13670f4bbdcSjdc  *	Get maximum y position on window.
13770f4bbdcSjdc  */
13870f4bbdcSjdc int
139aaf74682Sblymn getmaxy(WINDOW *win)
14070f4bbdcSjdc {
14150a63ac8Sroy 
142*6348e3f3Sblymn 	if (__predict_false(win == NULL))
143*6348e3f3Sblymn 		return ERR;
144*6348e3f3Sblymn 
14550a63ac8Sroy 	return win->maxy;
14670f4bbdcSjdc }
14770f4bbdcSjdc 
14870f4bbdcSjdc /*
14970f4bbdcSjdc  * getmaxx --
15070f4bbdcSjdc  *	Get maximum x position on window.
15170f4bbdcSjdc  */
15270f4bbdcSjdc int
153aaf74682Sblymn getmaxx(WINDOW *win)
15470f4bbdcSjdc {
15550a63ac8Sroy 
156*6348e3f3Sblymn 	if (__predict_false(win == NULL))
157*6348e3f3Sblymn 		return ERR;
158*6348e3f3Sblymn 
15950a63ac8Sroy 	return win->maxx;
16070f4bbdcSjdc }
161