{ (define LIBNAME "An Imperative Drawing Library (HtDC)") (include "head.tinc") } This idraw package provides stateful classes and imperative methods for a visual world. Here is its class diagram of public fields and methods:

import colors.*; 
import geometry.*; 

  +---------------------------------+     
  | abstract World                  |
  +---------------------------------+       +------------------------------------+
  | Canvas theCanvas                |------>| Canvas                             |
  +---------------------------------+       +------------------------------------+
  | void bigBang(int,int,double)    |       +------------------------------------+
  | World endOfTime(String)         |       | void show()                        |
  | World endOfWorld(String)        |       | void close()                       |
  | abstract void onTick()          |       | void drawCircle(Posn,int,Color)    |
  | abstract void onKeyEvent(String)|       | void drawDisk(Posn,int,Color)      |
  | abstract void draw()            |       | void drawRect(Posn,int,int,Color)  |
  | abstract void erase()           |       | void drawLine(Posn,Posn,Color)     |
  +---------------------------------+       | void drawString(Posn,String)       |
                                            | void clearCircle(Posn,int,Color)   |
                                            | void clearDisk(Posn,int,Color)     |
                                            | void clearRect(Posn,int,int,Color) |
                                            | void clearLine(Posn,Posn,Color)    |
                                            +------------------------------------+

The abstract World class in idraw provides the same methods as the World class in the draw library. Their return values are usually void, however, except for endOfTime and endOfWorld, which continue to return the last world.

In an analogous manner, the methods in the Canvas class export the same methods as the Canvas class in the draw package. Their return values, however, are void.

{(include "foot.tinc")}