# Ygl Version 4.2 Changes History

#### ©opyright 1993-2007 by Fred Hucht (fred(AT)thp.Uni-Duisburg.de)

## Changes from Version 4.2d -> 4.2e:

(V 4.2e released 11. May 2007)

- Fixed broken irisgl/fdevice.h, updated examples/smile_{f77|xlf}.f
- Removed obsolete library glwidget. This library can be found here.

## Changes from Version 4.2c -> 4.2d:

(V 4.2d released 7. May 2007)

- Renamed directory gl to irisgl due to incompatibilities with case insensitive filesystems

## Changes from Version 4.1f -> 4.2c:

(V 4.2c released 1. May 2007)

- Added picking & naming stuff
- Added blendfunction()
- Many fixes, especially in colormap mode under OpenGL bindings

## Changes from Version 4.1e -> 4.1f:

(V 4.1f released 8. Feb 2005)

- Added gsync() (only works with OpenGL bindings).
- Added {XY}MAXSCREEN macro
- Removed poly*() from Ygl.h, as they are not implemented yet.

## Changes from Version 4.1b -> 4.1e:

(V 4.1e released 3. Feb 2005)

- 3D support is on now by default, as OpenGL is assumed to be installed. If not, please set UseOpenGL 0 in Imakefile.
- Updated the ReadMe file to include the 3D routines.
- Several minor bug fixes which were reported over the years...

## Changes from Version 4.0x -> 4.1b:

(V 4.1b released 2. May 2002)

- Workaround to let OpenGL bindings work both on X servers with PseudoColor/TrueColor (e.g. AIX) and on X servers with only TrueColor visuals (e.g. XFree).
- Added method to dynamically determine the declaration of `usleep()`. Hope this works in all cases...
- Added missing FORTRAN bindings for new 3D routines.
- Fixed many bugs...

## Changes from Version 3.2 -> 4.0x:

(V 4.0 not released yet)

- Added 3D using OpenGL. Note that one must compile Ygl with OpenGL support (see Imakefile) and set the environment variable YGL_OGL to 1 to use these bindings.
- rectf's are now the same size as rect's. rectf's were 1 Pixel larger in both directions, as GL also had this feature on most cards.
- Fixed bug in `viewport()` (Thanks to Oliver Bedford <a2270269@athena.rrz.uni-koeln.de>).

## Changes from Version 3.1 -> 3.2:

(V 3.2 not released yet)

- Fixed bug in FORTRAN header Yfgl.h, device `WINCLO` clashed with routine `winclo()`. Renamed device `WINCLO` to `WINCLOSE`.
- Fixed two bugs in `getbutton()`: `getbutton(0)` failed to return -1, `getbutton()` of `qdevice()`ed keys failed.
- Fixed bug in `winconstraints()` that also affected startup: Sometimes Ygl freezed in `winopen()` and one had to move the window to continue. Ygl then waited for a ConfigureNotify event that wasn't generated.
- Added support for the DoubleBuffer extension. This extension is new in X11R6.1 and replaces the MultiBuffer extension. Set DoubleBuffer to 1 in Imakefile to compile Ygl with this extension.
- Fixed bug in mkprefix.
- Added functions `deflinestyle()`, `setlinestyle()`, `getlstyle()`, `lsrepeat()`, `getlsrepeat()`.
- Fixed bug in popup menu code that occured when the cmap visual differed from the default visual (as on XServers with a 12 bit PseudoColor visual).
- Setting the environment variables YGL_CV or YGL_RV to -1 now forces Ygl to use the XServers default visual instead of the best visual for colormap/RGB mode.

## Changes from Version 3.0.3 -> 3.1:

(V 3.1 released 6. May 1996)

