HotDraw is a framework for 2D drawing editors in Smalltalk. This directory contains a version for 4.0, but st80_r41/hotdraw contains a version for 4.1, and there is even an older version for 2.5. The current directory contains Postscript documentation. There is also a mailing list, hotdraw@cs.uiuc.edu. Send to hotdraw-request@cs.uiuc.edu to get on the mailing list. The source code for HotDraw is in HotDraw-source. There is a file that will file everything else in. HotDraw-apps holds several small demonstration applications. The best way to learn HotDraw is to read the documentation and study these applications. Some of them are useful in their own right, some are only useful as starting points for something real. The Diagramming Inspector is a very neat tool that lets you inspect objects by drawing pictures of them. Instead of 'object inspect', just say 'object draw' to get a diagramming inspector. There are a lot of improvements that could be made to this, but it is very handy as it is. Play with it and send back improvements. Also, note that the fileIn has some changes that are NOT in category Drawing-Inspector. PERT Charts are a good example of a complex figure with constaints. Network editors are a good example of embedding HotDraw in a larger MVC application, and of how to do animation in HotDraw. The idea is that you create a set of nodes and can assign weights to the edges between the nodes. An edge with weight zero doesn't exist. The drawing rearranges itself so that edges act like springs, and nodes with high-weight edges are closer together than nodes with low-weight edges. A MovingDrawing is one of the simplest examples of how to do animation. Now that I've written the network editor, I probably don't need it any more. Let me know if you find it useful, because otherwise I am likely to delete it. It just simulates objects in orbit around each other, i.e. the n-body problem. HotPaint is a color paint tool for HotDraw. It is still crude, but cute. It makes it easy to add custom images on the fly to a Smalltalk application. Please send improvements back. ObjectWorld is a cute program that illustrates how MetaFigures should work. It has two panes, one is a text pane and the other is HotDraw. Figures in HotDraw are given names (like Joe and June) and can be referred to by name in expressions that are evaluated in the text pane. You aren't supposed to use doIt in the text pane, but are instead supposed to use an exclamation mark to have the pane evaluate the text. I'm not sure that was a good idea. The third directory is InVaider. InVaider is Jim Conti's MS project, a framework for visual programming languages that is a take-off on FOIBLE, which only worked on 2.5. Basically, I wanted him to make a version of FOIBLE based on HotDraw, and that is what he did. He improved a lot of things about FOIBLE, such as the way that complex icons can be made up of smaller components. He also was the one who started the idea of metafigures. InVaider is pretty complicated, but if you want to make a CASE tool or a dataflow language then it is probably worth the time (a week in my estimation) to figure out how it works. Most of these applications started off as student projects, and I eventually rewrite them. This is the only one I haven't rewritten. The README contains my current list of things I would do differently. Please let me know of anything that is not clear in the documentation or any improvements you make. Ralph Johnson -- johnson@cs.uiuc.edu