1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
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:
|