This distribution consists of a few different libraries (BOGL, BOML,
BOWL), a Linux 2.2.x kernel patch, and a couple of test programs.

BOGL stands for Ben's Own Graphics Library.  It is a tiny graphics
library for kernel 2.2.x framebuffers.  It supports only very simple
graphics.  For instance, it lacks clipping, nonorthogonal lines,
multiple brushes/pens, and so on.  It does, however, support the
following:

	- Horizontal and vertical lines
	- Rectangles
	- Solid rectangular fill
	- Proportional fonts
	- Pixmap drawing
	- Palette setting
	- Redraw notification on console switch

Though meager, this is plenty to implement a simple graphical user
interface, which is what BOWL (Ben's Own Window Library) does.  BOWL
supports the following:

	- A single, modal, fixed-width on-screen window
	- Text boxes contained auto-flowed proportional text
	- Command buttons
	- Input boxes
	- Menus
	- Check boxes
	- Completion bars

BOML, Ben's Own Mouse Library, provides mouse support for BOGL.  It is
experimental; its mouse detection algorithms may be fragile.  Please
report success/failure.

Somewhat unsurprisingly, this is exactly the list of features needed
to install Debian GNU/Linux.

Source files:

Makefile: Makefile to compile the library and test programs.

bdftobogl: A Perl program to translate any X Window System .bdf font
file into a .c file that, when compiled and linked to a program using
the BOGL library, can be used for text output.

bogl-test.c: A simple test program for the BOGL library.  Run it for a
usage message.

bogl-vga16.c, bogl-vga16.h: An implementation of BOGL device-specific
functions for EGA/VGA 16-color modes, for use with the included 2.2
kernel framebuffer driver.

bogl-cfb.h: private header, contains inline functions used by the
packed-pixel drivers.

bogl-pcfb.c, bogl-pcfb.h: BOGL driver for pseudocolor packed pixel
modes.

bogl-tcfb.c, bogl-tcfb.h: BOGL driver for true/directcolor packed
pixel modes.

bogl.c: BOGL main library implementation.

bogl.h: BOGL public header.

boglP.h: BOGL private header, for internal library use only.

boml.h, boml.c: Ben's Own Mouse Library.

bowl.h, bowl.c: Ben's Own Window Library.

bowl-boxes.c: The beginnings of a compatible replacement for Debian
boot-floppies boxes.c, using BOWL instead of newt.  Currently a BOWL
test program; see the source for details.

boxes.c, boxes.h: From Debian boot-floppies.

giftobogl.c: A program to translate any .gif pixmap with 16 colors or
fewer into a .c run-length encoded format that, when compiled and
linked to a program using the BOGL library, can be displayed by BOGL.

kernel.patch: A patch against Linux kernel 2.2.x that adds a 16-color
EGA/VGA framebuffer driver.  By Ben Pfaff and Petr Vandrovec.

*.bdf: Some fonts from the X Window System distribution for use with
BOGL programs.

*.gif: Some pixmaps for testing.

Miscellaneous info:

* Source files are written in GNU C, not ANSI C, using Linux- and
  gcc-specific features.  Since BOGL targets Linux framebuffers, this
  should not be a problem.

* There are no plans to support non-framebuffer graphics setups.  It
  would be much more complicated since this effectively forces putting
  the kernel framebuffer driver into the program.  Yuck.  I'm writing
  a graphics and window library, not an X server :-)

* All comments and suggestions are welcome.

Local Variables:
mode: text
End:
