This directory contains the SVG files used for the diagrams in the Checker
Framework manual.  The HTML manual uses the SVGs directly.  The PDF manual
uses PDF conversions of each SVG.

To edit an existing image (.svg file), use one of these tools, which are
listed in order of preference:
 * Inkscape
 * Visio
 * LibreOffice/OpenOffice
Please don't use:
 * https://www.draw.io (no tool installation required)
    * The .svg files it exports don't convert to pdf with correct formatting
      if they have multiline text
    * The figures might require fine tuning with Inkscape afterwards, or
      editing of the .svg files with a text editor.
 * macSVG, which saves the .svg file as one line (!).
    * Unless you manually fix the .svg file afterward.

To create a new image:
Copy an existing SVG and make modifications to it, so that its boxes and
arrows have the same size and font as in other SVGs.

To include an image in your chapter, use one of these:
 \includeimage{formatter-hierarchy}{3.5cm}
 \includeimagenocentering{value-subtyping}{2.75cm}
Note the absence of the SVG extension. Note that the size parameter is the
*vertical* size for the PDF only, not the HTML.  To affect the size of an
image in HTML, please edit the image size in the SVG directly.
