diff options
Diffstat (limited to 'Xlibscm.info')
-rw-r--r-- | Xlibscm.info | 1905 |
1 files changed, 1905 insertions, 0 deletions
diff --git a/Xlibscm.info b/Xlibscm.info new file mode 100644 index 0000000..4c57ced --- /dev/null +++ b/Xlibscm.info @@ -0,0 +1,1905 @@ +This is Info file Xlibscm.info, produced by Makeinfo version 1.68 from +the input file Xlibscm.texi. + +INFO-DIR-SECTION The Algorithmic Language Scheme +START-INFO-DIR-ENTRY +* Xlibscm: (Xlibscm). SCM Language X Interface. +END-INFO-DIR-ENTRY + + +File: Xlibscm.info, Node: Top, Next: Xlibscm, Prev: (dir), Up: (dir) + +This manual documents the X - SCM Language X Interface. The most recent +information about SCM can be found on SCM's "WWW" home page: + + `http://swissnet.ai.mit.edu/~jaffer/SCM.html' + +Copyright (C) 1990-1999 Free Software Foundation + +Permission is granted to make and distribute verbatim copies of this +manual provided the copyright notice and this permission notice are +preserved on all copies. + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the +entire resulting derived work is distributed under the terms of a +permission notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions, +except that this permission notice may be stated in a translation +approved by the author. + +* Menu: + +* Xlibscm:: +* Display:: +* Screen:: +* Window:: +* Window Visibility:: +* Graphics Context:: +* Cursor:: +* Colormap:: +* Rendering:: +* Event:: +* Index:: + + +File: Xlibscm.info, Node: Xlibscm, Next: Display, Prev: Top, Up: Top + +Xlibscm +******* + +"Xlibscm" is a SCM interface to "X". The X Window System is a +network-transparent window system that was designed at MIT. SCM is a +portable Scheme implementation written in C. The interface can be +compiled into SCM or, on those platforms supporting dynamic linking, +compiled separately and loaded with `(require 'Xlib)'. + +Much of this X documentation is dervied from: + + Xlib - C Language X Interface + + X Consortium Standard + + X Version 11, Release 6.3 + +The X Window System is a trademark of X Consortium, Inc. + +TekHVC is a trademark of Tektronix, Inc. + +Copyright (C) 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 (C) 1985, 1986, 1987, 1988, 1989, 1990, 1991 by Digital +Equipment Corporation + +Portions Copyright (C) 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. + + +File: Xlibscm.info, Node: Display, Next: Screen, Prev: Xlibscm, Up: Top + +Display +******* + + - Function: x:open-display DISPLAY-NAME + DISPLAY-NAME Specifies the hardware display name, which determines + the display and communications domain to be used. On a + POSIX-conformant system, if the display-name is #f, it defaults to + the value of the DISPLAY environment variable. + + The encoding and interpretation of DISPLAY-NAME is + implementation-dependent. On POSIX-conformant systems, the + DISPLAY-NAME or DISPLAY environment variable can be a string in + the format: + + - Special Form: hostname:number.screen-number + HOSTNAME specifies the name of the host machine on which the + display is physically attached. Follow the HOSTNAME with + either a single colon (:) or a double colon (::). + + NUMBER specifies the number of the display server on that host + machine. You may optionally follow this display number with + a period (.). A single CPU can have more than one display. + Multiple displays are usually numbered starting with zero. + + SCREEN-NUMBER specifies the screen to be used on that server. + Multiple screens can be controlled by a single X server. The + SCREEN-NUMBER sets an internal variable that can be accessed + by using the x:default-screen procedure. + + - Function: x:close DISPLAY + DISPLAY specifies the connection to the X server. + + The `x:close' function closes the connection to the X server for + the DISPLAY specified and destroys all windows, resource IDs + (Window, Font, Pixmap, Colormap, Cursor, and GContext), or other + resources that the client has created on this display, unless the + close-down mode of the resource has been changed (see + `x:set-close-down-mode'). Therefore, these windows, resource IDs, + and other resources should not be used again or an error will be + generated. Before exiting, you should call X:CLOSE-DISPLAY or + X:FLUSH explicitly so that any pending errors are reported. + + - Function: x:protocol-version DISPLAY + Returns cons of the major version number (11) of the X protocol + associated with the connected DISPLAY and the minor protocol + revision number of the X server. + + - Function: x:server-vendor DISPLAY + Returns a string that provides some identification of the owner of + the X server implementation. The contents of the string are + implementation-dependent. + + - Function: x:vendor-release DISPLAY + Returns a number related to a vendor's release of the X server. + + +File: Xlibscm.info, Node: Screen, Next: Window, Prev: Display, Up: Top + +Screen +****** + +A display consists of one or more "Screen"s. Each screen has a +"root-window", "default-graphics-context", "default-visual", and +"colormap". + + - Function: x:screen-count DISPLAY + Returns the number of available screens. + + - Function: x:default-screen DISPLAY + Returns the default screen number specified by the `x:open-display' + function. Use this screen number in applications which will use + only a single screen. + + - Function: x:root-window DISPLAY SCREEN-NUMBER + - Function: x:root-window DISPLAY + SCREEN-NUMBER, if givien, specifies the appropriate screen number + on the host server. Otherwise the default-screen for DISPLAY is + used. + + Returns the root window for the specified SCREEN-NUMBER. Use + `x:root-window' for functions that need a drawable of a particular + screen or for creating top-level windows. + + - Function: x:root-window WINDOW + Returns the root window for the specified WINDOW's screen. + + - Function: x:default-colormap DISPLAY SCREEN-NUMBER + - Function: x:default-colormap DISPLAY + - Function: x:default-colormap WINDOW + Returns the default colormap of the specified screen. + + - Function: x:default-gc DISPLAY SCREEN-NUMBER + - Function: x:default-gc DISPLAY + - Function: x:default-gc WINDOW + Returns the default graphics-context of the specified screen. + + - Function: x:default-depths DISPLAY SCREEN-NUMBER + - Function: x:default-depths DISPLAY + - Function: x:default-depths WINDOW + Returns a vector of depths supported by the specified screen. + +The "Visual" type describes possible colormap depths and arrangements. + + - Function: x:default-visual DISPLAY SCREEN-NUMBER + - Function: x:default-visual DISPLAY + - Function: x:default-visual WINDOW + Returns the default Visual type for the specified screen. + + + - Function: x:make-visual DISPLAY DEPTH CLASS + - Function: x:make-visual WINDOW DEPTH CLASS + The integer DEPTH specifies the number of bits per pixel. The + CLASS argument specifies one of the possible visual classes for a + screen: + * x:Static-Gray + + * x:Static-Color + + * x:True-Color + + * x:Gray-Scale + + * x:Pseudo-Color + + * x:Direct-Color + + `X:make-visual' returns a visual type for the screen specified by + DISPLAY or WINDOW if successful; #f if not. + + + - Function: x:screen-cells DISPLAY SCREEN-NUMBER + - Function: x:screen-cells DISPLAY + - Function: x:screen-cells WINDOW + Returns the number of entries in the default colormap. + + - Function: x:screen-depth DISPLAY SCREEN-NUMBER + - Function: x:screen-depth DISPLAY + - Function: x:screen-depth WINDOW + Returns the depth of the root window of the specified screen. + + The "depth" of a window or pixmap is the number of bits per pixel + it has. The "depth" of a graphics context is the depth of the + drawables it can be used in conjunction with graphics output. + + - Function: x:screen-size DISPLAY SCREEN-NUMBER + - Function: x:screen-size DISPLAY + - Function: x:screen-size WINDOW + Returns a list of integer height and width of the screen in pixels. + + - Function: x:screen-dimensions DISPLAY SCREEN-NUMBER + - Function: x:screen-dimensions DISPLAY + - Function: x:screen-dimensions WINDOW + Returns a list of integer height and width of the screen in + millimeters. + + - Function: x:screen-white DISPLAY SCREEN-NUMBER + - Function: x:screen-white DISPLAY + - Function: x:screen-white WINDOW + Returns the white pixel value of the specified screen. + + - Function: x:screen-black DISPLAY SCREEN-NUMBER + - Function: x:screen-black DISPLAY + - Function: x:screen-black WINDOW + Returns the black pixel value of the specified screen. + + +File: Xlibscm.info, Node: Window, Next: Window Visibility, Prev: Screen, Up: Top + +Window +****** + +A "Drawable" is either a window or pixmap. + + - Function: x:create-window WINDOW POSITION SIZE BORDER-WIDTH DEPTH + CLASS VISUAL FIELD-NAME VALUE ... + Creates and returns an unmapped Input-Output subwindow for a + specified parent WINDOW and causes the X server to generate a + CreateNotify event. The created window is placed on top in the + stacking order with respect to siblings. Any part of the window + that extends outside its parent WINDOW is clipped. The + BORDER-WIDTH for an x:Input-Only window must be zero. + + The coordinate system has the X axis horizontal and the Y axis + vertical with the origin [0, 0] at the upper-left corner. + Coordinates are integral, in terms of pixels, and coincide with + pixel centers. Each window and pixmap has its own coordinate + system. For a window, the origin is inside the border at the + inside, upper-left corner. + + CLASS can be x:Input-Output, x:Input-Only, or x:Copy-From-Parent. + For class x:Input-Output, the VISUAL type and DEPTH must be a + combination supported for the screen. The DEPTH need not be the + same as the parent, but the parent must not be a window of class + x:Input-Only. For an x:Input-Only window, the DEPTH must be zero, + and the VISUAL must be one supported by the screen. + + The returned window will have the attributes specified by + FIELD-NAMEs and VALUE. + + - Function: x:create-window WINDOW POSITION SIZE BORDER-WIDTH BORDER + BACKGROUND + The returned window inherits its depth, class, and visual from its + parent. All other window attributes, except BACKGROUND and + BORDER, have their default values. + + - Function: x:create-pixmap DRAWABLE SIZE DEPTH + - Function: x:create-pixmap DISPLAY SIZE DEPTH + SIZE is a list, vector, or pair of nonzero integers specifying the + width and height desired in the new pixmap. + + X:CREATE-PIXMAP returns a new pixmap of the width, height, and + DEPTH specified. It is valid to pass an x:Input-Only window to the + drawable argument. The DEPTH argument must be one of the depths + supported by the screen of the specified DRAWABLE. + + - Function: x:close WINDOW + Destroys the specified WINDOW as well as all of its subwindows and + causes the X server to generate a DestroyNotify event for each + window. The window should not be used again. If the window + specified by the WINDOW argument is mapped, it is unmapped + automatically. The ordering of the DestroyNotify events is such + that for any given window being destroyed, DestroyNotify is + generated on any inferiors of the window before being generated on + the window itself. The ordering among siblings and across + subhierarchies is not otherwise constrained. If the WINDOW you + specified is a root window, an error is signaled. Destroying a + mapped WINDOW will generate x:Expose events on other windows that + were obscured by the window being destroyed. + + - Function: x:close PIXMAP + Deletes the association between the PIXMAP and its storage. The X + server frees the pixmap storage when there are no references to it. + + - Function: x:window-geometry DRAWABLE + Returns a list of: + + coordinates + `cons' of x and y coordinates that define the location of the + DRAWABLE. For a window, these coordinates specify the + upper-left outer corner relative to its parent's origin. For + pixmaps, these coordinates are always zero. + + size + `cons' of the DRAWABLE's dimensions (width and height). For + a window, these dimensions specify the inside size, not + including the border. + + border-width + The border width in pixels. If the DRAWABLE is a pixmap, + this is zero. + + depth + The depth of the DRAWABLE (bits per pixel for the object). + + - Function: x:window-set! WINDOW FIELD-NAME VALUE ... + Changes the components specified by FIELD-NAMEs for the specified + WINDOW. The restrictions are the same as for `x:create-window'. + The order in which components are verified and altered is server + dependent. If an error occurs, a subset of the components may + have been altered. + +Window Attributes +================= + +The `x:create-window' and `x:window-set!' procedures take five and one +argument (respectively) followed by pairs of arguments, where the first +is one of the property-name symbols (or its top-level value) listed +below; and the second is the value to associate with that property. + + - Attribute: x:CW-Back-Pixmap + Sets the background pixmap of the WINDOW to the specified pixmap. + The background pixmap can immediately be freed if no further + explicit references to it are to be made. If x:Parent-Relative is + specified, the background pixmap of the window's parent is used, + or on the root window, the default background is restored. It is + an error to perform this operation on an x:Input-Only window. If + the background is set to #f or None, the window has no defined + background. + + - Attribute: x:CW-Back-Pixel + Sets the background of the WINDOW to the specified pixel value. + Changing the background does not cause the WINDOW contents to be + changed. It is an error to perform this operation on an + x:Input-Only window. + + - Attribute: x:CW-Border-Pixmap + Sets the border pixmap of the WINDOW to the pixmap you specify. + The border pixmap can be freed if no further explicit references + to it are to be made. If you specify x:Copy-From-Parent, a copy + of the parent window's border pixmap is used. It is an error to + perform this operation on an x:Input-Only WINDOW. + + - Attribute: x:CW-Border-Pixel + Sets the border of the WINDOW to the pixel VALUE. It is an error + to perform this operation on an x:Input-Only window. + + - Attribute: x:CW-Bit-Gravity + - Attribute: x:CW-Win-Gravity + The bit gravity of a window defines which region of the window + should be retained when an x:Input-Output window is resized. The + default value for the bit-gravity attribute is x:Forget-Gravity. + The window gravity of a window allows you to define how the + x:Input-Output or x:Input-Only window should be repositioned if + its parent is resized. The default value for the win-gravity + attribute is x:North-West-Gravity. + + If the inside width or height of a window is not changed and if the + window is moved or its border is changed, then the contents of the + window are not lost but move with the window. Changing the inside + width or height of the window causes its contents to be moved or + lost (depending on the bit-gravity of the window) and causes + children to be reconfigured (depending on their win-gravity). For + a change of width and height, the (x, y) pairs are defined: + + Gravity Direction Coordinates + x:North-West-Gravity (0, 0) + x:North-Gravity (Width/2, 0) + x:North-East-Gravity (Width, 0) + x:West-Gravity (0, Height/2) + x:Center-Gravity (Width/2, Height/2) + x:East-Gravity (Width, Height/2) + x:South-West-Gravity (0, Height) + x:South-Gravity (Width/2, Height) + x:South-East-Gravity (Width, Height) + + When a window with one of these bit-gravity values is resized, the + corresponding pair defines the change in position of each pixel in + the window. When a window with one of these win-gravities has its + parent window resized, the corresponding pair defines the change + in position of the window within the parent. When a window is so + repositioned, a x:Gravity-Notify event is generated (see section + 10.10.5). + + A bit-gravity of x:Static-Gravity indicates that the contents or + origin should not move relative to the origin of the root window. + If the change in size of the window is coupled with a change in + position (x, y), then for bit-gravity the change in position of + each pixel is (-x, -y), and for win-gravity the change in position + of a child when its parent is so resized is (-x, -y). Note that + x:Static-Gravity still only takes effect when the width or height + of the window is changed, not when the window is moved. + + A bit-gravity of x:Forget-Gravity indicates that the window's + contents are always discarded after a size change, even if a + backing store or save under has been requested. The window is + tiled with its background and zero or more x:Expose events are + generated. If no background is defined, the existing screen + contents are not altered. Some X servers may also ignore the + specified bit-gravity and always generate x:Expose events. + + The contents and borders of inferiors are not affected by their + parent's bit-gravity. A server is permitted to ignore the + specified bit-gravity and use x:Forget-Gravity instead. + + A win-gravity of x:Unmap-Gravity is like x:North-West-Gravity (the + window is not moved), except the child is also unmapped when the + parent is resized, and an x:Unmap-Notify event is generated. + + - Attribute: x:CW-Backing-Store + Some implementations of the X server may choose to maintain the + contents of x:Input-Output windows. If the X server maintains the + contents of a window, the off-screen saved pixels are known as + backing store. The backing store advises the X server on what to + do with the contents of a window. The backing-store attribute can + be set to x:Not-Useful (default), x:When-Mapped, or x:Always. A + backing-store attribute of x:Not-Useful advises the X server that + maintaining contents is unnecessary, although some X + implementations may still choose to maintain contents and, + therefore, not generate x:Expose events. A backing-store + attribute of x:When-Mapped advises the X server that maintaining + contents of obscured regions when the window is mapped would be + beneficial. In this case, the server may generate an x:Expose + event when the window is created. A backing-store attribute of + x:Always advises the X server that maintaining contents even when + the window is unmapped would be beneficial. Even if the window is + larger than its parent, this is a request to the X server to + maintain complete contents, not just the region within the parent + window boundaries. While the X server maintains the window's + contents, x:Expose events normally are not generated, but the X + server may stop maintaining contents at any time. + + When the contents of obscured regions of a window are being + maintained, regions obscured by noninferior windows are included + in the destination of graphics requests (and source, when the + window is the source). However, regions obscured by inferior + windows are not included. + + - Attribute: x:CW-Backing-Planes + - Attribute: x:CW-Backing-Pixel + You can set backing planes to indicate (with bits set to 1) which + bit planes of an x:Input-Output window hold dynamic data that must + be preserved in backing store and during save unders. The default + value for the backing-planes attribute is all bits set to 1. You + can set backing pixel to specify what bits to use in planes not + covered by backing planes. The default value for the + backing-pixel attribute is all bits set to 0. The X server is + free to save only the specified bit planes in the backing store or + the save under and is free to regenerate the remaining planes with + the specified pixel value. Any extraneous bits in these values + (that is, those bits beyond the specified depth of the window) may + be simply ignored. If you request backing store or save unders, + you should use these members to minimize the amount of off-screen + memory required to store your window. + + - Attribute: x:CW-Override-Redirect + To control window placement or to add decoration, a window manager + often needs to intercept (redirect) any map or configure request. + Pop-up windows, however, often need to be mapped without a window + manager getting in the way. To control whether an x:Input-Output + or x:Input-Only window is to ignore these structure control + facilities, use the override-redirect flag. + + The override-redirect flag specifies whether map and configure + requests on this window should override a + x:Substructure-Redirect-Mask on the parent. You can set the + override-redirect flag to #t or #f (default). Window managers use + this information to avoid tampering with pop-up windows. + + - Attribute: x:CW-Save-Under + Some server implementations may preserve contents of + x:Input-Output windows under other x:Input-Output windows. This + is not the same as preserving the contents of a window for you. + You may get better visual appeal if transient windows (for + example, pop-up menus) request that the system preserve the screen + contents under them, so the temporarily obscured applications do + not have to repaint. + + You can set the save-under flag to True or False (default). If + save-under is True, the X server is advised that, when this window + is mapped, saving the contents of windows it obscures would be + beneficial. + + - Attribute: x:CW-Event-Mask + The event mask defines which events the client is interested in + for this x:Input-Output or x:Input-Only window (or, for some event + types, inferiors of this window). The event mask is the bitwise + inclusive OR of zero or more of the valid event mask bits. You + can specify that no maskable events are reported by setting + x:No-Event-Mask (default). + + The following table lists the event mask constants you can pass to + the event-mask argument and the circumstances in which you would + want to specify the event mask: + + Event Mask Circumstances + x:No-Event-Mask No events wanted + x:Key-Press-Mask Keyboard down events wanted + x:Key-Release-Mask Keyboard up events wanted + x:Button-Press-Mask Pointer button down events wanted + x:Button-Release-Mask Pointer button up events wanted + x:Enter-Window-Mask Pointer window entry events wanted + x:Leave-Window-Mask Pointer window leave events wanted + x:Pointer-Motion-Mask Pointer motion events wanted + x:Pointer-Motion-Hint-Mask If x:Pointer-Motion-Hint-Mask is + selected in combination with one or + more motion-masks, the X server is + free to send only one x:Motion-Notify + event (with the is_hint member of + the X:Pointer-Moved-Event structure + set to x:Notify-Hint) to the client + for the event window, until either + the key or button state changes, the + pointer leaves the event window, or + the client calls X:Query-Pointer or + X:Get-Motion-Events. The server + still may send x:Motion-Notify + events without is_hint set to + x:Notify-Hint. + x:Button1-Motion-Mask Pointer motion while button 1 down + x:Button2-Motion-Mask Pointer motion while button 2 down + x:Button3-Motion-Mask Pointer motion while button 3 down + x:Button4-Motion-Mask Pointer motion while button 4 down + x:Button5-Motion-Mask Pointer motion while button 5 down + x:Button-Motion-Mask Pointer motion while any button down + x:Keymap-State-Mask Keyboard state wanted at window + entry and focus in + x:Exposure-Mask Any exposure wanted + x:Visibility-Change-Mask Any change in visibility wanted + x:Structure-Notify-Mask Any change in window structure wanted + x:Resize-Redirect-Mask Redirect resize of this window + x:Substructure-Notify-Mask Substructure notification wanted + x:Substructure-Redirect-Mask Redirect structure requests on + children + x:Focus-Change-Mask Any change in input focus wanted + x:Property-Change-Mask Any change in property wanted + x:Colormap-Change-Mask Any change in colormap wanted + x:Owner-Grab-Button-Mask Automatic grabs should activate with + owner_events set to True + + - Attribute: x:CW-Dont-Propagate + The do-not-propagate-mask attribute defines which events should + not be propagated to ancestor windows when no client has the event + type selected in this x:Input-Output or x:Input-Only window. The + do-not-propagate-mask is the bitwise inclusive OR of zero or more + of the following masks: x:Key-Press, x:Key-Release, x:Button-Press, + x:Button-Release, x:Pointer-Motion, x:Button1Motion, + x:Button2Motion, x:Button3Motion, x:Button4Motion, + x:Button5Motion, and x:Button-Motion. You can specify that all + events are propagated by setting x:No-Event-Mask (default). + + - Attribute: x:CW-Colormap + The colormap attribute specifies which colormap best reflects the + true colors of the x:Input-Output window. The colormap must have + the same visual type as the window. X servers capable of + supporting multiple hardware colormaps can use this information, + and window managers can use it for calls to X:Install-Colormap. + You can set the colormap attribute to a colormap or to + x:Copy-From-Parent (default). + + If you set the colormap to x:Copy-From-Parent, the parent window's + colormap is copied and used by its child. However, the child + window must have the same visual type as the parent. The parent + window must not have a colormap of x:None. The colormap is copied + by sharing the colormap object between the child and parent, not + by making a complete copy of the colormap contents. Subsequent + changes to the parent window's colormap attribute do not affect + the child window. + + - Attribute: x:CW-Cursor + The cursor attribute specifies which cursor is to be used when the + pointer is in the x:Input-Output or x:Input-Only window. You can + set the cursor to a cursor or x:None (default). + + If you set the cursor to x:None, the parent's cursor is used when + the pointer is in the x:Input-Output or x:Input-Only window, and + any change in the parent's cursor will cause an immediate change + in the displayed cursor. On the root window, the default cursor + is restored. + + +File: Xlibscm.info, Node: Window Visibility, Next: Graphics Context, Prev: Window, Up: Top + +Window Visibility +***************** + +In X parlance, a window which is hidden even when not obscured by other +windows is "unmapped"; one which shows is "mapped". It is an +unfortunate name-collision with Scheme, and is ingrained in the +attribute names. + + - Function: x:map-window WINDOW + Maps the WINDOW and all of its subwindows that have had map + requests. Mapping a window that has an unmapped ancestor does not + display the window but marks it as eligible for display when the + ancestor becomes mapped. Such a window is called unviewable. + When all its ancestors are mapped, the window becomes viewable and + will be visible on the screen if it is not obscured by another + window. This function has no effect if the WINDOW is already + mapped. + + If the override-redirect of the window is False and if some other + client has selected x:Substructure-Redirect-Mask on the parent + window, then the X server generates a MapRequest event, and the + `x:map-window' function does not map the WINDOW. Otherwise, the + WINDOW is mapped, and the X server generates a MapNotify event. + + If the WINDOW becomes viewable and no earlier contents for it are + remembered, the X server tiles the WINDOW with its background. If + the window's background is undefined, the existing screen contents + are not altered, and the X server generates zero or more x:Expose + events. If backing-store was maintained while the WINDOW was + unmapped, no x:Expose events are generated. If backing-store will + now be maintained, a full-window exposure is always generated. + Otherwise, only visible regions may be reported. Similar tiling + and exposure take place for any newly viewable inferiors. + + If the window is an Input-Output window, `x:map-window' generates + x:Expose events on each Input-Output window that it causes to be + displayed. If the client maps and paints the window and if the + client begins processing events, the window is painted twice. To + avoid this, first ask for x:Expose events and then map the window, + so the client processes input events as usual. The event list + will include x:Expose for each window that has appeared on the + screen. The client's normal response to an x:Expose event should + be to repaint the window. This method usually leads to simpler + programs and to proper interaction with window managers. + + - Function: x:map-raised WINDOW + This procedure is similar to `x:map-window' in that it maps the + WINDOW and all of its subwindows that have had map requests. + However, it also raises the specified WINDOW to the top of the + stack. + + - Function: x:map-subwindows WINDOW + Maps all subwindows of a specified WINDOW in top-to-bottom + stacking order. The X server generates x:Expose events on each + newly displayed window. This may be much more efficient than + mapping many windows one at a time because the server needs to + perform much of the work only once, for all of the windows, rather + than for each window. + + - Function: x:unmap-window WINDOW + Unmaps the specified WINDOW and causes the X server to generate an + UnmapNotify event. If the specified WINDOW is already unmapped, + `x:unmap-window' has no effect. Normal exposure processing on + formerly obscured windows is performed. Any child window will no + longer be visible until another map call is made on the parent. + In other words, the subwindows are still mapped but are not + visible until the parent is mapped. Unmapping a WINDOW will + generate x:Expose events on windows that were formerly obscured by + it. + + - Function: x:unmap-subwindows WINDOW + Unmaps all subwindows for the specified WINDOW in bottom-to-top + stacking order. It causes the X server to generate an UnmapNotify + event on each subwindow and x:Expose events on formerly obscured + windows. Using this function is much more efficient than + unmapping multiple windows one at a time because the server needs + to perform much of the work only once, for all of the windows, + rather than for each window. + + +File: Xlibscm.info, Node: Graphics Context, Next: Cursor, Prev: Window Visibility, Up: Top + +Graphics Context +**************** + +Most attributes of graphics operations are stored in "GC"s. These +include line width, line style, plane mask, foreground, background, +tile, stipple, clipping region, end style, join style, and so on. +Graphics operations (for example, drawing lines) use these values to +determine the actual drawing operation. + + - Function: x:create-gc DRAWABLE FIELD-NAME VALUE ... + Creates and returns graphics context. The graphics context can be + used with any destination drawable having the same root and depth + as the specified DRAWABLE. + + - Function: x:gc-set! GRAPHICS-CONTEXT FIELD-NAME VALUE ... + Changes the components specified by FIELD-NAMEs for the specified + GRAPHICS-CONTEXT. The restrictions are the same as for + `x:create-gc'. The order in which components are verified and + altered is server dependent. If an error occurs, a subset of the + components may have been altered. + + - Function: x:copy-gc-fields! GCONTEXT-SRC GCONTEXT-DST FIELD-NAME ... + Copies the components specified by FIELD-NAMEs from GCONTEXT-SRC + to GCONTEXT-DST. GCONTEXT-SRC and GCONTEXT-DST must have the same + root and depth. + + - Function: x:gc-ref GRAPHICS-CONTEXT FIELD-NAME ... + Returns a list of the components specified by FIELD-NAMEs ... + from the specified GRAPHICS-CONTEXT. + +GC Attributes +============= + +Both `x:create-gc' and `x:change-gc' take one argument followed by +pairs of arguments, where the first is one of the property-name symbols +(or its top-level value) listed below; and the second is the value to +associate with that property. + + - Attribute: x:GC-Function + The function attributes of a GC are used when you update a section + of a drawable (the destination) with bits from somewhere else (the + source). The function in a GC defines how the new destination + bits are to be computed from the source bits and the old + destination bits. x:G-Xcopy is typically the most useful because + it will work on a color display, but special applications may use + other functions, particularly in concert with particular planes of + a color display. The 16 functions are: + + + x:G-Xclear 0 + x:G-Xand (AND src dst) + x:G-Xand-Reverse (AND src (NOT dst)) + x:G-Xcopy src + x:G-Xand-Inverted (AND (NOT src) dst) + x:G-Xnoop dst + x:G-Xxor (XOR src dst) + x:G-Xor (OR src dst) + x:G-Xnor (AND (NOT src) (NOT dst)) + x:G-Xequiv (XOR (NOT src) dst) + x:G-Xinvert (NOT dst) + x:G-Xor-Reverse (OR src (NOT dst)) + x:G-Xcopy-Inverted (NOT src) + x:G-Xor-Inverted (OR (NOT src) dst) + x:G-Xnand (OR (NOT src) (NOT dst)) + x:G-Xset 1 + + - Attribute: x:GC-Plane-Mask + Many graphics operations depend on either pixel values or planes + in a GC. The planes attribute is an integer which specifies which + planes of the destination are to be modified, one bit per plane. + A monochrome display has only one plane and will be the least + significant bit of the integer. As planes are added to the + display hardware, they will occupy more significant bits in the + plane mask. + + In graphics operations, given a source and destination pixel, the + result is computed bitwise on corresponding bits of the pixels. + That is, a Boolean operation is performed in each bit plane. The + plane-mask restricts the operation to a subset of planes. + `x:All-Planes' can be used to refer to all planes of the screen + simultaneously. The result is computed by the following: + + (OR (AND (FUNC src dst) plane-mask) (AND dst (NOT plane-mask))) + + Range checking is not performed on a plane-mask value. It is + simply truncated to the appropriate number of bits. + + - Attribute: x:GC-Foreground + - Attribute: x:GC-Background + Range checking is not performed on the values for foreground or + background. They are simply truncated to the appropriate number of + bits. + + Note that foreground and background are not initialized to any + values likely to be useful in a window. + + - Attribute: x:GC-Line-Width + The line-width is measured in pixels and either can be greater + than or equal to one (wide line) or can be the special value zero + (thin line). + + Thin lines (zero line-width) are one-pixel-wide lines drawn using + an unspecified, device-dependent algorithm. There are only two + constraints on this algorithm. + + * If a line is drawn unclipped from [x1,y1] to [x2,y2] and if + another line is drawn unclipped from [x1+dx,y1+dy] to + [x2+dx,y2+dy], a point [x,y] is touched by drawing the first + line if and only if the point [x+dx,y+dy] is touched by + drawing the second line. + + * The effective set of points comprising a line cannot be + affected by clipping. That is, a point is touched in a + clipped line if and only if the point lies inside the + clipping region and the point would be touched by the line + when drawn unclipped. + + A wide line drawn from [x1,y1] to [x2,y2] always draws the same + pixels as a wide line drawn from [x2,y2] to [x1,y1], not counting + cap-style and join-style. It is recommended that this property be + true for thin lines, but this is not required. A line-width of + zero may differ from a line-width of one in which pixels are + drawn. This permits the use of many manufacturers' line drawing + hardware, which may run many times faster than the more precisely + specified wide lines. + + In general, drawing a thin line will be faster than drawing a wide + line of width one. However, because of their different drawing + algorithms, thin lines may not mix well aesthetically with wide + lines. If it is desirable to obtain precise and uniform results + across all displays, a client should always use a line-width of + one rather than a linewidth of zero. + + - Attribute: x:GC-Line-Style + The line-style defines which sections of a line are drawn: + + x:Line-Solid + The full path of the line is drawn. + + x:Line-Double-Dash + The full path of the line is drawn, but the even dashes are + filled differently from the odd dashes (see fill-style) with + x:Cap-Butt style used where even and odd dashes meet. + + x:Line-On-Off-Dash + Only the even dashes are drawn, and cap-style applies to all + internal ends of the individual dashes, except x:Cap-Not-Last + is treated as x:Cap-Butt. + + - Attribute: x:GC-Cap-Style + The cap-style defines how the endpoints of a path are drawn: + + x:Cap-Not-Last + This is equivalent to x:Cap-Butt except that for a line-width + of zero the final endpoint is not drawn. + + x:Cap-Butt + The line is square at the endpoint (perpendicular to the + slope of the line) with no projection beyond. + + x:Cap-Round + The line has a circular arc with the diameter equal to the + line-width, centered on the endpoint. (This is equivalent to + x:Cap-Butt for line-width of zero). + + x:Cap-Projecting + The line is square at the end, but the path continues beyond + the endpoint for a distance equal to half the line-width. + (This is equivalent to x:Cap-Butt for line-width of zero). + + - Attribute: x:GC-Join-Style + The join-style defines how corners are drawn for wide lines: + + x:Join-Miter + The outer edges of two lines extend to meet at an angle. + However, if the angle is less than 11 degrees, then a + x:Join-Bevel join-style is used instead. + + x:Join-Round + The corner is a circular arc with the diameter equal to the + line-width, centered on the x:Join-point. + + x:Join-Bevel + The corner has x:Cap-Butt endpoint styles with the triangular + notch filled. + + - Attribute: x:GC-Fill-Style + The fill-style defines the contents of the source for line, text, + and fill requests. For all text and fill requests (for example, + X:Draw-Text, X:Fill-Rectangle, X:Fill-Polygon, and X:Fill-Arc); + for line requests with linestyle x:Line-Solid (for example, + X:Draw-Line, X:Draw-Segments, X:Draw-Rectangle, X:Draw-Arc); and + for the even dashes for line requests with line-style + x:Line-On-Off-Dash or x:Line-Double-Dash, the following apply: + + x:Fill-Solid + Foreground + + x:Fill-Tiled + Tile + + x:Fill-Opaque-Stippled + A tile with the same width and height as stipple, but with + background everywhere stipple has a zero and with foreground + everywhere stipple has a one + + x:Fill-Stippled + Foreground masked by stipple + + When drawing lines with line-style x:Line-Double-Dash, the odd + dashes are controlled by the fill-style in the following manner: + + x:Fill-Solid + Background + + x:Fill-Tiled + Same as for even dashes + + x:Fill-Opaque-Stippled + Same as for even dashes + + x:Fill-Stippled + Background masked by stipple + + - Attribute: x:GC-Fill-Rule + The fill-rule defines what pixels are inside (drawn) for paths + given in X:Fill-Polygon requests and can be set to x:Even-Odd-Rule + or x:Winding-Rule. + + x:Even-Odd-Rule + A point is inside if an infinite ray with the point as origin + crosses the path an odd number of times. + + x:Winding-Rule + A point is inside if an infinite ray with the point as origin + crosses an unequal number of clockwise and counterclockwise + directed path segments. + + A clockwise directed path segment is one that crosses the ray from + left to right as observed from the point. A counterclockwise + segment is one that crosses the ray from right to left as observed + from the point. The case where a directed line segment is + coincident with the ray is uninteresting because you can simply + choose a different ray that is not coincident with a segment. + + For both x:Even-Odd-Rule and x:Winding-Rule, a point is infinitely + small, and the path is an infinitely thin line. A pixel is inside + if the center point of the pixel is inside and the center point is + not on the boundary. If the center point is on the boundary, the + pixel is inside if and only if the polygon interior is immediately + to its right (x increasing direction). Pixels with centers on a + horizontal edge are a special case and are inside if and only if + the polygon interior is immediately below (y increasing direction). + + - Attribute: x:GC-Tile + - Attribute: x:GC-Stipple + The tile/stipple represents an infinite two-dimensional plane, + with the tile/stipple replicated in all dimensions. + + The tile pixmap must have the same root and depth as the GC, or an + error results. The stipple pixmap must have depth one and must + have the same root as the GC, or an error results. For stipple + operations where the fill-style is x:Fill-Stippled but not + x:Fill-Opaque-Stippled, the stipple pattern is tiled in a single + plane and acts as an additional clip mask to be ANDed with the + clip-mask. Although some sizes may be faster to use than others, + any size pixmap can be used for tiling or stippling. + + - Attribute: x:GC-Tile-Stip-X-Origin + - Attribute: x:GC-Tile-Stip-Y-Origin + When the tile/stipple plane is superimposed on a drawable for use + in a graphics operation, the upper-left corner of some instance of + the tile/stipple is at the coordinates within the drawable + specified by the tile/stipple origin. The tile/stipple origin is + interpreted relative to the origin of whatever destination + drawable is specified in a graphics request. + + - Attribute: x:GC-Font + The font to be used for drawing text. + + - Attribute: x:GC-Subwindow-Mode + You can set the subwindow-mode to x:Clip-By-Children or + x:Include-Inferiors. + x:Clip-By-Children + Both source and destination windows are additionally clipped + by all viewable Input-Output children. + + x:Include-Inferiors + Neither source nor destination window is clipped by + inferiors. This will result in including subwindow contents + in the source and drawing through subwindow boundaries of the + destination. The use of `x:Include-Inferiors' on a window of + one depth with mapped inferiors of differing depth is not + illegal, but the semantics are undefined by the core protocol. + + - Attribute: x:GC-Graphics-Exposures + The graphics-exposure flag controls x:Graphics-Expose event + generation for X:Copy-Area and X:Copy-Plane requests (and any + similar requests defined by extensions). + + - Attribute: x:GC-Clip-X-Origin + - Attribute: x:GC-Clip-Y-Origin + The clip-mask origin is interpreted relative to the origin of + whatever destination drawable is specified in a graphics request. + + - Attribute: x:GC-Clip-Mask + The clip-mask restricts writes to the destination drawable. If the + clip-mask is set to a pixmap, it must have depth one and have the + same root as the GC, or an error results. If clip-mask is set to + "x:None", the pixels are always drawn regardless of the clip + origin. The clip-mask also can be set by calling `X:Set-Region'. + Only pixels where the clip-mask has a bit set to 1 are drawn. + Pixels are not drawn outside the area covered by the clip-mask or + where the clip-mask has a bit set to 0. The clip-mask affects all + graphics requests. The clip-mask does not clip sources. The + clip-mask origin is interpreted relative to the origin of whatever + destination drawable is specified in a graphics request. + + - Attribute: x:GC-Dash-Offset + Defines the phase of the pattern, specifying how many pixels into + the dash-list the pattern should actually begin in any single + graphics request. Dashing is continuous through path elements + combined with a join-style but is reset to the dash-offset between + each sequence of joined lines. + + The unit of measure for dashes is the same for the ordinary + coordinate system. Ideally, a dash length is measured along the + slope of the line, but implementations are only required to match + this ideal for horizontal and vertical lines. Failing the ideal + semantics, it is suggested that the length be measured along the + major axis of the line. The major axis is defined as the x axis + for lines drawn at an angle of between -45 and +45 degrees or + between 135 and 225 degrees from the x axis. For all other lines, + the major axis is the y axis. + + - Attribute: x:GC-Dash-List + There must be at least one element in the specified DASH-LIST. + The initial and alternating elements (second, fourth, and so on) + of the DASH-LIST are the even dashes, and the others are the odd + dashes. Each element specifies a dash length in pixels. All of + the elements must be nonzero. Specifying an odd-length list is + equivalent to specifying the same list concatenated with itself to + produce an even-length list. + + - Attribute: x:GC-Arc-Mode + The arc-mode controls filling in the X:Fill-Arcs function and can + be set to x:Arc-Pie-Slice or x:Arc-Chord. + x:Arc-Pie-Slice + The arcs are pie-slice filled. + + x:Arc-Chord + The arcs are chord filled. + + +File: Xlibscm.info, Node: Cursor, Next: Colormap, Prev: Graphics Context, Up: Top + +Cursor +****** + + - Function: x:create-cursor DISPLAY SHAPE + 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. + + 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 X:Recolor-Cursor). The names of all cursor shapes + are defined with the prefix XC: in `x11.scm'. + + - Function: x:create-cursor SOURCE-FONT SOURCE-CHAR MASK-FONT + MASK-CHAR FGC BGC + Creates a cursor from the source and mask bitmaps obtained from the + specified font glyphs. The integer SOURCE-CHAR must be a defined + glyph in SOURCE-FONT. The integer MASK-CHAR must be a defined + glyph in MASK-FONT. The origins of the SOURCE-CHAR and MASK-CHAR + 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. + + - Function: x:create-cursor SOURCE-FONT SOURCE-CHAR #F #F FGC BGC + If MASK-FONT and MASK-CHAR are #f, all pixels of the source are + displayed. + + - Function: x:create-cursor SOURCE-PIXMAP MASK-PIXMAP FGC BGC ORIGIN + MASK-PIXMAP must be the same size as the pixmap defined by the + SOURCE-PIXMAP argument. The foreground and background RGB values + must be specified using FOREGROUND-COLOR and BACKGROUND-COLOR, + even if the X server only has a x:Static-Gray or x:Gray-Scale + screen. The hotspot must be a point within the SOURCE-PIXMAP. + + `X:Create-Cursor' creates and returns a cursor. 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 must have depth one but can have any root. The + MASK-PIXMAP defines the shape of the cursor. The pixels set to 1 + in MASK-PIXMAP define which source pixels are displayed, and the + pixels set to 0 define which pixels are ignored. + + - Function: x:create-cursor SOURCE-PIXMAP #F FGC BGC ORIGIN + If MASK-PIXMAP is #f, all pixels of the source are displayed. + + +File: Xlibscm.info, Node: Colormap, Next: Rendering, Prev: Cursor, Up: Top + +Colormap +******** + +A "colormap" maps pixel values to "RGB" color space values. + + - Function: x:create-colormap WINDOW VISUAL ALLOC-POLICY + WINDOW specifies the window on whose screen you want to create a + colormap. VISUAL specifies a visual type supported on the screen. + ALLOC-POLICY Specifies the colormap entries to be allocated. You + can pass `X:Alloc-None' or `X:Alloc-All'. + + The `X:Create-Colormap' function creates and returns a colormap of + the specified VISUAL type for the screen on which WINDOW resides. + Note that WINDOW is used only to determine the screen. + + `X:Gray-Scale' + `X:Pseudo-Color' + `X:Direct-Color' + The initial values of the colormap entries are undefined. + + `X:Static-Gray' + `X:Static-Color' + `X:True-Color' + The entries have defined values, but those values are + specific to VISUAL and are not defined by X. The + ALLOC-POLICY must be `X:Alloc-None'. + + For the other visual classes, if ALLOC-POLICY is `X:Alloc-None', + the colormap initially has no allocated entries, and clients can + allocate them. + + If ALLOC-POLICY is `X:Alloc-All', the entire colormap is allocated + writable. The initial values of all allocated entries are + undefined. + + `X:Gray-Scale' + `X:Pseudo-Color' + The effect is as if an `XAllocColorCells' call returned all + pixel values from zero to N - 1, where N is the colormap + entries value in VISUAL. + + `X:Direct-Color' + The effect is as if an `XAllocColorPlanes' call returned a + pixel value of zero and red_mask, green_mask, and blue_mask + values containing the same bits as the corresponding masks in + the specified visual. + + +To create a new colormap when the allocation out of a previously shared +colormap has failed because of resource exhaustion, use: + + - Function: x:copy-colormap-and-free COLORMAP + Creates and returns a colormap of the same visual type and for the + same screen as the specified COLORMAP. It also moves all of the + client's existing allocation from the specified COLORMAP to the + new colormap with their color values intact and their read-only or + writable characteristics intact and frees those entries in the + specified colormap. Color values in other entries in the new + colormap are undefined. If the specified colormap was created by + the client with alloc set to `X:Alloc-All', the new colormap is + also created with `X:Alloc-All', all color values for all entries + are copied from the specified COLORMAP, and then all entries in + the specified COLORMAP are freed. If the specified COLORMAP was + not created by the client with `X:Alloc-All', the allocations to + be moved are all those pixels and planes that have been allocated + by the client and that have not been freed since they were + allocated. + + +A "colormap" maps pixel values to elements of the "RGB" datatype. An +RGB is a list or vector of 3 integers, describing the red, green, and +blue intensities respectively. The integers are in the range 0 - 65535. + + - Function: x:alloc-colormap-cells COLORMAP NCOLORS NPLANES + - Function: x:alloc-colormap-cells COLORMAP NCOLORS NPLANES CONTIGUOUS? + The `X:Alloc-Color-Cells' function allocates read/write color + cells. The number of colors, NCOLORS must be positive and the + number of planes, NPLANES nonnegative. If NCOLORS and nplanes are + requested, then NCOLORS pixels and nplane plane masks are + returned. No mask will have any bits set to 1 in common with any + other mask or with any of the pixels. By ORing together each + pixel with zero or more masks, NCOLORS * 2^NPLANES distinct pixels + can be produced. All of these are allocated writable by the + request. + + `x:Gray-Scale' + `x:Pseudo-Color' + Each mask has exactly one bit set to 1. If CONTIGUOUS? is + non-false and if all masks are ORed together, a single + contiguous set of bits set to 1 is formed. + + `x:Direct-Color' + Each mask has exactly three bits set to 1. If CONTIGUOUS? is + non-false and if all masks are ORed together, three + contiguous sets of bits set to 1 (one within each pixel + subfield) is formed. + + The RGB values of the allocated entries are undefined. + `X:Alloc-Color-Cells' returns a list of two uniform arrays if it + succeeded or #f if it failed. The first array has the pixels + allocated and the second has the plane-masks. + + - Function: x:alloc-colormap-cells COLORMAP NCOLORS RGB + - Function: x:alloc-colormap-cells COLORMAP NCOLORS RGB CONTIGUOUS? + The specified NCOLORS must be positive; and RGB a list or vector + of 3 nonnegative integers. If NCOLORS colors, NREDS reds, NGREENS + greens, and NBLUES blues are requested, NCOLORS pixels are + returned; and the masks have NREDS, NGREENS, and NBLUES bits set + to 1, respectively. If CONTIGUOUS? is non-false, each mask will + have a contiguous set of bits set to 1. No mask will have any + bits set to 1 in common with any other mask or with any of the + pixels. + + Each mask will lie within the corresponding pixel subfield. By + ORing together subsets of masks with each pixel value, NCOLORS * + 2(NREDS+NGREENS+NBLUES) distinct pixel values can be produced. + All of these are allocated by the request. However, in the + colormap, there are only NCOLORS * 2^NREDS independent red + entries, NCOLORS * 2^NGREENS independent green entries, and + NCOLORS * 2^NBLUES independent blue entries. + + `X:Alloc-Color-Cells' returns a list if it succeeded or #f if it + failed. The first element of the list has an array of the pixels + allocated. The second, third, and fourth elements are the red, + green, and blue plane-masks. + + - Function: x:free-colormap-cells COLORMAP PIXELS PLANES + - Function: x:free-colormap-cells COLORMAP PIXELS + Frees the cells represented by pixels whose values are in the + PIXELS unsigned-integer uniform-vector. The PLANES argument + should not have any bits set to 1 in common with any of the + pixels. The set of all pixels is produced by ORing together + subsets of the PLANES argument with the pixels. The request frees + all of these pixels that were allocated by the client. Note that + freeing an individual pixel obtained from `X:Alloc-Colormap-Cells' + with a planes argument may not actually allow it to be reused + until all of its related pixels are also freed. Similarly, a + read-only entry is not actually freed until it has been freed by + all clients, and if a client allocates the same read-only entry + multiple times, it must free the entry that many times before the + entry is actually freed. + + All specified pixels that are allocated by the client in the + COLORMAP are freed, even if one or more pixels produce an error. + It is an error if a specified pixel is not allocated by the client + (that is, is unallocated or is only allocated by another client) + or if the colormap was created with all entries writable (by + passing `x:Alloc-All' to `X:Create-Colormap'). If more than one + pixel is in error, the one that gets reported is arbitrary. + + - Function: x:colormap-find-color COLORMAP RGB + RGB is a list or vector of 3 integers, describing the red, green, + and blue intensities respectively; or an integer `#xrrggbb', + packing red, green and blue intensities in the range 0 - 255. + + - Function: x:colormap-find-color COLORMAP COLOR-NAME + The case-insensitive string COLOR_NAME specifies the name of a + color (for example, `red') + + `X:Colormap-Find-Color' allocates a read-only colormap entry + corresponding to the closest RGB value supported by the hardware. + `X:Colormap-Find-Color' returns the pixel value of the color + closest to the specified RGB or COLOR_NAME elements supported by + the hardware, if successful; otherwise `X:Colormap-Find-Color' + returns #f. + + Multiple clients that request the same effective RGB value can be + assigned the same read-only entry, thus allowing entries to be + shared. When the last client deallocates a shared cell, it is + deallocated. + + + - Function: x:color-ref COLORMAP PIXEL + Returns a list of 3 integers, describing the red, green, and blue + intensities respectively of the COLORMAP entry of the cell indexed + by PIXEL. + + The integer PIXEL must be a valid index into COLORMAP. + + - Function: X:Color-Set! COLORMAP PIXEL RGB + RGB is a list or vector of 3 integers, describing the red, green, + and blue intensities respectively; or an integer `#xrrggbb', + packing red, green and blue intensities in the range 0 - 255. + + - Function: X:Color-Set! COLORMAP PIXEL COLOR-NAME + The case-insensitive string COLOR_NAME specifies the name of a + color (for example, `red') + + The integer PIXEL must be a valid index into COLORMAP. + + `X:Color-Set!' changes the COLORMAP entry of the read/write cell + indexed by PIXEL. If the COLORMAP is an installed map for its + screen, the changes are visible immediately. + + + - Function: x:install-colormap COLORMAP + Installs the specified COLORMAP for its associated screen. All + windows associated with COLORMAP immediately display with true + colors. A colormap is associated with a window when the window is + created or its attributes changed. + + If the specified colormap is not already an installed colormap, + the X server generates a ColormapNotify event on each window that + has that colormap. + + + +File: Xlibscm.info, Node: Rendering, Next: Event, Prev: Colormap, Up: Top + +Rendering +********* + + - Function: x:flush DISPLAY + - Function: x:flush WINDOW + Flushes the output buffer. Some client applications need not use + this function because the output buffer is automatically flushed + as needed by calls to X:Pending, X:Next-Event, and X:Window-Event. + Events generated by the server may be enqueued into the library's + event queue. + + - Function: x:flush GC + Forces sending of GC component changes. + + Xlib usually defers sending changes to the components of a GC to + the server until a graphics function is actually called with that + GC. This permits batching of component changes into a single + server request. In some circumstances, however, it may be + necessary for the client to explicitly force sending the changes + to the server. An example might be when a protocol extension uses + the GC indirectly, in such a way that the extension interface + cannot know what GC will be used. + + - Function: x:clear-area WINDOW (X-POS Y-POS) (WIDTH HEIGHT) EXPOSE? + Paints a rectangular area in the specified WINDOW according to the + specified dimensions with the WINDOW's background pixel or pixmap. + The subwindow-mode effectively is `x:Clip-By-Children'. If width + is zero, it is replaced with the current width of the WINDOW minus + x. If height is zero, it is replaced with the current height of + the WINDOW minus y. If the WINDOW has a defined background tile, + the rectangle clipped by any children is filled with this tile. + If the WINDOW has background x:None, the contents of the WINDOW + are not changed. In either case, if EXPOSE? is True, one or more + x:Expose events are generated for regions of the rectangle that + are either visible or are being retained in a backing store. If + you specify a WINDOW whose class is x:Input-Only, an error results. + + - Function: x:fill-rectangle WINDOW GCONTEXT POSITION SIZE + +Draw Strings +============ + + - Function: x:draw-string DRAWABLE GC POSITION STRING + POSITION specifies coordinates relative to the origin of DRAWABLE + of the origin of the first character to be drawn. + + `x:draw-string' draws the characters of STRING, starting at + POSITION. + + - Function: x:image-string DRAWABLE GC POSITION STRING + POSITION specifies coordinates relative to the origin of DRAWABLE + of the origin of the first character to be drawn. + + `x:image-string' draws the characters *and background* of STRING, + starting at POSITION. + +Draw Shapes +=========== + + - Function: x:draw-points DRAWABLE GC POSITION ... + POSITION ... specifies coordinates of the point to be drawn. + + - Function: x:draw-points DRAWABLE GC X Y ... + (X, Y) ... specifies coordinates of the point to be drawn. + + - Function: x:draw-points DRAWABLE GC POINT-ARRAY + POINT-ARRAY is a uniform short array of rank 2, whose rightmost + index spans a range of 2. + + The `X:Draw-Points' procedure uses the foreground pixel and + function components of the GC to draw points into DRAWABLE at the + positions (relative to the origin of DRAWABLE) specified. + + `X:Draw-Points' uses these GC components: function, planemask, + foreground, subwindow-mode, clip-x-origin, clip-y-origin, and + clip-mask. + + - Function: x:draw-segments DRAWABLE GC POS1 POS2 ... + POS1, POS2, ... specify coordinates to be connected by segments. + + - Function: x:draw-segments DRAWABLE GC X1 Y1 X2 Y2 ... + (X1, Y1), (X2, Y2) ... specify coordinates to be connected by + segments. + + - Function: x:draw-segments DRAWABLE GC POINT-ARRAY + POINT-ARRAY is a uniform short array of rank 2, whose rightmost + index spans a range of 2. + + The `X:Draw-Segments' procedure uses the components of the + specified GC to draw multiple unconnected lines between disjoint + adjacent pair of points passed as arguments. It draws the + segments in order and does not perform joining at coincident + endpoints. For any given line, `X:Draw-Segments' does not draw a + pixel more than once. If thin (zero line-width) segments + intersect, the intersecting pixels are drawn multiple times. If + wide segments intersect, the intersecting pixels are drawn only + once, as though the entire PolyLine protocol request were a + single, filled shape. `X:Draw-Segments' treats all coordinates as + relative to the origin of DRAWABLE. + + `X:Draw-Segments' uses these GC components: function, plane-mask, + line-width, line-style, cap-style, fill-style, subwindow-mode, + clip-x-origin, clip-y-origin, and clip-mask, join-style. It also + use these GC mode-dependent components: foreground, background, + tile, stipple, tilestipple-x-origin, tile-stipple-y-origin, + dash-offset, and dash-list. + + - Function: x:draw-lines DRAWABLE GC POS1 POS2 ... + POS1, POS2, ... specify coordinates to be connected by lines. + + - Function: x:draw-lines DRAWABLE GC X1 Y1 X2 Y2 ... + (X1, Y1), (X2, Y2) ... specify coordinates to be connected by + lines. + + - Function: x:draw-lines DRAWABLE GC POINT-ARRAY + POINT-ARRAY is a uniform short array of rank 2, whose rightmost + index spans a range of 2. + + The `X:Draw-Lines' procedure uses the components of the specified + GC to draw lines between each adjacent pair of points passed as + arguments. It draws the lines in order. The lines join correctly + at all intermediate points, and if the first and last points + coincide, the first and last lines also join correctly. For any + given line, `X:Draw-Lines' does not draw a pixel more than once. + If thin (zero line-width) lines intersect, the intersecting pixels + are drawn multiple times. If wide lines intersect, the + intersecting pixels are drawn only once, as though the entire + PolyLine protocol request were a single, filled shape. + `X:Draw-Lines' treats all coordinates as relative to the origin of + DRAWABLE. + + `X:Draw-Lines' uses these GC components: function, plane-mask, + line-width, line-style, cap-style, fill-style, subwindow-mode, + clip-x-origin, clip-y-origin, and clip-mask, join-style. It also + use these GC mode-dependent components: foreground, background, + tile, stipple, tilestipple-x-origin, tile-stipple-y-origin, + dash-offset, and dash-list. + + - Function: x:fill-polygon DRAWABLE GC POS1 POS2 ... + POS1, POS2, ... specify coordinates of the border path. + + - Function: x:fill-polygon DRAWABLE GC X1 Y1 X2 Y2 ... + (X1, Y1), (X2, Y2) ... specify coordinates of the border path. + + - Function: x:fill-polygon DRAWABLE GC POINT-ARRAY + POINT-ARRAY is a uniform short array of rank 2, whose rightmost + index spans a range of 2. + + The path is closed automatically if the last point in the list or + POINT-ARRAY does not coincide with the first point. + + The `X:Fill-Polygon' procedure uses the components of the specified + GC to fill the region closed by the specified path. + `X:Fill-Polygon' does not draw a pixel of the region more than + once. `X:Fill-Polygon' treats all coordinates as relative to the + origin of DRAWABLE. + + `X:Fill-Polygon' uses these GC components: function, planemask, + fill-style, fill-rule, subwindow-mode, clip-x-origin, + clip-y-origin, and clip-mask. It also use these GC mode-dependent + components: foreground, background, tile, stipple, + tile-stipple-x-origin, and tile-stipple-y-origin. + + +File: Xlibscm.info, Node: Event, Next: Index, Prev: Rendering, Up: Top + +Event +***** + +These three status routines always return immediately if there are +events already in the queue. + + - Function: x:q-length DISPLAY + Returns the length of the event queue for the connected DISPLAY. + Note that there may be more events that have not been read into the + queue yet (see X:Events-Queued). + + - Function: x:pending DISPLAY + Returns the number of events that have been received from the X + server but have not been removed from the event queue. + + - Function: x:events-queued DISPLAY + Returns the number of events already in the queue if the number is + nonzero. If there are no events in the queue, `X:Events-Queued' + attempts to read more events out of the application's connection + without flushing the output buffer and returns the number read. + +Both of these routines return an object of type "event". + + - Function: x:next-event DISPLAY + Removes and returns the first event from the event queue. If the + event queue is empty, `X:Next-Event' flushes the output buffer and + blocks until an event is received. + + - Function: x:peek-event DISPLAY + Returns the first event from the event queue, but it does not + remove the event from the queue. If the queue is empty, + `X:Peek-Event' flushes the output buffer and blocks until an event + is received. + +Each event object has fields dependent on its sub-type. + + - Function: x:event-ref EVENT FIELD-NAME + window The window on which EVENT was generated + and is referred to as the event window. + root is the event window's root window. + subwindow If the source window is an inferior of + the event window, the SUBWINDOW is the + child of the event window that is the + source window or the child of the event + window that is an ancestor of the + source window. Otherwise, `None'. + X-event:type An integer: X:KEY-PRESS, X:KEY-RELEASE, + X:BUTTON-PRESS, X:BUTTON-RELEASE, + X:MOTION-NOTIFY, X:ENTER-NOTIFY, + X:LEAVE-NOTIFY, X:FOCUS-IN, + X:FOCUS-OUT, X:KEYMAP-NOTIFY, X:EXPOSE, + X:GRAPHICS-EXPOSE, X:NO-EXPOSE, + X:VISIBILITY-NOTIFY, X:CREATE-NOTIFY, + X:DESTROY-NOTIFY, X:UNMAP-NOTIFY, + X:MAP-NOTIFY, X:MAP-REQUEST, + X:REPARENT-NOTIFY, X:CONFIGURE-NOTIFY, + X:CONFIGURE-REQUEST, X:GRAVITY-NOTIFY, + X:RESIZE-REQUEST, X:CIRCULATE-NOTIFY, + X:CIRCULATE-REQUEST, X:PROPERTY-NOTIFY, + X:SELECTION-CLEAR, X:SELECTION-REQUEST, + X:SELECTION-NOTIFY, X:COLORMAP-NOTIFY, + X:CLIENT-MESSAGE, or X:MAPPING-NOTIFY. + X-event:serial The serial number of the protocol + request that generated the EVENT. + X-event:send-event Boolean that indicates whether the + event was sent by a different client. + X-event:time The time when the EVENT was generated + expressed in milliseconds. + X-event:x + X-event:y For window entry/exit events the X and + Y members are set to the coordinates of + the pointer position in the event + window. This position is always the + pointer's final position, not its + initial position. If the event window + is on the same screen as the root + window, X and Y are the pointer + coordinates relative to the event + window's origin. Otherwise, X and Y + are set to zero. + + For expose events The X and Y members + are set to the coordinates relative to + the drawable's origin and indicate the + upper-left corner of the rectangle. + + For configure, create, gravity, and + reparent events the X and Y members are + set to the window's coordinates + relative to the parent window's origin + and indicate the position of the + upper-left outside corner of the + created window. + X-event:x-root + X-event:y-root The pointer's coordinates relative to + the root window's origin at the time of + the EVENT. + X-event:state For keyboard, pointer and window + entry/exit events, the state member is + set to indicate the logical state of + the pointer buttons and modifier keys + just prior to the EVENT, which is the + bitwise inclusive OR of one or more of + the button or modifier key masks: + X:BUTTON1-MASK, X:BUTTON2-MASK, + X:BUTTON3-MASK, X:BUTTON4-MASK, + X:BUTTON5-MASK, X:SHIFT-MASK, + X:LOCK-MASK, X:CONTROL-MASK, + X:MOD1-MASK, X:MOD2-MASK, X:MOD3-MASK, + X:MOD4-MASK, and X:MOD5-MASK. + + For visibility events, the state of the + window's visibility: + X:VISIBILITY-UNOBSCURED, + X:VISIBILITY-PARTIALLY-OBSCURED, or + X:VISIBILITY-FULLY-OBSCURED. + + For colormap events, indicates whether + the colormap is installed or + uninstalled: x:Colormap-Installed or + x:Colormap-Uninstalled. + + For property events, indicates whether + the property was changed to a new value + or deleted: x:Property-New-Value or + x:Property-Delete. + X-event:keycode An integer that represents a physical + key on the keyboard. + X-event:same-screen Indicates whether the event window is + on the same screen as the root window. + If #t, the event and root windows are + on the same screen. If #f, the event + and root windows are not on the same + screen. + X-event:button The pointer button that changed state; + can be the X:BUTTON1, X:BUTTON2, + X:BUTTON3, X:BUTTON4, or X:BUTTON5 + value. + X-event:is-hint Detail of motion-notify events: + X:NOTIFY-NORMAL or X:NOTIFY-HINT. + X-event:mode Indicates whether the EVENT is a normal + event, pseudo-motion event when a grab + activates, or a pseudo-motion event + when a grab deactivates: + X:NOTIFY-NORMAL, X:NOTIFY-GRAB, or + X:NOTIFY-UNGRAB. + X-event:detail Indicates the notification detail: + X:NOTIFY-ANCESTOR, X:NOTIFY-VIRTUAL, + X:NOTIFY-INFERIOR, X:NOTIFY-NONLINEAR, + or X:NOTIFY-NONLINEAR-VIRTUAL. + X-event:focus If the event window is the focus window + or an inferior of the focus window, #t; + otherwise #f. + X-event:width + X-event:height The size (extent) of the rectangle. + X-event:count For mapping events is the number of + keycodes altered. + + For expose events Is the number of + Expose or GraphicsExpose events that + are to follow. If count is zero, no + more Expose events follow for this + window. However, if count is nonzero, + at least that number of Expose events + (and possibly more) follow for this + window. Simple applications that do + not want to optimize redisplay by + distinguishing between subareas of its + window can just ignore all Expose + events with nonzero counts and perform + full redisplays on events with zero + counts. + X-event:major-code The major_code member is set to the + graphics request initiated by the + client and can be either X_CopyArea or + X_CopyPlane. If it is X_CopyArea, a + call to XCopyArea initiated the + request. If it is X_CopyPlane, a call + to XCopyPlane initiated the request. + X-event:minor-code Not currently used. + X-event:border-width For configure events, the width of the + window's border, in pixels. + X-event:override-redirect The override-redirect attribute of the + window. Window manager clients + normally should ignore this window if + it is #t. + X-event:from-configure True if the event was generated as a + result of a resizing of the window's + parent when the window itself had a + win-gravity of x:Unmap-Gravity. + X-event:value-mask Indicates which components were + specified in the ConfigureWindow + protocol request. The corresponding + values are reported as given in the + request. The remaining values are + filled in from the current geometry of + the window, except in the case of above + (sibling) and detail (stack-mode), + which are reported as None and Above, + respectively, if they are not given in + the request. + X-event:place The window's position after the restack + occurs and is either x:Place-On-Top or + x:Place-On-Bottom. If it is + x:Place-On-Top, the window is now on + top of all siblings. If it is + x:Place-On-Bottom, the window is now + below all siblings. + X-event:new indicate whether the colormap for the + specified window was changed or + installed or uninstalled and can be + True or False. If it is True, the + colormap was changed. If it is False, + the colormap was installed or + uninstalled. + X-event:format Is 8, 16, or 32 and specifies whether + the data should be viewed as a list of + bytes, shorts, or longs + X-event:request Indicates the kind of mapping change + that occurred and can be + X:MAPPING-MODIFIER, X:MAPPING-KEYBOARD, + or X:MAPPING-POINTER. If it is + X:MAPPING-MODIFIER, the modifier + mapping was changed. If it is + X:MAPPING-KEYBOARD, the keyboard + mapping was changed. If it is + X:MAPPING-POINTER, the pointer button + mapping was changed. + X-event:first-keycode The X-event:first-keycode is set only + if the X-event:request was set to + X:MAPPING-KEYBOARD. The number in + X-event:first-keycode represents the + first number in the range of the + altered mapping, and X-event:count + represents the number of keycodes + altered. + + +File: Xlibscm.info, Node: Index, Prev: Event, Up: Top + +Procedure and Macro Index +************************* + +This is an alphabetical list of all the procedures and macros in +Xlibscm. + +* Menu: + +* hostname:number.screen-number: Display. +* x:alloc-colormap-cells: Colormap. +* x:clear-area: Rendering. +* x:close <1>: Window. +* x:close: Display. +* x:color-ref: Colormap. +* X:Color-Set!: Colormap. +* x:colormap-find-color: Colormap. +* x:copy-colormap-and-free: Colormap. +* x:copy-gc-fields!: Graphics Context. +* x:create-colormap: Colormap. +* x:create-cursor: Cursor. +* x:create-gc: Graphics Context. +* x:create-pixmap: Window. +* x:create-window: Window. +* x:default-colormap: Screen. +* x:default-depths: Screen. +* x:default-gc: Screen. +* x:default-screen: Screen. +* x:default-visual: Screen. +* x:draw-lines: Rendering. +* x:draw-points: Rendering. +* x:draw-segments: Rendering. +* x:draw-string: Rendering. +* x:event-ref: Event. +* x:events-queued: Event. +* x:fill-polygon: Rendering. +* x:fill-rectangle: Rendering. +* x:flush: Rendering. +* x:free-colormap-cells: Colormap. +* x:gc-ref: Graphics Context. +* x:gc-set!: Graphics Context. +* x:image-string: Rendering. +* x:install-colormap: Colormap. +* x:make-visual: Screen. +* x:map-raised: Window Visibility. +* x:map-subwindows: Window Visibility. +* x:map-window: Window Visibility. +* x:next-event: Event. +* x:open-display: Display. +* x:peek-event: Event. +* x:pending: Event. +* x:protocol-version: Display. +* x:q-length: Event. +* x:root-window: Screen. +* x:screen-black: Screen. +* x:screen-cells: Screen. +* x:screen-count: Screen. +* x:screen-depth: Screen. +* x:screen-dimensions: Screen. +* x:screen-size: Screen. +* x:screen-white: Screen. +* x:server-vendor: Display. +* x:unmap-subwindows: Window Visibility. +* x:unmap-window: Window Visibility. +* x:vendor-release: Display. +* x:window-geometry: Window. +* x:window-set!: Window. + +Variable Index +************** + +This is an alphabetical list of all the global variables in Xlibscm. + +* Menu: + +* x:CW-Back-Pixel: Window. +* x:CW-Back-Pixmap: Window. +* x:CW-Backing-Pixel: Window. +* x:CW-Backing-Planes: Window. +* x:CW-Backing-Store: Window. +* x:CW-Bit-Gravity: Window. +* x:CW-Border-Pixel: Window. +* x:CW-Border-Pixmap: Window. +* x:CW-Colormap: Window. +* x:CW-Cursor: Window. +* x:CW-Dont-Propagate: Window. +* x:CW-Event-Mask: Window. +* x:CW-Override-Redirect: Window. +* x:CW-Save-Under: Window. +* x:CW-Win-Gravity: Window. +* x:GC-Arc-Mode: Graphics Context. +* x:GC-Background: Graphics Context. +* x:GC-Cap-Style: Graphics Context. +* x:GC-Clip-Mask: Graphics Context. +* x:GC-Clip-X-Origin: Graphics Context. +* x:GC-Clip-Y-Origin: Graphics Context. +* x:GC-Dash-List: Graphics Context. +* x:GC-Dash-Offset: Graphics Context. +* x:GC-Fill-Rule: Graphics Context. +* x:GC-Fill-Style: Graphics Context. +* x:GC-Font: Graphics Context. +* x:GC-Foreground: Graphics Context. +* x:GC-Function: Graphics Context. +* x:GC-Graphics-Exposures: Graphics Context. +* x:GC-Join-Style: Graphics Context. +* x:GC-Line-Style: Graphics Context. +* x:GC-Line-Width: Graphics Context. +* x:GC-Plane-Mask: Graphics Context. +* x:GC-Stipple: Graphics Context. +* x:GC-Subwindow-Mode: Graphics Context. +* x:GC-Tile: Graphics Context. +* x:GC-Tile-Stip-X-Origin: Graphics Context. +* x:GC-Tile-Stip-Y-Origin: Graphics Context. + +This is an alphabetical list of concepts introduced in this manual. + +Concept Index +************* + +* Menu: + +* colormap: Colormap. +* cursor: Cursor. +* depth: Screen. +* drawable: Window. +* Drawable: Window. +* map: Window Visibility. +* mapped: Window Visibility. +* none: Graphics Context. +* RGB: Colormap. +* unmap: Window Visibility. +* unmapped: Window Visibility. +* Visual: Screen. +* visual: Screen. +* X: Xlibscm. +* x:None: Graphics Context. +* Xlib: Xlibscm. + + + +Tag Table: +Node: Top241 +Node: Xlibscm1366 +Node: Display4144 +Node: Screen6776 +Node: Window10533 +Node: Window Visibility30412 +Node: Graphics Context34697 +Node: Cursor50412 +Node: Colormap52915 +Node: Rendering62691 +Node: Event70247 +Node: Index86684 + +End Tag Table |