mjwybrow / adaptagrams

Libraries for constraint-based layout and connector routing for diagrams.
http://www.adaptagrams.org/
264 stars 81 forks source link

Adaptagrams

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 five cross-platform C++ libraries:

These libraries are collectively known as cola (for Constraint Layout). The newest version of the C++ source code for cola can be found in the Adaptagrams GitHub repository maintained by Michael Wybrow:

The algorithms were developed by members of the Immersive Analytics Lab at Monash University in Melbourne, Australia. The Adaptagrams libraries were written by Tim Dwyer, Michael Wybrow and Steve Kieffer.

All code in the Adaptagrams repository is released as open source software under the terms of the LGPL 2.1 or later, see the LICENSE file.

We also dual-license the Adaptagrams libraries and for a fee we can provide them under a less-restrictive commercial license as well as extend them to fit your needs (contact us). For this reason, if you contribute code to the project and would like it to appear in the main Adaptagrams repository, we require that you assign the copyright on your changes to Monash University with the following statement: "I hereby assign copyright in this code to Monash University, to be licensed under the same terms as the rest of the code."

Software using one or more of the Adaptagrams libraries include:

Building

The library code is all contained in the cola directory of the repository.

We use GNU automake to build. We've tried to make the contents of the repository as platform agnostic as possible, so you'll need to call aclocal, autoconf, and automake before configure.

The only dependency is Cairo if debugging SVG output is to be included in several example test cases. The libraries themselves have no dependencies.

Run ./autogen.sh to compile from scratch.

Use from other languages

Bindings for use of the Adaptagrams libraries can be generated using SWIG. The repository contains a SWIG interface file cola/adaptagrams.i. We have successfully tested and used Adaptagrams from Java and Python in this way.

Cola in the browser

cola.js (a.k.a. WebCola) is a JavaScript based rewrite of libcola which works well with D3.js