toLiteBrite

by Stewart Dickson

This is a program to read a binary color image file and convert it to a series of Lite-Brite(tm) pages. The program is geared toward generating multi-page, large-format displays.

This version is a prototype, currently developed in the X-Windows (Motif) implementation on Silicon Graphics IRIX 6.5. An effort is underway to port toLiteBrite to Apple's MacOS X (Darwin).

The output of toLiteBrite consists of one or more pages in Adobe PostScript (V. 1.0) form. The user interface contains the option to direct the output pages directly to a printer.

When launched, toLiteBrite creates several windows: The source image window, the toLiteBrite Control GUI and the Lite-Brite(tm) output preview window.

The science of the program is to convert a pixel, or group of pixels in the binary color source image to a pattern of Lite-Brite(tm) pegs which will accurately render the image, when viewed from a distance.

The control interface allows the user to interactively adjust the number of Lite-Brite(tm) pages into which the source image will be divided by using the Image Page Divisions slider. The source image window has drawn over the source image an outline of the page divisions. The currently previewed page is highlighted.

The color gamut defined by the eight Lite-Brite(tm) pegs (+ BLACK = 9) is a sparse sub-sampling of RGB color space To reproduce a binary RGB image in Lite-Brite(tm) pegs requires the program's color sampling algorithm to dither between the closest peg values to the given color.

The toLiteBrite user interface includes a color editor window, to aid in matching the output Lite-Brite(tm) page to the source image.

The color editor UI window is launched from the edit pulldown menu in the toLiteBrite Control GUI.

The range of values in the Gamma sliders may be a little less than obvious. The left-hand end (0.1), corresponds to an actual function newcolor = pow(oldColor, 4) (color to the 4th power), where 'color' is between 0 and 1. Neutral (no color modification) is the slider's middle, default value (5.0). newcolor = pow(oldColor, 1) The right-hand end (10.0) corresponds to an actual function newcolor = pow(oldColor, 1/4). The intent is to make this more intuitive in the MacOS X version.

The file pulldown menu in the toLiteBrite Control GUI contains open..., save..., print... and quit items. open... launches a file browser for selecting an input image file. save... and print... launch the same GUI, with options set to either save the output to a sequence of files per page or to pipe the equivalent to a series of printer jobs.

Part of the proposed project is to create a two-foot by four-foot, modular light box, containing a large-format perforated image plane, registered to the pages output by the software program. The artist proposes to create large murals in Lite-Brite(tm) by assembling many of these modular units.


Alpha-Version Limitations

The program currently only reads Paul Haeberli's SGI/RGB format image files. Plans are to at least support GIF, JPEG, TIFF and X-PixMap format image files.

The source image window is currently implemented in a glxMDraw widget. This is an X-Motif wrapper for Iris-GL, at the moment -- and it is largely unnecessary. It is only an historical artifact of having been derived from Paul Haeberli's ipaste, which pre-dated X.

The intent is to make as clean a port to Darwin (MacOS X), XFree86, Motif as possible.

The printer interface is currently handled through the Unix lpr printer drivers, and assume the ultimate destination is a PostScript printer.


Lite-Brite is a registered trademark of Hasbro.