diff options
Diffstat (limited to 'libX11/specs/libX11/CH05')
-rw-r--r-- | libX11/specs/libX11/CH05 | 518 |
1 files changed, 518 insertions, 0 deletions
diff --git a/libX11/specs/libX11/CH05 b/libX11/specs/libX11/CH05 new file mode 100644 index 000000000..6ea218378 --- /dev/null +++ b/libX11/specs/libX11/CH05 @@ -0,0 +1,518 @@ +.\" 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\fBChapter 5\fP\s-1 + +\s+1\fBPixmap and Cursor Functions\fP\s-1 +.sp 2 +.nr H1 5 +.nr H2 0 +.nr H3 0 +.nr H4 0 +.nr H5 0 +.na +.LP +.XS +Chapter 5: Pixmap and Cursor Functions +.XE +Once you have connected to an X server, +you can use the Xlib functions to: +.IP \(bu 5 +Create and free pixmaps +.IP \(bu 5 +Create, recolor, and free cursors +.NH 2 +Creating and Freeing Pixmaps +.XS +\*(SN Creating and Freeing Pixmaps +.XE +.LP +Pixmaps can only be used on the screen on which they were created. +Pixmaps are off-screen resources that are used for various operations, +such as defining cursors as tiling patterns +or as the source for certain raster operations. +Most graphics requests can operate either on a window or on a pixmap. +A bitmap is a single bit-plane pixmap. +.LP +.sp +To create a pixmap of a given size, use +.PN XCreatePixmap . +.IN "XCreatePixmap" "" "@DEF@" +.sM +.FD 0 +Pixmap XCreatePixmap\^(\^\fIdisplay\fP, \fId\fP\^, \fIwidth\fP\^, \fIheight\fP\^, \fIdepth\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + Drawable \fId\fP\^; +.br + unsigned int \fIwidth\fP\^, \fIheight\fP\^; +.br + unsigned int \fIdepth\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fId\fP 1i +Specifies which screen the pixmap is created on. +.ds Wh , which define the dimensions of the pixmap +.IP \fIwidth\fP 1i +.br +.ns +.IP \fIheight\fP 1i +Specify the width and height\*(Wh. +.IP \fIdepth\fP 1i +Specifies the depth of the pixmap. +.LP +.eM +The +.PN XCreatePixmap +function creates a pixmap of the width, height, and depth you specified +and returns a pixmap ID that identifies it. +It is valid to pass an +.PN InputOnly +window to the drawable argument. +The width and height arguments must be nonzero, +or a +.PN BadValue +error results. +The depth argument must be one of the depths supported by the screen +of the specified drawable, +or a +.PN BadValue +error results. +.LP +The server uses the specified drawable to determine on which screen +to create the pixmap. +The pixmap can be used only on this screen +and only with other drawables of the same depth (see +.PN XCopyPlane +for an exception to this rule). +The initial contents of the pixmap are undefined. +.LP +.PN XCreatePixmap +can generate +.PN BadAlloc , +.PN BadDrawable , +and +.PN BadValue +errors. +.LP +.sp +To free all storage associated with a specified pixmap, use +.PN XFreePixmap . +.IN "XFreePixmap" "" "@DEF@" +.sM +.FD 0 +XFreePixmap\^(\^\fIdisplay\fP, \fIpixmap\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + Pixmap \fIpixmap\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fIpixmap\fP 1i +Specifies the pixmap. +.LP +.eM +The +.PN XFreePixmap +function first deletes the association between the pixmap ID and the pixmap. +Then, the X server frees the pixmap storage when there are no references to it. +The pixmap should never be referenced again. +.LP +.PN XFreePixmap +can generate a +.PN BadPixmap +error. +.NH 2 +Creating, Recoloring, and Freeing Cursors +.XS +\*(SN Creating, Recoloring, and Freeing Cursors +.XE +.LP +Each window can have a different cursor defined for it. +Whenever the pointer is in a visible window, +it is set to the cursor defined for that window. +If no cursor was defined for that window, +the cursor is the one defined for the parent window. +.LP +From X's perspective, +a cursor consists of a cursor source, mask, colors, and a hotspot. +The mask pixmap determines the shape of the cursor and must be a depth +of one. +The source pixmap must have a depth of one, +and the colors determine the colors of the source. +The hotspot defines the point on the cursor that is reported +when a pointer event occurs. +There may be limitations imposed by the hardware on +cursors as to size and whether a mask is implemented. +.IN "XQueryBestCursor" +.PN XQueryBestCursor +can be used to find out what sizes are possible. +There is a standard font for creating cursors, but +Xlib provides functions that you can use to create cursors +from an arbitrary font or from bitmaps. +.LP +.sp +To create a cursor from the standard cursor font, use +.PN XCreateFontCursor . +.IN "XCreateFontCursor" "" "@DEF@" +.sM +.FD 0 +#include <X11/cursorfont.h> +.sp 6p +Cursor XCreateFontCursor\^(\^\fIdisplay\fP, \fIshape\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + unsigned int \fIshape\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fIshape\fP 1i +Specifies the shape of the cursor. +.LP +.eM +X provides a set of standard cursor shapes in a special font named +cursor. +Applications are encouraged to use this interface for their cursors +because the font can be customized for the individual display type. +The shape argument specifies which glyph of the standard fonts +to use. +.LP +The hotspot comes from the information stored in the cursor font. +The initial colors of a cursor are a black foreground and a white +background (see +.PN XRecolorCursor ). +For further information about cursor shapes, +see appendix B. +.LP +.PN XCreateFontCursor +can generate +.PN BadAlloc +and +.PN BadValue +errors. +.LP +.sp +To create a cursor from font glyphs, use +.PN XCreateGlyphCursor . +.IN "XCreateGlyphCursor" "" "@DEF@" +.sM +.FD 0 +Cursor XCreateGlyphCursor\^(\^\fIdisplay\fP, \fIsource_font\fP\^, \fImask_font\fP\^, \fIsource_char\fP\^, \fImask_char\fP\^, +.br + \fIforeground_color\fP\^, \fIbackground_color\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + Font \fIsource_font\fP\^, \fImask_font\fP\^; +.br + unsigned int \fIsource_char\fP\^, \fImask_char\fP\^; +.br + XColor *\fIforeground_color\fP\^; +.br + XColor *\fIbackground_color\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fIsource_font\fP 1i +Specifies the font for the source glyph. +.IP \fImask_font\fP 1i +Specifies the font for the mask glyph or +.PN None . +.IP \fIsource_char\fP 1i +Specifies the character glyph for the source. +.IP \fImask_char\fP 1i +Specifies the glyph character for the mask. +.IP \fIforeground_color\fP 1i +Specifies the RGB values for the foreground of the source. +.IP \fIbackground_color\fP 1i +Specifies the RGB values for the background of the source. +.LP +.eM +The +.PN XCreateGlyphCursor +function is similar to +.PN XCreatePixmapCursor +except that the source and mask bitmaps are obtained from the specified +font glyphs. +The source_char must be a defined glyph in source_font, +or a +.PN BadValue +error results. +If mask_font is given, +mask_char must be a defined glyph in mask_font, +or a +.PN BadValue +error results. +The mask_font and character are optional. +The origins of the source_char and mask_char (if defined) glyphs are +positioned coincidently and define the hotspot. +The source_char and mask_char need not have the same bounding box metrics, +and there is no restriction on the placement of the hotspot relative to the bounding +boxes. +If no mask_char is given, all pixels of the source are displayed. +You can free the fonts immediately by calling +.PN XFreeFont +if no further explicit references to them are to be made. +.LP +For 2-byte matrix fonts, +the 16-bit value should be formed with the byte1 +member in the most significant byte and the byte2 member in the +least significant byte. +.LP +.PN XCreateGlyphCursor +can generate +.PN BadAlloc , +.PN BadFont , +and +.PN BadValue +errors. +.LP +.sp +To create a cursor from two bitmaps, +use +.PN XCreatePixmapCursor . +.IN "XCreatePixmapCursor" "" "@DEF@" +.sM +.FD 0 +Cursor XCreatePixmapCursor\^(\^\fIdisplay\fP, \fIsource\fP\^, \fImask\fP\^, \fIforeground_color\fP\^, \fIbackground_color\fP\^, \fIx\fP\^, \fIy\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + Pixmap \fIsource\fP\^; +.br + Pixmap \fImask\fP\^; +.br + XColor *\fIforeground_color\fP\^; +.br + XColor *\fIbackground_color\fP\^; +.br + unsigned int \fIx\fP\^, \fIy\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fIsource\fP 1i +Specifies the shape of the source cursor. +.\" *** JIM: NEED TO CHECK THIS. *** +.IP \fImask\fP 1i +Specifies the cursor's source bits to be displayed or +.PN None . +.IP \fIforeground_color\fP 1i +Specifies the RGB values for the foreground of the source. +.IP \fIbackground_color\fP 1i +Specifies the RGB values for the background of the source. +.ds Xy , which indicate the hotspot relative to the source's origin +.IP \fIx\fP 1i +.br +.ns +.IP \fIy\fP 1i +Specify the x and y coordinates\*(Xy. +.LP +.eM +The +.PN XCreatePixmapCursor +function creates a cursor and returns the cursor ID associated with it. +The foreground and background RGB values must be specified using +foreground_color and background_color, +even if the X server only has a +.PN StaticGray +or +.PN GrayScale +screen. +The foreground color is used for the pixels set to 1 in the +source, and the background color is used for the pixels set to 0. +Both source and mask, if specified, must have depth one (or a +.PN BadMatch +error results) but can have any root. +The mask argument defines the shape of the cursor. +The pixels set to 1 in the mask define which source pixels are displayed, +and the pixels set to 0 define which pixels are ignored. +If no mask is given, +all pixels of the source are displayed. +The mask, if present, must be the same size as the pixmap defined by the +source argument, or a +.PN BadMatch +error results. +The hotspot must be a point within the source, +or a +.PN BadMatch +error results. +.LP +The components of the cursor can be transformed arbitrarily to meet +display limitations. +The pixmaps can be freed immediately if no further explicit references +to them are to be made. +Subsequent drawing in the source or mask pixmap has an undefined effect on the +cursor. +The X server might or might not make a copy of the pixmap. +.LP +.PN XCreatePixmapCursor +can generate +.PN BadAlloc +and +.PN BadPixmap +errors. +.LP +.sp +To determine useful cursor sizes, use +.PN XQueryBestCursor . +.IN "XQueryBestCursor" "" "@DEF@" +.sM +.FD 0 +Status XQueryBestCursor\^(\^\fIdisplay\fP, \fId\fP, \fIwidth\fP\^, \fIheight\fP\^, \fIwidth_return\fP\^, \fIheight_return\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + Drawable \fId\fP\^; +.br + unsigned int \fIwidth\fP\^, \fIheight\fP\^; +.br + unsigned int *\fIwidth_return\fP\^, *\fIheight_return\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.ds Dr , which indicates the screen +.IP \fId\fP 1i +Specifies the drawable\*(Dr. +.ds Wh \ of the cursor that you want the size information for +.IP \fIwidth\fP 1i +.br +.ns +.IP \fIheight\fP 1i +Specify the width and height\*(Wh. +.IP \fIwidth_return\fP 1i +.br +.ns +.IP \fIheight_return\fP 1i +Return the best width and height that is closest to the specified width +and height. +.LP +.eM +Some displays allow larger cursors than other displays. +The +.PN XQueryBestCursor +function provides a way to find out what size cursors are actually +possible on the display. +.IN "Cursor" "limitations" +It returns the largest size that can be displayed. +Applications should be prepared to use smaller cursors on displays that +cannot support large ones. +.LP +.PN XQueryBestCursor +can generate a +.PN BadDrawable +error. +.LP +.sp +To change the color of a given cursor, use +.PN XRecolorCursor . +.IN "XRecolorCursor" "" "@DEF@" +.sM +.FD 0 +XRecolorCursor\^(\^\fIdisplay\fP, \fIcursor\fP\^, \fIforeground_color\fP\^, \fIbackground_color\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + Cursor \fIcursor\fP\^; +.br + XColor *\fIforeground_color\fP\^, *\fIbackground_color\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fIcursor\fP 1i +Specifies the cursor. +.IP \fIforeground_color\fP 1i +Specifies the RGB values for the foreground of the source. +.IP \fIbackground_color\fP 1i +Specifies the RGB values for the background of the source. +.LP +.eM +The +.PN XRecolorCursor +function changes the color of the specified cursor, and +if the cursor is being displayed on a screen, +the change is visible immediately. +The pixel members of the +.PN XColor +structures are ignored; only the RGB values are used. +.LP +.PN XRecolorCursor +can generate a +.PN BadCursor +error. +.LP +.sp +To free (destroy) a given cursor, use +.PN XFreeCursor . +.IN "XFreeCursor" "" "@DEF@" +.sM +.FD 0 +XFreeCursor\^(\^\fIdisplay\fP, \fIcursor\fP\^) +.br + Display *\fIdisplay\fP\^; +.br + Cursor \fIcursor\fP\^; +.FN +.IP \fIdisplay\fP 1i +Specifies the connection to the X server. +.IP \fIcursor\fP 1i +Specifies the cursor. +.LP +.eM +The +.PN XFreeCursor +function deletes the association between the cursor resource ID +and the specified cursor. +The cursor storage is freed when no other resource references it. +The specified cursor ID should not be referred to again. +.LP +.PN XFreeCursor +can generate a +.PN BadCursor +error. +.bp |