Code Monkey home page Code Monkey logo

adaptagrams's Introduction

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:

  • 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 library providing high-quality object-avoiding polyline and orthogonal 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.
  • libdialect
    - a library for computing human-like orthogonal network (DiAlEcT) layouts via the following steps: D = Decompose/Distribute; A = Arrange; E = Expand/Emend; and T = Transform.
    - libdialect 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 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:

  • 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.

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

adaptagrams's People

Contributors

11235813 avatar aidandelaney avatar andres-erbsen avatar cmears avatar ede123 avatar milianw avatar mjwybrow avatar p-n-l avatar skieffer avatar speleo3 avatar tbrowder avatar tczauderna avatar timmmm avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.