Updated , made to work with GIMP 2.10.
This is an implementation of the picture language described in section
2.2.4
of Structure and
Interpretation of Computer Programs, using
the GIMP's
Script-Fu
facility. It includes code taken directly from the book, procedures that
were left as exercises, a procedure (file->painter
) for
turning an image file into a painter and a procedure
(paint
) that makes it easy to render a painter into a new image.
All output is displayed using the GIMP's user interface.
To install it, put the file painter.scm in your GIMP scripts directory (~/.config/GIMP/2.10/scripts). To try it out, start up GIMP and open the Script-Fu console (Filters→Script-Fu→Console). Try doing
default-frame
is a square frame 256 pixels wide by 256 tall.
In addition to wave
, you get the painters
outline-painter
, x-painter
and
diamond-painter
. Try something like
to see what they look like.
The paint
procedure creates an image that is big enough to
contain each vertex of the given frame and also the coordinate (0, 0),
and paints the given painter inside the frame. Segment-based painters
are drawn with the current paintbrush.
You can create a painter from an image file:
These painters can be used like any other.
The parts of painter.scm that are my own work are in the public domain.
Download painter.scm.