Most recent at the bottom. I've started so I'll finish.

Drawtool, Version 0.1b

Changes since version 0.01a

The whole format of the string has been completely altered, see the README

"FIX THE CRAP CMDLINE FUNCTION, it doesn't work properly"
Now, I'm using getopt, badly. But it's better than before.

"Use a 32 bit number for colour instead of cutting it short."
Using 3 (r,g,b) integers.

"Add support for other graphic primitives."
Now have points, lines, frame rectangles and filled rectangles

COLOUR! (yes, that is spelt right, GRRRR)
Glorious 32bit colour, using the gimp colour picker.

Fixed a major bug that caused the parse to go nuts when if received an EOF
from it's parent pipe.

Fixed a dodgy malloc in the parser that wasn't being freed up properly.

Modularised the entire thing. Now, have several source files with many small
reusable modules.

It now compiles with gcc -Wall

Added a -b option to omit buttons from the drawing window

Lots more example programs.

A simple implementation of 'logo' has been added in the utils folder, with
some trivial and slightly less trivial examples.

----
v0.02b

Added a filled and empty circle tool

Added a simple colour picker for commonly used colours

Added a current colour indicator

Moved lots of stuff out of drawtool.c and improved the modularity

Added PU,PD,PC to logo tool

----
v0.021b

Discovered gdk_draw_arc for the circle routines (after spending the best
part of a day searching and writing highly optimised code using the
bresenham circle drawing algorithm GRRRRR).

Added an a filled and empty ellipse tool (easy when you know how)

Stopped the user from resizing the drawing window while running (buggers up the
pixmap)

Stopped the user from resizing the simple colour window, as it's fine the
way it is.

---
v0.022b

Added -o and -i flags, to use files for I/O (happy now Mr. Huggins?)

Eyedropper tool added

Sort of stopped the thing where things move after a mouse_release

Finally fixed cmdline.c and figured out what the hell "g:h:ghd:d" means...

Added a colour indicator box

Realised that updating the colour indicator box while in -t mode writes it's
coords out, so fixed it with a really dirty kluge.

Fixed stdin_func in a *big* way, now it uses the src, creates a stream from
the src fd, takes unbuffered data and cleans up nicely after an eof.

Put in a 'whiteboard' script to quickly hook up two machines using netcat

---
v0.023b

Added -d flag, to kill the program when an eof is found on stdin, useful for
using it just as a display program

Fixed a problem in stdin_func (events.c) where the file descriptor for the
input was being fopened on *every* call. Added a global stream (FILE
*input), it's now opened once in drawtool.c. Thanks to Anders Eurenius.

Stuck Anders' perl code in utils/point, just to show that it works with sh,
awk, c and perl :)

---
v0.024b

-t flag added to logo, to allow any number of turtles to be hatched. Eg, -t
100 will allow up to 100 HT's consecutively. eggs is now turtle ** and
malloc'ed according to the -t flag.

Added cmdline.c parser to logo. Now supports long options. Also, it has -x
and -y for setting the home coordinates, see logo -h (or logo --help :) )

Added a -c option to logo, to list all of the commands available

Added utils/sierpinski, a quick display hack in perl, derived from HAKMEM
146-148, computes X AND T for successive values of T. I need more drawtool
fractal generators...

---
v0.3b

Added macro suport. MAJOR CHANGES. There's now a macro menu that lets you
select external scripts to run. There is a .drawtoolrc file (see
sample.drawtoolrc) and a parser for it.

Discovered that gtkmenufactory doesn't work (apparently it's deprecated soon
to disappear or sumamt). So, rolling my own menus.

Macros are dealt with nicely, using gdk_input_add, so there's multithreading
(in a sense). Drawtool can execute a macro, read data from stdin and have a
user drawing in the window simultaneously.

-r flag added, to select an arbitrary rc file (rather that ~/.drawtoolrc)

Added colour to the macro interface, now called with 7 cmdline options.

Realised that I'd never *actually* tried using ~/ and that it doesn't work
with popen (what a surprise). So, for now, all pathnames in the drawtoolrc
are absolute.

Wrote a few macros, most of them are pointless. But, I'll do some good ones
some time.

Wrote the stdmacro code, just a simple shell to help people write C macros
quicky.

---
v3.01b

I'm giving up with version numbers for a while. I'll prolly release a 3.1
final or something by the time I get back to Nottingham..

