diff options
-rw-r--r-- | Init5d9.scm | 2 | ||||
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | Xlibscm.html | 3675 | ||||
-rw-r--r-- | build.scm | 36 | ||||
-rw-r--r-- | continue.h | 2 | ||||
-rw-r--r-- | debian/changelog | 271 | ||||
-rw-r--r-- | debian/control | 15 | ||||
-rw-r--r-- | debian/copyright | 16 | ||||
-rw-r--r-- | debian/doc-base | 19 | ||||
-rw-r--r-- | debian/postinst | 19 | ||||
-rw-r--r-- | debian/prerm | 16 | ||||
-rw-r--r-- | debian/require.scm.debian | 2 | ||||
-rwxr-xr-x | debian/rules | 168 | ||||
-rw-r--r-- | grtest.scm | 82 | ||||
-rw-r--r-- | mkimpcat.scm | 17 | ||||
-rw-r--r-- | scm.1 | 10 | ||||
-rw-r--r-- | setjump.h | 4 | ||||
-rw-r--r-- | turtle | 20 | ||||
-rw-r--r-- | turtlegr.c | 1303 | ||||
-rw-r--r-- | version.txi | 2 | ||||
-rwxr-xr-x | xgen.scm | 2 |
21 files changed, 5648 insertions, 35 deletions
diff --git a/Init5d9.scm b/Init5d9.scm index a95fada..269c99e 100644 --- a/Init5d9.scm +++ b/Init5d9.scm @@ -1046,7 +1046,7 @@ (require 'debug) (apply breakpoint args)) (lambda () (set! error nerror)))))) nerror)) - + (define (user-interrupt . args) (define cep (current-error-port)) (newline cep) @@ -112,7 +112,7 @@ scmflags: echo "#ifndef IMPLINIT" > newflags.h echo "#define IMPLINIT \"$(IMPLINIT)\"" >> newflags.h echo "#endif" >> newflags.h - echo "#define CAUTIOUS" >> newflags.h + echo "/*#define CAUTIOUS*/" >> newflags.h -if (diff newflags.h scmflags.h) then rm newflags.h; \ else mv newflags.h scmflags.h; fi .c.o: diff --git a/Xlibscm.html b/Xlibscm.html new file mode 100644 index 0000000..6833e60 --- /dev/null +++ b/Xlibscm.html @@ -0,0 +1,3675 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html40/loose.dtd"> +<HTML> +<!-- Created on May, 6 2004 by texi2html 1.66 --> +<!-- +Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author) + Karl Berry <karl@freefriends.org> + Olaf Bachmann <obachman@mathematik.uni-kl.de> + and many others. +Maintained by: Many creative people <dev@texi2html.cvshome.org> +Send bugs and suggestions to <users@texi2html.cvshome.org> + +--> +<HEAD> +<TITLE>Xlibscm</TITLE> + +<META NAME="description" CONTENT="Xlibscm"> +<META NAME="keywords" CONTENT="Xlibscm"> +<META NAME="resource-type" CONTENT="document"> +<META NAME="distribution" CONTENT="global"> +<META NAME="Generator" CONTENT="texi2html 1.66"> + +</HEAD> + +<BODY LANG="en" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"> + +<A NAME="SEC_Top"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H1>Xlibscm</H1> + +<P> + +This manual documents the X - SCM Language X Interface. The most recent +information about SCM can be found on SCM's <EM>WWW</EM> home page: +</P> +<P> + +<center> + <A HREF="http://swissnet.ai.mit.edu/~jaffer/SCM">http://swissnet.ai.mit.edu/~jaffer/SCM</A> +</center> +</P> +<P> + +Copyright (C) 1990-1999 Free Software Foundation +</P> +<P> + +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. +</P> +<P> + +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. +</P> +<P> + +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. +</P> +<P> + +</P> +<TABLE BORDER="0" CELLSPACING="0"> +<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="Xlibscm.html#SEC1">1. Xlibscm</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> +<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> +<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="Xlibscm.html#SEC3">3. Drawables</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> +<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="Xlibscm.html#SEC7">4. Graphics Context</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> +<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="Xlibscm.html#SEC9">5. Cursor</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> +<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="Xlibscm.html#SEC10">6. Colormap</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> +<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="Xlibscm.html#SEC11">7. Rendering</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> +<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="Xlibscm.html#SEC14">8. Images</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> +<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="Xlibscm.html#SEC15">9. Event</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> +<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="Xlibscm.html#SEC16">Procedure and Macro Index</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> +</TABLE> +<P> + +<HR SIZE=1> +<A NAME="SEC1"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC2"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC2"> >> </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<A NAME="Xlibscm"></A> +<H1> 1. Xlibscm </H1> +<!--docid::SEC1::--> +<P> + +<EM>Xlibscm</EM> is a SCM interface to <EM>X</EM>. +<A NAME="IDX1"></A> +The +<A HREF="http://www.x.org/"> +X Window System +</A> +is a network-transparent window system that was +designed at MIT. +<A HREF="scm_toc.html"> +SCM +</A> +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 <CODE>(require +'Xlib)</CODE>. +<A NAME="IDX2"></A> +</P> +<P> + +Much of this X documentation is dervied from: +</P> +<P> + +<center> + Xlib - C Language X Interface +</center> +<center> + X Consortium Standard +</center> +<center> + X Version 11, Release 6.3 +</center> +</P> +<P> + +The X Window System is a trademark of X Consortium, Inc. +</P> +<P> + +TekHVC is a trademark of Tektronix, Inc. +</P> +<P> + +Copyright (C) 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X +Consortium +</P> +<P> + +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: +</P> +<P> + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. +</P> +<P> + +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. +</P> +<P> + +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. +</P> +<P> + +Copyright (C) 1985, 1986, 1987, 1988, 1989, 1990, 1991 by +Digital Equipment Corporation +</P> +<P> + +Portions Copyright (C) 1990, 1991 by Tektronix, Inc. +</P> +<P> + +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. +</P> +<P> + +<A NAME="Display and Screens"></A> +<HR SIZE="6"> +<A NAME="SEC2"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC1"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC3"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC1"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC3"> >> </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H1> 2. Display and Screens </H1> +<!--docid::SEC2::--> +<P> + +<A NAME="IDX3"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:open-display</B> <I>display-name</I> +<DD><VAR>display-name</VAR> 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 +<VAR>DISPLAY</VAR> environment variable. +<P> + +The encoding and interpretation of <VAR>display-name</VAR> is +implementation-dependent. On POSIX-conformant systems, the +<VAR>display-name</VAR> or <VAR>DISPLAY</VAR> environment variable can be a string +in the format: +</P> +<P> + +<A NAME="IDX4"></A> +</P> +<DL> +<DT><U>Special Form:</U> <B>hostname:number.screen-number</B> +<DD><P> + +<VAR>hostname</VAR> specifies the name of the host machine on which the +display is physically attached. Follow the <VAR>hostname</VAR> with either a +single colon (:) or a double colon (::). +</P> +<P> + +<VAR>number</VAR> 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. +</P> +<P> + +<VAR>screen-number</VAR> specifies the screen to be used on that server. +Multiple screens can be controlled by a single X server. The +<VAR>screen-number</VAR> sets an internal variable that can be accessed by +using the x:default-screen procedure. +</P> +</DL> +</DL> +<P> + +<A NAME="IDX5"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:close</B> <I>display</I> +<DD><VAR>display</VAR> specifies the connection to the X server. +<P> + +The <CODE>x:close</CODE> function closes the connection to the X server for +the <VAR>display</VAR> 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 +<CODE>x:set-close-down-mode</CODE>). Therefore, these windows, resource IDs, +and other resources should not be used again or an error will be +generated. Before exiting, you should call <VAR>x:close-display</VAR> or +<VAR>x:flush</VAR> explicitly so that any pending errors are reported. +</P> +</DL> +<P> + +<A NAME="IDX6"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:protocol-version</B> <I>display</I> +<DD>Returns cons of the major version number (11) of the X protocol +associated with the connected <VAR>display</VAR> and the minor protocol +revision number of the X server. +</DL> +<P> + +<A NAME="IDX7"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:server-vendor</B> <I>display</I> +<DD>Returns a string that provides some identification of the owner of the X +server implementation. The contents of the string are +implementation-dependent. +</DL> +<P> + +<A NAME="IDX8"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:vendor-release</B> <I>display</I> +<DD>Returns a number related to a vendor's release of the X server. +</DL> +<P> + +A display consists of one or more <EM>Screen</EM>s. Each screen has a +<EM>root-window</EM>, <EM>default-graphics-context</EM>, and <EM>colormap</EM>. +</P> +<P> + +<A NAME="IDX9"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:screen-count</B> <I>display</I> +<DD>Returns the number of available screens. +</DL> +<P> + +<A NAME="IDX10"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:default-screen</B> <I>display</I> +<DD>Returns the default screen number specified by the <CODE>x:open-display</CODE> +function. Use this screen number in applications which will use only a +single screen. +</DL> +<P> + +<A NAME="IDX11"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:root-window</B> <I>display screen-number</I> +<DD><A NAME="IDX12"></A> +<DT><U>Function:</U> <B>x:root-window</B> <I>display</I> +<DD><VAR>screen-number</VAR>, if givien, specifies the appropriate screen number +on the host server. Otherwise the default-screen for <VAR>display</VAR> is +used. +<P> + +Returns the root window for the specified <VAR>screen-number</VAR>. Use +<CODE>x:root-window</CODE> for functions that need a drawable of a particular +screen or for creating top-level windows. +</P> +<P> + +<A NAME="IDX13"></A> +<DT><U>Function:</U> <B>x:root-window</B> <I>window</I> +<DD>Returns the root window for the specified <VAR>window</VAR>'s screen. +</P> +</DL> +<P> + +<A NAME="IDX14"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:default-colormap</B> <I>display screen-number</I> +<DD><A NAME="IDX15"></A> +<DT><U>Function:</U> <B>x:default-colormap</B> <I>display</I> +<DD><A NAME="IDX16"></A> +<DT><U>Function:</U> <B>x:default-colormap</B> <I>window</I> +<DD>Returns the default colormap of the specified screen. +</DL> +<P> + +<A NAME="IDX17"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:default-ccc</B> <I>display screen-number</I> +<DD><A NAME="IDX18"></A> +<DT><U>Function:</U> <B>x:default-ccc</B> <I>display</I> +<DD><A NAME="IDX19"></A> +<DT><U>Function:</U> <B>x:default-ccc</B> <I>window</I> +<DD>Returns the default Color-Conversion-Context (ccc) of the specified +screen. +</DL> +<P> + +<A NAME="IDX20"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:default-gc</B> <I>display screen-number</I> +<DD><A NAME="IDX21"></A> +<DT><U>Function:</U> <B>x:default-gc</B> <I>display</I> +<DD><A NAME="IDX22"></A> +<DT><U>Function:</U> <B>x:default-gc</B> <I>window</I> +<DD>Returns the default graphics-context of the specified screen. +</DL> +<P> + +<A NAME="IDX23"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:screen-depths</B> <I>display screen-number</I> +<DD><A NAME="IDX24"></A> +<DT><U>Function:</U> <B>x:screen-depths</B> <I>display</I> +<DD><A NAME="IDX25"></A> +<DT><U>Function:</U> <B>x:screen-depths</B> <I>window</I> +<DD>Returns an array of depths supported by the specified screen. +</DL> +<P> + +The <EM>Visual</EM> type describes possible colormap depths and +arrangements. +</P> +<P> + +<A NAME="IDX26"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:default-visual</B> <I>display screen-number</I> +<DD><A NAME="IDX27"></A> +<DT><U>Function:</U> <B>x:default-visual</B> <I>display</I> +<DD><A NAME="IDX28"></A> +<DT><U>Function:</U> <B>x:default-visual</B> <I>window</I> +<DD>Returns the default Visual type for the specified screen. +<P> + +<A NAME="IDX29"></A> +<A NAME="IDX30"></A> +</P> +</DL> +<P> + +<A NAME="IDX31"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:make-visual</B> <I>display depth class</I> +<DD><A NAME="IDX32"></A> +<DT><U>Function:</U> <B>x:make-visual</B> <I>window depth class</I> +<DD><P> + +The integer <VAR>depth</VAR> specifies the number of bits per pixel. +The <VAR>class</VAR> argument specifies one of the possible +visual classes for a screen: +<UL> +<LI>x:Static-Gray +<LI>x:Static-Color +<LI>x:True-Color +<LI>x:Gray-Scale +<LI>x:Pseudo-Color +<LI>x:Direct-Color +</UL> +<P> + +<CODE>X:make-visual</CODE> returns a visual type for the screen specified by +<VAR>display</VAR> or <VAR>window</VAR> if successful; #f if not. +</P> +</DL> +<P> + +<A NAME="IDX33"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:visual-class</B> <I>visual</I> +<DD><A NAME="IDX34"></A> +<DT><U>Function:</U> <B>x:visual-class</B> <I>screen</I> +<DD><A NAME="IDX35"></A> +<DT><U>Function:</U> <B>x:visual-class</B> <I>display</I> +<DD>Returns the (integer) visual class of its argument. +</DL> +<P> + +<A NAME="IDX36"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:visual-geometry</B> <I>visual</I> +<DD><A NAME="IDX37"></A> +<DT><U>Function:</U> <B>x:visual-geometry</B> <I>screen</I> +<DD><A NAME="IDX38"></A> +<DT><U>Function:</U> <B>x:visual-geometry</B> <I>display</I> +<DD>Returns a list of the: +<UL> +<LI>red_mask +<LI>green_mask +<LI>blue_mask +<LI>colormap_size +</UL> +</DL> +<P> + +<A NAME="IDX39"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:screen-cells</B> <I>display screen-number</I> +<DD><A NAME="IDX40"></A> +<DT><U>Function:</U> <B>x:screen-cells</B> <I>display</I> +<DD><A NAME="IDX41"></A> +<DT><U>Function:</U> <B>x:screen-cells</B> <I>window</I> +<DD>Returns the number of entries in the default colormap. +</DL> +<P> + +<A NAME="IDX42"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:screen-depth</B> <I>display screen-number</I> +<DD>Returns the depth of the root window of the specified screen. +<A NAME="IDX43"></A> +<DT><U>Function:</U> <B>x:screen-depth</B> <I>display</I> +<DD><A NAME="IDX44"></A> +<DT><U>Function:</U> <B>x:screen-depth</B> <I>window</I> +<DD><A NAME="IDX45"></A> +<DT><U>Function:</U> <B>x:screen-depth</B> <I>visual</I> +<DD>Returns the depth of argument. +<P> + +<A NAME="IDX46"></A> +The <EM>depth</EM> of a window or pixmap is the number of bits per pixel it has. +The <EM>depth</EM> of a graphics context is the depth of the drawables it can be +used in conjunction with graphics output. +</P> +</DL> +<P> + +<A NAME="IDX47"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:screen-size</B> <I>display screen-number</I> +<DD><A NAME="IDX48"></A> +<DT><U>Function:</U> <B>x:screen-size</B> <I>display</I> +<DD><A NAME="IDX49"></A> +<DT><U>Function:</U> <B>x:screen-size</B> <I>window</I> +<DD>Returns a list of integer height and width of the screen in pixels. +</DL> +<P> + +<A NAME="IDX50"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:screen-dimensions</B> <I>display screen-number</I> +<DD><A NAME="IDX51"></A> +<DT><U>Function:</U> <B>x:screen-dimensions</B> <I>display</I> +<DD><A NAME="IDX52"></A> +<DT><U>Function:</U> <B>x:screen-dimensions</B> <I>window</I> +<DD>Returns a list of integer height and width of the screen in millimeters. +</DL> +<P> + +<A NAME="IDX53"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:screen-white</B> <I>display screen-number</I> +<DD><A NAME="IDX54"></A> +<DT><U>Function:</U> <B>x:screen-white</B> <I>display</I> +<DD><A NAME="IDX55"></A> +<DT><U>Function:</U> <B>x:screen-white</B> <I>window</I> +<DD>Returns the white pixel value of the specified screen. +</DL> +<P> + +<A NAME="IDX56"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:screen-black</B> <I>display screen-number</I> +<DD><A NAME="IDX57"></A> +<DT><U>Function:</U> <B>x:screen-black</B> <I>display</I> +<DD><A NAME="IDX58"></A> +<DT><U>Function:</U> <B>x:screen-black</B> <I>window</I> +<DD>Returns the black pixel value of the specified screen. +</DL> +<P> + +<A NAME="Drawables"></A> +<HR SIZE="6"> +<A NAME="SEC3"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC2"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC4"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC2"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC7"> >> </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H1> 3. Drawables </H1> +<!--docid::SEC3::--> +<P> + +<A NAME="IDX59"></A> +<A NAME="IDX60"></A> +A <EM>Drawable</EM> is either a window or pixmap. +</P> +<P> + +<TABLE BORDER="0" CELLSPACING="0"> +<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="Xlibscm.html#SEC4">3.1 Windows and Pixmaps</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> +<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> +<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="Xlibscm.html#SEC6">3.3 Window Properties and Visibility</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP"></TD></TR> +</TABLE> +<P> + +<A NAME="Windows and Pixmaps"></A> +<HR SIZE="6"> +<A NAME="SEC4"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC3"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC5"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC3"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC3"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC7"> >> </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H2> 3.1 Windows and Pixmaps </H2> +<!--docid::SEC4::--> +<P> + +<A NAME="IDX61"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:create-window</B> <I>window position size border-width depth class visual field-name value <small>...</small></I> +<DD>Creates and returns an unmapped Input-Output subwindow for a specified +parent <VAR>window</VAR> 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 <VAR>window</VAR> is clipped. The <VAR>border-width</VAR> for an +x:Input-Only window must be zero. +<P> + +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. +</P> +<P> + +<VAR>Class</VAR> can be x:Input-Output, x:Input-Only, or x:Copy-From-Parent. +For class x:Input-Output, the <VAR>visual</VAR> type and <VAR>depth</VAR> must be +a combination supported for the screen. The <VAR>depth</VAR> 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 <VAR>depth</VAR> must be zero, +and the <VAR>visual</VAR> must be one supported by the screen. +</P> +<P> + +The returned window will have the attributes specified by +<VAR>field-name</VAR>s and <VAR>value</VAR>. +</P> +<P> + +<A NAME="IDX62"></A> +<DT><U>Function:</U> <B>x:create-window</B> <I>window position size border-width border background</I> +<DD>The returned window inherits its depth, class, and visual from its +parent. All other window attributes, except <VAR>background</VAR> and +<VAR>border</VAR>, have their default values. +</P> +</DL> +<P> + +<A NAME="IDX63"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:create-pixmap</B> <I>drawable size depth</I> +<DD><A NAME="IDX64"></A> +<DT><U>Function:</U> <B>x:create-pixmap</B> <I>display size depth</I> +<DD><P> + +<VAR>size</VAR> is a list, vector, or pair of nonzero integers specifying the width +and height desired in the new pixmap. +</P> +<P> + +<VAR>x:create-pixmap</VAR> returns a new pixmap of the width, height, and +<VAR>depth</VAR> specified. It is valid to pass an x:Input-Only window to the +drawable argument. The <VAR>depth</VAR> argument must be one of the depths +supported by the screen of the specified <VAR>drawable</VAR>. +</P> +</DL> +<P> + +<A NAME="IDX65"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:close</B> <I>window</I> +<DD>Destroys the specified <VAR>window</VAR> 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 +<VAR>window</VAR> 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 +<VAR>window</VAR> you specified is a root window, an error is signaled. +Destroying a mapped <VAR>window</VAR> will generate x:Expose events on other +windows that were obscured by the window being destroyed. +</DL> +<P> + +<A NAME="IDX66"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:close</B> <I>pixmap</I> +<DD>Deletes the association between the <VAR>pixmap</VAR> and its storage. The X +server frees the pixmap storage when there are no references to it. +</DL> +<P> + +<A NAME="IDX67"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:window-geometry</B> <I>drawable</I> +<DD>Returns a list of: +<P> + +</P> +<DL COMPACT> +<DT>coordinates +<DD><CODE>list</CODE> of x and y coordinates that define the location of the +<VAR>drawable</VAR>. For a window, these coordinates specify the upper-left +outer corner relative to its parent's origin. For pixmaps, these +coordinates are always zero. +<DT>size +<DD><CODE>list</CODE> of the <VAR>drawable</VAR>'s dimensions (width and height). For +a window, these dimensions specify the inside size, not including the +border. +<DT>border-width +<DD>The border width in pixels. If the <VAR>drawable</VAR> is a pixmap, this is +zero. +<DT>depth +<DD>The depth of the <VAR>drawable</VAR> (bits per pixel for the object). +</DL> +</DL> +<P> + +<A NAME="IDX68"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:window-geometry-set!</B> <I>window field-name value <small>...</small></I> +<DD>Changes the <EM>Configuration</EM> components specified by +<VAR>field-name</VAR>s for the specified <VAR>window</VAR>. +</DL> +<P> + +These are the attributes settable by <CODE>x:window-geometry-set!</CODE>. +That these attributes are encoded by small integers -- just like those +of the next section. Be warned therefore that confusion of attribute +names will likely not signal errors, just cause mysterious behavior. +</P> +<P> + +<A NAME="IDX69"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:CWX</B> +<DD><A NAME="IDX70"></A> +<DT><U>Attribute:</U> <B>x:CWY</B> +<DD><A NAME="IDX71"></A> +<DT><U>Attribute:</U> <B>x:CW-Width</B> +<DD><A NAME="IDX72"></A> +<DT><U>Attribute:</U> <B>x:CW-Height</B> +<DD>The x:CWX and x:CYY members are used to set the window's x and y +coordinates, which are relative to the parent's origin and indicate the +position of the upper-left outer corner of the window. The x:CW-Width +and x:CW-Height members are used to set the inside size of the window, +not including the border, and must be nonzero. Attempts to configure a +root window have no effect. +<P> + +If a window's size actually changes, the window's subwindows move +according to their window gravity. Depending on the window's bit +gravity, the contents of the window also may be moved +</P> +</DL> +<P> + +<A NAME="IDX73"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:CW-Border-Width</B> +<DD>The integer x:CW-Border-Width is used to set the width of the border in +pixels. Note that setting just the border width leaves the outer-left +corner of the window in a fixed position but moves the absolute position +of the window's origin. It is an error to set the border-width +attribute of an InputOnly window nonzero. +</DL> +<P> + +<A NAME="IDX74"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:CW-Sibling</B> +<DD>The sibling member is used to set the sibling window for stacking +operations. +</DL> +<P> + +<A NAME="IDX75"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:CW-Stack-Mode</B> +<DD>The x:CW-Stack-Mode member is used to set how the window is to be +restacked and can be set to x:Above, x:Below, x:Top-If, x:Bottom-If, or +x:Opposite. +</DL> +<P> + +If a sibling and a stack-mode are specified, the window is restacked as +follows: +</P> +<P> + +</P> +<DL COMPACT> +<DT><CODE>x:Above</CODE> +<DD>The window is placed just above the sibling. +<DT><CODE>x:Below</CODE> +<DD>The window is placed just below the sibling. +<DT><CODE>x:Top-If</CODE> +<DD>If the sibling occludes the window, the window is placed at the top of +the stack. +<DT><CODE>x:Bottom-If</CODE> +<DD>If the window occludes the sibling, the window is placed at the bottom +of the stack. +<DT><CODE>x:Opposite</CODE> +<DD>If the sibling occludes the window, the window is placed at the top of +the stack. If the window occludes the sibling, the window is placed at +the bottom of the stack. +</DL> +<P> + +If a stack-mode is specified but no sibling is specified, the window +is restacked as follows: +</P> +<P> + +</P> +<DL COMPACT> +<DT><CODE>x:Above</CODE> +<DD>The window is placed at the top of the stack. +<DT><CODE>x:Below</CODE> +<DD>The window is placed at the bottom of the stack. +<DT><CODE>x:Top-If</CODE> +<DD>If any sibling occludes the window, the window is placed at the top of +the stack. +<DT><CODE>x:Bottom-If</CODE> +<DD>If the window occludes any sibling, the window is placed at the bottom +of the stack. +<DT><CODE>x:Opposite</CODE> +<DD>If any sibling occludes the window, the window is placed at the top of +the stack. If the window occludes any sibling, the window is placed at +the bottom of the stack. +</DL> +<P> + +<A NAME="Window Attributes"></A> +<HR SIZE="6"> +<A NAME="SEC5"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC4"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC6"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC3"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC3"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC7"> >> </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H2> 3.2 Window Attributes </H2> +<!--docid::SEC5::--> +<P> + +<A NAME="IDX76"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:window-set!</B> <I>window field-name value <small>...</small></I> +<DD>Changes the components specified by <VAR>field-name</VAR>s for the specified +<VAR>window</VAR>. The restrictions are the same as for +<CODE>x:create-window</CODE>. 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. +</DL> +<P> + +The <CODE>x:create-window</CODE> and <CODE>x:window-set!</CODE> 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. +</P> +<P> + +<A NAME="IDX77"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:CW-Back-Pixmap</B> +<DD>Sets the background pixmap of the <VAR>window</VAR> 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. +</DL> +<P> + +<A NAME="IDX78"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:CW-Back-Pixel</B> +<DD>Sets the background of the <VAR>window</VAR> to the specified pixel value. +Changing the background does not cause the <VAR>window</VAR> contents to be +changed. It is an error to perform this operation on an x:Input-Only +window. +</DL> +<P> + +<A NAME="IDX79"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:CW-Border-Pixmap</B> +<DD>Sets the border pixmap of the <VAR>window</VAR> 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 <VAR>window</VAR>. +</DL> +<P> + +<A NAME="IDX80"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:CW-Border-Pixel</B> +<DD>Sets the border of the <VAR>window</VAR> to the pixel <VAR>value</VAR>. It is an +error to perform this operation on an x:Input-Only window. +</DL> +<P> + +<A NAME="IDX81"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:CW-Bit-Gravity</B> +<DD><A NAME="IDX82"></A> +<DT><U>Attribute:</U> <B>x:CW-Win-Gravity</B> +<DD>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. +<P> + +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: +</P> +<P> + +</P> +<TABLE> +<TR><TD>Gravity Direction</TD> +</TD><TD> Coordinates +</TR> +<TR><TD>x:North-West-Gravity</TD> +</TD><TD> (0, 0) +</TR> +<TR><TD>x:North-Gravity</TD> +</TD><TD> (Width/2, 0) +</TR> +<TR><TD>x:North-East-Gravity</TD> +</TD><TD> (Width, 0) +</TR> +<TR><TD>x:West-Gravity</TD> +</TD><TD> (0, Height/2) +</TR> +<TR><TD>x:Center-Gravity</TD> +</TD><TD> (Width/2, Height/2) +</TR> +<TR><TD>x:East-Gravity</TD> +</TD><TD> (Width, Height/2) +</TR> +<TR><TD>x:South-West-Gravity</TD> +</TD><TD> (0, Height) +</TR> +<TR><TD>x:South-Gravity</TD> +</TD><TD> (Width/2, Height) +</TR> +<TR><TD>x:South-East-Gravity</TD> +</TD><TD> (Width, Height) +</TR></TABLE> +<P> + +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). +</P> +<P> + +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. +</P> +<P> + +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. +</P> +<P> + +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. +</P> +<P> + +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. +</P> +</DL> +<P> + +<A NAME="IDX83"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:CW-Backing-Store</B> +<DD>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. +<P> + +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. +</P> +</DL> +<P> + +<A NAME="IDX84"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:CW-Backing-Planes</B> +<DD><A NAME="IDX85"></A> +<DT><U>Attribute:</U> <B>x:CW-Backing-Pixel</B> +<DD>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. +</DL> +<P> + +<A NAME="IDX86"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:CW-Override-Redirect</B> +<DD>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. +<P> + +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. +</P> +</DL> +<P> + +<A NAME="IDX87"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:CW-Save-Under</B> +<DD>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. +<P> + +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. +</P> +</DL> +<P> + +<A NAME="IDX88"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:CW-Event-Mask</B> +<DD>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). +<P> + +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: +</P> +<P> + +</P> +<TABLE> +<TR><TD>Event Mask</TD> +</TD><TD> Circumstances +</TR> +<TR><TD>x:No-Event-Mask</TD> +</TD><TD> No events wanted +</TR> +<TR><TD>x:Key-Press-Mask</TD> +</TD><TD> Keyboard down events wanted +</TR> +<TR><TD>x:Key-Release-Mask</TD> +</TD><TD> Keyboard up events wanted +</TR> +<TR><TD>x:Button-Press-Mask</TD> +</TD><TD> Pointer button down events wanted +</TR> +<TR><TD>x:Button-Release-Mask</TD> +</TD><TD> Pointer button up events wanted +</TR> +<TR><TD>x:Enter-Window-Mask</TD> +</TD><TD> Pointer window entry events wanted +</TR> +<TR><TD>x:Leave-Window-Mask</TD> +</TD><TD> Pointer window leave events wanted +</TR> +<TR><TD>x:Pointer-Motion-Mask</TD> +</TD><TD> Pointer motion events wanted +</TR> +<TR><TD>x:Pointer-Motion-Hint-Mask</TD> +</TD><TD> +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. +</TR> +<TR><TD>x:Button1-Motion-Mask</TD> +</TD><TD> Pointer motion while button 1 down +</TR> +<TR><TD>x:Button2-Motion-Mask</TD> +</TD><TD> Pointer motion while button 2 down +</TR> +<TR><TD>x:Button3-Motion-Mask</TD> +</TD><TD> Pointer motion while button 3 down +</TR> +<TR><TD>x:Button4-Motion-Mask</TD> +</TD><TD> Pointer motion while button 4 down +</TR> +<TR><TD>x:Button5-Motion-Mask</TD> +</TD><TD> Pointer motion while button 5 down +</TR> +<TR><TD>x:Button-Motion-Mask</TD> +</TD><TD> Pointer motion while any button down +</TR> +<TR><TD>x:Keymap-State-Mask</TD> +</TD><TD> Keyboard state wanted at window entry and focus in +</TR> +<TR><TD>x:Exposure-Mask</TD> +</TD><TD> Any exposure wanted +</TR> +<TR><TD>x:Visibility-Change-Mask</TD> +</TD><TD> Any change in visibility wanted +</TR> +<TR><TD>x:Structure-Notify-Mask</TD> +</TD><TD> Any change in window structure wanted +</TR> +<TR><TD>x:Resize-Redirect-Mask</TD> +</TD><TD> Redirect resize of this window +</TR> +<TR><TD>x:Substructure-Notify-Mask</TD> +</TD><TD> Substructure notification wanted +</TR> +<TR><TD>x:Substructure-Redirect-Mask</TD> +</TD><TD> Redirect structure requests on children +</TR> +<TR><TD>x:Focus-Change-Mask</TD> +</TD><TD> Any change in input focus wanted +</TR> +<TR><TD>x:Property-Change-Mask</TD> +</TD><TD> Any change in property wanted +</TR> +<TR><TD>x:Colormap-Change--Mask</TD> +</TD><TD> Any change in colormap wanted +</TR> +<TR><TD>x:Owner-Grab-Button--Mask</TD> +</TD><TD> Automatic grabs should activate with owner_events set to True +</TR></TABLE> +<P> + +</P> +</DL> +<P> + +<A NAME="IDX89"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:CW-Dont-Propagate</B> +<DD>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). +</DL> +<P> + +<A NAME="IDX90"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:CW-Colormap</B> +<DD>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). +<P> + +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. +</P> +</DL> +<P> + +<A NAME="IDX91"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:CW-Cursor</B> +<DD>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). +<P> + +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. +</P> +</DL> +<P> + +<A NAME="IDX92"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:window-ref</B> <I>window field-name <small>...</small></I> +<DD>Returns a list of the components specified by <VAR>field-name</VAR>s for the +specified <VAR>window</VAR>. Allowable <VAR>field-name</VAR>s are a subset of +those for <CODE>x:window-set!</CODE>: +<P> + +<UL> +<LI>x:CW-Back-Pixel +<LI>x:CW-Bit-Gravity +<LI>x:CW-Win-Gravity +<LI>x:CW-Backing-Store +<LI>x:CW-Backing-Planes +<LI>x:CW-Backing-Pixel +<LI>x:CW-Override-Redirect +<LI>x:CW-Save-Under +<LI>x:CW-Event-Mask +<LI>x:CW-Dont-Propagate +<LI>x:CW-Colormap +</UL> +</DL> +<P> + +<A NAME="Window Properties and Visibility"></A> +<HR SIZE="6"> +<A NAME="SEC6"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC5"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC7"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC3"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC3"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC7"> >> </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H2> 3.3 Window Properties and Visibility </H2> +<!--docid::SEC6::--> +<P> + +<A NAME="IDX93"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:get-window-property</B> <I>window property</I> +<DD>Returns the (string or list of numbers) value of <VAR>property</VAR> of +<VAR>window</VAR>. +<A NAME="IDX94"></A> +<DT><U>Function:</U> <B>x:get-window-property</B> <I>window property #t</I> +<DD>Removes and returns the (string or list of numbers) value of +<VAR>property</VAR> of <VAR>window</VAR>. +</DL> +<P> + +<A NAME="IDX95"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:list-properties</B> <I>window</I> +<DD>Returns a list of the properties (strings) defined for <VAR>window</VAR>. +</DL> +<P> + +In X parlance, a window which is hidden even when not obscured by other +windows is <EM>unmapped</EM>; one which +<A NAME="IDX96"></A> +<A NAME="IDX97"></A> +<A NAME="IDX98"></A> +<A NAME="IDX99"></A> +shows is <EM>mapped</EM>. It is an unfortunate name-collision with Scheme, +and is ingrained in the attribute names. +</P> +<P> + +<A NAME="IDX100"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:map-window</B> <I>window</I> +<DD>Maps the <VAR>window</VAR> 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 <VAR>window</VAR> is already mapped. +<P> + +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 <CODE>x:map-window</CODE> +function does not map the <VAR>window</VAR>. Otherwise, the <VAR>window</VAR> is +mapped, and the X server generates a MapNotify event. +</P> +<P> + +If the <VAR>window</VAR> becomes viewable and no earlier contents for it are +remembered, the X server tiles the <VAR>window</VAR> 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 <VAR>window</VAR> 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. +</P> +<P> + +If the window is an Input-Output window, <CODE>x:map-window</CODE> 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. +</P> +</DL> +<P> + +<A NAME="IDX101"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:map-subwindows</B> <I>window</I> +<DD>Maps all subwindows of a specified <VAR>window</VAR> 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. +</DL> +<P> + +<A NAME="IDX102"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:unmap-window</B> <I>window</I> +<DD>Unmaps the specified <VAR>window</VAR> and causes the X server to generate an +UnmapNotify event. If the specified <VAR>window</VAR> is already unmapped, +<CODE>x:unmap-window</CODE> 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 <VAR>window</VAR> will generate x:Expose events +on windows that were formerly obscured by it. +</DL> +<P> + +<A NAME="IDX103"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:unmap-subwindows</B> <I>window</I> +<DD>Unmaps all subwindows for the specified <VAR>window</VAR> 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. +</DL> +<P> + +<A NAME="Graphics Context"></A> +<HR SIZE="6"> +<A NAME="SEC7"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC6"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC9"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC3"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC9"> >> </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H1> 4. Graphics Context </H1> +<!--docid::SEC7::--> +<P> + +Most attributes of graphics operations are stored in <EM>GC</EM>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. +</P> +<P> + +<A NAME="IDX104"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:create-gc</B> <I>drawable field-name value <small>...</small></I> +<DD>Creates and returns graphics context. The graphics context can be used +with any destination drawable having the same root and depth as the +specified <VAR>drawable</VAR>. +</DL> +<P> + +<A NAME="IDX105"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:gc-set!</B> <I>graphics-context field-name value <small>...</small></I> +<DD>Changes the components specified by <VAR>field-name</VAR>s for the specified +<VAR>graphics-context</VAR>. The restrictions are the same as for +<CODE>x:create-gc</CODE>. 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. +</DL> +<P> + +<A NAME="IDX106"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:copy-gc-fields!</B> <I>gcontext-src gcontext-dst field-name <small>...</small></I> +<DD>Copies the components specified by <VAR>field-name</VAR>s from +<VAR>gcontext-src</VAR> to <VAR>gcontext-dst</VAR>. <VAR>Gcontext-src</VAR> and +<VAR>gcontext-dst</VAR> must have the same root and depth. +</DL> +<P> + +<A NAME="IDX107"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:gc-ref</B> <I>graphics-context field-name <small>...</small></I> +<DD>Returns a list of the components specified by <VAR>field-name</VAR>s <small>...</small> +from the specified <VAR>graphics-context</VAR>. +</DL> +<P> + +<A NAME="SEC8"></A> +<H2> GC Attributes </H2> +<!--docid::SEC8::--> +<P> + +Both <CODE>x:create-gc</CODE> and <CODE>x:change-gc</CODE> 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. +</P> +<P> + +<A NAME="IDX108"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Function</B> +<DD>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: +<P> + +<TABLE><tr><td> </td><td class=display><pre style="font-family: serif"><TT> +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</TT> +</pre></td></tr></table></DL> +<P> + +<A NAME="IDX109"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Plane-Mask</B> +<DD><P> + +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. +</P> +<P> + +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. <CODE>x:All-Planes</CODE> can be +used to refer to all planes of the screen simultaneously. The result is +computed by the following: +</P> +<P> + +<TABLE><tr><td> </td><td class=display><pre style="font-family: serif">(OR (AND (FUNC src dst) plane-mask) (AND dst (NOT plane-mask))) +</pre></td></tr></table><P> + +Range checking is not performed on a plane-mask value. It is simply +truncated to the appropriate number of bits. +</P> +</DL> +<P> + +<A NAME="IDX110"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Foreground</B> +<DD><A NAME="IDX111"></A> +<DT><U>Attribute:</U> <B>x:GC-Background</B> +<DD>Range checking is not performed on the values for foreground or +background. They are simply truncated to the appropriate number of +bits. +<P> + +Note that foreground and background are not initialized to any values +likely to be useful in a window. +</P> +</DL> +<P> + +<A NAME="IDX112"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Line-Width</B> +<DD>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). +<P> + +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. +</P> +<P> + +<UL> +<LI> +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. +<P> + +</P> +<LI> +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. +</UL> +<P> + +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. +</P> +<P> + +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. +</P> +</DL> +<P> + +<A NAME="IDX113"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Line-Style</B> +<DD>The line-style defines which sections of a line are drawn: +<P> + +</P> +<DL COMPACT> +<DT><TT>x:Line-Solid</TT> +<DD>The full path of the line is drawn. +<DT><TT>x:Line-Double-Dash</TT> +<DD>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. +<DT><TT>x:Line-On-Off-Dash</TT> +<DD>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. +</DL> +</DL> +<P> + +<A NAME="IDX114"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Cap-Style</B> +<DD><P> + +The cap-style defines how the endpoints of a path are drawn: +</P> +<P> + +</P> +<DL COMPACT> +<DT><TT>x:Cap-Not-Last</TT> +<DD>This is equivalent to x:Cap-Butt except that for a line-width of zero the +final endpoint is not drawn. +<DT><TT>x:Cap-Butt</TT> +<DD>The line is square at the endpoint (perpendicular to the slope of the +line) with no projection beyond. +<DT><TT>x:Cap-Round</TT> +<DD>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). +<DT><TT>x:Cap-Projecting</TT> +<DD>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). +</DL> +</DL> +<P> + +<A NAME="IDX115"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Join-Style</B> +<DD><P> + +The join-style defines how corners are drawn for wide lines: +</P> +<P> + +</P> +<DL COMPACT> +<DT><TT>x:Join-Miter</TT> +<DD>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. +<DT><TT>x:Join-Round</TT> +<DD>The corner is a circular arc with the diameter equal to the +line-width, centered on the x:Join-point. +<DT><TT>x:Join-Bevel</TT> +<DD>The corner has x:Cap-Butt endpoint styles with the triangular notch filled. +</DL> +</DL> +<P> + +<A NAME="IDX116"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Fill-Style</B> +<DD><P> + +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: +</P> +<P> + +</P> +<DL COMPACT> +<DT><TT>x:Fill-Solid</TT> +<DD>Foreground +<DT><TT>x:Fill-Tiled</TT> +<DD>Tile +<DT><TT>x:Fill-Opaque-Stippled</TT> +<DD>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 +<DT><TT>x:Fill-Stippled</TT> +<DD>Foreground masked by stipple +</DL> +<P> + +When drawing lines with line-style x:Line-Double-Dash, the odd dashes +are controlled by the fill-style in the following manner: +</P> +<P> + +</P> +<DL COMPACT> +<DT><TT>x:Fill-Solid</TT> +<DD>Background +<DT><TT>x:Fill-Tiled</TT> +<DD>Same as for even dashes +<DT><TT>x:Fill-Opaque-Stippled</TT> +<DD>Same as for even dashes +<DT><TT>x:Fill-Stippled</TT> +<DD>Background masked by stipple +</DL> +</DL> +<P> + +<A NAME="IDX117"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Fill-Rule</B> +<DD>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. +<P> + +</P> +<DL COMPACT> +<DT><TT>x:Even-Odd-Rule</TT> +<DD>A point is inside if an infinite ray with the point as +origin crosses the path an odd number of times. +<DT><TT>x:Winding-Rule</TT> +<DD>A point is inside if an infinite ray with the point as origin crosses an +unequal number of clockwise and counterclockwise directed path segments. +</DL> +<P> + +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. +</P> +<P> + +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). +</P> +</DL> +<P> + +<A NAME="IDX118"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Tile</B> +<DD><A NAME="IDX119"></A> +<DT><U>Attribute:</U> <B>x:GC-Stipple</B> +<DD>The tile/stipple represents an infinite two-dimensional plane, with the +tile/stipple replicated in all dimensions. +<P> + +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. +</P> +</DL> +<P> + +<A NAME="IDX120"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Tile-Stip-X-Origin</B> +<DD><A NAME="IDX121"></A> +<DT><U>Attribute:</U> <B>x:GC-Tile-Stip-Y-Origin</B> +<DD>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. +</DL> +<P> + +<A NAME="IDX122"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Font</B> +<DD>The font to be used for drawing text. +</DL> +<P> + +<A NAME="IDX123"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Subwindow-Mode</B> +<DD>You can set the subwindow-mode to x:Clip-By-Children or +x:Include-Inferiors. +<DL COMPACT> +<DT><TT>x:Clip-By-Children</TT> +<DD>Both source and destination windows are additionally clipped by all +viewable Input-Output children. +<DT><TT>x:Include-Inferiors</TT> +<DD>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 +<CODE>x:Include-Inferiors</CODE> on a window of one depth with mapped +inferiors of differing depth is not illegal, but the semantics are +undefined by the core protocol. +</DL> +</DL> +<P> + +<A NAME="IDX124"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Graphics-Exposures</B> +<DD>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). +</DL> +<P> + +<A NAME="IDX125"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Clip-X-Origin</B> +<DD><A NAME="IDX126"></A> +<DT><U>Attribute:</U> <B>x:GC-Clip-Y-Origin</B> +<DD>The clip-mask origin is interpreted relative to the origin of whatever +destination drawable is specified in a graphics request. +</DL> +<P> + +<A NAME="IDX127"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Clip-Mask</B> +<DD>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 +<A NAME="IDX128"></A> +<A NAME="IDX129"></A> +<EM>x:None</EM>, the pixels are always drawn regardless of the clip origin. +The clip-mask also can be set by calling <CODE>X:Set-Region</CODE>. 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. +</DL> +<P> + +<A NAME="IDX130"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Dash-Offset</B> +<DD>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. +<P> + +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. +</P> +</DL> +<P> + +<A NAME="IDX131"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Dash-List</B> +<DD>There must be at least one element in the specified <VAR>dash-list</VAR>. +The initial and alternating elements (second, fourth, and so on) of the +<VAR>dash-list</VAR> 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. +</DL> +<P> + +<A NAME="IDX132"></A> +</P> +<DL> +<DT><U>Attribute:</U> <B>x:GC-Arc-Mode</B> +<DD>The arc-mode controls filling in the X:Fill-Arcs function and can be set +to x:Arc-Pie-Slice or x:Arc-Chord. +<DL COMPACT> +<DT><TT>x:Arc-Pie-Slice</TT> +<DD>The arcs are pie-slice filled. +<DT><TT>x:Arc-Chord</TT> +<DD>The arcs are chord filled. +</DL> +</DL> +<P> + +<A NAME="Cursor"></A> +<HR SIZE="6"> +<A NAME="SEC9"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC7"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC10"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC7"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC10"> >> </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H1> 5. Cursor </H1> +<!--docid::SEC9::--> +<P> + +<A NAME="IDX133"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:create-cursor</B> <I>display shape</I> +<DD>X provides a set of standard cursor shapes in a special font named +<A NAME="IDX134"></A> +<EM>cursor</EM>. Applications are encouraged to use this interface for +their cursors because the font can be customized for the individual +display type. The <VAR>shape</VAR> argument specifies which glyph of the standard +fonts to use. +<P> + +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 `<TT>x11.scm</TT>'. +</P> +<P> + +<A NAME="IDX135"></A> +<DT><U>Function:</U> <B>x:create-cursor</B> <I>source-font source-char mask-font mask-char fgc bgc</I> +<DD>Creates a cursor from the source and mask bitmaps obtained from the +specified font glyphs. The integer <VAR>source-char</VAR> must be a defined +glyph in <VAR>source-font</VAR>. The integer <VAR>mask-char</VAR> must be a +defined glyph in <VAR>mask-font</VAR>. The origins of the <VAR>source-char</VAR> +and <VAR>mask-char</VAR> glyphs are positioned coincidently and define the +hotspot. The <VAR>source-char</VAR> and <VAR>mask-char</VAR> need not have the +same bounding box metrics, and there is no restriction on the placement +of the hotspot relative to the bounding boxes. +</P> +<P> + +<A NAME="IDX136"></A> +<DT><U>Function:</U> <B>x:create-cursor</B> <I>source-font source-char #f #f fgc bgc</I> +<DD>If <VAR>mask-font</VAR> and <VAR>mask-char</VAR> are #f, all pixels of the source +are displayed. +</P> +<P> + +<A NAME="IDX137"></A> +<DT><U>Function:</U> <B>x:create-cursor</B> <I>source-pixmap mask-pixmap fgc bgc origin</I> +<DD><VAR>mask-pixmap</VAR> must be the same size as the pixmap defined by the +<VAR>source-pixmap</VAR> argument. The foreground and background RGB values +must be specified using <VAR>foreground-color</VAR> and +<VAR>background-color</VAR>, even if the X server only has a x:Static-Gray or +x:Gray-Scale screen. The hotspot must be a point within the +<VAR>source-pixmap</VAR>. +</P> +<P> + +<CODE>X:Create-Cursor</CODE> creates and returns a cursor. The +<VAR>foreground-color</VAR> is used for the pixels set to 1 in the source, +and the <VAR>background-color</VAR> is used for the pixels set to 0. Both +source and mask must have depth one but can have any root. The +<VAR>mask-pixmap</VAR> defines the shape of the cursor. The pixels set to 1 +in <VAR>mask-pixmap</VAR> define which source pixels are displayed, and the +pixels set to 0 define which pixels are ignored. +</P> +<P> + +<A NAME="IDX138"></A> +<DT><U>Function:</U> <B>x:create-cursor</B> <I>source-pixmap #f fgc bgc origin</I> +<DD>If <VAR>mask-pixmap</VAR> is #f, all pixels of the source are displayed. +</P> +</DL> +<P> + +<A NAME="Colormap"></A> +<HR SIZE="6"> +<A NAME="SEC10"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC9"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC11"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC9"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC11"> >> </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H1> 6. Colormap </H1> +<!--docid::SEC10::--> +<P> + +<A NAME="IDX139"></A> +<A NAME="IDX140"></A> +A <EM>colormap</EM> maps pixel values to <EM>RGB</EM> color space values. +</P> +<P> + +<A NAME="IDX141"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:create-colormap</B> <I>window visual alloc-policy</I> +<DD><VAR>window</VAR> specifies the window on whose screen you want to create a +colormap. <VAR>visual</VAR> specifies a visual type supported on the screen. +<VAR>alloc-policy</VAR> Specifies the colormap entries to be allocated. You +can pass <CODE>X:Alloc-None</CODE> or <CODE>X:Alloc-All</CODE>. +<P> + +The <CODE>X:Create-Colormap</CODE> function creates and returns a colormap of +the specified <VAR>visual</VAR> type for the screen on which <VAR>window</VAR> +resides. Note that <VAR>window</VAR> is used only to determine the screen. +</P> +<P> + +</P> +<DL COMPACT> +<DT>`<SAMP>X:Gray-Scale</SAMP>' +<DD><DT>`<SAMP>X:Pseudo-Color</SAMP>' +<DD><DT>`<SAMP>X:Direct-Color</SAMP>' +<DD>The initial values of the colormap entries are undefined. +<P> + +</P> +<DT>`<SAMP>X:Static-Gray</SAMP>' +<DD><DT>`<SAMP>X:Static-Color</SAMP>' +<DD><DT>`<SAMP>X:True-Color</SAMP>' +<DD>The entries have defined values, but those values are specific to +<VAR>visual</VAR> and are not defined by X. The <VAR>alloc-policy</VAR> must be +`<SAMP>X:Alloc-None</SAMP>'. +<P> + +</DL> +<P> + +For the other visual classes, if <VAR>alloc-policy</VAR> is +`<SAMP>X:Alloc-None</SAMP>', the colormap initially has no allocated entries, +and clients can allocate them. +</P> +<P> + +If <VAR>alloc-policy</VAR> is `<SAMP>X:Alloc-All</SAMP>', the entire colormap is +allocated writable. The initial values of all allocated entries are +undefined. +</P> +<P> + +</P> +<DL COMPACT> +<DT>`<SAMP>X:Gray-Scale</SAMP>' +<DD><DT>`<SAMP>X:Pseudo-Color</SAMP>' +<DD>The effect is as if an <CODE>XAllocColorCells</CODE> call returned all pixel +values from zero to N - 1, where N is the colormap entries value in +<VAR>visual</VAR>. +<P> + +</P> +<DT>`<SAMP>X:Direct-Color</SAMP>' +<DD>The effect is as if an <CODE>XAllocColorPlanes</CODE> 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. +</DL> +<P> + +</P> +</DL> +<P> + +To create a new colormap when the allocation out of a previously +shared colormap has failed because of resource exhaustion, use: +</P> +<P> + +<A NAME="IDX142"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:copy-colormap-and-free</B> <I>colormap</I> +<DD><P> + +Creates and returns a colormap of the same visual type and for the same +screen as the specified <VAR>colormap</VAR>. It also moves all of the +client's existing allocation from the specified <VAR>colormap</VAR> 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 `<SAMP>X:Alloc-All</SAMP>', the new colormap is also created with +`<SAMP>X:Alloc-All</SAMP>', all color values for all entries are copied from the +specified <VAR>colormap</VAR>, and then all entries in the specified +<VAR>colormap</VAR> are freed. If the specified <VAR>colormap</VAR> was not +created by the client with `<SAMP>X:Alloc-All</SAMP>', 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. +</P> +<P> + +</P> +</DL> +<P> + +A <EM>colormap</EM> maps pixel values to elements of the <EM>RGB</EM> +datatype. An <VAR>RGB</VAR> is a list or vector of 3 integers, describing +the red, green, and blue intensities respectively. The integers are in +the range 0 - 65535. +</P> +<P> + +<A NAME="IDX143"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:alloc-colormap-cells</B> <I>colormap ncolors nplanes</I> +<DD><A NAME="IDX144"></A> +<DT><U>Function:</U> <B>x:alloc-colormap-cells</B> <I>colormap ncolors nplanes contiguous?</I> +<DD><P> + +The <CODE>X:Alloc-Color-Cells</CODE> function allocates read/write color +cells. The number of colors, <VAR>ncolors</VAR> must be positive and the +number of planes, <VAR>nplanes</VAR> nonnegative. If <VAR>ncolors</VAR> and +nplanes are requested, then <VAR>ncolors</VAR> 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, <VAR>ncolors</VAR> * 2^<VAR>nplanes</VAR> distinct pixels can +be produced. All of these are allocated writable by the request. +</P> +<P> + +</P> +<DL COMPACT> +<DT>`<SAMP>x:Gray-Scale</SAMP>' +<DD><DT>`<SAMP>x:Pseudo-Color</SAMP>' +<DD>Each mask has exactly one bit set to 1. If <VAR>contiguous?</VAR> is +non-false and if all masks are ORed together, a single contiguous set of +bits set to 1 is formed. +<DT>`<SAMP>x:Direct-Color</SAMP>' +<DD>Each mask has exactly three bits set to 1. If <VAR>contiguous?</VAR> 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. +</DL> +<P> + +The RGB values of the allocated entries are undefined. +<CODE>X:Alloc-Color-Cells</CODE> 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. +</P> +<P> + +<A NAME="IDX145"></A> +<DT><U>Function:</U> <B>x:alloc-colormap-cells</B> <I>colormap ncolors rgb</I> +<DD><A NAME="IDX146"></A> +<DT><U>Function:</U> <B>x:alloc-colormap-cells</B> <I>colormap ncolors rgb contiguous?</I> +<DD></P> +<P> + +The specified <VAR>ncolors</VAR> must be positive; and <VAR>rgb</VAR> a list or +vector of 3 nonnegative integers. If <VAR>ncolors</VAR> colors, <VAR>nreds</VAR> +reds, <VAR>ngreens</VAR> greens, and <VAR>nblues</VAR> blues are requested, +<VAR>ncolors</VAR> pixels are returned; and the masks have <VAR>nreds</VAR>, +<VAR>ngreens</VAR>, and <VAR>nblues</VAR> bits set to 1, respectively. If +<VAR>contiguous?</VAR> 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. +</P> +<P> + +Each mask will lie within the corresponding pixel subfield. By ORing +together subsets of masks with each pixel value, <VAR>ncolors</VAR> * +2(<VAR>nreds</VAR>+<VAR>ngreens</VAR>+<VAR>nblues</VAR>) distinct pixel values can be +produced. All of these are allocated by the request. However, in the +colormap, there are only <VAR>ncolors</VAR> * 2^<VAR>nreds</VAR> independent red +entries, <VAR>ncolors</VAR> * 2^<VAR>ngreens</VAR> independent green entries, and +<VAR>ncolors</VAR> * 2^<VAR>nblues</VAR> independent blue entries. +</P> +<P> + +<CODE>X:Alloc-Color-Cells</CODE> 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. +</P> +</DL> +<P> + +<A NAME="IDX147"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:free-colormap-cells</B> <I>colormap pixels planes</I> +<DD><A NAME="IDX148"></A> +<DT><U>Function:</U> <B>x:free-colormap-cells</B> <I>colormap pixels</I> +<DD><P> + +Frees the cells represented by pixels whose values are in the +<VAR>pixels</VAR> unsigned-integer uniform-vector. The <VAR>planes</VAR> 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 +<VAR>planes</VAR> 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 <CODE>X:Alloc-Colormap-Cells</CODE> 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. +</P> +<P> + +All specified pixels that are allocated by the client in the +<VAR>colormap</VAR> 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 +`<SAMP>x:Alloc-All</SAMP>' to <CODE>X:Create-Colormap</CODE>). If more than one pixel +is in error, the one that gets reported is arbitrary. +</P> +</DL> +<P> + +<A NAME="IDX149"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:colormap-find-color</B> <I>colormap rgb</I> +<DD><P> + +<VAR>rgb</VAR> is a list or vector of 3 integers, describing the red, green, +and blue intensities respectively; or an integer `<SAMP>#x<I>rrggbb</I></SAMP>', +packing red, green and blue intensities in the range 0 - 255. +</P> +<P> + +<A NAME="IDX150"></A> +<DT><U>Function:</U> <B>x:colormap-find-color</B> <I>colormap color-name</I> +<DD></P> +<P> + +The case-insensitive string <VAR>color_name</VAR> specifies the name of a +color (for example, `<TT>red</TT>') +</P> +<P> + +<CODE>X:Colormap-Find-Color</CODE> allocates a read-only colormap entry +corresponding to the closest RGB value supported by the hardware. +<CODE>X:Colormap-Find-Color</CODE> returns the pixel value of the color +closest to the specified <VAR>RGB</VAR> or <VAR>color_name</VAR> elements +supported by the hardware, if successful; otherwise +<CODE>X:Colormap-Find-Color</CODE> returns #f. +</P> +<P> + +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. +</P> +<P> + +</P> +</DL> +<P> + +<A NAME="IDX151"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:color-ref</B> <I>colormap pixel</I> +<DD><P> + +Returns a list of 3 integers, describing the red, green, +and blue intensities respectively of the <VAR>colormap</VAR> entry of the +cell indexed by <VAR>pixel</VAR>. +</P> +<P> + +The integer <VAR>pixel</VAR> must be a valid index into <VAR>colormap</VAR>. +</P> +</DL> +<P> + +<A NAME="IDX152"></A> +</P> +<DL> +<DT><U>Function:</U> <B>X:Color-Set!</B> <I>colormap pixel rgb</I> +<DD><P> + +<VAR>rgb</VAR> is a list or vector of 3 integers, describing the red, green, +and blue intensities respectively; or an integer `<SAMP>#x<I>rrggbb</I></SAMP>', +packing red, green and blue intensities in the range 0 - 255. +</P> +<P> + +<A NAME="IDX153"></A> +<DT><U>Function:</U> <B>X:Color-Set!</B> <I>colormap pixel color-name</I> +<DD></P> +<P> + +The case-insensitive string <VAR>color_name</VAR> specifies the name of a +color (for example, `<TT>red</TT>') +</P> +<P> + +The integer <VAR>pixel</VAR> must be a valid index into <VAR>colormap</VAR>. +</P> +<P> + +<CODE>X:Color-Set!</CODE> changes the <VAR>colormap</VAR> entry of the read/write +cell indexed by <VAR>pixel</VAR>. If the <VAR>colormap</VAR> is an installed map +for its screen, the changes are visible immediately. +</P> +<P> + +</P> +</DL> +<P> + +<A NAME="IDX154"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:install-colormap</B> <I>colormap</I> +<DD><P> + +Installs the specified <VAR>colormap</VAR> for its associated screen. All +windows associated with <VAR>colormap</VAR> immediately display with true +colors. A colormap is associated with a window when the window is +created or its attributes changed. +</P> +<P> + +If the specified colormap is not already an installed colormap, the X +server generates a ColormapNotify event on each window that has that +colormap. +</P> +<P> + +</P> +</DL> +<P> + +<A NAME="IDX155"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:ccc</B> <I>colormap</I> +<DD>Returns the Color-Conversion-Context of <VAR>colormap</VAR>. +</DL> +<P> + +<A NAME="Rendering"></A> +<HR SIZE="6"> +<A NAME="SEC11"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC10"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC14"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC10"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC14"> >> </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H1> 7. Rendering </H1> +<!--docid::SEC11::--> +<P> + +<A NAME="IDX156"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:flush</B> <I>display</I> +<DD><A NAME="IDX157"></A> +<DT><U>Function:</U> <B>x:flush</B> <I>window</I> +<DD>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. +<P> + +<A NAME="IDX158"></A> +<DT><U>Function:</U> <B>x:flush</B> <I>gc</I> +<DD>Forces sending of GC component changes. +</P> +<P> + +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. +</P> +</DL> +<P> + +<A NAME="IDX159"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:clear-area</B> <I>window (x-pos y-pos) (width height) expose?</I> +<DD>Paints a rectangular area in the specified <VAR>window</VAR> according to the +specified dimensions with the <VAR>window</VAR>'s background pixel or pixmap. +The subwindow-mode effectively is `<SAMP>x:Clip-By-Children</SAMP>'. If width +is zero, it is replaced with the current width of the <VAR>window</VAR> minus +x. If height is zero, it is replaced with the current height of the +<VAR>window</VAR> minus y. If the <VAR>window</VAR> has a defined background +tile, the rectangle clipped by any children is filled with this tile. +If the <VAR>window</VAR> has background x:None, the contents of the +<VAR>window</VAR> are not changed. In either case, if <VAR>expose?</VAR> 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 <VAR>window</VAR> whose class is x:Input-Only, an error +results. +</DL> +<P> + +<A NAME="IDX160"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:fill-rectangle</B> <I>window gcontext position size</I> +<DD><P> + +</P> +</DL> +<P> + +<A NAME="SEC12"></A> +<H2> Draw Strings </H2> +<!--docid::SEC12::--> +<P> + +<A NAME="IDX161"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:draw-string</B> <I>drawable gc position string</I> +<DD><VAR>Position</VAR> specifies coordinates relative to the origin of +<VAR>drawable</VAR> of the origin of the first character to be drawn. +<P> + +<CODE>x:draw-string</CODE> draws the characters of <VAR>string</VAR>, starting at +<VAR>position</VAR>. +</P> +</DL> +<P> + +<A NAME="IDX162"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:image-string</B> <I>drawable gc position string</I> +<DD><VAR>Position</VAR> specifies coordinates relative to the origin of +<VAR>drawable</VAR> of the origin of the first character to be drawn. +<P> + +<CODE>x:image-string</CODE> draws the characters <EM>and background</EM> of +<VAR>string</VAR>, starting at <VAR>position</VAR>. +</P> +</DL> +<P> + +<A NAME="SEC13"></A> +<H2> Draw Shapes </H2> +<!--docid::SEC13::--> +<P> + +<A NAME="IDX163"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:draw-points</B> <I>drawable gc position <small>...</small></I> +<DD><VAR>Position</VAR> <small>...</small> specifies coordinates of the point to be drawn. +<P> + +<A NAME="IDX164"></A> +<DT><U>Function:</U> <B>x:draw-points</B> <I>drawable gc x y <small>...</small></I> +<DD>(<VAR>x</VAR>, <VAR>y</VAR>) <small>...</small> specifies coordinates of the point to be +drawn. +</P> +<P> + +<A NAME="IDX165"></A> +<DT><U>Function:</U> <B>x:draw-points</B> <I>drawable gc point-array</I> +<DD><VAR>point-array</VAR> is a uniform short array of rank 2, whose rightmost +index spans a range of 2. +</P> +<P> + +The <CODE>X:Draw-Points</CODE> procedure uses the foreground pixel and +function components of the <VAR>gc</VAR> to draw points into <VAR>drawable</VAR> +at the positions (relative to the origin of <VAR>drawable</VAR>) specified. +</P> +<P> + +<CODE>X:Draw-Points</CODE> uses these <VAR>gc</VAR> components: function, +planemask, foreground, subwindow-mode, clip-x-origin, clip-y-origin, and +clip-mask. +</P> +</DL> +<P> + +<A NAME="IDX166"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:draw-segments</B> <I>drawable gc pos1 pos2 <small>...</small></I> +<DD><VAR>Pos1</VAR>, <VAR>pos2</VAR>, <small>...</small> specify coordinates to be connected by +segments. +<P> + +<A NAME="IDX167"></A> +<DT><U>Function:</U> <B>x:draw-segments</B> <I>drawable gc x1 y1 x2 y2 <small>...</small></I> +<DD>(<VAR>x1</VAR>, <VAR>y1</VAR>), (<VAR>x2</VAR>, <VAR>y2</VAR>) <small>...</small> specify coordinates +to be connected by segments. +</P> +<P> + +<A NAME="IDX168"></A> +<DT><U>Function:</U> <B>x:draw-segments</B> <I>drawable gc point-array</I> +<DD><VAR>point-array</VAR> is a uniform short array of rank 2, whose rightmost +index spans a range of 2. +</P> +<P> + +The <CODE>X:Draw-Segments</CODE> procedure uses the components of the +specified <VAR>gc</VAR> 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, <CODE>X:Draw-Segments</CODE> 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. <CODE>X:Draw-Segments</CODE> treats all +coordinates as relative to the origin of <VAR>drawable</VAR>. +</P> +<P> + +<CODE>X:Draw-Segments</CODE> uses these <VAR>gc</VAR> 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 <VAR>gc</VAR> mode-dependent components: foreground, +background, tile, stipple, tilestipple-x-origin, tile-stipple-y-origin, +dash-offset, and dash-list. +</P> +</DL> +<P> + +<A NAME="IDX169"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:draw-lines</B> <I>drawable gc pos1 pos2 <small>...</small></I> +<DD><VAR>Pos1</VAR>, <VAR>pos2</VAR>, <small>...</small> specify coordinates to be connected by +lines. +<P> + +<A NAME="IDX170"></A> +<DT><U>Function:</U> <B>x:draw-lines</B> <I>drawable gc x1 y1 x2 y2 <small>...</small></I> +<DD>(<VAR>x1</VAR>, <VAR>y1</VAR>), (<VAR>x2</VAR>, <VAR>y2</VAR>) <small>...</small> specify coordinates +to be connected by lines. +</P> +<P> + +<A NAME="IDX171"></A> +<DT><U>Function:</U> <B>x:draw-lines</B> <I>drawable gc point-array</I> +<DD><VAR>point-array</VAR> is a uniform short array of rank 2, whose rightmost +index spans a range of 2. +</P> +<P> + +The <CODE>X:Draw-Lines</CODE> procedure uses the components of the specified +<VAR>gc</VAR> 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, +<CODE>X:Draw-Lines</CODE> 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. <CODE>X:Draw-Lines</CODE> treats all coordinates as relative to +the origin of <VAR>drawable</VAR>. +</P> +<P> + +<CODE>X:Draw-Lines</CODE> uses these <VAR>gc</VAR> 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 <VAR>gc</VAR> mode-dependent components: foreground, +background, tile, stipple, tilestipple-x-origin, tile-stipple-y-origin, +dash-offset, and dash-list. +</P> +</DL> +<P> + +<A NAME="IDX172"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:fill-polygon</B> <I>drawable gc pos1 pos2 <small>...</small></I> +<DD><VAR>Pos1</VAR>, <VAR>pos2</VAR>, <small>...</small> specify coordinates of the border path. +<P> + +<A NAME="IDX173"></A> +<DT><U>Function:</U> <B>x:fill-polygon</B> <I>drawable gc x1 y1 x2 y2 <small>...</small></I> +<DD>(<VAR>x1</VAR>, <VAR>y1</VAR>), (<VAR>x2</VAR>, <VAR>y2</VAR>) <small>...</small> specify coordinates +of the border path. +</P> +<P> + +<A NAME="IDX174"></A> +<DT><U>Function:</U> <B>x:fill-polygon</B> <I>drawable gc point-array</I> +<DD><VAR>point-array</VAR> is a uniform short array of rank 2, whose rightmost +index spans a range of 2. +</P> +<P> + +The path is closed automatically if the last point in the list or +<VAR>point-array</VAR> does not coincide with the first point. +</P> +<P> + +The <CODE>X:Fill-Polygon</CODE> procedure uses the components of the specified +<VAR>gc</VAR> to fill the region closed by the specified path. +<CODE>X:Fill-Polygon</CODE> does not draw a pixel of the region more than +once. <CODE>X:Fill-Polygon</CODE> treats all coordinates as relative to the +origin of <VAR>drawable</VAR>. +</P> +<P> + +<CODE>X:Fill-Polygon</CODE> uses these <VAR>gc</VAR> components: function, +planemask, fill-style, fill-rule, subwindow-mode, clip-x-origin, +clip-y-origin, and clip-mask. It also use these <VAR>gc</VAR> mode-dependent +components: foreground, background, tile, stipple, +tile-stipple-x-origin, and tile-stipple-y-origin. +</P> +</DL> +<P> + +<A NAME="Images"></A> +<HR SIZE="6"> +<A NAME="SEC14"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC11"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC15"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC11"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC15"> >> </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H1> 8. Images </H1> +<!--docid::SEC14::--> +<P> + +<A NAME="IDX175"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:read-bitmap-file</B> <I>drawable file</I> +<DD><P> + +</P> +</DL> +<P> + +<A NAME="Event"></A> +<HR SIZE="6"> +<A NAME="SEC15"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC14"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC16"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC14"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC16"> >> </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H1> 9. Event </H1> +<!--docid::SEC15::--> +<P> + +These three status routines always return immediately if there are +events already in the queue. +</P> +<P> + +<A NAME="IDX176"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:q-length</B> <I>display</I> +<DD>Returns the length of the event queue for the connected <VAR>display</VAR>. +Note that there may be more events that have not been read into the +queue yet (see X:Events-Queued). +</DL> +<P> + +<A NAME="IDX177"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:pending</B> <I>display</I> +<DD>Returns the number of events that have been received from the X server +but have not been removed from the event queue. +</DL> +<P> + +<A NAME="IDX178"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:events-queued</B> <I>display</I> +<DD>Returns the number of events already in the queue if the number is +nonzero. If there are no events in the queue, <CODE>X:Events-Queued</CODE> +attempts to read more events out of the application's connection without +flushing the output buffer and returns the number read. +</DL> +<P> + +Both of these routines return an object of type <EM>event</EM>. +</P> +<P> + +<A NAME="IDX179"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:next-event</B> <I>display</I> +<DD>Removes and returns the first event from the event queue. If the event +queue is empty, <CODE>X:Next-Event</CODE> flushes the output buffer and blocks +until an event is received. +</DL> +<P> + +<A NAME="IDX180"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:peek-event</B> <I>display</I> +<DD>Returns the first event from the event queue, but it does not remove the +event from the queue. If the queue is empty, <CODE>X:Peek-Event</CODE> +flushes the output buffer and blocks until an event is received. +</DL> +<P> + +Each event object has fields dependent on its sub-type. +</P> +<P> + +<A NAME="IDX181"></A> +</P> +<DL> +<DT><U>Function:</U> <B>x:event-ref</B> <I>event field-name</I> +<DD><TABLE> +<TR><TD>window</TD> +</TD><TD> +The window on which <VAR>event</VAR> was generated and is referred to as the +event window. +</TR> +<TR><TD>root</TD> +</TD><TD> +is the event window's root window. +</TR> +<TR><TD>subwindow</TD> +</TD><TD> +If the source window is an inferior of the event window, the +<VAR>subwindow</VAR> 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, `<SAMP>None</SAMP>'. +</TR> +<TR><TD>X-event:type</TD> +</TD><TD> +An integer: <VAR>x:Key-Press</VAR>, <VAR>x:Key-Release</VAR>, +<VAR>x:Button-Press</VAR>, <VAR>x:Button-Release</VAR>, <VAR>x:Motion-Notify</VAR>, +<VAR>x:Enter-Notify</VAR>, <VAR>x:Leave-Notify</VAR>, <VAR>x:Focus-In</VAR>, +<VAR>x:Focus-Out</VAR>, <VAR>x:Keymap-Notify</VAR>, <VAR>x:Expose</VAR>, +<VAR>x:Graphics-Expose</VAR>, <VAR>x:No-Expose</VAR>, <VAR>x:Visibility-Notify</VAR>, +<VAR>x:Create-Notify</VAR>, <VAR>x:Destroy-Notify</VAR>, <VAR>x:Unmap-Notify</VAR>, +<VAR>x:Map-Notify</VAR>, <VAR>x:Map-Request</VAR>, <VAR>x:Reparent-Notify</VAR>, +<VAR>x:Configure-Notify</VAR>, <VAR>x:Configure-Request</VAR>, +<VAR>x:Gravity-Notify</VAR>, <VAR>x:Resize-Request</VAR>, +<VAR>x:Circulate-Notify</VAR>, <VAR>x:Circulate-Request</VAR>, +<VAR>x:Property-Notify</VAR>, <VAR>x:Selection-Clear</VAR>, +<VAR>x:Selection-Request</VAR>, <VAR>x:Selection-Notify</VAR>, +<VAR>x:Colormap-Notify</VAR>, <VAR>x:Client-Message</VAR>, or +<VAR>x:Mapping-Notify</VAR>. +</TR> +<TR><TD>X-event:serial</TD> +</TD><TD> +The serial number of the protocol request that generated the <VAR>event</VAR>. +</TR> +<TR><TD>X-event:send-event</TD> +</TD><TD> +Boolean that indicates whether the event was sent by a different client. +</TR> +<TR><TD>X-event:time</TD> +</TD><TD> +The time when the <VAR>event</VAR> was generated expressed in milliseconds. +</TR> +<TR><TD>X-event:x</TD> +</TR> +<TR><TD>X-event:y</TD> +</TD><TD> +For window entry/exit events the <VAR>x</VAR> and <VAR>y</VAR> 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, +<VAR>x</VAR> and <VAR>y</VAR> are the pointer coordinates relative to the event +window's origin. Otherwise, <VAR>x</VAR> and <VAR>y</VAR> are set to zero. + +For expose events The <VAR>x</VAR> and <VAR>y</VAR> 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 <VAR>x</VAR> and +<VAR>y</VAR> 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. +</TR> +<TR><TD>X-event:x-root</TD> +</TR> +<TR><TD>X-event:y-root</TD> +</TD><TD> +The pointer's coordinates relative to the root window's origin at the +time of the <VAR>event</VAR>. +</TR> +<TR><TD>X-event:state</TD> +</TD><TD> +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 <VAR>event</VAR>, which is the bitwise inclusive OR of +one or more of the button or modifier key masks: <VAR>x:Button1-Mask</VAR>, +<VAR>x:Button2-Mask</VAR>, <VAR>x:Button3-Mask</VAR>, <VAR>x:Button4-Mask</VAR>, +<VAR>x:Button5-Mask</VAR>, <VAR>x:Shift-Mask</VAR>, <VAR>x:Lock-Mask</VAR>, +<VAR>x:Control-Mask</VAR>, <VAR>x:Mod1-Mask</VAR>, <VAR>x:Mod2-Mask</VAR>, +<VAR>x:Mod3-Mask</VAR>, <VAR>x:Mod4-Mask</VAR>, and <VAR>x:Mod5-Mask</VAR>. + +For visibility events, the state of the window's visibility: +<VAR>x:Visibility-Unobscured</VAR>, <VAR>x:Visibility-Partially-Obscured</VAR>, or +<VAR>x:Visibility-Fully-Obscured</VAR>. + +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. +</TR> +<TR><TD>X-event:keycode</TD> +</TD><TD> +An integer that represents a physical key on the keyboard. +</TR> +<TR><TD>X-event:same-screen</TD> +</TD><TD> +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. +</TR> +<TR><TD>X-event:button</TD> +</TD><TD> +The pointer button that changed state; can be the <VAR>x:Button1</VAR>, +<VAR>x:Button2</VAR>, <VAR>x:Button3</VAR>, <VAR>x:Button4</VAR>, or <VAR>x:Button5</VAR> +value. +</TR> +<TR><TD>X-event:is-hint</TD> +</TD><TD> +Detail of motion-notify events: <VAR>x:Notify-Normal</VAR> or +<VAR>x:Notify-Hint</VAR>. +</TR> +<TR><TD>X-event:mode</TD> +</TD><TD> +Indicates whether the <VAR>event</VAR> is a normal event, pseudo-motion event +when a grab activates, or a pseudo-motion event when a grab deactivates: +<VAR>x:Notify-Normal</VAR>, <VAR>x:Notify-Grab</VAR>, or <VAR>x:Notify-Ungrab</VAR>. +</TR> +<TR><TD>X-event:detail</TD> +</TD><TD> +Indicates the notification detail: <VAR>x:Notify-Ancestor</VAR>, +<VAR>x:Notify-Virtual</VAR>, <VAR>x:Notify-Inferior</VAR>, +<VAR>x:Notify-Nonlinear</VAR>, or <VAR>x:Notify-Nonlinear-Virtual</VAR>. +</TR> +<TR><TD>X-event:focus</TD> +</TD><TD> +If the event window is the focus window or an inferior of the focus +window, #t; otherwise #f. +</TR> +<TR><TD>X-event:width</TD> +</TR> +<TR><TD>X-event:height</TD> +</TD><TD> +The size (extent) of the rectangle. +</TR> +<TR><TD>X-event:count</TD> +</TD><TD> +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. +</TR> +<TR><TD>X-event:major-code</TD> +</TD><TD> +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. +</TR> +<TR><TD>X-event:minor-code</TD> +</TD><TD> +Not currently used. +</TR> +<TR><TD>X-event:border-width</TD> +</TD><TD> +For configure events, the width of the window's border, in pixels. +</TR> +<TR><TD>X-event:override-redirect</TD> +</TD><TD> +The override-redirect attribute of the window. Window manager clients +normally should ignore this window if it is #t. +</TR> +<TR><TD>X-event:from-configure</TD> +</TD><TD> +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. +</TR> +<TR><TD>X-event:value-mask</TD> +</TD><TD> +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. +</TR> +<TR><TD>X-event:place</TD> +</TD><TD> +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. +</TR> +<TR><TD>X-event:new</TD> +</TD><TD> +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. +</TR> +<TR><TD>X-event:format</TD> +</TD><TD> +Is 8, 16, or 32 and specifies whether the data should be viewed as a +list of bytes, shorts, or longs +</TR> +<TR><TD>X-event:request</TD> +</TD><TD> +Indicates the kind of mapping change that occurred and can be +<VAR>x:Mapping-Modifier</VAR>, <VAR>x:Mapping-Keyboard</VAR>, or +<VAR>x:Mapping-Pointer</VAR>. If it is <VAR>x:Mapping-Modifier</VAR>, the +modifier mapping was changed. If it is <VAR>x:Mapping-Keyboard</VAR>, the +keyboard mapping was changed. If it is <VAR>x:Mapping-Pointer</VAR>, the +pointer button mapping was changed. +</TR> +<TR><TD>X-event:first-keycode</TD> +</TD><TD> +The X-event:first-keycode is set only if the X-event:request was set to +<VAR>x:Mapping-Keyboard</VAR>. 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. +</TR></TABLE> +</DL> +<P> + +<A NAME="Index"></A> +<HR SIZE="6"> +<A NAME="SEC16"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC15"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC17"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC15"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H1> Procedure and Macro Index </H1> +<!--docid::SEC16::--> +<P> + +This is an alphabetical list of all the procedures and macros in Xlibscm. +</P> +<P> + +</P> +<table><tr><th valign=top>Jump to: </th><td><A HREF="Xlibscm.html#fn_H" style="text-decoration:none"><b>H</b></A> + +<A HREF="Xlibscm.html#fn_X" style="text-decoration:none"><b>X</b></A> + +</td></tr></table><P></P> +<TABLE border=0> +<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR> +<TR><TD COLSPAN=3> <HR></TD></TR> +<TR><TH><A NAME="fn_H"></A>H</TH><TD></TD><TD></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX4"><CODE>hostname:number.screen-number</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD COLSPAN=3> <HR></TD></TR> +<TR><TH><A NAME="fn_X"></A>X</TH><TD></TD><TD></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX143"><CODE>x:alloc-colormap-cells</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC10">6. Colormap</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX144"><CODE>x:alloc-colormap-cells</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC10">6. Colormap</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX145"><CODE>x:alloc-colormap-cells</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC10">6. Colormap</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX146"><CODE>x:alloc-colormap-cells</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC10">6. Colormap</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX155"><CODE>x:ccc</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC10">6. Colormap</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX159"><CODE>x:clear-area</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC11">7. Rendering</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX5"><CODE>x:close</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX65"><CODE>x:close</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC4">3.1 Windows and Pixmaps</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX66"><CODE>x:close</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC4">3.1 Windows and Pixmaps</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX151"><CODE>x:color-ref</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC10">6. Colormap</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX152"><CODE>X:Color-Set!</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC10">6. Colormap</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX153"><CODE>X:Color-Set!</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC10">6. Colormap</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX149"><CODE>x:colormap-find-color</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC10">6. Colormap</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX150"><CODE>x:colormap-find-color</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC10">6. Colormap</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX142"><CODE>x:copy-colormap-and-free</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC10">6. Colormap</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX106"><CODE>x:copy-gc-fields!</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC7">4. Graphics Context</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX141"><CODE>x:create-colormap</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC10">6. Colormap</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX133"><CODE>x:create-cursor</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC9">5. Cursor</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX135"><CODE>x:create-cursor</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC9">5. Cursor</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX136"><CODE>x:create-cursor</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC9">5. Cursor</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX137"><CODE>x:create-cursor</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC9">5. Cursor</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX138"><CODE>x:create-cursor</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC9">5. Cursor</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX104"><CODE>x:create-gc</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC7">4. Graphics Context</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX63"><CODE>x:create-pixmap</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC4">3.1 Windows and Pixmaps</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX64"><CODE>x:create-pixmap</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC4">3.1 Windows and Pixmaps</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX61"><CODE>x:create-window</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC4">3.1 Windows and Pixmaps</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX62"><CODE>x:create-window</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC4">3.1 Windows and Pixmaps</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX17"><CODE>x:default-ccc</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX18"><CODE>x:default-ccc</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX19"><CODE>x:default-ccc</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX14"><CODE>x:default-colormap</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX15"><CODE>x:default-colormap</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX16"><CODE>x:default-colormap</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX20"><CODE>x:default-gc</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX21"><CODE>x:default-gc</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX22"><CODE>x:default-gc</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX10"><CODE>x:default-screen</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX26"><CODE>x:default-visual</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX27"><CODE>x:default-visual</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX28"><CODE>x:default-visual</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX169"><CODE>x:draw-lines</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC13">Draw Shapes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX170"><CODE>x:draw-lines</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC13">Draw Shapes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX171"><CODE>x:draw-lines</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC13">Draw Shapes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX163"><CODE>x:draw-points</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC13">Draw Shapes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX164"><CODE>x:draw-points</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC13">Draw Shapes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX165"><CODE>x:draw-points</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC13">Draw Shapes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX166"><CODE>x:draw-segments</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC13">Draw Shapes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX167"><CODE>x:draw-segments</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC13">Draw Shapes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX168"><CODE>x:draw-segments</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC13">Draw Shapes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX161"><CODE>x:draw-string</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC12">Draw Strings</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX181"><CODE>x:event-ref</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC15">9. Event</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX178"><CODE>x:events-queued</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC15">9. Event</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX172"><CODE>x:fill-polygon</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC13">Draw Shapes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX173"><CODE>x:fill-polygon</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC13">Draw Shapes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX174"><CODE>x:fill-polygon</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC13">Draw Shapes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX160"><CODE>x:fill-rectangle</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC11">7. Rendering</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX156"><CODE>x:flush</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC11">7. Rendering</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX157"><CODE>x:flush</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC11">7. Rendering</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX158"><CODE>x:flush</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC11">7. Rendering</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX147"><CODE>x:free-colormap-cells</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC10">6. Colormap</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX148"><CODE>x:free-colormap-cells</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC10">6. Colormap</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX107"><CODE>x:gc-ref</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC7">4. Graphics Context</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX105"><CODE>x:gc-set!</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC7">4. Graphics Context</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX93"><CODE>x:get-window-property</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC6">3.3 Window Properties and Visibility</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX94"><CODE>x:get-window-property</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC6">3.3 Window Properties and Visibility</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX162"><CODE>x:image-string</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC12">Draw Strings</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX154"><CODE>x:install-colormap</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC10">6. Colormap</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX95"><CODE>x:list-properties</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC6">3.3 Window Properties and Visibility</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX31"><CODE>x:make-visual</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX32"><CODE>x:make-visual</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX101"><CODE>x:map-subwindows</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC6">3.3 Window Properties and Visibility</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX100"><CODE>x:map-window</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC6">3.3 Window Properties and Visibility</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX179"><CODE>x:next-event</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC15">9. Event</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX3"><CODE>x:open-display</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX180"><CODE>x:peek-event</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC15">9. Event</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX177"><CODE>x:pending</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC15">9. Event</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX6"><CODE>x:protocol-version</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX176"><CODE>x:q-length</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC15">9. Event</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX175"><CODE>x:read-bitmap-file</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC14">8. Images</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX11"><CODE>x:root-window</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX12"><CODE>x:root-window</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX13"><CODE>x:root-window</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX56"><CODE>x:screen-black</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX57"><CODE>x:screen-black</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX58"><CODE>x:screen-black</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX39"><CODE>x:screen-cells</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX40"><CODE>x:screen-cells</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX41"><CODE>x:screen-cells</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX9"><CODE>x:screen-count</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX42"><CODE>x:screen-depth</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX43"><CODE>x:screen-depth</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX44"><CODE>x:screen-depth</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX45"><CODE>x:screen-depth</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX23"><CODE>x:screen-depths</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX24"><CODE>x:screen-depths</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX25"><CODE>x:screen-depths</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX50"><CODE>x:screen-dimensions</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX51"><CODE>x:screen-dimensions</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX52"><CODE>x:screen-dimensions</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX47"><CODE>x:screen-size</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX48"><CODE>x:screen-size</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX49"><CODE>x:screen-size</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX53"><CODE>x:screen-white</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX54"><CODE>x:screen-white</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX55"><CODE>x:screen-white</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX7"><CODE>x:server-vendor</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX103"><CODE>x:unmap-subwindows</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC6">3.3 Window Properties and Visibility</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX102"><CODE>x:unmap-window</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC6">3.3 Window Properties and Visibility</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX8"><CODE>x:vendor-release</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX33"><CODE>x:visual-class</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX34"><CODE>x:visual-class</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX35"><CODE>x:visual-class</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX36"><CODE>x:visual-geometry</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX37"><CODE>x:visual-geometry</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX38"><CODE>x:visual-geometry</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX67"><CODE>x:window-geometry</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC4">3.1 Windows and Pixmaps</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX68"><CODE>x:window-geometry-set!</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC4">3.1 Windows and Pixmaps</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX92"><CODE>x:window-ref</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX76"><CODE>x:window-set!</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A></TD></TR> +<TR><TD COLSPAN=3> <HR></TD></TR> +</TABLE><P></P><table><tr><th valign=top>Jump to: </th><td><A HREF="Xlibscm.html#fn_H" style="text-decoration:none"><b>H</b></A> + +<A HREF="Xlibscm.html#fn_X" style="text-decoration:none"><b>X</b></A> + +</td></tr></table><P> + +<HR SIZE="6"> +<A NAME="SEC17"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC16"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC18"> > </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC16"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H1> Variable Index </H1> +<!--docid::SEC17::--> +<P> + +This is an alphabetical list of all the global variables in Xlibscm. +</P> +<P> + +</P> +<table><tr><th valign=top>Jump to: </th><td><A HREF="Xlibscm.html#vr_X" style="text-decoration:none"><b>X</b></A> + +</td></tr></table><P></P> +<TABLE border=0> +<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR> +<TR><TD COLSPAN=3> <HR></TD></TR> +<TR><TH><A NAME="vr_X"></A>X</TH><TD></TD><TD></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX78"><CODE>x:CW-Back-Pixel</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX77"><CODE>x:CW-Back-Pixmap</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX85"><CODE>x:CW-Backing-Pixel</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX84"><CODE>x:CW-Backing-Planes</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX83"><CODE>x:CW-Backing-Store</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX81"><CODE>x:CW-Bit-Gravity</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX80"><CODE>x:CW-Border-Pixel</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX79"><CODE>x:CW-Border-Pixmap</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX73"><CODE>x:CW-Border-Width</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC4">3.1 Windows and Pixmaps</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX90"><CODE>x:CW-Colormap</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX91"><CODE>x:CW-Cursor</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX89"><CODE>x:CW-Dont-Propagate</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX88"><CODE>x:CW-Event-Mask</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX72"><CODE>x:CW-Height</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC4">3.1 Windows and Pixmaps</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX86"><CODE>x:CW-Override-Redirect</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX87"><CODE>x:CW-Save-Under</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX74"><CODE>x:CW-Sibling</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC4">3.1 Windows and Pixmaps</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX75"><CODE>x:CW-Stack-Mode</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC4">3.1 Windows and Pixmaps</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX71"><CODE>x:CW-Width</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC4">3.1 Windows and Pixmaps</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX82"><CODE>x:CW-Win-Gravity</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX69"><CODE>x:CWX</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC4">3.1 Windows and Pixmaps</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX70"><CODE>x:CWY</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC4">3.1 Windows and Pixmaps</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX132"><CODE>x:GC-Arc-Mode</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX111"><CODE>x:GC-Background</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX114"><CODE>x:GC-Cap-Style</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX127"><CODE>x:GC-Clip-Mask</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX125"><CODE>x:GC-Clip-X-Origin</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX126"><CODE>x:GC-Clip-Y-Origin</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX131"><CODE>x:GC-Dash-List</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX130"><CODE>x:GC-Dash-Offset</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX117"><CODE>x:GC-Fill-Rule</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX116"><CODE>x:GC-Fill-Style</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX122"><CODE>x:GC-Font</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX110"><CODE>x:GC-Foreground</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX108"><CODE>x:GC-Function</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX124"><CODE>x:GC-Graphics-Exposures</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX115"><CODE>x:GC-Join-Style</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX113"><CODE>x:GC-Line-Style</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX112"><CODE>x:GC-Line-Width</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX109"><CODE>x:GC-Plane-Mask</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX119"><CODE>x:GC-Stipple</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX123"><CODE>x:GC-Subwindow-Mode</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX118"><CODE>x:GC-Tile</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX120"><CODE>x:GC-Tile-Stip-X-Origin</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX121"><CODE>x:GC-Tile-Stip-Y-Origin</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD COLSPAN=3> <HR></TD></TR> +</TABLE><P></P><table><tr><th valign=top>Jump to: </th><td><A HREF="Xlibscm.html#vr_X" style="text-decoration:none"><b>X</b></A> + +</td></tr></table><P> + +This is an alphabetical list of concepts introduced in this manual. +</P> +<P> + +<HR SIZE="6"> +<A NAME="SEC18"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC17"> < </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[ > ]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC17"> << </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top"> Up </A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H1> Concept Index </H1> +<!--docid::SEC18::--> +<table><tr><th valign=top>Jump to: </th><td><A HREF="Xlibscm.html#cp_C" style="text-decoration:none"><b>C</b></A> + +<A HREF="Xlibscm.html#cp_D" style="text-decoration:none"><b>D</b></A> + +<A HREF="Xlibscm.html#cp_M" style="text-decoration:none"><b>M</b></A> + +<A HREF="Xlibscm.html#cp_N" style="text-decoration:none"><b>N</b></A> + +<A HREF="Xlibscm.html#cp_R" style="text-decoration:none"><b>R</b></A> + +<A HREF="Xlibscm.html#cp_U" style="text-decoration:none"><b>U</b></A> + +<A HREF="Xlibscm.html#cp_V" style="text-decoration:none"><b>V</b></A> + +<A HREF="Xlibscm.html#cp_X" style="text-decoration:none"><b>X</b></A> + +</td></tr></table><P></P> +<TABLE border=0> +<TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR> +<TR><TD COLSPAN=3> <HR></TD></TR> +<TR><TH><A NAME="cp_C"></A>C</TH><TD></TD><TD></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX139">colormap</A></TD><TD valign=top><A HREF="Xlibscm.html#SEC10">6. Colormap</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX134">cursor</A></TD><TD valign=top><A HREF="Xlibscm.html#SEC9">5. Cursor</A></TD></TR> +<TR><TD COLSPAN=3> <HR></TD></TR> +<TR><TH><A NAME="cp_D"></A>D</TH><TD></TD><TD></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX46">depth</A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX60">drawable</A></TD><TD valign=top><A HREF="Xlibscm.html#SEC3">3. Drawables</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX59">Drawable</A></TD><TD valign=top><A HREF="Xlibscm.html#SEC3">3. Drawables</A></TD></TR> +<TR><TD COLSPAN=3> <HR></TD></TR> +<TR><TH><A NAME="cp_M"></A>M</TH><TD></TD><TD></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX96">map</A></TD><TD valign=top><A HREF="Xlibscm.html#SEC6">3.3 Window Properties and Visibility</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX98">mapped</A></TD><TD valign=top><A HREF="Xlibscm.html#SEC6">3.3 Window Properties and Visibility</A></TD></TR> +<TR><TD COLSPAN=3> <HR></TD></TR> +<TR><TH><A NAME="cp_N"></A>N</TH><TD></TD><TD></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX129">none</A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD COLSPAN=3> <HR></TD></TR> +<TR><TH><A NAME="cp_R"></A>R</TH><TD></TD><TD></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX140">RGB</A></TD><TD valign=top><A HREF="Xlibscm.html#SEC10">6. Colormap</A></TD></TR> +<TR><TD COLSPAN=3> <HR></TD></TR> +<TR><TH><A NAME="cp_U"></A>U</TH><TD></TD><TD></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX97">unmap</A></TD><TD valign=top><A HREF="Xlibscm.html#SEC6">3.3 Window Properties and Visibility</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX99">unmapped</A></TD><TD valign=top><A HREF="Xlibscm.html#SEC6">3.3 Window Properties and Visibility</A></TD></TR> +<TR><TD COLSPAN=3> <HR></TD></TR> +<TR><TH><A NAME="cp_V"></A>V</TH><TD></TD><TD></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX29">visual</A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX30">Visual</A></TD><TD valign=top><A HREF="Xlibscm.html#SEC2">2. Display and Screens</A></TD></TR> +<TR><TD COLSPAN=3> <HR></TD></TR> +<TR><TH><A NAME="cp_X"></A>X</TH><TD></TD><TD></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX1">X</A></TD><TD valign=top><A HREF="Xlibscm.html#SEC1">1. Xlibscm</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX128">x:None</A></TD><TD valign=top><A HREF="Xlibscm.html#SEC8">GC Attributes</A></TD></TR> +<TR><TD></TD><TD valign=top><A HREF="Xlibscm.html#IDX2"><CODE>Xlib</CODE></A></TD><TD valign=top><A HREF="Xlibscm.html#SEC1">1. Xlibscm</A></TD></TR> +<TR><TD COLSPAN=3> <HR></TD></TR> +</TABLE><P></P><table><tr><th valign=top>Jump to: </th><td><A HREF="Xlibscm.html#cp_C" style="text-decoration:none"><b>C</b></A> + +<A HREF="Xlibscm.html#cp_D" style="text-decoration:none"><b>D</b></A> + +<A HREF="Xlibscm.html#cp_M" style="text-decoration:none"><b>M</b></A> + +<A HREF="Xlibscm.html#cp_N" style="text-decoration:none"><b>N</b></A> + +<A HREF="Xlibscm.html#cp_R" style="text-decoration:none"><b>R</b></A> + +<A HREF="Xlibscm.html#cp_U" style="text-decoration:none"><b>U</b></A> + +<A HREF="Xlibscm.html#cp_V" style="text-decoration:none"><b>V</b></A> + +<A HREF="Xlibscm.html#cp_X" style="text-decoration:none"><b>X</b></A> + +</td></tr></table><P> + +<HR SIZE="6"> +<A NAME="SEC_Contents"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H1>Table of Contents</H1> +<BLOCKQUOTE> +<A NAME="TOC1" HREF="Xlibscm.html#SEC1">1. Xlibscm</A> +<BR> +<A NAME="TOC2" HREF="Xlibscm.html#SEC2">2. Display and Screens</A> +<BR> +<A NAME="TOC3" HREF="Xlibscm.html#SEC3">3. Drawables</A> +<BR> +<BLOCKQUOTE> +<A NAME="TOC4" HREF="Xlibscm.html#SEC4">3.1 Windows and Pixmaps</A> +<BR> +<A NAME="TOC5" HREF="Xlibscm.html#SEC5">3.2 Window Attributes</A> +<BR> +<A NAME="TOC6" HREF="Xlibscm.html#SEC6">3.3 Window Properties and Visibility</A> +<BR> +</BLOCKQUOTE> +<A NAME="TOC7" HREF="Xlibscm.html#SEC7">4. Graphics Context</A> +<BR> +<A NAME="TOC9" HREF="Xlibscm.html#SEC9">5. Cursor</A> +<BR> +<A NAME="TOC10" HREF="Xlibscm.html#SEC10">6. Colormap</A> +<BR> +<A NAME="TOC11" HREF="Xlibscm.html#SEC11">7. Rendering</A> +<BR> +<A NAME="TOC14" HREF="Xlibscm.html#SEC14">8. Images</A> +<BR> +<A NAME="TOC15" HREF="Xlibscm.html#SEC15">9. Event</A> +<BR> +<A NAME="TOC16" HREF="Xlibscm.html#SEC16">Procedure and Macro Index</A> +<BR> +<A NAME="TOC17" HREF="Xlibscm.html#SEC17">Variable Index</A> +<BR> +<A NAME="TOC18" HREF="Xlibscm.html#SEC18">Concept Index</A> +<BR> +</BLOCKQUOTE> +<HR SIZE=1> +<A NAME="SEC_OVERVIEW"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H1>Short Table of Contents</H1> +<BLOCKQUOTE> +<A NAME="TOC1" HREF="Xlibscm.html#SEC1">1. Xlibscm</A> +<BR> +<A NAME="TOC2" HREF="Xlibscm.html#SEC2">2. Display and Screens</A> +<BR> +<A NAME="TOC3" HREF="Xlibscm.html#SEC3">3. Drawables</A> +<BR> +<A NAME="TOC7" HREF="Xlibscm.html#SEC7">4. Graphics Context</A> +<BR> +<A NAME="TOC9" HREF="Xlibscm.html#SEC9">5. Cursor</A> +<BR> +<A NAME="TOC10" HREF="Xlibscm.html#SEC10">6. Colormap</A> +<BR> +<A NAME="TOC11" HREF="Xlibscm.html#SEC11">7. Rendering</A> +<BR> +<A NAME="TOC14" HREF="Xlibscm.html#SEC14">8. Images</A> +<BR> +<A NAME="TOC15" HREF="Xlibscm.html#SEC15">9. Event</A> +<BR> +<A NAME="TOC16" HREF="Xlibscm.html#SEC16">Procedure and Macro Index</A> +<BR> +<A NAME="TOC17" HREF="Xlibscm.html#SEC17">Variable Index</A> +<BR> +<A NAME="TOC18" HREF="Xlibscm.html#SEC18">Concept Index</A> +<BR> + +</BLOCKQUOTE> +<HR SIZE=1> +<A NAME="SEC_About"></A> +<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> +<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Top">Top</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_Contents">Contents</A>]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD> +<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="Xlibscm.html#SEC_About"> ? </A>]</TD> +</TR></TABLE> +<H1>About this document</H1> +This document was generated +by +using <A HREF="http://texi2html.cvshome.org"><I>texi2html</I></A> +<P></P> +The buttons in the navigation panels have the following meaning: +<P></P> +<table border = "1"> +<TR> +<TH> Button </TH> +<TH> Name </TH> +<TH> Go to </TH> +<TH> From 1.2.3 go to</TH> +</TR> +<TR> +<TD ALIGN="CENTER"> + [ < ] </TD> +<TD ALIGN="CENTER"> +Back +</TD> +<TD> +previous section in reading order +</TD> +<TD> +1.2.2 +</TD> +</TR> +<TR> +<TD ALIGN="CENTER"> + [ > ] </TD> +<TD ALIGN="CENTER"> +Forward +</TD> +<TD> +next section in reading order +</TD> +<TD> +1.2.4 +</TD> +</TR> +<TR> +<TD ALIGN="CENTER"> + [ << ] </TD> +<TD ALIGN="CENTER"> +FastBack +</TD> +<TD> +beginning of this chapter or previous chapter +</TD> +<TD> +1 +</TD> +</TR> +<TR> +<TD ALIGN="CENTER"> + [ Up ] </TD> +<TD ALIGN="CENTER"> +Up +</TD> +<TD> +up section +</TD> +<TD> +1.2 +</TD> +</TR> +<TR> +<TD ALIGN="CENTER"> + [ >> ] </TD> +<TD ALIGN="CENTER"> +FastForward +</TD> +<TD> +next chapter +</TD> +<TD> +2 +</TD> +</TR> +<TR> +<TD ALIGN="CENTER"> + [Top] </TD> +<TD ALIGN="CENTER"> +Top +</TD> +<TD> +cover (top) of document +</TD> +<TD> + +</TD> +</TR> +<TR> +<TD ALIGN="CENTER"> + [Contents] </TD> +<TD ALIGN="CENTER"> +Contents +</TD> +<TD> +table of contents +</TD> +<TD> + +</TD> +</TR> +<TR> +<TD ALIGN="CENTER"> + [Index] </TD> +<TD ALIGN="CENTER"> +Index +</TD> +<TD> +concept index +</TD> +<TD> + +</TD> +</TR> +<TR> +<TD ALIGN="CENTER"> + [ ? ] </TD> +<TD ALIGN="CENTER"> +About +</TD> +<TD> +this page +</TD> +<TD> + +</TD> +</TR> +</TABLE> + <P> + where the <STRONG> Example </STRONG> assumes that the current position + is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of + the following structure:</P> + <UL> + <LI> 1. Section One + <UL> + <LI>1.1 Subsection One-One + <UL> + <LI>...</LI> + </UL> + <LI>1.2 Subsection One-Two + <UL> + <LI>1.2.1 Subsubsection One-Two-One</LI> + <LI>1.2.2 Subsubsection One-Two-Two</LI> + <LI>1.2.3 Subsubsection One-Two-Three + <STRONG><== Current Position </STRONG></LI> + <LI>1.2.4 Subsubsection One-Two-Four</LI> + </UL> + </LI> + <LI>1.3 Subsection One-Three + <UL> + <LI>...</LI> + </UL> + </LI> + <LI>1.4 Subsection One-Four</LI> + </UL> + </LI> + </UL> + +<HR SIZE=1> +<BR> +<FONT SIZE="-1"> +This document was generated +by <I>James LewisMoss</I> on <I>May, 6 2004</I> +using <A HREF="http://texi2html.cvshome.org"><I>texi2html</I></A> +</FONT> + +</BODY> +</HTML> @@ -482,7 +482,7 @@ (openbsd *unknown* unix gcc ) ;gcc (os/2-cset i386 os/2 icc ) ;link386 (os/2-emx i386 os/2 gcc ) ;gcc - (plan9-8 i386 plan9 8c ) ;8l +;; (plan9-8 i386 plan9 8c ) ;8l (svr4-gcc-sun-ld sparc sunos gcc ) ;ld (sunos sparc sunos cc ) ;ld (svr4 *unknown* unix cc ) ;ld @@ -560,8 +560,8 @@ (m atari-st-gcc "" "-lpml" #f () ()) (m atari-st-turbo-c "" "" #f () ()) - (c plan9-8 "" "" #f () ()) - (m plan9-8 "" "" #f () ()) +;; (c plan9-8 "" "" #f () ()) +;; (m plan9-8 "" "" #f () ()) (m sunos "" "-lm" #f () ()) (dlll sunos "-DSUN_DL" "-ldl" #f () ()) @@ -1094,21 +1094,21 @@ ;; does print a lot of them, indeed.) ;; -p Invoke a standard ANSI C preprocessor before compiling ;; (instead of a rudimentary builtin one used by default). -(defcommand compile-c-files plan9-8 - (lambda (files parms) - (and (batch:try-chopped-command - parms - "8c" "-Fwp" "-DPLAN9" ;"-V" - ;;(include-spec "-i" parms) - (c-includes parms) - (c-flags parms) - files) - (truncate-up-to (map c->8 files) #\/)))) -(defcommand link-c-program plan9-8 - (lambda (oname objects libs parms) - (and (batch:try-command - parms "8l" "-o" oname objects libs) - oname))) +;;(defcommand compile-c-files plan9-8 +;; (lambda (files parms) +;; (and (batch:try-chopped-command +;; parms +;; "8c" "-Fwp" "-DPLAN9" ;"-V" +;; ;;(include-spec "-i" parms) +;; (c-includes parms) +;; (c-flags parms) +;; files) +;; (truncate-up-to (map c->8 files) #\/)))) +;;(defcommand link-c-program plan9-8 +;; (lambda (oname objects libs parms) +;; (and (batch:try-command +;; parms "8l" "-o" oname objects libs) +;; oname))) (defcommand compile-c-files gcc (lambda (files parms) @@ -175,7 +175,7 @@ void throw_to_continuation P((CONTINUATION *cont, long val, continuations on the SPARC. It flushes the register windows so that all the state of the process is contained in the stack. */ -#ifdef sparc +#if defined (sparc) || defined (__sparc__) || defined (__sparc) # define FLUSH_REGISTER_WINDOWS asm("ta 3") #else # define FLUSH_REGISTER_WINDOWS /* empty */ diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..179bb8b --- /dev/null +++ b/debian/changelog @@ -0,0 +1,271 @@ +scm (5d9-4.1) unstable; urgency=high + + * Non-maintainer upload. + * High-urgency upload for sarge-targetted RC bugfix. + * Revert upstream "CAUTIOUS" define, which causes the scm build to + fail its test suite on alpha (and, it appears, powerpc as well). + Closes: #245810. + + -- Steve Langasek <vorlon@debian.org> Tue, 7 Dec 2004 23:23:48 -0800 + +scm (5d9-4) unstable; urgency=low + + * Apply patch from 144062 to fix hppa build (Closes: #144062) + * Change scm.1 section from Jan 4 200 to 1. (lintian) + + -- James LewisMoss <dres@debian.org> Thu, 6 May 2004 14:24:32 -0400 + +scm (5d9-3) unstable; urgency=low + + * Properly clean up info files. + * Make and install Xlibscm.info. + + -- James LewisMoss <dres@debian.org> Sat, 3 Apr 2004 15:44:38 -0500 + +scm (5d9-2) unstable; urgency=low + + * Fix path problem in slibcat. Hack at mklibcat.scm. (Closes: #241510) + + -- James LewisMoss <dres@debian.org> Sat, 3 Apr 2004 15:35:52 -0500 + +scm (5d9-1) unstable; urgency=low + + * New upstream release + * Merge NMU sparc changes (Closes: #191171, #191356) + * SHORT_INT is defined for ia64 upstream (Closes: #141928) + * Scheme imps now grouped in info file (has been for a while) + (Closes: #115452) + + -- James LewisMoss <dres@debian.org> Sun, 14 Mar 2004 11:44:51 -0500 + +scm (5d6-3.1) unstable; urgency=low + + * NMU with patch from James Troup, to fix FTBFS on sparc. Closes: #191171 + + -- Joey Hess <joeyh@debian.org> Tue, 29 Apr 2003 19:56:51 -0400 + +scm (5d6-3) unstable; urgency=low + + * Add build depend on xlibs-dev (Closes: #148020) + + -- James LewisMoss <dres@debian.org> Fri, 24 May 2002 15:56:12 -0400 + +scm (5d6-2) unstable; urgency=low + + * Remove libregexx-dev from build-depends. + * Change build to use ./scmlit rather than scmlit (should fix some build + problems) (looks like alpha is mostly building) + * New release (Closes: #140175) + * Built with turtlegraphics last time (Closes: #58515) + + -- James LewisMoss <dres@debian.org> Thu, 23 May 2002 13:41:02 -0400 + +scm (5d6-1) unstable; urgency=low + + * New upstream. + * Add xlib and turtlegr to requested list of features. (closes + some bug) + * Make clean actually clean most everything up. + * Remove hacks renaming build to something else and just set build as a + .PHONY target in debian/rules. + * Add the turtlegr code. + + -- James LewisMoss <dres@debian.org> Fri, 17 May 2002 13:27:00 -0400 + +scm (5d5-1) unstable; urgency=low + + * New upstream + * Has fixes for 64 bit archs. May fix alpha compile problem. Does fix + (Closes: #140175) + * Take out -O2 arg. + + -- James LewisMoss <dres@debian.org> Sat, 6 Apr 2002 17:46:22 -0500 + +scm (5d4-3) unstable; urgency=low + + * Don't link with regexx, but just use libc6's regular expression + functions. + * Define (terms) to output /usr/share/common-licenses/GPL (Closes: + #119321) + + -- James LewisMoss <dres@debian.org> Wed, 12 Dec 2001 16:27:02 -0500 + +scm (5d4-2) unstable; urgency=low + + * Add texinfo to build depends (Closes: #107011) + + -- James LewisMoss <dres@debian.org> Sun, 29 Jul 2001 22:16:35 -0400 + +scm (5d4-1) unstable; urgency=low + + * New upstream release. + * Move install-info --remove to prerm. + + -- James LewisMoss <dres@debian.org> Tue, 22 May 2001 01:35:50 -0400 + +scm (5d3-5) unstable; urgency=low + + * Move scm info files to section "The Algorithmic Language Scheme" to + match up with guile. + + -- James LewisMoss <dres@debian.org> Mon, 11 Dec 2000 03:49:34 -0500 + +scm (5d3-4) unstable; urgency=low + + * Fix build depends (Closes: #76691) + + -- James LewisMoss <dres@debian.org> Sat, 11 Nov 2000 09:55:07 -0500 + +scm (5d3-3) unstable; urgency=low + + * Fix path in scm dhelp file. + + -- James LewisMoss <dres@debian.org> Fri, 27 Oct 2000 15:37:47 -0400 + +scm (5d3-2) unstable; urgency=low + + * Actually put the header files in the package. Oops. + + -- James LewisMoss <dres@debian.org> Thu, 26 Oct 2000 21:52:47 -0400 + +scm (5d3-1) unstable; urgency=low + + * New upstream. (Closes: #74761) + * Make (terms) use new license location. + * Make use libregexx rather than librx. + * Fix build depends for above. + * Using new regex lib seems to fix crash (Closes: #66787) + * Consider adding scm-dev package with headers, but instead just add the + headers to the scm package. (Closes: #70787) + * Add doc-base support. + + -- James LewisMoss <dres@debian.org> Sun, 22 Oct 2000 22:29:41 -0400 + +scm (5d2-3) unstable frozen; urgency=low + + * Fix libncurses4-dev -> libncurses5-dev build depend (Closes: #58435) + * Fix libreadline2-dev -> libreadline4-dev build depend. + * Fix license location in copyright file (lintian warning) + * Add tetex-bin as a build depend (needs makeinfo) (Closes: #53197) + * Add -isp option to dpkg-gencontrol (lintian error) + * Move scm to section interpreters. + + -- James LewisMoss <dres@debian.org> Sun, 12 Mar 2000 09:04:17 -0500 + +scm (5d2-2) unstable; urgency=low + + * Apply patch from upstream for bug in eval.c. (Picked up from + comp.lang.scheme) + * Add Build-Depends on slib, librx1g-dev, libncurses4-dev, libreadlineg2-dev. + * Up standards version. + * Correct description: this is an R5RS implementation now + * Make sure no optimizations are done on m68k. (Closes: #52434) + + -- James LewisMoss <dres@debian.org> Thu, 16 Dec 1999 23:53:15 -0500 + +scm (5d2-1) unstable; urgency=low + + * New upstream. + + -- James LewisMoss <dres@debian.org> Mon, 6 Dec 1999 19:30:02 -0500 + +scm (5d1-2) unstable; urgency=low + + * Remove TAGS on clean (cut the diff back down to reasonable size). + + -- James LewisMoss <dres@debian.org> Sat, 13 Nov 1999 14:10:10 -0500 + +scm (5d1-1) unstable; urgency=low + + * New upstream. + * move stuff to /usr/share. + + -- James LewisMoss <dres@debian.org> Sat, 13 Nov 1999 13:26:46 -0500 + +scm (5d0-3) unstable; urgency=low + + * Change scmlit call to ./scmlit call (missed one) (Fixes bugs #37455 + and #35545) + * Change man file permissions to 644 (fixes lintian warning) + + -- James LewisMoss <dres@debian.org> Wed, 12 May 1999 22:39:54 -0400 + +scm (5d0-2) unstable; urgency=low + + * Removed call to add_final in init_crs. lendwin doesn't do anything + and scm was crashing when quit everytime in final_scm. + * Changed copyright to reflect new source. + + -- James LewisMoss <dres@debian.org> Thu, 11 Mar 1999 22:13:19 -0500 + +scm (5d0-1) unstable; urgency=low + + * New upstream. + * Changed (terms) to access "/usr/doc/copyright/GPL". + * Changed regex to use -lrx + + -- James LewisMoss <dres@debian.org> Sun, 7 Mar 1999 12:39:16 -0500 + +scm (5c3-6) unstable; urgency=low + + * New maintainer. + + -- James LewisMoss <dres@debian.org> Fri, 26 Feb 1999 00:45:30 -0500 + +scm (5c3-5) frozen unstable; urgency=low + + * debian/rules chmod +x's bld.scm. Fixes #30521. + + -- David N. Welton <davidw@efn.org> Fri, 11 Dec 1998 20:21:49 -0800 + +scm (5c3-4) frozen unstable; urgency=low + + * Made bld.scm executable. Fixes #29578. + + -- David N. Welton <davidw@efn.org> Mon, 30 Nov 1998 20:57:12 -0800 + +scm (5c3-3) frozen unstable; urgency=low + + * -nw + * Fixes #16762. + * Fixes #18163. + * Fixes #18164. + * Fixes #23743. + * Fixes #24098. + * Fixes #24099. + * Fixes #24547. + + -- David N. Welton <davidw@efn.org> Mon, 9 Nov 1998 21:41:29 -0800 + +scm (5c3-2) frozen unstable; urgency=low + + * Re-uploading for slink freeze. + + -- David N. Welton <davidw@efn.org> Mon, 2 Nov 1998 21:06:01 -0800 + +scm (5c3-1) unstable; urgency=low + + * New upstream version. + + -- David N. Welton <davidw@efn.org> Thu, 29 Oct 1998 21:37:49 -0800 + +scm (5b3-1) unstable; urgency=low + + * New maintainer + * New version + * libc6 + + -- Rob Browning <rlb@cs.utexas.edu> Fri, 12 Dec 1997 17:29:42 -0600 + +scm (4e6-2) unstable; urgency=low + + * Recompiled to use regex0. + + -- Karl Sackett <krs@debian.org> Wed, 18 Dec 1996 13:27:20 -0600 + +scm (4e6-1) unstable; urgency=low + + * First Debian release. + * Makefile.in: scm compiles with regex. + + -- Karl Sackett <krs@debian.org> Fri, 13 Dec 1996 08:55:23 -0600 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..42b1b1d --- /dev/null +++ b/debian/control @@ -0,0 +1,15 @@ +Source: scm +Section: interpreters +Priority: optional +Maintainer: James LewisMoss <dres@debian.org> +Standards-Version: 3.1.1 +Build-Depends: slib (>> 3a1), libncurses5-dev, libreadline4-dev, texi2html, texinfo, xlibs-dev + +Package: scm +Architecture: any +Section: interpreters +Priority: optional +Depends: slib, ${shlibs:Depends} +Description: A Scheme language interpreter + Scm conforms to Revised^5 Report on the Algorithmic Language Scheme and + the IEEE P1178 specification. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..a9a786e --- /dev/null +++ b/debian/copyright @@ -0,0 +1,16 @@ +This is the Debian GNU/Linux prepackaged version of scm. + +This package was put together by Karl Sackett <krs@debian.org>, and +upgraded by James LewisMoss <dres@debian.org> from sources obtained +from: + + ftp://swissnet.ai.mit.edu/ftpdir/scm/scm5d9.tar.gz + +For more information see: + + http://www-swiss.ai.mit.edu/~jaffer/SCM + +License: + +scm is distributed under the GNU General Public License. See +/usr/share/common-licenses/GPL for details. diff --git a/debian/doc-base b/debian/doc-base new file mode 100644 index 0000000..1e9e5f3 --- /dev/null +++ b/debian/doc-base @@ -0,0 +1,19 @@ +Document: scm +Title: SCM: scheme interpreter +Author: Aubrey Jaffer +Abstract: This manual describes the scheme interpreter scm. +Section: Apps/Programming + +Format: info +Files: /usr/share/info/scm.info + +Format: info +Files: /usr/share/info/Xlibscm.info + +Format: HTML +Index: /usr/share/doc/scm/scm.html +Files: /usr/share/doc/scm/scm.html + +Format: HTML +Index: /usr/share/doc/scm/Xlibscm.html +Files: /usr/share/doc/scm/Xlibscm.html diff --git a/debian/postinst b/debian/postinst new file mode 100644 index 0000000..e188be8 --- /dev/null +++ b/debian/postinst @@ -0,0 +1,19 @@ +#!/bin/sh +set -e + +install-info --quiet --section "The Algorithmic Language Scheme" \ + "The Algorithmic Language Scheme" \ + --description="A Scheme language interpreter" \ + /usr/share/info/scm.info.gz + +install-info --quiet --section "The Algorithmic Language Scheme" \ + "The Algorithmic Language Scheme" \ + --description="SCM Language X Interface" \ + /usr/share/info/Xlibscm.info.gz + +# doc base support +if [ "$1" = configure ]; then + if command -v install-docs >/dev/null 2>&1; then + install-docs -i /usr/share/doc-base/scm + fi +fi diff --git a/debian/prerm b/debian/prerm new file mode 100644 index 0000000..968aa17 --- /dev/null +++ b/debian/prerm @@ -0,0 +1,16 @@ +#!/bin/sh + +set -e + +if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/scm ]; then + rm -f /usr/doc/scm +fi + +# doc base support +if [ "$1" = remove -o "$1" = upgrade ]; then + if command -v install-docs >/dev/null 2>&1; then + install-docs -r scm + fi +fi + +install-info --quiet --remove /usr/share/info/scm.info.gz diff --git a/debian/require.scm.debian b/debian/require.scm.debian new file mode 100644 index 0000000..06e43e6 --- /dev/null +++ b/debian/require.scm.debian @@ -0,0 +1,2 @@ +(define (library-vicinity) "/usr/share/slib/") +(load (in-vicinity (library-vicinity) "require")) diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..9ed76c6 --- /dev/null +++ b/debian/rules @@ -0,0 +1,168 @@ +#! /usr/bin/make -f +# -*-Makefile-*- + +CC =gcc +CFLAGS = -g -Wall +LDFLAGS = + +SHELL =/bin/sh +srcdir =. + +INSTALL =/usr/bin/install +INSTALL_DIR =$(INSTALL) -d -m 755 -o root -g root +INSTALL_PROGRAM =$(INSTALL) -m 755 -o root -g root +INSTALL_DATA =$(INSTALL) -m 644 -o root -g root +INSTALL_MAN =$(INSTALL) -m 644 -o root -g root + +ifeq ($(DEB_BUILD_ARCH), m68k) +COMPILER_OPTIONS= +else +COMPILER_OPTIONS= +endif + +SCM_OPTIONS = -p linux \ + --compiler-options="$(COMPILER_OPTIONS)" \ + -F cautious \ + -F bignums \ + -F arrays \ + -F array-for-each \ + -F inexact \ + -F record \ + -F compiled-closure \ + -F generalized-c-arguments \ + -F tick-interrupts \ + -F i/o-extensions \ + -F edit-line \ + -F regex \ + -F socket \ + -F posix \ + -F unix \ + -F curses \ + -F dynamic-linking \ + -F turtlegr \ + -F xlib \ + -F dump \ + -F macro + +# -F dump + +# -F heap-can-shrink \ + +#SCHEME_LIBRARY_PATH=../slib-3a1/ +#export SCHEME_LIBRARY_PATH +NON_LIB_FILES = 'bench.scm|build.scm|example.scm|r4rstest.scm|pi.scm|grtest.scm' + +#test: stamp-configure +# $(checkdir) +# make checklit + +build: build-stamp +build-stamp: + chmod +x build + $(checkdir) + cp debian/require.scm.debian require.scm +ifeq ($(DEB_BUILD_ARCH), m68k) + ${MAKE} scmlit CFLAGS="-g -Wall" +else + ${MAKE} scmlit +endif + test -e /usr/share/slib || \ + (echo "Must have slib installed for compile" && exit 1) + ./build ${SCM_OPTIONS} > debian/bld + chmod ug+x debian/bld + debian/bld + make scm.info + make Xlibscm.info + texi2html -monolithic scm.texi + texi2html -monolithic Xlibscm.texi + touch build-stamp + +clean: + $(checkdir) + -rm -f scm.info* scm.html tmp1 tmp2 scmflags.h scmlit + -rm -f Xlibscm.info* + -rm -f features.txi platform.txi + -rm -f *.info + -rm require.scm scm + make distclean + -rm -f srcdir.mk + -rm -f debian/bld + -rm -rf *~ debian/*~ debian/tmp* debian/files debian/substvars + -rm -f build-stamp + +binary-indep: checkroot + $(checkdir) + +binary-arch: checkroot build + $(checkdir) + -rm -rf debian/tmp* + +# debian/tmp + $(INSTALL_DIR) debian/tmp + $(INSTALL_DIR) debian/tmp/DEBIAN + $(INSTALL_PROGRAM) debian/postinst debian/tmp/DEBIAN + $(INSTALL_PROGRAM) debian/prerm debian/tmp/DEBIAN + +# binaries + $(INSTALL_DIR) debian/tmp/usr/bin + $(INSTALL_PROGRAM) -s scm debian/tmp/usr/bin + +# library + $(INSTALL_DIR) debian/tmp/usr/lib/scm + $(INSTALL_DATA) `ls *.scm | egrep -v ${NON_LIB_FILES}` debian/tmp/usr/lib/scm + $(INSTALL_DATA) slibcat debian/tmp/usr/lib/scm + +# headers + $(INSTALL_DIR) debian/tmp/usr/include/scm + $(INSTALL_DATA) *.h debian/tmp/usr/include/scm + +# man pages + $(INSTALL_DIR) debian/tmp/usr/share/man/man1 + $(INSTALL_MAN) scm.1 debian/tmp/usr/share/man/man1 + gzip -9vr debian/tmp/usr/share/man || true + +# documentation + $(INSTALL_DIR) debian/tmp/usr/share/doc/scm + $(INSTALL_DATA) debian/changelog debian/tmp/usr/share/doc/scm/changelog.Debian + $(INSTALL_DATA) ChangeLog debian/tmp/usr/share/doc/scm/changelog + $(INSTALL_DATA) QUICKREF debian/tmp/usr/share/doc/scm + $(INSTALL_DATA) README debian/tmp/usr/share/doc/scm + gzip -9v debian/tmp/usr/share/doc/scm/* + $(INSTALL_DATA) scm.html debian/tmp/usr/share/doc/scm + $(INSTALL_DATA) Xlibscm.html debian/tmp/usr/share/doc/scm + $(INSTALL_DATA) debian/copyright debian/tmp/usr/share/doc/scm + + $(INSTALL_DIR) debian/tmp/usr/share/doc-base + $(INSTALL_DATA) debian/doc-base debian/tmp/usr/share/doc-base/scm + +# examples + $(INSTALL_DIR) debian/tmp/usr/share/doc/scm/examples + $(INSTALL_DATA) r4rstest.scm debian/tmp/usr/share/doc/scm/examples + $(INSTALL_DATA) example.scm debian/tmp/usr/share/doc/scm/examples + $(INSTALL_DATA) pi.scm debian/tmp/usr/share/doc/scm/examples + $(INSTALL_DATA) pi.c debian/tmp/usr/share/doc/scm/examples + $(INSTALL_DATA) bench.scm debian/tmp/usr/share/doc/scm/examples + $(INSTALL_DATA) grtest.scm debian/tmp/usr/share/doc/scm/examples + $(INSTALL_DATA) split.scm debian/tmp/usr/share/doc/scm/examples + +# info pages + $(INSTALL_DIR) debian/tmp/usr/share/info + $(INSTALL_DATA) scm.info* debian/tmp/usr/share/info + $(INSTALL_DATA) Xlibscm.info* debian/tmp/usr/share/info + gzip -9 debian/tmp/usr/share/info/* + + dpkg-shlibdeps scm + dpkg-gencontrol -isp + dpkg --build debian/tmp .. + +define checkdir + test -f scm.h -a -f debian/rules +endef + +binary: binary-indep binary-arch + +checkroot: + $(checkdir) + test root = "`whoami`" + +.PHONY: build clean binary binary-arch binary-indep diff --git a/grtest.scm b/grtest.scm new file mode 100644 index 0000000..7401308 --- /dev/null +++ b/grtest.scm @@ -0,0 +1,82 @@ + +; This is a quick hack to test the graphics primitives. +; The SLIB scheme library is needed for random. +; IMHO, the syntax of `do' in scheme is horrible! +; - sjm + +(define (grtest) + (require 'random) ; needs SLIB + (graphics-mode!) + + (display "testing draw-to") (newline) + (clear-graphics!) + (goto-center!) + (do ((x 0 (+ x 3))) + ((> x (max-x)) 0) + (set-color! (remainder (/ x 3) (max-color))) + (draw-to x 0) + (draw-to x (max-y)) + ) + + (do ((y 0 (+ y 3))) + ((> y (max-y)) 0) + (set-color! (remainder (/ y 3) (max-color))) + (goto-center!) + (draw-to! 0 y) + (goto-center!) + (draw-to! (max-x) y) + ) + + (goto-nw!) + (do ((x 0 (+ x 2))) + ((> x (max-x)) 0) + (set-color! (remainder (/ x 2) (max-color))) + (draw-to x (max-y)) + ) + (do ((y (+ (max-y) 1) (- y 2))) + ((< y 0) 0) + (set-color! (remainder (/ y 2) (max-color))) + (draw-to (max-x) y) + ) + + (display "testing set-dot!") (newline) + (clear-graphics!) + (do ((x 0 (+ x 1))) + ((= x 100) 0) + (set-dot! (+ (random (max-x)) 1) (+ (random (max-y)) 1) + (+ (random (max-color)) 1)) + ) + + (display "testing draw with turn-to!") (newline) + (clear-graphics!) + (goto-center!) + (do ((x 0 (+ x 1))) + ((= x 100) 0) + (set-color! (+ (random (max-color)) 1)) + (turn-to! (random 360)) + (draw (random 50)) + ) + + (display "testing draw with turn-right") (newline) + (clear-graphics!) + (goto-center!) + (do ((x 0 (+ x 1))) + ((= x 100) 0) + (set-color! (+ (random (max-color)) 1)) + (turn-right (random 90)) + (draw (random 50)) + ) + + (display "testing draw with turn-left") (newline) + (clear-graphics!) + (goto-center!) + (do ((x 0 (+ x 1))) + ((= x 100) 0) + (set-color! (+ (random (max-color)) 1)) + (turn-left (random 90)) + (draw (random 50)) + ) + + (text-mode!) +) + diff --git a/mkimpcat.scm b/mkimpcat.scm index 8f5929a..df6c813 100644 --- a/mkimpcat.scm +++ b/mkimpcat.scm @@ -44,6 +44,7 @@ (let ((catname "implcat") (iv (implementation-vicinity))) (define (in-implementation-vicinity . paths) (apply in-vicinity iv paths)) + (define (in-installation-vicinity . paths) (apply in-vicinity "/usr/lib/scm/" paths)) (call-with-output-file (in-implementation-vicinity catname) (lambda (op) (define (display* . args) @@ -188,21 +189,21 @@ (add-alias '3rs 'r3rs) (add-alias '4rs 'r4rs) (add-alias '5rs 'r5rs) - (add-alias 'hobbit (in-implementation-vicinity "hobbit")) - (add-alias 'scmhob (in-implementation-vicinity "scmhob")) - (add-alias 'regex-case (in-implementation-vicinity "rgxcase")) - (add-alias 'url-filename (in-implementation-vicinity "urlfile")) - (add-source 'disarm (in-implementation-vicinity + (add-alias 'hobbit (in-installation-vicinity "hobbit")) + (add-alias 'scmhob (in-installation-vicinity "scmhob")) + (add-alias 'regex-case (in-installation-vicinity "rgxcase")) + (add-alias 'url-filename (in-installation-vicinity "urlfile")) + (add-source 'disarm (in-installation-vicinity (string-append "disarm" (scheme-file-suffix)))) - (add-source 'build (in-implementation-vicinity "build")) - (add-source 'compile (in-implementation-vicinity + (add-source 'build (in-installation-vicinity "build")) + (add-source 'compile (in-installation-vicinity (string-append "compile" (scheme-file-suffix)))) (display* ")") ) (display* "#+" 'primitive-hygiene) (display* "(") - (add-source 'macro (in-implementation-vicinity "Macro")) + (add-source 'macro (in-installation-vicinity "Macro")) (display* ")") (add-links 'dld @@ -1,5 +1,5 @@ .\" dummy line -.TH SCM "Jan 4 2000" +.TH SCM "1" .UC 4 .SH NAME scm \- a Scheme Language Interpreter @@ -128,12 +128,12 @@ contains initialization code, it will be run when the database is opened. .TP .BI -o dumpname -saves the current SCM session as the executable program +saves the current SCM session as the executable program .I dumpname. -This option works only in SCM builds supporting +This option works only in SCM builds supporting .BI dump. -If options appear on the command line after +If options appear on the command line after .I -o dumpname, then the saved session will continue with processing those options when it is invoked. Otherwise the (new) command line is processed as @@ -248,7 +248,7 @@ can be overridden by subsequent -i and -b options. .ne 5 .TP 5 % scm foo.scm arg1 arg2 arg3 -.br +.br Load and execute the contents of foo.scm. Parameters arg1 arg2 and arg3 are stored in the global list *argv*. .TP @@ -147,3 +147,7 @@ typedef struct safeport { } safeport; #define SAFEP_JMPBUF(sfp) (((safeport *)STREAM(sfp))->jmpbuf) + +#ifdef __hppa__ +#define STACK_GROWS_UP +#endif @@ -0,0 +1,20 @@ +#define turtle_width 40 +#define turtle_height 40 +static char turtle_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xff, 0x00, 0x00, 0x00, 0xe0, 0x84, 0x07, 0x00, 0x00, 0x10, 0x0c, 0x78, + 0x00, 0x00, 0x0c, 0x08, 0xc0, 0x00, 0x00, 0x02, 0x18, 0x40, 0x03, 0x00, + 0x01, 0x28, 0x40, 0x02, 0x80, 0x0f, 0xcc, 0x7f, 0x02, 0xc0, 0xf8, 0x07, + 0x10, 0x06, 0x40, 0x00, 0x04, 0x30, 0x0c, 0x60, 0x00, 0x04, 0x7c, 0x08, + 0xf8, 0x00, 0x04, 0xc2, 0x0f, 0x8c, 0x01, 0x0f, 0x01, 0x0b, 0x26, 0x01, + 0xf1, 0x01, 0x11, 0x03, 0x81, 0x01, 0x81, 0x20, 0x07, 0x83, 0x80, 0x80, + 0x40, 0x9a, 0x83, 0x00, 0x8f, 0xf8, 0x42, 0xc6, 0xff, 0xe3, 0x0f, 0x7e, + 0x63, 0x18, 0x22, 0x00, 0xc0, 0x31, 0xf0, 0x13, 0x00, 0x00, 0x11, 0x00, + 0x11, 0x00, 0x00, 0x0f, 0x00, 0x1b, 0x00, 0x00, 0x06, 0x00, 0x0e, 0x0e, + 0x00, 0x00, 0x00, 0x80, 0x09, 0x00, 0x00, 0x00, 0xc0, 0x88, 0x00, 0x00, + 0x00, 0x00, 0xff, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x05, 0x38, + 0x08, 0x00, 0x80, 0x08, 0x44, 0x08, 0x00, 0x40, 0x04, 0x44, 0x08, 0x00, + 0x20, 0x02, 0x48, 0x04, 0x00, 0x10, 0x01, 0x70, 0x06, 0x00, 0x88, 0x00, + 0xc0, 0x01, 0x00, 0x44, 0x00, 0x40, 0x00, 0x00, 0x22, 0x0e, 0x40, 0x00, + 0x00, 0x11, 0x0a, 0x40, 0x00, 0x00, 0x09, 0x0c, 0x40, 0x00, 0x80, 0x06, + 0x3e, 0x20, 0x00, 0x80, 0xf1, 0xc1, 0x1f, 0x00}; diff --git a/turtlegr.c b/turtlegr.c new file mode 100644 index 0000000..51d81dd --- /dev/null +++ b/turtlegr.c @@ -0,0 +1,1303 @@ + +/* file turtlegr.c * + * Copyright (C) 1992 sjm@ee.tut.fi * + * jtl@cc.tut.fi * + * * + * Turtlegraphics primitives for the * + * SCM interpreter by Aubrey Jaffer * + * * + * Last modification: 13.10.1992 * + * * + * Versions: * + * 12.3.1992 The first version. * + * 13.3.1992 Added the possibility to pass * + * floating point args. * + * 15.3.1992 Graphics cards other than EGA * + * are now supported. * + * 9.4.1992 The internal representation * + * of X & Y is now float. * + * 13.10.1992 Added X11 support. * + * A major rewrite of certain * + * parts. * + * Put -DX11 -DFLOATS to CFLAGS * + * in Makefile to get it. * + * * + * REMEMBER to define INITS=init_turtlegr() * + * in the Makefile. * + * */ + +/* * + * This code tries to compromise between two very different * + * systems: MSDOS and UNIX with the X11 windowing system. * + * The MSDOS version was build first and it really shows. :) * + * The X port is a partial rewrite of the old MSDOS stuff * + * and plays around with #ifdef's a lot. The result is, * + * eventually, a C source which is expected to compile * + * under both MSDOS and UNIX (X11). * + * The X code handles colors emulating CGA palette. It tries * + * to act sensibly even on a monochrome screen and when the * + * color palette is full. * + * X event handling is implemented with polling whenever * + * appropriate. This is not The Right Way to do it in X, but * + * it was easiest to adopt in this case. * + * Another solution would have been to make the X graphics * + * a separate process, but I didn't want to because I wanted * + * to keep it simple. I can't tell how good an example of porting * + * MSDOS software to X this is, but it works. * + * * + * This has been tested with SunOs 4.1.2 with X11R5, Linux 0.98.1 * + * with Xfree86 1.1 (X11R5 port) and in MSDOS with BC 3.1. * + * Because the code uses only the basic Xlib calls, it should * + * compile without problems under _any_ UNIX with X11R4 or newer. * + * * + * Please send bugreports to sjm@ee.tut.fi. * + * I'm especially interested in hearing about ports to other * + * platforms than those tested by me. * + * * + * - sjm * + * */ + + +/****************************************************/ +/***** GENERIC includes & defines *****/ +/****************************************************/ +#include "scm.h" /* includes scmfig.h as well */ +#include "patchlvl.h" /* Guess... */ +#include <math.h> /* sin(), cos(), fmod() */ +#include <stdlib.h> /* atexit() */ + + +/****************************************************/ +/***** X11 specific includes & defines *****/ +/****************************************************/ +#ifdef X11 + +/* Xlib include files */ +#include <X11/Xlib.h> +#include <X11/Xutil.h> +#include <X11/Xatom.h> +#include <stdio.h> + +#include "turtle" +#define BITMAPDEPTH 1 + +#define PROGNAME "scm" +#define CLASSNAME "Scm" +#define WINDOWNAME "TurtleSCM graphics window" +#define ICONNAME "TurtleSCM" + +#define GR_MAX_XSIZE 1024 +#define GR_MAX_YSIZE 1024 +#define GR_DEF_XSIZE 640 +#define GR_DEF_YSIZE 480 +#define GR_MIN_XSIZE 64 +#define GR_MIN_YSIZE 64 + +/* Fake CGA colormap with X - yuk! */ +#define GR_COLORS 16 /* CGA/EGA counterpart */ +#define GR_COLOR00 "black" /* black */ +#define GR_COLOR01 "blue2" /* blue */ +#define GR_COLOR02 "green2" /* green */ +#define GR_COLOR03 "cyan2" /* cyan */ +#define GR_COLOR04 "red3" /* red */ +#define GR_COLOR05 "magenta2" /* magenta */ +#define GR_COLOR06 "yellow2" /* brown */ +#define GR_COLOR07 "light gray" /* white */ +#define GR_COLOR08 "gray" /* gray */ +#define GR_COLOR09 "blue1" /* light blue */ +#define GR_COLOR10 "green1" /* light green */ +#define GR_COLOR11 "cyan1" /* light cyan */ +#define GR_COLOR12 "red1" /* light red */ +#define GR_COLOR13 "magenta1" /* light magenta */ +#define GR_COLOR14 "yellow1" /* yellow */ +#define GR_COLOR15 "white" /* bright white */ + +#ifdef __STDC__ +static void gr_events( int ); +#else +static void gr_events(); +#endif + +#else +/****************************************************/ +/***** PC specific includes & defines *****/ +/****************************************************/ +#include <graphics.h> +#include <stdlib.h> /* for getenv() */ +#include <stdio.h> /* for fputs() */ +#define BGIDIR_ENVSTRING "BGIDIR" +#endif + +/********************************************/ +/***** GENERIC code, declarations *****/ +/********************************************/ +#define SIN( x ) \ + sin( ((x)/180.0) * M_PI ) +#define COS( x ) \ + cos( ((x)/180.0) * M_PI ) + +static int gr_graphicsavail = 0; +static int gr_grmode_on = 0; +static float gr_dir = 0.0; +static int gr_max_x=0, gr_max_y=0, gr_max_color=0; +static float gr_x=0.0, gr_y=0.0; +static int gr_color = 0; + +static char s_gr_draw[] = "draw"; +static char s_gr_move[] = "move"; +static char s_gr_setcolor[] = "set-color!"; +static char s_gr_turnright[] = "turn-right"; +static char s_gr_turnleft[] = "turn-left"; +static char s_gr_turnto[] = "turn-to!"; + +static char s_gr_getdot[] = "get-dot"; +static char s_gr_drawTo[] = "draw-to!"; +static char s_gr_drawto[] = "draw-to"; +static char s_gr_moveTo[] = "move-to!"; + +static char s_gr_setdot[] = "set-dot!"; +static char s_gr_validXYC[] = "valid-xyc?"; + +#ifndef ASSERT +#define ASSERT(ignore1, ignore2, ignore3, ignore4) +#endif + +#ifdef __GNUC__ +inline +#else +static +#endif +int valid_XYC( x, y, color ) +int x, y, color; +{ +#ifdef X11 + /* Check for changed window size */ + gr_events(0); +#endif + if( (x <= gr_max_x) && (y <= gr_max_y) && (color <= gr_max_color) + && (x >= 0) && (y >= 0) && (color >= 0) ) + return( 1 ); + else + return( 0 ); +} /* valid_XYC() */ + + +/********************************************************************/ +/***** X11 specific variable and function declarations *****/ +/********************************************************************/ +#ifdef X11 +static Display *gr_display; /* The X display */ +static int gr_screen; /* The X screen number */ +static Window gr_win; /* The drawable Window */ +static GC gr_gc; /* Graphics Context */ +static unsigned long gr_colortbl[GR_COLORS]; /* Color table */ +static XEvent gr_event; /* Event structure */ + +/* These are needed for XSetWMProperties */ +static char *gr_windowname = WINDOWNAME; +static char *gr_iconname = ICONNAME; +static char gr_progname[] = PROGNAME; +static char gr_classname[] = CLASSNAME; +static int gr_argc = 1; +static char *gr_argv[] = { gr_progname, NULL }; + +static void gr_eventhandler( event ) +XEvent event; +{ + switch( event.type ) { + + case ConfigureNotify: +#ifdef TESTING + fputs( "Received ConfigureNotify event\n", stderr ); +#endif + gr_max_x = event.xconfigure.width - 1; + gr_max_y = event.xconfigure.height - 1; + break; + + case MapNotify: +#ifdef TESTING + fputs( "Received MapNotify event\n", stderr ); +#endif + break; + + case DestroyNotify: +#ifdef TESTING + fputs( "Received DestroyNotify event\n", stderr ); +#endif + break; + + case UnmapNotify: +#ifdef TESTING + fputs( "Received UnmapNotify event\n", stderr ); +#endif + break; + + case Expose: +#ifdef TESTING + fputs( "Received Expose event\n", stderr ); +#endif + if( event.xexpose.count != 0 ) + break; + break; + + case ClientMessage: +#ifdef TESTING + fputs( "Received ClientMessage event\n", stderr ); +#endif + break; + + default: + /* Throw away any unknown events */ + break; + + } /* switch */ +} + +static void gr_events( expected ) +int expected; +{ +int i; + + /* Get at least 'expected' events */ + for( i = 0; i < expected; ++i ) { + XNextEvent( gr_display, &gr_event ); + gr_eventhandler( gr_event ); + } + /* Handle all remaining events if there are any */ + /* XPending will call XFlush() if it doesn't find events at once */ + while( XPending(gr_display) ) { + XNextEvent( gr_display, &gr_event ); + gr_eventhandler( gr_event ); + } /* while */ +} /* gr_events() */ + +static void gr_typedevent( type ) +int type; +{ + do { + XNextEvent( gr_display, &gr_event ); + gr_eventhandler( gr_event ); + } while( gr_event.type != type ); + /* Handle all remaining events if there are any */ + /* XPending will call XFlush() if it doesn't find events at once */ + while( XPending(gr_display) ) { + XNextEvent( gr_display, &gr_event ); + gr_eventhandler( gr_event ); + } /* while */ +} + + +/********************************************************************/ +/***** PC specific variable and function declarations *****/ +/********************************************************************/ +#else + +static int gr_max_display_mode; +static int gr_drivernum; + +#endif + + +/********************************************************************/ +/********************************************************************/ +/*** User callable SCM routines begin here *** + *** *** + *** ***/ + + +SCM gr_helpgr() +{ + fputs( "\ +Ret Name nargs args returns\n\ +---------------------------------------------------------\n\ +B graphics-avail? 0 - #t if graphics available\n\ +B graphics-mode! 0 - #f if no graphics\n\ +B text-mode! 0 - #t on success\n\ +B clear-graphics! 0 - #f if not in graphics mode\n\ +i max-x 0 - maximum value of x\n\ +i max-y 0 - maximum value of y\n\ +i max-color 0 - maximum value of color\n\ +B valid-xyc? 3 x y color #t if valid\n\ +B set-dot! 3 x y color #t on success\n\ +i get-dot 2 x y color of the dot in (x,y)\n\ + or #f if (x,y) not legal\n\ +\n\ +NOTE: Origin (0,0) is in the upper left corner.\n\n\ +", stdout ); + return BOOL_T; +} /* gr_helpgr() */ + + +SCM gr_helpturtlegr() +{ + fputs( "\ +Ret Name nargs args returns\n\ +---------------------------------------------------------\n\ +B goto-home! 0 - #f if not in graphics mode\n\ +B goto-center! 0 - #f if not in graphics mode\n\ +B goto-nw! 0 - #f if not in graphics mode\n\ +B goto-ne! 0 - #f if not in graphics mode\n\ +B goto-sw! 0 - #f if not in graphics mode\n\ +B goto-se! 0 - #f if not in graphics mode\n\ +B draw 1 length #t if target within drawing area\n\ +B draw-to 2 x y #t if (x,y) within drawing area\n\ +B draw-to! 2 x y #t if (x,y) within drawing area\n\ +B move 1 length #t if target within drawing area\n\ +B move-to! 2 x y #t if (x,y) within drawing area\n\ +i where-x 0 - current x-coordinate\n\ +i where-y 0 - current y-coordinate\n\ +i turn-right 1 angle drawing direction in degrees\n\ +i turn-left 1 angle drawing direction in degrees\n\ +i turn-to! 1 angle drawing direction in degrees\n\ +i what-direction 0 - drawing direction in degrees\n\ +B set-color! 1 color #t if color valid\n\ +i what-color 0 - current drawing color\n\n\ +", stdout ); + return BOOL_T; +} /* gr_helpturtlegr() */ + + +SCM gr_available() +{ + if( gr_graphicsavail ) + return BOOL_T; + else + return BOOL_F; +} /* gr_available() */ + + +SCM gr_maxx() +{ + if( !gr_grmode_on ) + return BOOL_F; +#ifdef X11 + /* Check for changed window size */ + gr_events(0); +#endif + return MAKINUM( (long)gr_max_x ); +} /* gr_maxx() */ + + +SCM gr_maxy() +{ + if( !gr_grmode_on ) + return BOOL_F; +#ifdef X11 + /* Check for changed window size */ + gr_events(0); +#endif + return MAKINUM( (long)gr_max_y ); +} /* gr_maxy() */ + +SCM gr_maxc() +{ + if( !gr_grmode_on ) + return BOOL_F; + return MAKINUM( (long)gr_max_color ); +} /* gr_maxc() */ + + +SCM gr_validXYC( x, y, c ) +SCM x, y, c; +{ +int xi, yi, ci; + + ASSERT( NUMBERP(x),x,ARG1,s_gr_validXYC ); + ASSERT( NUMBERP(y),y,ARG2,s_gr_validXYC ); + ASSERT( NUMBERP(c),c,ARG3,s_gr_validXYC ); + if( !gr_grmode_on ) + return BOOL_F; + + if( INUMP(x) ) + xi = (int)(INUM(x)); + else + xi = (int)(REALPART(x)); + + if( INUMP(y) ) + yi = (int)(INUM(y)); + else + yi = (int)(REALPART(y)); + + if( INUMP(c) ) + ci = (int)(INUM(c)); + else + ci = (int)(REALPART(c)); + +/* valid_XYC() calls gr_events() */ + + if( valid_XYC( xi, yi, ci ) ) + return BOOL_T; + else + return BOOL_F; +} /* gr_validXYC() */ + + +SCM gr_grmode() +{ + if( !gr_graphicsavail ) + return BOOL_F; +#ifdef X11 + /* bwuah... but it works :) */ + if( !gr_grmode_on ) { + XMapWindow( gr_display, gr_win ); + gr_typedevent( MapNotify ); + } +#else /* PC version */ + setgraphmode( gr_max_display_mode ); +#endif + gr_grmode_on = 1; + return BOOL_T; +} /* gr_grmode() */ + +SCM gr_txtmode() +{ + if( !gr_graphicsavail ) + return BOOL_F; +#ifdef X11 + /* bwuah... but it works :) */ + if( gr_grmode_on ) { + XUnmapWindow( gr_display, gr_win ); + gr_typedevent( UnmapNotify ); + } +#else /* PC version */ + restorecrtmode(); +#endif + gr_grmode_on = 0; + return BOOL_T; +} /* gr_txtmode() */ + + +SCM gr_cleargraph() +{ + if( !gr_grmode_on ) + return BOOL_F; +#ifdef X11 + XClearWindow( gr_display, gr_win ); + gr_events(0); +#else /* PC version */ + cleardevice(); +#endif + return BOOL_T; +} /* gr_cleargraph() */ + + +SCM gr_setdot( x, y, c ) +SCM x, y, c; +{ +int xi, yi, ci; + + ASSERT( NUMBERP(x),x,ARG1,s_gr_setdot ); + ASSERT( NUMBERP(y),y,ARG2,s_gr_setdot ); + ASSERT( NUMBERP(c),c,ARG3,s_gr_setdot ); + if( !gr_grmode_on ) + return BOOL_F; + + if( INUMP(x) ) + xi = (int)(INUM(x)); + else + xi = (int)(REALPART(x)); + + if( INUMP(y) ) + yi = (int)(INUM(y)); + else + yi = (int)(REALPART(y)); + + if( INUMP(c) ) + ci = (int)(INUM(c)); + else + ci = (int)(REALPART(c)); +#ifdef TESTING + fprintf( stderr, "set-dot! called (%d,%d,%d)\n", xi, yi, ci ); +#endif + if( !valid_XYC( xi, yi, ci ) ) + return BOOL_F; +#ifdef X11 + /* Set the drawing color */ + XSetForeground( gr_display, gr_gc, gr_colortbl[ ci ] ); + XDrawPoint( gr_display, gr_win, gr_gc, xi, yi ); + /* Restore the drawing color */ + XSetForeground( gr_display, gr_gc, gr_colortbl[ gr_color ] ); + gr_events(0); +#else /* PC version */ + putpixel( xi, yi, ci ); +#endif + return BOOL_T; +} /* gr_setdot() */ + + +SCM gr_getdot( x, y ) +SCM x, y; +{ +int xi, yi; +#ifdef X11 +XImage *xim; +XWindowAttributes wattr; +unsigned long dot; +int i; +#endif + ASSERT( NUMBERP(x),x,ARG1,s_gr_getdot ); + ASSERT( NUMBERP(y),y,ARG2,s_gr_getdot ); + if( !gr_grmode_on ) + return BOOL_F; + if( INUMP(x) ) + xi = (int)(INUM(x)); + else + xi = (int)(REALPART(x)); + + if( INUMP(y) ) + yi = (int)(INUM(y)); + else + yi = (int)(REALPART(y)); +#ifdef TESTING + fprintf( stderr, "get-dot called (%d,%d)\n", xi, yi ); +#endif + if( !valid_XYC( xi, yi, 0 ) ) + return BOOL_F; +#ifdef X11 + /* Now, this IS ugly. But it's there if you need it. */ + + /* Have to make sure that the window is mapped. Tough... */ + XGetWindowAttributes( gr_display, gr_win, &wattr ); + if( wattr.map_state == IsUnmapped ) { + XMapWindow( gr_display, gr_win ); + gr_typedevent( MapNotify ); + } + /* I KNOW this sucks. */ + xim = XGetImage( gr_display,gr_win, xi,yi, 1,1, AllPlanes, XYPixmap ); + dot = XGetPixel( xim, 0,0 ); + for( i = 0; i < GR_COLORS; ++i ) { + if( gr_colortbl[i] == dot ) + return MAKINUM( (long)i ); + } + /* This should never happen. There's garbage in the window! */ + fprintf( stderr, "%s: %s: Got an illegal pixel value %lu. \ +Is there garbage?\n", gr_progname, s_gr_getdot, dot ); + return BOOL_F; +#else /* PC version */ + return MAKINUM( (long)getpixel( xi, yi ) ); +#endif +} /* gr_getdot() */ + +SCM gr_draw( S ) +SCM S; +{ +float xf, yf; +float sf; +int ok; + + ASSERT( NUMBERP(S),S,ARG1,s_gr_draw ); + if( !gr_grmode_on ) + return BOOL_F; + if( INUMP(S) ) + sf = (float)(INUM(S)); + else + sf = REALPART(S); +#ifdef TESTING + fprintf( stderr, "draw called (%f)\n", sf ); +#endif + ok = 1; + xf = gr_x + ( COS( gr_dir ) * sf ); + yf = gr_y + ( SIN( gr_dir ) * sf ); + if( (int)xf > gr_max_x ) { + xf = (float)gr_max_x; + ok = 0; + } + else if( xf < 0.0 ) { + xf = 0.0; + ok = 0; + } + if( (int)yf > gr_max_y ) { + yf = (float)gr_max_y; + ok = 0; + } + else if( yf < 0.0 ) { + yf = 0.0; + ok = 0; + } +#ifdef X11 + XDrawLine( gr_display, gr_win, gr_gc, + (int)gr_x,(int)gr_y, + (int)xf,(int)yf ); + gr_events(0); +#else /* PC version */ + line( (int)gr_x,(int)gr_y, (int)xf,(int)yf ); +#endif + gr_x = xf; + gr_y = yf; + if( ok ) + return BOOL_T; + else + return BOOL_F; +} /* gr_draw() */ + + +SCM gr_move( S ) +SCM S; +{ +float xf, yf; +float sf; +int ok; + + ASSERT( NUMBERP(S),S,ARG1,s_gr_move ); + if( !gr_grmode_on ) + return BOOL_F; + if( INUMP(S) ) + sf = (float)(INUM(S)); + else + sf = REALPART(S); +#ifdef TESTING + fprintf( stderr, "move called (%f)\n", sf ); +#endif + ok = 1; + xf = gr_x + ( COS( gr_dir ) * sf ); + yf = gr_y + ( SIN( gr_dir ) * sf ); + + if( (int)xf > gr_max_x ) { + xf = (float)gr_max_x; + ok = 0; + } + else if( xf < 0.0 ) { + xf = 0.0; + ok = 0; + } + if( (int)yf > gr_max_y ) { + yf = (float)gr_max_y; + ok = 0; + } + else if( yf < 0.0 ) { + yf = 0.0; + ok = 0; + } + gr_x = xf; + gr_y = yf; + if( ok ) + return BOOL_T; + else + return BOOL_F; +} /* gr_move() */ + + +SCM gr_drawto( x, y ) +SCM x, y; +{ +int xi, yi; + + ASSERT( NUMBERP(x),x,ARG1,s_gr_drawto ); + ASSERT( NUMBERP(y),y,ARG2,s_gr_drawto ); + if( !gr_grmode_on ) + return BOOL_F; + if( INUMP(x) ) + xi = (int)(INUM(x)); + else + xi = (int)(REALPART(x)); + + if( INUMP(y) ) + yi = (int)(INUM(y)); + else + yi = (int)(REALPART(y)); +#ifdef TESTING + fprintf( stderr, "draw-to called (%d,%d)\n", xi, yi ); +#endif + if( !valid_XYC( xi,yi, 0 ) ) + return BOOL_F; +#ifdef X11 + XDrawLine( gr_display, gr_win, gr_gc, + (int)gr_x,(int)gr_y, xi,yi ); + gr_events(0); +#else /* PC version */ + line( (int)gr_x,(int)gr_y, xi,yi ); +#endif + return BOOL_T; +} /* gr_drawto() */ + + +SCM gr_drawTo( x, y ) +SCM x, y; +{ +float xf, yf; + + ASSERT( NUMBERP(x),x,ARG1,s_gr_drawTo ); + ASSERT( NUMBERP(y),y,ARG2,s_gr_drawTo ); + if( !gr_grmode_on ) + return BOOL_F; + if( INUMP(x) ) + xf = (float)(INUM(x)); + else + xf = (REALPART(x)); + + if( INUMP(y) ) + yf = (float)(INUM(y)); + else + yf = (REALPART(y)); +#ifdef TESTING + fprintf( stderr, "draw-to! called (%d,%d)\n", (int)xf, (int)yf ); +#endif + if( !valid_XYC( (int)xf,(int)yf, 0 ) ) + return BOOL_F; +#ifdef X11 + XDrawLine( gr_display, gr_win, gr_gc, + (int)gr_x,(int)gr_y, + (int)xf,(int)yf ); + gr_events(0); +#else /* PC version */ + line( (int)gr_x,(int)gr_y, (int)xf,(int)yf ); +#endif + gr_x = xf; + gr_y = yf; + return BOOL_T; +} /* gr_drawTo() */ + + +SCM gr_moveTo( x, y ) +SCM x, y; +{ +float xf, yf; + + ASSERT( NUMBERP(x),x,ARG1,s_gr_moveTo ); + ASSERT( NUMBERP(y),y,ARG2,s_gr_moveTo ); + if( !gr_grmode_on ) + return BOOL_F; + if( INUMP(x) ) + xf = (float)(INUM(x)); + else + xf = (REALPART(x)); + + if( INUMP(y) ) + yf = (float)(INUM(y)); + else + yf = (REALPART(y)); +#ifdef TESTING + fprintf( stderr, "move-to! called (%d,%d)\n", (int)xf, (int)yf ); +#endif + if( !valid_XYC( (int)xf,(int)yf, 0 ) ) + return BOOL_F; + gr_x = xf; + gr_y = yf; + return BOOL_T; +} /* gr_moveTo() */ + + +SCM gr_setcolor( c ) +SCM c; +{ +int color; + + ASSERT( NUMBERP(c),c,ARG1,s_gr_setcolor ); + if( !gr_grmode_on ) + return BOOL_F; + if( INUMP(c) ) + color = (int)(INUM(c)); + else + color = (int)(REALPART(c)); +#ifdef TESTING + fprintf( stderr, "set-color! called (%d)\n", color ); +#endif + if( !valid_XYC( 0,0, color ) ) + return BOOL_F; + gr_color = color; +#ifdef X11 + /* Set the drawing color */ + XSetForeground( gr_display, gr_gc, gr_colortbl[ gr_color ] ); + gr_events(0); +#else /* PC version */ + setcolor( gr_color ); +#endif + return BOOL_T; +} /* gr_setcolor() */ + + +SCM gr_turnright( d ) +SCM d; +{ +float df; + + ASSERT( NUMBERP(d),d,ARG1,s_gr_turnright ); + if( !gr_grmode_on ) + return BOOL_F; + if( INUMP(d) ) + df = (float)(INUM(d)); + else + df = REALPART(d); + df = fmod( df, 360.0 ); + gr_dir -= df; + gr_dir = fmod( gr_dir, 360.0 ); + return MAKINUM( (long)(gr_dir+.5) ); +} /* gr_turnright() */ + + +SCM gr_turnleft( d ) +SCM d; +{ +float df; + + ASSERT( NUMBERP(d),d,ARG1,s_gr_turnleft ); + if( !gr_grmode_on ) + return BOOL_F; + if( INUMP(d) ) + df = (float)(INUM(d)); + else + df = REALPART(d); + df = fmod( df, 360.0 ); + gr_dir += df; + gr_dir = fmod( gr_dir, 360.0 ); + return MAKINUM( (long)(gr_dir+.5) ); +} /* gr_turnleft() */ + + +SCM gr_turnto( d ) +SCM d; +{ +float df; + + ASSERT( NUMBERP(d),d,ARG1,s_gr_turnto ); + if( !gr_grmode_on ) + return BOOL_F; + if( INUMP(d) ) + df = (float)(INUM(d)); + else + df = REALPART(d); + df = fmod( df, 360.0 ); + gr_dir = df; + return MAKINUM( (long)(gr_dir+.5) ); +} /* gr_turnto() */ + + +SCM gr_gotohome() +{ + if( !gr_grmode_on ) + return BOOL_F; + gr_x = gr_y = 0.0; + return BOOL_T; +} /* gr_gotohome() */ + + +SCM gr_gotocenter() +{ + if( !gr_grmode_on ) + return BOOL_F; +#ifdef X11 + /* Check for changed window size */ + gr_events(0); +#endif + gr_x = ((float)gr_max_x+1.0) / 2.0; + gr_y = ((float)gr_max_y+1.0) / 2.0; + return BOOL_T; +} /* gr_gotocenter() */ + + +SCM gr_gotonw() +{ + if( !gr_grmode_on ) + return BOOL_F; +#ifdef X11 + /* Check for changed window size */ + gr_events(0); +#endif + gr_x = 0.0; + gr_y = 0.0; + return BOOL_T; +} /* gr_gotonw() */ + + +SCM gr_gotosw() +{ + if( !gr_grmode_on ) + return BOOL_F; +#ifdef X11 + /* Check for changed window size */ + gr_events(0); +#endif + gr_x = 0.0; + gr_y = (float)gr_max_y; + return BOOL_T; +} /* gr_gotosw() */ + + +SCM gr_gotone() +{ + if( !gr_grmode_on ) + return BOOL_F; +#ifdef X11 + /* Check for changed window size */ + gr_events(0); +#endif + gr_x = (float)gr_max_x; + gr_y = 0.0; + return BOOL_T; +} /* gr_gotone() */ + + +SCM gr_gotose() +{ + if( !gr_grmode_on ) + return BOOL_F; +#ifdef X11 + /* Check for changed window size */ + gr_events(0); +#endif + gr_x = (float)gr_max_x; + gr_y = (float)gr_max_y; + return BOOL_T; +} /* gr_gotose() */ + + +SCM gr_whatcolor() +{ + if( !gr_grmode_on ) + return BOOL_F; + return MAKINUM( (long)gr_color ); +} /* gr_whatcolor() */ + + +SCM gr_whatdirection() +{ + if( !gr_grmode_on ) + return BOOL_F; + return MAKINUM( (long)(gr_dir+.5) ); +} /* gr_whatdirection() */ + + +SCM gr_wherex() +{ + if( !gr_grmode_on ) + return BOOL_F; + return MAKINUM( (long)gr_x ); +} /* gr_wherex() */ + + +SCM gr_wherey() +{ + if( !gr_grmode_on ) + return BOOL_F; + return MAKINUM( (long)gr_y ); +} /* gr_wherey() */ + + +static iproc graph0[] = { + { "help-gr", gr_helpgr }, + { "help-turtlegr", gr_helpturtlegr }, + { "graphics-mode!", gr_grmode }, + { "text-mode!", gr_txtmode }, + { "clear-graphics!", gr_cleargraph }, + { "graphics-avail?", gr_available }, + { "max-x", gr_maxx }, + { "max-y", gr_maxy }, + { "max-color", gr_maxc }, + { "what-color", gr_whatcolor }, + { "what-direction", gr_whatdirection }, + { "where-x", gr_wherex }, + { "where-y", gr_wherey }, + { "goto-home!", gr_gotohome }, + { "goto-center!", gr_gotocenter }, + { "goto-nw!", gr_gotonw }, + { "goto-sw!", gr_gotosw }, + { "goto-ne!", gr_gotone }, + { "goto-se!", gr_gotose }, + {0,0} + }; + +static iproc graph1[] = { + { s_gr_draw, gr_draw }, + { s_gr_move, gr_move }, + { s_gr_setcolor, gr_setcolor }, + { s_gr_turnright, gr_turnright }, + { s_gr_turnleft, gr_turnleft }, + { s_gr_turnto, gr_turnto }, + {0,0} + }; + +static iproc graph2[] = { + { s_gr_getdot, gr_getdot }, + { s_gr_drawTo, gr_drawTo }, + { s_gr_drawto, gr_drawto }, + { s_gr_moveTo, gr_moveTo }, + {0,0} + }; + +static iproc graph3[] = { + { s_gr_setdot, gr_setdot }, + { s_gr_validXYC, gr_validXYC }, + {0,0} + }; + +#if defined __STDC__ || defined __TURBOC__ +void close_turtlegr() +{ +#ifdef X11 + gr_events(0); + XFreeColors( gr_display, DefaultColormap(gr_display,gr_screen), + gr_colortbl, GR_COLORS, AllPlanes ); + XFreeGC( gr_display, gr_gc ); + XUnmapWindow( gr_display, gr_win ); + XDestroyWindow( gr_display, gr_win ); +#else /* PC version */ + closegraph(); +#endif +} /* close_turtlegr() */ +#endif + +void init_banner(); /* from scm.c */ + +void init_turtlegr() /* detects if graphics is available; must be + called among program initializations */ +{ +#ifdef X11 + char *display_name = NULL; /* Server to connect to */ + Pixmap icon_pixmap; /* Icon */ + XSizeHints size_hints; /* Preferred sizes */ + XSetWindowAttributes win_attribs; /* Window attributes */ + XWMHints wm_hints; /* Window manager hints */ + XClassHint class_hints; /* Class hints */ + XTextProperty window_name, icon_name; /* Names for Icon & Window */ + XGCValues gc_values; /* Graphics Context values */ + static char *colorname[GR_COLORS] = { + GR_COLOR00, GR_COLOR01, GR_COLOR02, GR_COLOR03, + GR_COLOR04, GR_COLOR05, GR_COLOR06, GR_COLOR07, + GR_COLOR08, GR_COLOR09, GR_COLOR10, GR_COLOR11, + GR_COLOR12, GR_COLOR13, GR_COLOR14, GR_COLOR15 + }; + XColor x_color; /* X11 Color structure */ + unsigned long mask; /* Mask for selections */ + int i; /* loop counter variable */ + +#else /* PC version */ +int errcode; +#endif + +/***************************/ +/* generic initializations */ +/***************************/ + gr_x = gr_y = gr_dir = 0.0; + gr_max_x = gr_max_y = gr_max_color = 0; + + gr_graphicsavail = 0; /* DEFAULT is no graphics - you can do without */ + +/********************************************/ +/***** Initialize X11 turtlegraphics *****/ +/********************************************/ +#ifdef X11 + /* connect to X server */ + if( (gr_display = XOpenDisplay(display_name)) != NULL ) + { + + /*****************************/ + /* connection to X server OK */ + /*****************************/ + + gr_screen = DefaultScreen( gr_display ); /* X screen number */ + + /* Create a window with Black background and border */ + gr_win + = XCreateSimpleWindow( gr_display, + RootWindow( gr_display, gr_screen), + 0, 0, /* initial placement */ + GR_DEF_XSIZE, GR_DEF_YSIZE, + 3, /* border width */ + /* border pixel value */ + BlackPixel(gr_display,gr_screen), + /* background pixel value */ + BlackPixel(gr_display,gr_screen) ); + + /* Select input (events) for the window */ + XSelectInput( gr_display, gr_win, + StructureNotifyMask|ExposureMask ); + + /* Check for backing store capability */ + if( !DoesBackingStore(DefaultScreenOfDisplay(gr_display)) ) + { + fprintf( stderr, "%s: Warning: \ +X server does not offer backing store capability.\n\ +Window cannot be redrawn if obscured. Sorry...\n", gr_progname ); + } + else + { + /* Enable the backing store feature of X server + and set bit gravity */ + win_attribs.bit_gravity = NorthWestGravity; + win_attribs.backing_store = Always; + mask = CWBitGravity | CWBackingStore; + XChangeWindowAttributes( gr_display, gr_win, mask, &win_attribs ); + } + + /* Make names of Window and Icon for window manager */ + if( XStringListToTextProperty(&gr_windowname,1,&window_name) == 0 ) { + (void)fprintf( stderr, "%s: Structure allocation for windowName\ + failed.\n", gr_progname ); + exit( 42 ); + } + if( XStringListToTextProperty(&gr_iconname,1,&icon_name) == 0 ) { + (void)fprintf( stderr, "%s: Structure allocation for iconName\ + failed.\n", gr_progname ); + exit( 42 ); + } + + /* Create the icon */ + icon_pixmap = XCreateBitmapFromData( gr_display, gr_win, turtle_bits, + turtle_width, turtle_height ); + + /* Window size, state, icon etc. hints for the window manager */ + size_hints.flags = PPosition | PMaxSize | PMinSize | USSize; + /* position and desired size are given to XCreateSimpleWindow call */ + size_hints.min_width = GR_MIN_XSIZE; + size_hints.min_height = GR_MIN_YSIZE; + size_hints.max_width = GR_MAX_XSIZE; + size_hints.max_height = GR_MAX_YSIZE; + wm_hints.flags = StateHint | IconPixmapHint | InputHint; + wm_hints.initial_state = NormalState; + wm_hints.input = False; + wm_hints.icon_pixmap = icon_pixmap; + class_hints.res_name = gr_progname; + class_hints.res_class = gr_classname; + XSetWMProperties( gr_display, gr_win, &window_name, &icon_name, + gr_argv, gr_argc, + &size_hints, &wm_hints, &class_hints ); + + + /* Handle colors; this is quite complicated in X11 */ + + if( DefaultDepth( gr_display, gr_screen ) == 1 ) + { + /* Only 1 bitplane, BW screen */ + /* Emulate colors with 0 as Black and 1-15 White */ + gr_colortbl[0] = BlackPixel( gr_display, gr_screen ); + for( i = 1; i < GR_COLORS; ++i ) + gr_colortbl[i] = WhitePixel( gr_display, gr_screen ); +#ifdef TESTING + fprintf( stderr, "%s: 1-plane system, substituting White for \ +colors 1-15.\n", gr_progname ); + fprintf( stderr, "%s: Pixel value is %lu for Black, \ +%lu for White\n", gr_progname, gr_colortbl[0], gr_colortbl[1] ); +#endif + } + else + { + /* more than 1 bitplane */ + for( i = 0; i < GR_COLORS; ++i ) + { + /* Initialize the colortable using named colors */ + if( XParseColor( gr_display, + DefaultColormap(gr_display,gr_screen), + colorname[ i ], &x_color ) ) + { + if( !XAllocColor( gr_display, + DefaultColormap(gr_display,gr_screen), + &x_color ) ) + { + fprintf( stderr, "%s: Can't allocate color \ +\"%s\" (%d). Substituting White.\n", + gr_progname, + colorname[ i ], i ); + gr_colortbl[i] = WhitePixel( gr_display, gr_screen ); + } + else + { + /* succeeded in allocating color */ + gr_colortbl[ i ] = x_color.pixel; +#ifdef TESTING + fprintf( stderr, "%s: Pixel value is %lu for %s.\n", + gr_progname, gr_colortbl[i], colorname[i] ); +#endif + } + } + else + { + /* could not parse color */ + fprintf( stderr, + "%s: Color name \"%s\" (%d) not in database. \ +Substituting White.\n", + gr_progname, colorname[i], i ); + gr_colortbl[i] = WhitePixel( gr_display, gr_screen ); + } + } /* for */ + } /* else */ + gr_max_color = GR_COLORS - 1; + + /* Create and initialize a default GC */ + gr_gc = XCreateGC( gr_display, gr_win, 0L, &gc_values ); + + /* Initialize the drawing color, default's black */ + XSetForeground( gr_display, gr_gc, gr_colortbl[ 0 ] ); + XSetBackground( gr_display, gr_gc, gr_colortbl[ 0 ] ); + gr_color = 0; + + /* OK, we _do_ have graphics available */ + gr_graphicsavail = 1; + +#ifdef __STDC__ + /* Let's do the Right Thing if possible :) */ + atexit( close_turtlegr ); +#endif + } /* if */ + else { + gr_graphicsavail = 0; + } +/********************************************/ +/***** Initialize PC turtlegraphics *****/ +/********************************************/ +#else /* PC version */ + gr_drivernum = DETECT; + + detectgraph( &gr_drivernum, &gr_max_display_mode ); + if( gr_drivernum != grNotDetected ) { + if( !getenv( BGIDIR_ENVSTRING ) ) + fprintf( stderr, + "You really should set the %s environment variable.\n", + BGIDIR_ENVSTRING ); + initgraph( &gr_drivernum, &gr_max_display_mode, + getenv( BGIDIR_ENVSTRING ) ); + errcode = graphresult(); + if( errcode != grOk ) { + fputs( "Graphics error: ", stderr ); + fputs( grapherrormsg( errcode ), stderr ); + exit( EXIT_FAILURE ); + } + moveto( 0,0 ); + gr_x = gr_y = 0.0; + setcolor( 0 ); + gr_color = 0; + gr_max_x = getmaxx(); + gr_max_y = getmaxy(); + gr_max_color = getmaxcolor(); + gr_max_display_mode = getmaxmode(); + restorecrtmode(); + gr_graphicsavail = 1; + atexit( close_turtlegr ); + } + else { + gr_graphicsavail = 0; + } +#endif + +/* generic */ + init_iprocs( graph0, tc7_subr_0 ); + init_iprocs( graph1, tc7_subr_1 ); + init_iprocs( graph2, tc7_subr_2 ); + init_iprocs( graph3, tc7_subr_3 ); + gr_grmode_on = 0; + +#ifndef X11 + /* PC version clears screen so this must be repeated */ + init_banner(); +#endif + + fputs("\nSCM Turtlegraphics Copyright (C) 1992 sjm@cc.tut.fi, jtl@cc.tut.fi\n\ +Type `(help-gr)' or `(help-turtlegr)' for a quick reference of\n\ +the new primitives.\n", stderr); + + if( !gr_graphicsavail ) { +#ifdef X11 + fprintf( stderr, "%s: No X server found. \ +Turtlegraphics not available.\n", gr_progname ); +#else + fputs( "No graphics adapter detected. \ +Turtlegraphics not available.\n", stderr ); +#endif + } + else { +#ifdef X11 + gr_events(0); +#else + ; +#endif + } +} /* init_turtlegr() */ diff --git a/version.txi b/version.txi index e2502a5..e7ced09 100644 --- a/version.txi +++ b/version.txi @@ -1,2 +1,4 @@ +@set SCMVERSION 5d6 +@set SCMDATE May 2002 @set SCMVERSION 5d9 @set SCMDATE November 2003 @@ -1,4 +1,4 @@ -#! /usr/local/bin/scm \ %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 +#! /usr/bin/scm \ %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 - !# ;; Copyright (C) 1991-2000 Free Software Foundation, Inc. ;; |