The class LayeredBoard implements elementary functionality for the layout of 2-dimensional items on a eu.mihosoft.freerouting.board. The eu.mihosoft.freerouting.board may have several layers. It allows to insert, change, or delete items, or to check, if inserting would result in violations (overlaps) with other items. For fast checking, picking and changing items the class contains a 2-dimensional search tree, whose entries point into the list of items on the eu.mihosoft.freerouting.board. The search tree is decoupled from the items it is pointing to and may even point into several different databases at the same time.
LayeredBoard contains also a list of components, a eu.mihosoft.freerouting.library of packages and padstacks, and a collection of rules and restrictions, which must be respected by the items on the eu.mihosoft.freerouting.board.
The class RoutingBoard derived from BasicBoard contains higher level functionality, such as shoving items and pulling tight traces, and autorouting incomplete connections.
The base classes of all physical items on the eu.mihosoft.freerouting.board is the abstract class Item. Items must implement the interfaces ShapeTree.Storable and Drawable, so that they can be stored in a search ree and painted onto a graphics screen. Additionally an item contains a pointer to the physical eu.mihosoft.freerouting.board the item is on, an id number and a list of numbers of nets it belongs to, which may be empty.
Classes derived from Item are currently Trace, DrillItem , ObstacleArea and BoardOutline. The class ObstacleArea describe areas on the eu.mihosoft.freerouting.board, which may be conduction areas or obstacle areas for traces or vias. The abstact class DrillItem describes items with a layer range, a centre point and a (convex) shape on each layer. It has the two implementations Pin and Via. Pins belong to a component, and its shapes are defined by the padstack of the corresponding pin of the components eu.mihosoft.freerouting.library package. The shapes of a Via are defined directly by a eu.mihosoft.freerouting.library padstack. The class abstract Trace is used for paths connecting drill items and eventual conduction areas. The only implementation of the class Trace is currently the class PolylineTrace. It adds the concrete description of the geometric path as a Polyline to the class Trace. The reason, why Polylines and not Polygons are used to implement the paths of non-curved tracess, has to do with numerical exactness and performance, as described in the package eu.mihosoft.freerouting.geometry.planar.
Items, which may be electrically connected must implement the interface Connectable. Connectable Items are currently Pins, Vias, Traces and ConductionAreas.