Class diagram

This class diagram describes the basic layout of Gaphas.

_images/gaphas-canvas.png

One-oh-one:

Canvas
The main canvas class (container for Items)
Items
Objects placed on a Canvas. Items can draw themselves, but not act on user events
Solver
A constraint solver. Nice to have when you want to connect items together in a generic way.
View
Base class that renders content (paint()). The view is responsible for the calculation of bounding boxes. This information is stored in a quadtree data structure for fast access.
GTK+ View
A view to be used in GTK+ applications. This view class is interactive. Interaction with users is handled by Tools.
Painters
Painters are the workers when it comes to painting items.
Tools
Tools are used to handle user events (such as mouse movement and button presses).
Aspects
Tools do not modify the items directly. They use aspects (not the AOP kind) as intermediate step. Since aspects are defined as generic functions, the behaviour for each diagram item type can be slightly different.

Tools

Several tools are used to make the overall user experience complete.

_images/tools.png