- Changed Macros `XR()` and `YR()`, added rounding when converting `float` to `int` coordinates.
- Fixed bug in `viewport()` that could cause the clipping region to be wrong.
- Added routine `logicop()`.
- Fixed some bugs in the FORTRAN bindings: Device routines (`TIE()`, `QDEVIC()`, `UNQDEV()`, `QENTER()`) now require `INTEGER*4` parameters as stated in the manpages. `READPI()`, `WRITEP()` now accept `INTEGER*2` color indices. (Thanks to Luca Formaggia <forma@crs4.it> for the bug report.)
- Added routine `getmatrix()`.
- Fixed bug in `change_gc()` and `viewport()`: Text was not clipped.
- Changed `frontbuffer()` to be ignored when not in doublebuffer mode.
- Changed `qreset()` to not remove saved mouse/key events.
- Didn't fix `getcpos()` to return position relative to window, not to screen. This is a bug in GL, it is emulated in Ygl :-(((
- Fixed `getorigin()` to return coordinates relative to screen.
- Fixed bug in ygl.c that caused windows not to get a `REDRAW` event after a window move.
- Added CMap/RGBmode checks to several color routines.
- Fixed bug in `gl2ppm()` that caused `gl2ppm()` to scramble colors when in doublebuffered RGBmode.
- Fixed `REDRAW` events when in RGB mode (Expose events seem not to propagate...). Due to problems with RGB mode windows Ygl returned to the good old way of handling RGB windows, i.e. `gconfig()` closes the cmap/RGB window and opens a RGB/cmap window at the same position.
- Fixed bug in popupmenu colors when using private colormap.
- The changes history is in html format now (as you can see 8-).

## Changes from Version 3.0.2 -> 3.0.3:

(V 3.0.3 released 13. Dec 1995)

- Fixed bug in `mapcolor()` that may cause segmentation fault.
- Ygl now ignores `MappingNotify` Events and doesn't report errors.
- Ygl windows now have white background (again). The transparent windows were too confusing (I think).
- Fixed bug in `freepup()` that may cause segmentation faults. Changed `newpup()` to recycle menu-IDs after `freepup()`.
- Changed declaration of `usleep()` to be compatible with AIX 4.1.
- Changed Imakefiles to use `NullParameter` instead of nothing.

## Changes from Version 3.0.1 -> 3.0.2:

(V 3.0.2 released 13. Nov 1995)

- Added `noborder()` as dummy function.
- Added support for `readsource(SRC_FRONT)`, needed in doublebuffer-mode to read pixels from the front window. Changed `gl2ppm()` to read from the front buffer.
- Fixed bug in `newpup()` that may cause a segmentation fault in menus without `%F` callback.
- `getbutton()` now can handle keyboard keys, eg. `getbutton(AKEY)` returns `1` when the key `A` is pressed at the moment when `getbutton()` is called. Note that it is better and faster to use the queue (`qtest()`/`qread()`) when you want to know if a key was pressed.

## Changes from Version 3.0.0 -> 3.0.1:

(V 3.0.1 released 23. Oct 1995)

- `gl2ppm()` now corrects the brightness of RGB windows.
- Added menu.o to Makefile.std.
- Added `viewport()` and `getviewport()`.
- Added vertex drawing routines: `bgnpoint()`, `endpoint()`, `bgnline()`, `endline()`, `bgnclosedline()`, `endclosedline()`, `bgnpolygon()`, `endpolygon()`, `v2s()`, `v2i()`, `v2f()`, `v2d()`. Note that it's not possible to change drawing attributes (color, ...) in the inner of a vertex pipeline in Ygl...
- Added `rpmv2()`.
- Added `dopup()` to FORTRAN bindings (forgot it in 3.0.0...).
- Added `readpixels()`, `writepixels()`, `readRGB()`, `writeRGB()`.

## Changes from Version 2.9.5 -> 3.0.0:

(V 3.0.0 released 23. Aug 1995)

