|Cycle Colors||Lab Report|
|Cycle RGB Colors with 24-bit Pixels|
|The fractal image shown above was part of the 1991 ACM SigGraph
Technical Slide Set, and appeared in the 1992 SigGraph Advance Program with a caption of
"Insight Through Images." Variations of this fractal biomorph also
appeared in the Eurographics '91 Catalogue of Slide, Film, & Video Show.
This Julia Set biomorph was discovered while studying the "boundary" in the Evolution of the Mandelbrot Set sequence using programs written in Turbo Pascal. See this and similar biomorph images in the Gallery on the Fractals and Chaos page.
The purpose of this program is to display an 8-bit image as a 24-bit color image with the help of a user-defined color lookup table.
Materials and Equipment
Windows 95/98, Delphi 3/4/5 (to recompile)
CycleColorsMap.EXE (CycleColors.EXE is not described here)
FractInt .MAP files
Best when run on 800 x 600 pixel (or higher) monitor with 256-color display. You will see no difference in image quality if used on high color or true color displays.
Historically, color cycling was done with hardware assistance by shifting palette colors. With increasingly fast processors, color cycling is now possible in software even with 24-bit color. (Palettes don't exist with 15-bit or above color displays). The Windows AnimatePalette function cannot be used in high color or true color modes for color cycling.
CycleColorsMap.EXE takes 75 Fractint color maps (from Fractint and Jacco's web sites) with 18,554 RGB triples to display the same fractal biomorph. The program reads all the .MAP files in the directory with the .EXE and displays the 16-by-16 matrix of colors for each map before creating the fractal and cycling colors.
CycleColors.EXE takes five sets of 256 colors (256 shades of red, 256 shades of green, 256 shades of blue, 256 "fire storm" colors, and 256 shades of gray) and cycles through them as part of the IdleAction (when the Cycle Colors checkbox is checked). A new image is created from the base image and the array of TRGBTriples to update the display.
"Read Maps" uses FindFirst/FindNext/FindLast to locate and read all .MAP files in the directory of where the .EXE is located. Note that many of these color maps do not "honor" the Windows rule of reserving 20 fixed colors for palettes, but this is not an issue here since Windows palettes are not being used.
Note the form's IdleAction procedure for using idle time to cycle the colors. This is setup in the class definition of a form:
TFormColorCycle = class(TForm)
PROCEDURE IdleAction(Sender: TObject; VAR Done: BOOLEAN);
TObject; VAR Done: BOOLEAN);
Also, see Borland's "Doing work while application is idle," FAQ1635D, for more information about idle processing.
In Delphi 5 drop a TApplicationEvents component on your form (from the Additional tab) and handle its OnIdle event.
Also, see Microsoft's Simulating Palette Animation on Non-Palette
The complex math library in this project was written in Turbo Pascal and will be upgraded to use Delphi features at some point in the future.
Color cycling in high color or true color modes is possible using a user-defined lookup table of colors.
ScanLine, IdleAction, TRGBTriple, TRGBTripleArray, Fractals, Fractint Color Maps, Fractal Biomorph, complex arithmetic
Delphi 3/4/5 Source and EXE (307 KB): CycleColors.ZIP
Updated 26 Feb 2005
since 1 Nov 1998