Changed the macro interface, so that macros can be sure that x1<x2 and y1<y2
(or that they're equal)

Wrote some docs in html and added some pretty pictures to them. It's
currently up on the webpage
<http://www.nottingham.ac.uk/~psystrj/index.html>

Fixed the last change, so that x1,y1 in type 1 scripts is actually x1,y1,
the -1,-1 was making it think that it was smaller than x2,y2 so it ordered
them wrong.

Added a running flag to macromenu.c, now it won't bother working doing any
of the file stuff before running a macro if one is already going. Minor
speed improvement.

Noticed that writing shell scripts that fork and call bc (or even expr) are
extremely slow. Perl is *much* faster and will probably be used from now on.
I hate to think what would happen if you ran the brush macro on a system
without enough memory to cache it.

Changed the -b flag slightly, so that when selected, it disables event
handling of the drawing area. ie. no user input has any effect, the -b now
makes it purely a display app.

Added a third script type (3). Where, x1,y1 is the point clicked on, and
x2,y2 is the point let go on. The difference between this and type 2 is that
there is no sorting. The macro cannot be sure that x1<y1 etc..

Added a /n to the printf in the circle drawing routine (MAJOR STUPID
MISTAKE).

Added r,g,b to the circle routine, d'oh

Added lots of macros. I'm getting there (slowly) with learning perl. There's
a line drawing perl script that can draw thick coloured lines, a brush
script to draw circles repeatedly, a minibrush script (smaller brush), an
eyeball script that draws an eyeball like figure with ellipses, a better
sierpinski triangle drawer (faster due to the perl) and a very bad pentagon
script to demonstrate the use of logo (utils/logo) in macros.

Not destroying the Graphic Context in each of the plot.c routines was
causing the program to demand more memory on every plot. This meant that X
died after about 3 minutes of continous plotting. Seems to work more nicely
now.

Added a program from a book called "The Computational Beauty of Nature" to
utils. I've destroyed the command line options in the three minute port I
did, but it should be fixable. It draws growing crystalline structures by
randomly growing them, it looks cute. Just pipe it into drawtool.

Added the first draft of a manpage to the main folder. It's bad, but it's my
first attempt. I'll improve it some time.

In events.c on an eyedropper event, only colour.pixel was being set, not the
r,g,b vals. I don't know to get the r,g,b out of the pixel val, but I've
made a best guess. It's needed for when the curColour r,g,b vals are passed
to macros.

Added a prototype fill function (only in code, not gui). It's *amazingly*
slow. When implemented, it will *have* to be a graphic primitive, as
outputting thousands of points will be slow and painful.

Added -v and -w (--tox and --toy) cmdline options to logo.c, now, logo -x 10
-y 10 -v 20 -w 20 will start the turtle at 10,10 and point it towards 20,20.
This should take the burden off some of the logo/macro scripts that need to
point in the right direction.

Whipped up a quick logo based macro to draw an arrow. It uses the new 'point
at' feature (it's a bit of an arse to do without it). (Happy now Mr.
Huggins? Ok, I admit, I cheated, unless hacking the source counts).

Added a -m to logo. -m macroname will cause it to execute a macro instead of
drawing a line. This means that it can call thick line functions, or draw
complex figures at odd angles. Oh dear, this means that logo can be used as
a macro to logo, recursion here we come...

Stuck in a couple of failsafes to the file specified in logo -m. Also, fixed
a dumb buffer overflow in turtle.c (in the puts), where I wasn't checking
that fgets worked.

Added a REPEAT n [..] command to logo. It will repeat the command(s) [..] n
times. eg, "REPEAT 4 [FD 20 RT 90]" will draw a square. The parsing is
fairly dodgy and will be improved sometime. It was a difficult thing (for
me) to do because of the variable length command string. Hope it works ok ;)

5 hrs later... Finally stopped the memory leaks in logo.c, it now seems to
stay at a stable (and pretty low) memory usage even when I pipe "yes REPEAT
100 [FD 100 RT 190 RT 45 FD 10 BK 10 LT 45]" into it. YAY! However,
recursive REPEAT statements won't yet work. 
( "REPEAT 2 [ REPEAT 3 [ FD 10 ] ]" == "REPEAT 6 [ FD 10 ] ) is pointless,
but adding a second argument to the code block could be interesting. The way
to do it would be to encode everything as a code block program (no strings,
just numbers) then it'll be easy.

8 hrs yet later. I have a parser for the repeat strings which should be
fairly adaptable for when I implement subroutines, it no longer dumps core
every other time and seems ok with memory. How the hell is electric fence
supposed to work anyway (maybe it's time to *read* the docs).

logo now has a -e flag to show parsing errors. It should pick up on all
malformed strings, but may give them fairly unhelpful names.

Kluged logo into ignoring case in input strings (I'm getting sick of being
forced to use CAPS LOCK).

Verison 3.2.1, Mon Nov 29 18:19:03 GMT 1999
Added a better makefile, now it does logo and drawtool, make install works too.
Oooh the luxury.

Added perltool and PSDrawtool. Added docs/*, unpdated the Makefile accordingly.

Thu Feb 17 23:01:52 GMT 2000
3.2.2

Added svgdrawtool.pl
