diff options
Diffstat (limited to 'libX11/specs/libX11/AppD')
-rw-r--r-- | libX11/specs/libX11/AppD | 1183 |
1 files changed, 1183 insertions, 0 deletions
diff --git a/libX11/specs/libX11/AppD b/libX11/specs/libX11/AppD new file mode 100644 index 000000000..f96e06175 --- /dev/null +++ b/libX11/specs/libX11/AppD @@ -0,0 +1,1183 @@ +.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium +.\" +.\" Permission is hereby granted, free of charge, to any person obtaining +.\" a copy of this software and associated documentation files (the +.\" "Software"), to deal in the Software without restriction, including +.\" without limitation the rights to use, copy, modify, merge, publish, +.\" distribute, sublicense, and/or sell copies of the Software, and to +.\" permit persons to whom the Software is furnished to do so, subject to +.\" the following conditions: +.\" +.\" The above copyright notice and this permission notice shall be included +.\" in all copies or substantial portions of the Software. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +.\" IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR +.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +.\" OTHER DEALINGS IN THE SOFTWARE. +.\" +.\" Except as contained in this notice, the name of the X Consortium shall +.\" not be used in advertising or otherwise to promote the sale, use or +.\" other dealings in this Software without prior written authorization +.\" from the X Consortium. +.\" +.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by +.\" Digital Equipment Corporation +.\" +.\" Portions Copyright \(co 1990, 1991 by +.\" Tektronix, Inc. +.\" +.\" Permission to use, copy, modify and distribute this documentation for +.\" any purpose and without fee is hereby granted, provided that the above +.\" copyright notice appears in all copies and that both that copyright notice +.\" and this permission notice appear in all copies, and that the names of +.\" Digital and Tektronix not be used in in advertising or publicity pertaining +.\" to this documentation without specific, written prior permission. +.\" Digital and Tektronix makes no representations about the suitability +.\" of this documentation for any purpose. +.\" It is provided ``as is'' without express or implied warranty. +.\" +\& +.sp 1 +.ce 3 +\s+1\fBAppendix D\fP\s-1 + +\s+1\fBCompatibility Functions\fP\s-1 +.sp 2 +.na +.LP +.XS +Appendix D: Compatibility Functions +.XE +.LP +The X Version 11 and X Version 10 functions discussed in this appendix +are obsolete, have been superseded by newer X Version 11 functions, +and are maintained for compatibility reasons only. +.SH +X Version 11 Compatibility Functions +.LP +You can use the X Version 11 compatibility functions to: +.IP \(bu 5 +Set standard properties +.IP \(bu 5 +Set and get window sizing hints +.IP \(bu 5 +Set and get an +.PN XStandardColormap +structure +.IP \(bu 5 +Parse window geometry +.IP \(bu 5 +Get X environment defaults +.SH +Setting Standard Properties +.LP +To specify a minimum set of properties describing the simplest application, +use +.PN XSetStandardProperties . +This function has been superseded by +.PN XSetWMProperties +and sets all or portions of the +WM_NAME, WM_ICON_NAME, WM_HINTS, WM_COMMAND, +and WM_NORMAL_HINTS properties. +.IN "XSetStandardProperties" "" "@DEF@" +.sM +.FD 0 +XSetStandardProperties\^(\^\fIdisplay\fP, \fIw\fP, \fIwindow_name\fP, \fIicon_name\fP, \fIicon_pixmap\fP, \fIargv\fP, \fIargc\fP, \fIhints\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + Window \fIw\fP\^; +.br + char *\fIwindow_name\fP\^; +.br + char *\fIicon_name\fP\^; +.br + Pixmap \fIicon_pixmap\fP\^; +.br + char **\fIargv\fP\^; +.br + int \fIargc\fP\^; +.br + XSizeHints *\fIhints\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fIw\fP 1i +Specifies the window. +.IP \fIwindow_name\fP 1i +Specifies the window name, +which should be a null-terminated string. +.IP \fIicon_name\fP 1i +Specifies the icon name, +which should be a null-terminated string. +.IP \fIicon_pixmap\fP 1i +Specifies the bitmap that is to be used for the icon or +.PN None . +.IP \fIargv\fP 1i +Specifies the application's argument list. +.IP \fIargc\fP 1i +Specifies the number of arguments. +.IP \fIhints\fP 1i +Specifies a pointer to the size hints for the window in its normal state. +.LP +.eM +The +.PN XSetStandardProperties +function provides a means by which simple applications set the +most essential properties with a single call. +.PN XSetStandardProperties +should be used to give a window manager some information about +your program's preferences. +It should not be used by applications that need +to communicate more information than is possible with +.PN XSetStandardProperties . +(Typically, argv is the argv array of your main program.) +If the strings are not in the Host Portable Character Encoding, +the result is implementation-dependent. +.LP +.PN XSetStandardProperties +can generate +.PN BadAlloc +and +.PN BadWindow +errors. +.SH +Setting and Getting Window Sizing Hints +.LP +Xlib provides functions that you can use to set or get window sizing hints. +The functions discussed in this section use the flags and the +.PN XSizeHints +structure, as defined in the +.hN X11/Xutil.h +header file and use the WM_NORMAL_HINTS property. +.LP +.sp +To set the size hints for a given window in its normal state, use +.PN XSetNormalHints . +This function has been superseded by +.PN XSetWMNormalHints . +.IN "XSetNormalHints" "" "@DEF@" +.sM +.FD 0 +XSetNormalHints\^(\^\fIdisplay\fP, \fIw\fP, \fIhints\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + Window \fIw\fP\^; +.br + XSizeHints *\fIhints\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fIw\fP 1i +Specifies the window. +.IP \fIhints\fP 1i +Specifies a pointer to the size hints for the window in its normal state. +.LP +.eM +The +.PN XSetNormalHints +function sets the size hints structure for the specified window. +Applications use +.PN XSetNormalHints +to inform the window manager of the size +or position desirable for that window. +In addition, +an application that wants to move or resize itself should call +.PN XSetNormalHints +and specify its new desired location and size +as well as making direct Xlib calls to move or resize. +This is because window managers may ignore redirected +configure requests, but they pay attention to property changes. +.LP +To set size hints, +an application not only must assign values to the appropriate members +in the hints structure but also must set the flags member of the structure +to indicate which information is present and where it came from. +A call to +.PN XSetNormalHints +is meaningless, unless the flags member is set to indicate which members of +the structure have been assigned values. +.LP +.PN XSetNormalHints +can generate +.PN BadAlloc +and +.PN BadWindow +errors. +.LP +.sp +To return the size hints for a window in its normal state, use +.PN XGetNormalHints . +This function has been superseded by +.PN XGetWMNormalHints . +.IN "XGetNormalHints" "" "@DEF@" +.sM +.FD 0 +Status XGetNormalHints\^(\^\fIdisplay\fP, \fIw\fP, \fIhints_return\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + Window \fIw\fP\^; +.br + XSizeHints *\fIhints_return\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fIw\fP 1i +Specifies the window. +.IP \fIhints_return\fP 1i +Returns the size hints for the window in its normal state. +.LP +.eM +The +.PN XGetNormalHints +function returns the size hints for a window in its normal state. +It returns a nonzero status if it succeeds or zero if +the application specified no normal size hints for this window. +.LP +.PN XGetNormalHints +can generate a +.PN BadWindow +error. +.LP +.sp +The next two functions set and read the WM_ZOOM_HINTS property. +.LP +To set the zoom hints for a window, use +.PN XSetZoomHints . +This function is no longer supported by the +\fIInter-Client Communication Conventions Manual\fP. +.IN "XSetZoomHints" "" "@DEF@" +.sM +.FD 0 +XSetZoomHints\^(\^\fIdisplay\fP, \fIw\fP, \fIzhints\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + Window \fIw\fP\^; +.br + XSizeHints *\fIzhints\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fIw\fP 1i +Specifies the window. +.IP \fIzhints\fP 1i +Specifies a pointer to the zoom hints. +.LP +.eM +Many window managers think of windows in one of three states: +iconic, normal, or zoomed. +The +.PN XSetZoomHints +function provides the window manager with information for the window in the +zoomed state. +.LP +.PN XSetZoomHints +can generate +.PN BadAlloc +and +.PN BadWindow +errors. +.LP +.sp +To read the zoom hints for a window, use +.PN XGetZoomHints . +This function is no longer supported by the +\fIInter-Client Communication Conventions Manual\fP. +.IN "XGetZoomHints" "" "@DEF@" +.sM +.FD 0 +Status XGetZoomHints\^(\^\fIdisplay\fP, \fIw\fP, \fIzhints_return\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + Window \fIw\fP\^; +.br + XSizeHints *\fIzhints_return\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fIw\fP 1i +Specifies the window. +.IP \fIzhints_return\fP 1i +Returns the zoom hints. +.LP +.eM +The +.PN XGetZoomHints +function returns the size hints for a window in its zoomed state. +It returns a nonzero status if it succeeds or zero if +the application specified no zoom size hints for this window. +.LP +.PN XGetZoomHints +can generate a +.PN BadWindow +error. +.LP +.sp +To set the value of any property of type WM_SIZE_HINTS, use +.PN XSetSizeHints . +This function has been superseded by +.PN XSetWMSizeHints . +.IN "XSetSizeHints" "" "@DEF@" +.sM +.FD 0 +XSetSizeHints\^(\^\fIdisplay\fP, \fIw\fP, \fIhints\fP, \fIproperty\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + Window \fIw\fP\^; +.br + XSizeHints *\fIhints\fP\^; +.br + Atom \fIproperty\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fIw\fP 1i +Specifies the window. +.IP \fIhints\fP 1i +Specifies a pointer to the size hints. +.IP \fIproperty\fP 1i +Specifies the property name. +.LP +.eM +The +.PN XSetSizeHints +function sets the +.PN XSizeHints +structure for the named property and the specified window. +This is used by +.PN XSetNormalHints +and +.PN XSetZoomHints +and can be used to set the value of any property of type WM_SIZE_HINTS. +Thus, it may be useful if other properties of that type get defined. +.LP +.PN XSetSizeHints +can generate +.PN BadAlloc , +.PN BadAtom , +and +.PN BadWindow +errors. +.LP +.sp +To read the value of any property of type WM_SIZE_HINTS, use +.PN XGetSizeHints . +This function has been superseded by +.PN XGetWMSizeHints . +.IN "XGetSizeHints" "" "@DEF@" +.sM +.FD 0 +Status XGetSizeHints\^(\^\fIdisplay\fP, \fIw\fP, \fIhints_return\fP, \fIproperty\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + Window \fIw\fP\^; +.br + XSizeHints *\fIhints_return\fP\^; +.br + Atom \fIproperty\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fIw\fP 1i +Specifies the window. +.IP \fIhints_return\fP 1i +Returns the size hints. +.IP \fIproperty\fP 1i +Specifies the property name. +.LP +.eM +The +.PN XGetSizeHints +function returns the +.PN XSizeHints +structure for the named property and the specified window. +This is used by +.PN XGetNormalHints +and +.PN XGetZoomHints . +It also can be used to retrieve the value of any property of type +WM_SIZE_HINTS. +Thus, it may be useful if other properties of that type get defined. +.PN XGetSizeHints +returns a nonzero status if a size hint was defined +or zero otherwise. +.LP +.PN XGetSizeHints +can generate +.PN BadAtom +and +.PN BadWindow +errors. +.SH +Getting and Setting an XStandardColormap Structure +.LP +To get the +.PN XStandardColormap +structure associated with one of the described atoms, use +.PN XGetStandardColormap . +This function has been superseded by +.PN XGetRGBColormap . +.IN "XGetStandardColormap" "" "@DEF@" +.sM +.FD 0 +Status XGetStandardColormap(\^\fIdisplay\fP, \fIw\fP, \fIcolormap_return\fP, \fIproperty\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + Window \fIw\fP\^; +.br + XStandardColormap *\fIcolormap_return\fP\^; +.br + Atom \fIproperty\fP\^; /* RGB_BEST_MAP, etc. */ +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fIw\fP 1i +Specifies the window. +.IP \fIcolormap_return\fP 1i +Returns the colormap associated with the specified atom. +.IP \fIproperty\fP 1i +Specifies the property name. +.LP +.eM +The +.PN XGetStandardColormap +function returns the colormap definition associated with the atom supplied +as the property argument. +.PN XGetStandardColormap +returns a nonzero status if successful and zero otherwise. +For example, +to fetch the standard +.PN GrayScale +colormap for a display, +you use +.PN XGetStandardColormap +with the following syntax: +.LP +.sM +.Ds 0 +.TA .5i 1.5i +.ta .5i 1.5i +XGetStandardColormap(dpy, DefaultRootWindow(dpy), &cmap, XA_RGB_GRAY_MAP); +.De +.LP +.eM +See section 14.3 for the semantics of standard colormaps. +.LP +.PN XGetStandardColormap +can generate +.PN BadAtom +and +.PN BadWindow +errors. +.LP +.sp +To set a standard colormap, use +.PN XSetStandardColormap . +This function has been superseded by +.PN XSetRGBColormap . +.IN "XSetStandardColormap" "" "@DEF@" +.sM +.FD 0 +XSetStandardColormap(\^\fIdisplay\fP, \fIw\fP, \fIcolormap\fP, \fIproperty\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + Window \fIw\fP\^; +.br + XStandardColormap *\fIcolormap\fP\^; +.br + Atom \fIproperty\fP\^; /* RGB_BEST_MAP, etc. */ +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fIw\fP 1i +Specifies the window. +.IP \fIcolormap\fP 1i +Specifies the colormap. +.IP \fIproperty\fP 1i +Specifies the property name. +.LP +.eM +The +.PN XSetStandardColormap +function usually is only used by window or session managers. +.LP +.PN XSetStandardColormap +can generate +.PN BadAlloc , +.PN BadAtom , +.PN BadDrawable , +and +.PN BadWindow +errors. +.SH +Parsing Window Geometry +.LP +To parse window geometry given a user-specified position +and a default position, use +.PN XGeometry . +This function has been superseded by +.PN XWMGeometry . +.IN "Window" "determining location" +.IN "XGeometry" "" "@DEF@" +.sM +.FD 0 +int XGeometry\^(\^\fIdisplay\fP, \fIscreen\fP, \fIposition\fP\^, \fIdefault_position\fP\^, \fIbwidth\fP\^, \fIfwidth\fP\^, \fIfheight\fP\^, \fIxadder\fP\^, +.br + \fIyadder\fP\^, \fIx_return\fP\^, \fIy_return\fP\^, \fIwidth_return\fP\^, \fIheight_return\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + int \fIscreen\fP\^; +.br + char *\fIposition\fP\^, *\fIdefault_position\fP\^; +.br + unsigned int \fIbwidth\fP\^; +.br + unsigned int \fIfwidth\fP\^, \fIfheight\fP\^; +.br + int \fIxadder\fP\^, \fIyadder\fP\^; +.br + int *\fIx_return\fP\^, *\fIy_return\fP\^; +.br + int *\fIwidth_return\fP\^, *\fIheight_return\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fIscreen\fP 1i +Specifies the screen. +.IP \fIposition\fP 1i +.br +.ns +.IP \fIdefault_position\fP 1i +Specify the geometry specifications. +.IP \fIbwidth\fP 1i +Specifies the border width. +.IP \fIfheight\fP 1i +.br +.ns +.IP \fIfwidth\fP 1i +Specify the font height and width in pixels (increment size). +.IP \fIxadder\fP 1i +.br +.ns +.IP \fIyadder\fP 1i +Specify additional interior padding needed in the window. +.IP \fIx_return\fP 1i +.br +.ns +.IP \fIy_return\fP 1i +Return the x and y offsets. +.IP \fIwidth_return\fP 1i +.br +.ns +.IP \fIheight_return\fP 1i +Return the width and height determined. +.LP +.eM +You pass in the border width (bwidth), +size of the increments fwidth and fheight +(typically font width and height), +and any additional interior space (xadder and yadder) +to make it easy to compute the resulting size. +The +.PN XGeometry +function returns the position the window should be placed given a position and +a default position. +.PN XGeometry +determines the placement of +a window using a geometry specification as specified by +.PN XParseGeometry +and the additional information about the window. +Given a fully qualified default geometry specification and +an incomplete geometry specification, +.PN XParseGeometry +returns a bitmask value as defined above in the +.PN XParseGeometry +call, +by using the position argument. +.LP +The returned width and height will be the width and height specified +by default_position as overridden by any user-specified position. +They are not affected by fwidth, fheight, xadder, or yadder. +The x and y coordinates are computed by using the border width, +the screen width and height, padding as specified by xadder and yadder, +and the fheight and fwidth times the width and height from the +geometry specifications. +.SH +Getting the X Environment Defaults +.LP +The +.PN XGetDefault +function provides a primitive interface to the resource manager facilities +discussed in chapter 15. +It is only useful in very simple applications. +.LP +.sp +.IN "XGetDefault" "" "@DEF@" +.sM +.FD 0 +char *XGetDefault\^(\^\fIdisplay\fP, \fIprogram\fP\^, \fIoption\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + char *\fIprogram\fP\^; +.br + char *\fIoption\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fIprogram\fP 1i +Specifies the program name for the Xlib defaults (usually argv[0] +of the main program). +.IP \fIoption\fP 1i +Specifies the option name. +.LP +.eM +The +.PN XGetDefault +function returns the value of the resource \fIprog\fP.\fIoption\fP, +where \fIprog\fP is the program argument with the directory prefix removed +and \fIoption\fP must be a single component. +Note that multilevel resources cannot be used with +.PN XGetDefault . +The class "Program.Name" is always used for the resource lookup. +If the specified option name does not exist for this program, +.PN XGetDefault +returns NULL. +The strings returned by +.PN XGetDefault +are owned by Xlib and should not be modified or freed by the client. +.LP +If a database has been set with +.PN XrmSetDatabase , +that database is used for the lookup. +Otherwise, a database is created +and is set in the display (as if by calling +.PN XrmSetDatabase ). +The database is created in the current locale. +To create a database, +.PN XGetDefault +uses resources from the RESOURCE_MANAGER property on the root +window of screen zero. +If no such property exists, +a resource file in the user's home directory is used. +On a POSIX-conformant system, +this file is +.PN "$HOME/.Xdefaults" . +.IN "Files" "$HOME/.Xdefaults" +After loading these defaults, +.PN XGetDefault +merges additional defaults specified by the XENVIRONMENT +environment variable. +If XENVIRONMENT is defined, +it contains a full path name for the additional resource file. +If XENVIRONMENT is not defined, +.PN XGetDefault +looks for +.PN "$HOME/.Xdefaults-\fIname\fP" , +where \fIname\fP specifies the name of the machine on which the application +is running. +.SH +X Version 10 Compatibility Functions +.LP +You can use the X Version 10 compatibility functions to: +.IP \(bu 5 +Draw and fill polygons and curves +.IP \(bu 5 +Associate user data with a value +.SH +Drawing and Filling Polygons and Curves +.LP +Xlib provides functions that you can use to draw or fill +arbitrary polygons or curves. +These functions are provided mainly for compatibility with X Version 10 +and have no server support. +That is, they call other Xlib functions, not the server directly. +Thus, if you just have straight lines to draw, using +.PN XDrawLines +.IN "XDrawLines" +or +.PN XDrawSegments +.IN "XDrawSegments" +is much faster. +.LP +The functions discussed here provide all the functionality of the +X Version 10 functions +.PN XDraw , +.IN "X10 compatibility" "XDraw" +.PN XDrawFilled , +.IN "X10 compatibility" "XDrawFilled" +.PN XDrawPatterned , +.IN "X10 compatibility" "XDrawPatterned" +.PN XDrawDashed , +.IN "X10 compatibility" "XDrawDashed" +and +.PN XDrawTiled . +.IN "X10 compatibility" "XDrawTiled" +They are as compatible as possible given X Version 11's new line-drawing +functions. +One thing to note, however, is that +.PN VertexDrawLastPoint +is no longer supported. +Also, the error status returned is the opposite of what it was under +X Version 10 (this is the X Version 11 standard error status). +.PN XAppendVertex +and +.PN XClearVertexFlag +from X Version 10 also are not supported. +.LP +Just how the graphics context you use is set up actually +determines whether you get dashes or not, and so on. +Lines are properly joined if they connect and include +the closing of a closed figure (see +.PN XDrawLines ). +The functions discussed here fail (return zero) only if they run out of memory +or are passed a +.PN Vertex +list that has a +.PN Vertex +with +.PN VertexStartClosed +set that is not followed by a +.PN Vertex +with +.PN VertexEndClosed +set. +.LP +.sp +To achieve the effects of the X Version 10 +.PN XDraw , +.IN "X10 compatibility" "XDraw" +.PN XDrawDashed , +.IN "X10 compatibility" "XDrawDashed" +and +.PN XDrawPatterned , +.IN "X10 compatibility" "XDrawPatterned" +use +.PN XDraw . +.IN "XDraw" "" "@DEF@" +.sM +.FD 0 +#include <X11/X10.h> + +Status XDraw(\^\fIdisplay\fP, \fId\fP, \fIgc\fP, \fIvlist\fP, \fIvcount\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + Drawable \fId\fP\^; +.br + GC \fIgc\fP\^; +.br + Vertex *\fIvlist\fP\^; +.br + int \fIvcount\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fId\fP 1i +Specifies the drawable. +.IP \fIgc\fP 1i +Specifies the GC. +.IP \fIvlist\fP 1i +Specifies a pointer to the list of vertices that indicate what to draw. +.IP \fIvcount\fP 1i +Specifies how many vertices are in vlist. +.LP +.eM +The +.PN XDraw +function draws an arbitrary polygon or curve. +The figure drawn is defined by the specified list of vertices (vlist). +The points are connected by lines as specified in the flags in the +vertex structure. +.LP +Each Vertex, as defined in +.hN X11/X10.h , +is a structure with the following members: +.LP +.IN "Vertex" "" "@DEF@" +.sM +.Ds 0 +.TA .5i 1.5i +.ta .5i 1.5i +typedef struct _Vertex { + short x,y; + unsigned short flags; +} Vertex; +.De +.LP +.eM +The x and y members are the coordinates of the vertex +that are relative to either the upper left inside corner of the drawable +(if +.PN VertexRelative +is zero) or the previous vertex (if +.PN VertexRelative +is one). +.LP +The flags, as defined in +.hN X11/X10.h , +are as follows: +.IN "VertexRelative" "" "@DEF@" +.IN "VertexDontDraw" "" "@DEF@" +.IN "VertexCurved" "" "@DEF@" +.IN "VertexStartClosed" "" "@DEF@" +.IN "VertexEndClosed" "" "@DEF@" +.sM +.TS +l l l. +T{ +.PN VertexRelative +T} T{ +0x0001 +T} T{ +/* else absolute */ +T} +T{ +.PN VertexDontDraw +T} T{ +0x0002 +T} T{ +/* else draw */ +T} +T{ +.PN VertexCurved +T} T{ +0x0004 +T} T{ +/* else straight */ +T} +T{ +.PN VertexStartClosed +T} T{ +0x0008 +T} T{ +/* else not */ +T} +T{ +.PN VertexEndClosed +T} T{ +0x0010 +T} T{ +/* else not */ +T} +.TE +.LP +.eM +.IP \(bu 5 +If +.PN VertexRelative +is not set, +the coordinates are absolute (that is, relative to the drawable's origin). +The first vertex must be an absolute vertex. +.IP \(bu 5 +If +.PN VertexDontDraw +is one, +no line or curve is drawn from the previous vertex to this one. +This is analogous to picking up the pen and moving to another place +before drawing another line. +.IP \(bu 5 +If +.PN VertexCurved +is one, +a spline algorithm is used to draw a smooth curve from the previous vertex +through this one to the next vertex. +Otherwise, a straight line is drawn from the previous vertex to this one. +It makes sense to set +.PN VertexCurved +to one only if a previous and next vertex are both defined +(either explicitly in the array or through the definition of a closed +curve). +.IP \(bu 5 +It is permissible for +.PN VertexDontDraw +bits and +.PN VertexCurved +bits both to be one. +This is useful if you want to define the previous point for the smooth curve +but do not want an actual curve drawing to start until this point. +.IP \(bu 5 +If +.PN VertexStartClosed +is one, +then this point marks the beginning of a closed curve. +This vertex must be followed later in the array by another vertex +whose effective coordinates are identical +and that has a +.PN VertexEndClosed +bit of one. +The points in between form a cycle to determine predecessor +and successor vertices for the spline algorithm. +.LP +This function uses these GC components: +function, plane-mask, line-width, line-style, cap-style, join-style, +fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and +clip-mask. +It also uses these GC mode-dependent components: +foreground, background, tile, stipple, +tile-stipple-x-origin, tile-stipple-y-origin, dash-offset, and dash-list. +.LP +.sp +To achieve the effects of the X Version 10 +.PN XDrawTiled +.IN "X10 compatibility" "XDrawTiled" +and +.PN XDrawFilled , +.IN "X10 compatibility" "XDrawFilled" +use +.PN XDrawFilled . +.IN "XDrawFilled" "" "@DEF@" +.sM +.FD 0 +#include <X11/X10.h> + +Status XDrawFilled(\^\fIdisplay\fP, \fId\fP, \fIgc\fP, \fIvlist\fP, \fIvcount\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + Drawable \fId\fP\^; +.br + GC \fIgc\fP\^; +.br + Vertex *\fIvlist\fP\^; +.br + int \fIvcount\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fId\fP 1i +Specifies the drawable. +.IP \fIgc\fP 1i +Specifies the GC. +.IP \fIvlist\fP 1i +Specifies a pointer to the list of vertices that indicate what to draw. +.IP \fIvcount\fP 1i +Specifies how many vertices are in vlist. +.LP +.eM +The +.PN XDrawFilled +function draws arbitrary polygons or curves and then fills them. +.LP +This function uses these GC components: +function, plane-mask, line-width, line-style, cap-style, join-style, +fill-style, subwindow-mode, clip-x-origin, clip-y-origin, and +clip-mask. +It also uses these GC mode-dependent components: +foreground, background, tile, stipple, +tile-stipple-x-origin, tile-stipple-y-origin, +dash-offset, dash-list, fill-style, and fill-rule. +.SH +Associating User Data with a Value +.LP +These functions have been superseded by the context management functions +(see section 16.10). +It is often necessary to associate arbitrary information with resource IDs. +Xlib provides the +.PN XAssocTable +functions that you can use to make such an association. +.IN "Hash Lookup" +.IN "Window" "IDs" +.IN "Resource IDs" +Application programs often need to be able to easily refer to +their own data structures when an event arrives. +The +.PN XAssocTable +system provides users of the X library with a method +for associating their own data structures with X resources +.Pn ( Pixmaps , +.PN Fonts , +.PN Windows , +and so on). +.LP +An +.PN XAssocTable +can be used to type X resources. +For example, the user +may want to have three or four types of windows, +each with different properties. +This can be accomplished by associating each X window ID +with a pointer to a window property data structure defined by the +user. +A generic type has been defined in the X library for resource IDs. +It is called an XID. +.LP +There are a few guidelines that should be observed when using an +.PN XAssocTable : +.IP \(bu 5 +All XIDs are relative to the specified display. +.IP \(bu 5 +Because of the hashing scheme used by the association mechanism, +the following rules for determining the size of a +.PN XAssocTable +should be followed. +Associations will be made and looked up more +efficiently if the table size (number of buckets in the hashing +system) is a power of two and if there are not more than 8 XIDs per +bucket. +.LP +.sp +To return a pointer to a new +.PN XAssocTable , +use +.PN XCreateAssocTable . +.IN "XCreateAssocTable" "" "@DEF@" +.sM +.FD 0 +XAssocTable *XCreateAssocTable\^(\^\fIsize\fP\^) +.br + int \fIsize\fP\^; +.FN +.IP \fIsize\fP 1i +Specifies the number of buckets in the hash system of +.PN XAssocTable . +.LP +.eM +The size argument specifies the number of buckets in the +hash system of +.PN XAssocTable . +For reasons of efficiency the number of buckets +should be a power of two. +Some size suggestions might be: use 32 buckets per 100 objects, +and a reasonable maximum number of objects per buckets is 8. +If an error allocating memory for the +.PN XAssocTable +occurs, +a NULL pointer is returned. +.LP +.sp +To create an entry in a given +.PN XAssocTable , +use +.PN XMakeAssoc . +.IN "XMakeAssoc" "" "@DEF@" +.sM +.FD 0 +XMakeAssoc\^(\^\fIdisplay\fP, \fItable\fP\^, \fIx_id\fP\^, \fIdata\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + XAssocTable *\fItable\fP\^; +.br + XID \fIx_id\fP\^; +.br + char *\fIdata\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fItable\fP 1i +Specifies the assoc table. +.IP \fIx_id\fP 1i +Specifies the X resource ID. +.IP \fIdata\fP 1i +Specifies the data to be associated with the X resource ID. +.LP +.eM +The +.PN XMakeAssoc +function inserts data into an +.PN XAssocTable +keyed on an XID. +Data is inserted into the table only once. +Redundant inserts are ignored. +The queue in each association bucket is sorted from the lowest XID to +the highest XID. +.LP +.sp +To obtain data from a given +.PN XAssocTable , +use +.PN XLookUpAssoc . +.IN "XLookUpAssoc" "" "@DEF@" +.sM +.FD 0 +char *XLookUpAssoc\^(\^\fIdisplay\fP, \fItable\fP\^, \fIx_id\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + XAssocTable *\fItable\fP\^; +.br + XID \fIx_id\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fItable\fP 1i +Specifies the assoc table. +.IP \fIx_id\fP 1i +Specifies the X resource ID. +.LP +.eM +The +.PN XLookUpAssoc +function retrieves the data stored in an +.PN XAssocTable +by its XID. +If an appropriately matching XID can be found in the table, +.PN XLookUpAssoc +returns the data associated with it. +If the x_id cannot be found in the table, +it returns NULL. +.LP +.sp +To delete an entry from a given +.PN XAssocTable , +use +.PN XDeleteAssoc . +.IN "XDeleteAssoc" "" "@DEF@" +.sM +.FD 0 +XDeleteAssoc\^(\^\fIdisplay\fP, \fItable\fP\^, \fIx_id\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + XAssocTable *\fItable\fP\^; +.br + XID \fIx_id\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fItable\fP 1i +Specifies the assoc table. +.IP \fIx_id\fP 1i +Specifies the X resource ID. +.LP +.eM +The +.PN XDeleteAssoc +function deletes an association in an +.PN XAssocTable +keyed on its XID. +Redundant deletes (and deletes of nonexistent XIDs) are ignored. +Deleting associations in no way impairs the performance of an +.PN XAssocTable . +.LP +.sp +To free the memory associated with a given +.PN XAssocTable , +use +.PN XDestroyAssocTable . +.IN "XDestroyAssocTable" "" "@DEF@" +.sM +.FD 0 +XDestroyAssocTable\^(\^\fItable\fP\^) +.br + XAssocTable *\fItable\fP\^; +.FN +.IP \fItable\fP 1i +Specifies the assoc table. +.LP +.eM +.bp |