Adaptagrams is a library of tools and reusable code for adaptive diagramming applications, for example: drawing tools, automated document and diagram layout, smart presentation software, graph drawing, chart layout, etc.

Currently, the Adaptagrams repository includes:

  • libvpsc — a solver for the Variable Placement with Separation Constraints problem. This is a quadratic programming problem in which the squared differences between a placement vector and some ideal placement are minimised subject to a set of separation constraints. This is very useful in a number of layout problems.
  • libcola — a library for constraint graph layout. Specifically, force-directed layout using the stress-majorization method subject to separation constraints. Applications include layout with non-overlapping nodes and clusters, directed graph layout and layout preserving the crossing properties of a given starting layout.
  • libavoid — a cross-platform C++ library providing fast, polyline and orthogonal object-avoiding connector routing for use in interactive diagram editors.


A biological pathway laid-out using the algorithms in libcola, part of the Adaptagrams suite of libraries.