Graphite is divided into six Python modules whose uses-relationship is shown
in the software architecture diagram in figure 5.
PIDDLE [3] is a Python module for generating cross-platform two-dimensional graphics. It provides Graphite with a large number of backend formats such as PostScript, PDF, PNG, TK, QuickDraw (Mac), Windows, etc. All graph objects are described in terms of 3D primitives which are then translated into PIDDLE canvas drawing functions. Each Primitive subclass abstracts a 3D drawing element. Currently Graphite has Box, Line, Symbol and Text Primitive subclasses.
The Property module describes a base class which contains user-configurable properties. A property looks and acts just like an ordinary Python member variable, with two exceptions: a property may have a restricted type and range of acceptable values, and every property has an associated help string.
Numeric is an established Python module for doing numerical mathematics. Graphite uses the array manipulation provided by Numeric. The StringFormat module allows for character-by-character formatting of strings for things such as superscripting, subscripting, and greek letters.
The main classes of Graphite objects are shown in the class diagram (figure 6), using the notation of Design Patterns [2]. Detailed understanding of the diagram is not necessary for this discussion, but for the sake of completeness, a brief description of the notation is as follows. Classes are shown as boxes, with the name of the class in bold type. Important data members and functions are shown in the lower part of a box. Arrows connecting boxes indicate relationships between the classes. A filled circle at the head of an arrow indicates a one-to-many relationship. A diamond at the start of an arrow indicates a part-of (aggregate) relationship.