- Added dithering to RGBmode. Dithering is controlled by the environment variable YGL_DITHERSIZE or shorter YGL_DSZ. With this variable you can specify the size of the dither matrix. The default value is 4, leading to a 4x4 dither matrix. Valid values range from 0 to 6. On a normal 8 bit TrueColor visual ({3,3,2} bits {red,green,blue}) you obtain 113x113x49 = 625681 different "colors" with YGL_DSZ=4, leading to an effective screen depth of approx. 19 bits. The other values and the effective screendepths are:

             |  8 bit (3-3-2)  | 12 bit (4-4-4)  |  16 bit (6-5-5)
      YGL_DSZ| # colors (bits) | # colors (bits) |  # colors (bits)
      -------------------------------------------------------------
        0,1  |      256 ( 8  ) |     4096 (12  ) |     65536 (16  )
         2   |    10933 (13.4) |   226981 (17.8) |   3953125 (21.9)
         3   |   114688 (16.8) |  2515456 (21.3) |  44531200 (25.4)
         4   |   625681 (19.3) | 13997521 (23.7) | 249232081 (27.9)
         5   |  2354176 (21.2) | 53157376 (25.7) | 949029376 (29.8)
         6   |  6976981 (22.7) |158340421 (27.2) |2831006341 (31.4)

- Note that dithering costs speed. You may set YGL_DSZ=0 to disable dithering. If you are lucky and have a 24 bit TrueColor visual, YGL_DSZ is automatically set to zero. Affected routines: `RGBcolor()`, `gRGBcolor()`, `cpack()`, `c3s()`, `c3i()`, `c3f()`. See examples/rgbtest.c for an example.
- Added menu stuff. New functions: `defpup()`, `newpup()`, `addtopup()`, `dopup()`, `freepup()`, `setpup()`. See examples/popup.c for details.
- Added C++ support to Ygl.h.
- Fixed bugs in FORTRAN bindings. Unfortunately some of the FORTRAN names are not truncated to 6 chars due to nameing conflicts, SH*T. FORTRAN bindings must be lowercase...

       double_  -> doublebuffer_
       gRGBcol_ -> grgbcol_
       RGBcol_  -> rgbcol_
       RGBmod_  -> rgbmod_
       loadXf_  -> loadxf_
       getXdpy_ -> getxdpy_
       getXwid_ -> getxwid_
       getXgc_  -> getxgc_

- Fixed bug in `gl2ppm()` that caused it to fail under newer versions of AIX32.
- `getXwid()` returned `Window*` instead of `Window`, `getXgc()` returned `GC*` instead of `GC`. Fixed.
- Added `winX()` to FORTRAN bindings.
- Fixed cooperation of FORTRAN bindings and YGL_PREFIX.
- Changed behaviour of `prefposition()` and `winposition()`. The given values now describe the position of the drawing area, not the position of the window incl. window manager decorations.
- A RGBmode window is now a child of the initially created colormap mode window. This simplified changing to RGBmode. Ygl now uses the property `WM_COLORMAP_WINDOWS` to tell the window manager which colormaps are to be installed. This also fixed a bug when a subwindow of a cmap window was a RGB window. To toggle the colormaps is this case, use the window manager function `f.colormap` in twm or `f.next_cmap` in mwm (see your window manager manual for details).
- Added the function `getXdid()`. `getXdid()` returns the window id of the drawable. This id differs from `getXwin()` when using RGBmode or doublebuffering.

## Changes from Version 2.9.2 -> 2.9.5:

(V 2.9.5 released 4. Jan 1995)

- Fixed `gconfig()` to save doublebuffer state when switching cmode and RGBmode.
- Function added: `winX()`
- Note that `winX(Display *dpy, Window win)` has some limitations:
  - `dpy` will be ignored. Ygl always uses the environment variable `DISPLAY`.
  - Changing the visual of a window with `cmode()` or `RGBmode()` (`RGBmode()`;`gconfig()`;) will change the X11 WindowID of the window. So after the code

          ...
          xwin = XCreateWindow(...);
          winX(dpy, xwin);
          RGBmode();
          gconfig();
             ...

    xwin is not valid anymore. You must get the new windowid with

          xwin = getXwid();

