GNU GPL Free C++ directed graph layout library

mooigraph 4a7ebbd416 fixed dmake 3 rokov pred
packaging 080c7ba869 added rmp deb support 3 rokov pred
src 4a7ebbd416 fixed dmake 3 rokov pred
.gitignore cf6dae4a51 Initial commit 3 rokov pred
Doxyfile 47a5cfdf94 updated compilation 3 rokov pred
LICENSE 47a5cfdf94 updated compilation 3 rokov pred
Makefile.am 5ae0220503 updated src 3 rokov pred
README.md 4a7ebbd416 fixed dmake 3 rokov pred
TODO 4a7ebbd416 fixed dmake 3 rokov pred
autogen.sh 4a7ebbd416 fixed dmake 3 rokov pred
config.h 4a7ebbd416 fixed dmake 3 rokov pred
configure.ac 0250c28d29 misc 3 rokov pred
dmake 4a7ebbd416 fixed dmake 3 rokov pred
gplv3.png 0250c28d29 misc 3 rokov pred
miptgraph.pc.in ed9e28b06d added level data 3 rokov pred
screenshot.png 4ff5c3f89b updated layout algo 3 rokov pred
screenshot2.png 34cc42372f added c interface 3 rokov pred

README.md

miptgraph

GNU GPL Free C++ directed graph layout library

This is a GNU GPL Free stand-alone C++ Graph Layout Library based on GNU GPL Version 3 Free Mipt-Vis tool from Moscow Institute of Physics and Technology( MIPT)
This project is another reincarnation of the Mipt-Vis project.

To compile:
./autogen.sh
./configure
make

To clean: make clean
make distclean
make cleaner

To indent sources: make indent

Version 1: initial with minimal InitCoordinates() routine to be improved
Version 2: in development

The directory src/test2 has the gtk+ gui program miptgml for use with gml graph data
The directory src/test1 and test2 has example programs how to use this graph layout library.
The source is documented for use with the doxygen program generating html documentation.
The dmake script can be usd to get a log file of the make process
This library has own routines for hierarchial graph layout and does not depend on graphviz or other libs
This library has a c interface to use it with normal c source code
The Graph and Layout directory does not depend on qt5 library or other libraries
To compile this C++ with emscripten or otherwise to wasm webassembly should be possible to run it in the browser
The user interface program must copy some graph data to/from this library to make sure it does not depend on qt5
Because multiple graphs can be layouted independent at once it can be used to layout bigger graph with subgraphs
There are almost no C++ libraries for graph layout with sugiyama algorithm but other GPL Free ones are ogdf, graphlhet and igraph
For drawing the flowcanvs or ganv C++ gtk+ drawing routines can be used for a good looking image

Note that the only way to do good, efficient, and system-level and portable C++ ends up to limit yourself to all the things that are basically available in C.

Most so called graph layout programs are only spring embedder layout or drawing programs.

Other software implementing sugiyama barycenter graph algorithm are
C, GPL, gml4gtk graph viewer with GTK+ gui gml4gtk
C, GPL, single c file directed graph layout singlefilegraph
C, GPL, minimize crossings with science papers crossings-minimazation
C, GPL, unmaintined graphed editor graphed
C, GPL, ginger graph editor with matrix barycenter, offline
C, GPL, rdis for Linux GTK+ gui rdis
C, GPL, GTK+ graph viewer with folding tuxsee
C, GPL, xsurgeon or surgeonsrc toolkit surgeon
C++, gpl, graphlet graph viewer graphlet
C++, GPL, big graph library ogdf
C++, GPL, graph lib with python, R interface igraph
C++, MIT, bgl graph library using boost bgl
C++, GPL, mipt graph visualizer mipt-vis
C++, GPL, mipt graph library icdv
javascript, MIT, dagre lib dagre
javascript, sugiyama drawing sigiyma-drawing
javascript, some theory info and javascript theory
javascript, sugiyama drawing lib sugiyama-javascript
javascript, GPL, sugiyama in web browser dGraph
javascript, sugiyama javascript sugiyama-javascript
javascript, blog blog
javascript, MIT, mxgraph javascript mxgraph-js
java, sugiyama in java itaka-digrap
java, sugiyama, sugiyma-java
java, graph framework gvf
Python, minimize edge crossings mincrossings
Python, GPL, python drawing python-sugiyama
Python, GPL, python graph granndalf
Python, BSD, maybe grakel grakel
Python, reduce edge crossings datavis
Python, mipt graph layout course miptcourse
elm, sugiyama drawing elm
typescript, sugiyama drawing sugiyama-typescript
typescript, sugiyama, sugiyama-typescript
typescript, MIT, d3 dag d3-dag

make indent uses clang-format to format the c++ source
it needs a specialized university study to understand how this works at some parts

screenshot screenshot2 screenschotmiptgml

gplv3

SPDX-License-Identifier: GPL-3.0+
License-Filename: LICENSE

🇳🇱