4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
23 * Copyright 1997 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
27 /* Copyright (c) 1988 AT&T */
28 /* All Rights Reserved */
31 * University Copyright- Copyright (c) 1982, 1986, 1988
32 * The Regents of the University of California
35 * University Acknowledgment- Portions of this document are derived from
36 * software developed by the University of California, Berkeley, and its
40 #pragma ident "%Z%%M% %I% %E% SMI"
44 #include <sys/types.h>
45 #include "curses_inc.h"
48 * Make a derived window of an existing window. The two windows
49 * share the same character image.
50 * orig: the original window
51 * nl, nc: numbers of lines and columns
52 * by, bx: coordinates for upper-left corner of the derived
53 * window in the coord system of the parent window.
57 derwin(WINDOW
*orig
, int num_lines
, int nc
, int by
, int bx
)
60 WINDOW
*win
= (WINDOW
*) NULL
, *par
;
62 #ifdef _VR3_COMPAT_CODE
63 _ochtype
**w_y16
, **o_y16
;
64 #endif /* _VR3_COMPAT_CODE */
66 /* make sure window fits inside the original one */
67 if (by
< 0 || (by
+ num_lines
) > orig
->_maxy
|| bx
< 0 ||
68 (bx
+ nc
) > orig
->_maxx
)
71 nc
= orig
->_maxx
- bx
;
73 num_lines
= orig
->_maxy
- by
;
75 /* Create the window skeleton */
76 if ((win
= _makenew(num_lines
, nc
, by
+ orig
->_begy
,
77 bx
+ orig
->_begx
)) == NULL
)
82 win
->_parx
= (short) bx
;
84 win
->_pary
= (short) by
;
85 win
->_bkgd
= orig
->_bkgd
;
86 win
->_attrs
= orig
->_attrs
;
90 #ifdef _VR3_COMPAT_CODE
97 for (y
= 0; y
< num_lines
; y
++, hby
++)
98 w_y16
[y
] = o_y16
[hby
] + bx
;
100 #endif /* _VR3_COMPAT_CODE */
102 for (y
= 0; y
< num_lines
; y
++, by
++)
103 w_y
[y
] = o_y
[by
] + bx
;
105 win
->_yoffset
= orig
->_yoffset
;
107 /* update descendant number of ancestors */
109 for (par
= win
->_parent
; par
!= NULL
; par
= par
->_parent
)