Skip to content

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

Notifications You must be signed in to change notification settings

cmears/adaptagrams

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

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.
  • libavoid
    - a cross-platform C++ library providing fast, polyline and orthogonal object-avoiding connector routing for use in interactive diagram editors.

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:

The Adaptagrams code is maintained 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.

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, and
  • Gaphas, an open source Python-based diagramming widget for GTK+.

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.

A somewhat transient dependency (depending on whether libcola/output_svg.cpp is included in the build) is Cairo. It's only used by a few examples so you can easily build the core libraries without it.

Run ./autogen.sh to compile from scratch.

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 70.1%
  • Shell 11.9%
  • C 8.7%
  • C# 5.8%
  • Java 2.6%
  • Prolog 0.8%
  • Objective-C 0.1%