Unidraw

Unidraw is a general C++ framework written by John Vlissides for creating custom graphical editing applications. It was implemented using the InterViews library. John Vlissides' thesis Generalized Graphical Object Editing (technical report CSL-TR-90-427, Stanford University, send e-mail request to schulman@shasta.stanford.edu ) describes the basic ideas behind Unidraw; if you are interested look at chapters 1, 3 (skip 3.3), 4 (skip 4.6, 4.7) and 5.1 as an introduction to Unidraw concepts. The InterViews idraw program is a basic figure drawing application that shows many of the capabilities of the Unidraw library.

John Vlissides has authored many books on Design Patterns, and used Unidraw for a lot of the examples. He periodically writes about Unidraw-derived patterns in his C++ Report Pattern Hatching column. Vlissides and Linton published a paper in ACM Transactions on Information Systems called Unidraw: a framework for building domain-specific graphical editors

online copies: unidraw.ps, .gz or ftp://interviews.stanford.edu/pub/papers/unidraw.ps.Z

Unidraw class man pages

Unidraw auf Deutsch.

HotDraw is a similar environment written in Smalltalk.

Pattern Hatching, a book by John Vlissides on usage of design patterns compiled from his column.

A chapter in this book is written by Vlissides about Unidraw.


Basic abstractions:

Structure of a Unidraw application: (thesis page 29)

Other features:


Within ivtools and vhclmaps there are several other libraries (and sample programs) layered on top of the basic Unidraw (and idraw) capabilities. Other uses of Unidraw here

ivtools layers

  • UniIdraw -- librarification of 3.1 idraw
  • OverlayUnidraw -- generic extensions
  • ComUnidraw -- command interpreter integration
  • FrameUnidraw -- multi-frame extensions
  • GraphUnidraw -- graph/network extensions
  • DrawServ -- merger of graph and frame layers
  • vhclmaps layers for building
  • MapUnidraw -- map feature viewers
  • DlgUnidraw -- DLG format map viewers
  • VpfUnidraw -- VPF format map viewers
  • MapServ -- map feature processing server
  • UtmUnidraw -- UTM projected viewers
  • ProjServ -- projected map feature processing servers
  • ProjUnidraw -- map feature viewers with arbitrary projection
  • VhclServ -- vehicle state servers
  • VhclUnidraw -- vehicle state viewers
  • DemUnidraw -- 3d terrain viewers
  • back to ivtools technical info