- New environment variable YGL_PARENTWID or YGL_PWID introduced. See the ReadMe file for further details.
- Ygl was distributed in terms of the GNU GENERAL PUBLIC LICENSE. Since version 2.9.5, Ygl is distributed in terms of the GNU LIBRARY GENERAL PUBLIC LICENSE. See the file LICENSE for further details.
- Ygl has no private XErrorHandler anymore, as the default error handler gives more information and it's O.K. to `exit()` when a X error occures.

## Changes from Version 2.9 -> 2.9.2:

(V 2.9.2 not released)

- `swapbuffers()` didn't explicitely flush the X pipeline, so sometimes a `swapbuffers()` didn't have an immediate effect.
- Bug in `winopen()` fixed that caused Ygl not to work with VisualID=0x0.
- Some calls to `[rcm]alloc()` were not checked for out of memory. Fixed.

## Changes from Version 2.8.1 -> 2.9:

(V 2.9 not released)

- Added noop routine `foreground()`.
- Individual key devices introduced in Version 2.8 now reports both `KeyPress` and `KeyRelease` events. See examples/lines.c for an example.
- Changed `qread()` to report only one `REDRAW` event after a window resize and window moves. This is done by interpreting both `Expose` and `ConfigureNotify` events as generators for `REDRAW` events.
- Moved header Ygl.h, Yfgl.h and Yglprefix.h to X11 directory.

## Changes from Version 2.8 -> 2.8.1:

(V 2.8.1 released 8. Oct 1994)

- Fixed several bugs in FORTRAN bindings.
- Added header file config.h.
- Changed `gversion()` to return `-1` if display can't be opened (see example contrib/tools/xmap.c).

## Changes from Version 2.7 -> 2.8:

(V 2.8 not released)

- Function added: `getgdesc()`.
- Added support for individual key devices, eg. `F1KEY`, `UPARROWKEY` and so on. This was done on public request.
- Replaced `XPointer` with `char*`. `XPointer` isn't defined in X11R4.
- Added some explicit type converters at calls to `[cm]alloc`.
- Changed `qdevice()` and `unqdevice()` to return error when called before `winopen()`.
- Rewrote `qtest()` and `qread()`. Now both use one function. Hope not to have introduced too much bugs :-)
- When routines are called before `winopen()` or `ginit()` or after `gexit()` that don't work at this point, the error message now includes the function name.
- Fixed `winset()` and `winclose()` to handle invalid window ids correctly.
- Fixed `[cl ]rectread()` to work when a window is completely visible again after it was not completely visible.
- Changed `gl2ppm()` to report broken pipes (invalid shell commands and so on).
- Included FORTRAN bindings for all Ygl functions. The FORTRAN versions of all functions have an underscore appended, so the FORTRAN compiler must append a `_` to all names. f2c does this, xlf (under AIX 3.2) requires the option `-qextname`. See smile_f77.f for an example program. Set `FortranBindings` to 0 in Imakefile or change Makefile.std if you don't want these bindings. FORTRAN bindings are not tested because I have no programs.f to test. If you find bugs, feel free to report them to me.
- Small change to colormap handling to reduce technicolor effects when using a private colormap (YGL_PCM=1) on displays not capable of more than one colormap at a time: Now the default colormap is copied to the private colormap and all entries in the private colormap count from the end of the colormap. So a `mapcolor(i,r,g,b)` changes colorcell `255-i` (in 8 bit deep visuals) instead of cell i to reduce overlapping of private colorcells and cells already in use by other applications.
- Extended selection of cmapmode visuals. Now cmapmode can also run on TrueColor and DirectColor visuals. This is for XServers that only have True/DirectColor visuals.

## Changes from Version 2.6 -> 2.7:

(V 2.7 released 22. Jun 1994)

