|
|
1.1 root 1: #include "copyright.h"
2:
3: /* $Header: XGeom.c,v 1.2 87/09/11 08:09:25 toddb Exp $/
4: /* Copyright Massachusetts Institute of Technology 1985 */
5:
6: #include "Xlibint.h"
7: #include "Xutil.h"
8:
9: /*
10: * This routine given a user supplied positional argument and a default
11: * argument (fully qualified) will return the position the window should take
12: * returns 0 if there was some problem, else the position bitmask.
13: */
14:
15: int XGeometry (dpy, screen, pos, def, bwidth, fwidth, fheight, xadd, yadd, x, y, width, height)
16: Display *dpy; /* user's display connection */
17: int screen; /* screen on which to do computation */
18: char *pos; /* user provided geometry spec */
19: char *def; /* default geometry spec for window */
20: unsigned int bwidth; /* border width */
21: unsigned int fwidth, fheight; /* size of position units */
22: int xadd, yadd; /* any additional interior space */
23: register *x, *y, *width, *height; /* always set on successful RETURN */
24: {
25: int px, py, pwidth, pheight; /* returned values from parse */
26: int dx, dy, dwidth, dheight; /* default values from parse */
27: int pmask, dmask; /* values back from parse */
28:
29: pmask = XParseGeometry(pos, &px, &py, &pwidth, &pheight);
30: dmask = XParseGeometry(def, &dx, &dy, &dwidth, &dheight);
31:
32: /* set default values */
33: *x = (dmask & XNegative) ?
34: DisplayWidth(dpy, screen) + dx - dwidth * fwidth -
35: 2 * bwidth - xadd : dx;
36: *y = (dmask & YNegative) ?
37: DisplayHeight(dpy, screen) + dy - dheight * fheight -
38: 2 * bwidth - yadd : dy;
39: *width = dwidth;
40: *height = dheight;
41:
42: if (pmask & WidthValue) *width = pwidth;
43: if (pmask & HeightValue) *height = pheight;
44:
45: if (pmask & XValue)
46: *x = (pmask & XNegative) ?
47: DisplayWidth(dpy, screen) + px - *width * fwidth -
48: 2 * bwidth - xadd : px;
49: if (pmask & YValue)
50: *y = (pmask & YNegative) ?
51: DisplayHeight(dpy, screen) + py - *height * fheight -
52: 2 * bwidth - yadd : py;
53: return (pmask);
54: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.