This repository contains a port of the EasyDraw graphics server, written by Joel Bartlett in the 90's, to CHICKEN Scheme.
It contains two CHICKEN Scheme modules, ezd
and ezd-external
as well as a standalone graphics server executable: ezd
.
The ezd module is the main piece of this project, it defines all the basic ezd commands as well as the ezd
procedure to run them.
It also exposes the read-eval-draw
procedure which starts up an interactive drawing prompt.
The ezd executable is just a regular program that runs the read-eval-draw loop when started.
Finally, the ezd-external module is just a simple helper module that exposes the ezd
and read-event
procedures to interact with an automatically started external ezd process.
To compile and install everything, simply run chicken-install
in the repository’s directory.
You can find a few examples on how to use this program in the examples/ directory.
The clock example has three versions:
- clock.scm that uses the ezd module directly.
- clock-external.scm that uses the ezd-external module to communicate to an external ezd process.
- clock-c.c, a C version of the clock-external program, to show that ezd is not strictly tied to Scheme, but can in fact be used from any language.
There are a number of differencies between Scheme->C (the original Scheme implementation EZD was running on) and CHICKEN Scheme, so bugs might be lurking around.
Some bugs I already know about:
- window redrawing doesn’t seem to occur correctly, sometimes the window stays blank until the next focus change.
- the textdrawing module doesn’t accept utf-8 characters outside of ASCII, and behaves strangely with new lines and backspace.
If you find some, send them my way by email to kooda@upyum.com.
Here you can find the original report about this software: Don’t Fidget with Widgets, Draw!.
Have fun!