- Functions added: `getmcolors()`, `getdisplaymode()`, `setbell()`, `ringbell()`, `gl2ppm()`, `frontbuffer()`, `backbuffer()`
- Changed filtering of `Expose` events. Now even more `Expose` events for a window are filtered to minimize redraws.
- XMULIB in Imakefile is also used in ibmLib.tmpl :-(. Changed to THEXMULIB.
- Simplified code for handling of `tie()`s.
- `gl2ppm()` is a subroutine that will write out the active [Y]gl window to a PPM file or pipe it through a shell command. Usage:

       int gl2ppm(char *filename);

  `popen()` is used instead of `fopen()` when `filename[0] == '|'`. For an example, see examples/lines.c.
- `WINCLOSE` device changed to `WINQUIT` due to incompatibility with SGI's GL. Please change `WINCLOSE` to `WINQUIT` in your source code.
- A `REDRAW` event is sent when a window is moved. This is not nessesary for redrawing but for getting the new origin of the window. Unfortunally SGI's GL has no unique event for window moves (`ConfigureNotifyEvent`)...

## Changes from Version 2.5 -> 2.6:

(V 2.6 released 3. May 1994)

- `getcpos()` was wrong when using `ortho2()`. Fixed.
- `charstr()'s` update of character position was wrong when using `ortho2`. Fixed.
- `loadXfont()` crashed when compiled with some non-ansi compilers due to `realloc(NULL, ...)`. Changed.
- `qdevice()/unqdevice()` couldn't change device list while a mouse button was pressed due to active pointer grabs. Changed.
- `linewidth()` now only changes GCs when `linewidth()` has changed.
- Several minor speedups.
- `ortho2()` now detects empty [xy]-ranges.
- Spurious errors "Ygl: X Error: BadColor (invalid Colormap parameter) on 0x2000002" showed up when quitting programs with private colormap (eg. example/colormap). Fixed.

## Changes from Version 2.4 -> 2.5:

(V 2.5 released 28. Apr 1994)

- The following functions are added: `tie()`, `winpop()`, `winpush()`, `getlwidth()`, `swinopen()`, `getfont()`, `getfontencoding()`, `getcpos()`, `winconstraints()`, `noport()`.
- Minor Changes to `qreset()`, `qread()`, and [I]makefiles.
- Bug fixed that might cause `getcolor()` to return the wrong color when using multiple windows.
- Bugs fixed that caused `linewidth()` and fonts not to be per window.
- Bug fixed that caused `prefposition()` to measure from top left corner instead of bottom left corner.
- `getmcolor()` returned the X color, not the Ygl color. Fixed.
- The `rect*()` and `sbox*()` routines now draw rects inclusive the edges, i.e. `rectf(1,1,2,2)` is a 2x2 rect, not a 1x1 rect as before. Old versions of IBMs GL draw 1x1 rects, but this seems to have been fixed...
- Three new environment variables YGL_SINGLEGC, YGL_CMAPVISUAL and YGL_RGBVISUAL has been added. See the ReadMe file for a description.
- `REDRAW` events are now queued by default.
- Changed example/rgb.c to demonstrate usage of `tie()` and renamed it to rgbtest.c.
- Changed example/lines.c to demonstrate usage of `swinopen()`.
- Header file Ygl.h is now installed automatically when using imake.
- New define in Imakefile to use (experimental) support for global standard colormaps (see xstdcmap(1)).
- The ReadMe file is in html format now. Use Mosaic or emacs w3-mode (or other www viewer) to read. The latest version of this ReadMe is available at the World Wide Web:
  http://WWW.thp.Uni-Duisburg.DE/Ygl/ReadMe.html.

## Changes from Version 2.3 -> 2.4:

(V 2.4 released 1. Feb 1994)

- The following functions are added: `rectcopy()`, `cpack()`, `c3s()`, `c3i()`, `c3f()`, `linewidth()`, `rect{read|write}()`, `getXgc()`, `crect{read|write}()`.
- `getXgc()` is not included in standard GL. It returns a pointer to the graphics context just like `getXdpy()` returns a pointer to the display. You can for example use it to draw lines etc. XORed with the background:

        #include
        ...
        XSetFunction(getXdpy(), getXgc(), GXxor);

- `crect{read|write}()` are also not in standard GL. They work the same as `lrect{read|write}()`, they only {read|write} the data to a `char` array instead of `Int32` array. This is to speed up Colormap mode operations.
- Bug in timer handling fixed which caused flushtimes >= 1 second to be ignored.
- Small bugs in `lrect{read|write}()` fixed.
- All `rect*()` and `sbox*()` routines now draw rectangles even when x2 < x1 or y2 < y1, i.e. `rect(10,10,20,20)` is the same as `rect(20,20,10,10)`. `circ*()` and `arc*()` routines now interpret negative radii as zero.
- `doublebuffer()` and `singlebuffer()` are now available in the library even when not compiled with -DMULTIBUF.
- A new example program "smile.f" illustrates how to call Ygl routines from Fortran under AIX.

## Changes from Version 2.2 -> 2.3:

(V 2.3 released 12. Jan 1994)

- The following functions are added: `lrectread()`, `lrectwrite()`, `readsource()`.
- `lrectread()` returns the same array as the GL version.
- DirectColor visuals are supported, too, now.

## Changes from Version 2.1 -> 2.2:

(V 2.2 released 9. Jan 1994)

- You don't need to recompile the X-Server anymore to use doublebuffering under AIX 3.2.5 (AIXWindows 1.2.3). You simply have to add the option `-x mbx` to the X-Servers command line on startup. Additionaly, the multibuffer routines under AIX are in libXext.a now (as they should...).
- Bug in `qread()` (Alt/Ctrl keys were reported as normal keys) fixed.
- Bug in `qtest()` that eventually caused unknown events to block the queue fixed.
- The following function is added: `ortho2()`.

## Changes from Version 2.0 -> 2.1:

(V 2.1 released 25. Oct 1993)

- Name of library changed to Ygl due to a nameing conflict with SUNs XGL library.
- All environment vars now starts with YGL_. The old names remains valid for compatibility reasons.
- `Xgl_Prefix` -> `Ygl_Prefix` and all names are prepended with `ygl_`. Change file mkprefix to get the old `xgl_` prefix.
- gversion returns `Ygl:X11-x.y.z` (not `Xgl:X11-x.y.z`).
- Example programs and {Im|M}akefiles revisited.
- `Button{Press|Release}` events are only received when nessesary now.
- Bugs in `rdr()` and `arc()/arcf()` fixed. They didn't work as expected...
- Bug in `charstr()` to RGB windows fixed (core dumped).
- Bug in `winclose()` fixed.
- Support for StaticGray visual added. Ygl now runs on Monochrome servers (again) (eg. XFree under Linux).
- Colormaps are now only installed when the server has room for them. This avoids the colormap switches on startup.
- The following function is added: `gRGBcolor()`.

## Changes from Version 1.3 -> 2.0:

(V 2.0 released 21. Oct 1993)

- BackingStore support added. Set `XGL_BACKINGSTORE=1`.
- RGBmode and support for other visual types is added. Xgl can run in a per window RGB mode, if the X-Server has a TrueColor visual. Xgl will always select the appropiate visual for the desired mode, independent of the default visual, ie:

       Colormap mode <-> PseudoColor or GrayScale visual
       RGB mode      <-> TrueColor visual

- Short names for environment variables added:

       XGL_FT  for XGL_FLUSHTIME
       XGL_PCM for XGL_PRIVATECOLORMAP
       XGL_BS  for XGL_BACKINGSTORE

- The following functions are added: `winmove()`, `winposition()`, `ginit()`, `RGBmode()`, `RGBcolor()`, `cmode`.
- Two routines `arcx()` and `arcxf()` that are not part of standard GL are contributed by michael@thp.Uni-Duisburg.DE. With this routines you can draw outlined and filled _elliptic_ arcs.
- All drawing functions are implemented with floating-point arguments, i.e.: `pnt2()`, `move2()`, `draw2()`, `rmv2()`, `rdr2()`, `arc()`, `arcf()`, `circ()`, `circf()`, `rect()`, `rectf()`, `sbox()`, `sboxf()`, `pmv2()`, `pdr2()`, `rpdr2()`, `poly2()`, `polf2()`, `cmov2()`.
- A bug in `prefposition()` is fixed that caused `prefposition()` to not work...
- All routines that talk to the X-Server now check for correct initialisation. This may slow down Xgl a very little bit. You can undefine `CHECKDISPLAY` in header.h get the old method (which is also used by GL :-).
- You can set `Xgl_Prefix` to 1 in Imakefile and do a

      # xmkmf -a;make clean;make

  to compile a library named libXglp.a where all function names are prepended with `xgl_`. This is to avoid name conflicts if you want to use Xgl in other projects as the Turbo Pascal for Unix emulator by Michael Staats (michael@thp.Uni-Duisburg.DE).

## Changes from Version 1.1.1 -> 1.3:

(V 1.3 released 24. Aug 1993)

- The following functions are added: `rmv2s()`, `rmv2i()`, `rdr2i()`, `rdr2s()`, `winclose()`, `strwidth()`, `getheight()`, `getdescender()`.
- The `qtest()` and `qread()` routines can now distinguish between `LEFTMOUSE`, `MIDDLEMOUSE` and `RIGHTMOUSE` and support `MOUSEX` and `MOUSEY` events.
- Setting `XGL_FLUSHTIME` to `-1` will put the XServer into synchronous mode (see `XSynchonize)`. This mode seems to be veeeryyy slooow, but is good for debugging...

## Changes from Version 1.1 -> 1.1.1:

(V 1.1.1 not released)

- A bug in `qread()` is fixed that caused too much `Expose` events (`REDRAW`) to be filtered out. XGL filters out all `Expose` events that are directly followed by another `Expose` event for the same window. In versions prior to 1.1.1, `qread()` filtered out ALL `Expose` events that were followed by another `Expose` event, even for another window :-(

## Changes from Version 1.0.1 -> 1.1:

(V 1.1 released 15 Jul 1993)

- The function `getorigin()` returned the position of the upper left corner in X11 coordinates rather than the position of the lower left corner in GL coordinates.
- The function "`gflush()`" is no longer supported. Use `sleep(0)` to flush the graphics pipeline instead.
- XGL supports doublebuffering via the "Multi-Buffering" server extension. This extension is new in X11R5 and is included in the lpp X11dev.src under AIX 3.2. To use doublebuffering you have to link the "Multi-Buffering" extension into your X-Server (AIXlers, see /usr/lpp/X11/Xamples/README, "Linking the Sample Extensions into the Server"). The related GL routines are `doubleduffer`, `swapbuffer()` and `singlebuffer()`.
- The following functions are added: `getmcolor()`, `getcolor()`, `gconfig()`, `singlebuffer()`, `swapbuffers()`, `doublebuffer()`, `getvaluator()`, `getbutton()`, `concave()`, `poly2i()`, `poly2s()`, `polf2i()`, `polf2s()`.

## Changes from Version 1.0 -> 1.0.1:

(V 1.0.1 released 7 Jul 1993)

- The refresh time and the use of the colormap is now controlled via two environment variables (`XGL_PRIVATECOLORMAP` and `XGL_FLUSHTIME`) and no longer through external variables due to problems with shared libraries.
- libXgl.a is now a shared library under AIX and the linker option -lX11 can be omitted.

## Initial Version 1.0:

(V 1.0 released 5 Jul 1993)