Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Libraries for constraint-based layout and connector routing for diagrams.

branch: master

Fixes for cola::FixedRelativeConstraint.

This commit includes 3 changes:
 -  Alters FixedRelativeConstraint to take a vector of rectangle indices
    rather than a set, so that this constraint may be used from SWIG bindings.
 -  Fixes a bug in FixedRelativeConstraint::generateSeparationConstraints()
    where the wrong memory address for variables was sometimes being set
    for separation constraints.
 -  Fixes a bug where IDs were not properly getting remapped for all compound
    constraint types when CompoundConstraint::updateVarIDsWithMapping() was
    called.
latest commit 3de017b4fc
Michael Wybrow authored
Octocat-spinner-32 cola Fixes for cola::FixedRelativeConstraint. April 03, 2014
Octocat-spinner-32 experimental - Clean up repository structure. January 13, 2011
Octocat-spinner-32 README.md Minor fix for github project page layout. December 10, 2013
README.md

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:

  • 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.
    - libcola depends on libvpsc.
  • libavoid
    - a cross-platform C++ library providing fast, polyline and orthogonal object-avoiding connector routing for use in interactive diagram editors.
  • libtopology
    - a library containing extensions to libcola to support topology preserving constraint-based layout.
    - libtopology depends on libavoid, libcola and libvpsc.

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 maintaied by Michael Wybrow:

All code in the Adaptagrams repository is released as open source 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 Univeristy 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:

  • Dunnart, constraint-based diagram editor,
  • Inkscape, the popular open source vector graphics editor,
  • Graphviz, open source graph visualisation software,
  • Arcadia, a visualisation tool for metabolic pathways,
  • Gaphas, an open source Python-based diagramming widget for GTK+, and
  • BRL-CAD, a powerful cross-platform open source solid modeling system that includes interactive geometry editing, high-performance ray-tracing for rendering and geometric analysis, image and signal-processing tools, a system performance analysis benchmark suite, libraries for robust geometric representation, with more than 20 years of active development.

The algorithms were developed by Kim Marriott's Adaptive Diagrams Research Group at Monash University in Melbourne, Australia. The Adaptagrams libraries were originally written by Tim Dwyer and Michael Wybrow.

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.

Something went wrong with that request. Please try again.