123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- https://graphviewer.nl/
- For windows users this open sourse project can improve by blocking
- spy and other websites at https://crazymax.dev/WindowsSpyBlocker/
- The gml4gtk windows version has included the gtk-3 dll's but when
- thwy are already installed these included dll's are not needed.
- To run this program on windows it needs the 64bits gtk-3 dll's to be installed
- and these are available from: https://sourceforge.net/projects/gtk3win/
- The file with 64bits gtk3 dll's is gtk3-runtime x84_64
- Below are the names of the dll's which are included in a bundled version.
- The gml4gtk program can be installed on any folder directory on windows.
- The gml4gtk program does not need or create extra files or change files.
- The gml4gtk program does not use network or send mail or other data.
- The gml4gtk windows bundle has all GTK+ dll's included and can be installed
- in any directory folder. To remove it remove the directory with the dlls'
- Howto compile:
- ./autogen.sh (or autoreconf -fvim)
- ./configure
- make
- cd src
- ./gml4gtk
- also:
- make clean
- make cleaner
- For gtk2 or gtk3 or gtk4
- ./configure --with-gtk=2
- ./configure --with-gtk=3
- ./configure --with-gtk=4
- Usage:
- gml4gtk
- or:
- gml4gtk file.gml
- gml4gtk file.dot
- gml4gtk file.gv
- Or see make-gtk2.sh and make-gtk3.sh scripts for the gtk2 or gtk3 versions.
- also these options can be used:
- gml4gtk --version [print version to stdout and exit]
- gml4gtk --debug [shows gtk gdk drawing debug]
- setting GTK_DEBUG in the environment turns on gtk debugging, see the gtk docs
- Font rendering is different between gtk3 and gtk4.
- If you have cairo 1.17.4, we are using subpixel positioning in gtk4.
- That could be described as more blurry, but its not a bug.
- When compiled with "./configure --enable-gcc-warnings" to get more compiler
- checks a -DMEMCHECK cflag is set and in dpmem.c is extra memory check done.
- Because this is a gtk program it can be compiled for windows or mac osx.
- The gtk support for compilation on os-x is at https://gitlab.gnome.org/GNOME/gtk-osx
- On Linux it is possible to cross compile to os-x and not easy to create a setup.
- When compiled for windows it needs all gtk dll's to run the program.
- The gml4gtk reads most GML files, BGV files and partial DOT graph files from
- gcc, bison, llvm, radare2 and more tools can be used.
- The dot html labels with <table> elements are partial supported in version 7.3
- It can happen the drawing is not oke, then switch to pos mode 1
- In the data directory are few sample graph files to try it.
- When the left mouse button is pressed on the drawing and held down
- the drawing can be dragged around instead of using the sliders.
- When the vertical distance between nodes is too much select
- position mode 3 and use the dy setting in the GTK+ user interface
- When the binary is renamed to gml4gtkd then debug output is generated.
- When "yydebug=true" is used in dot language debug output is generated.
- digraph "example"
- {
- yydebug=true;
- ...
- }
- The save-as-dia writes xml data usable with diagram editor dia
- for Linux and windows at http://dia-installer.de/
- The save-as-jgf writes json graph data with extension .jgf
- documented at https://jsongraphformat.info/
- The directory jgf4web has javascript to run jgf layout in the browser.
- To create a callgraph using gcc use gcc option -fcallgraph-info
- and the output.ci file is a graph file to open with file->open ci
- Some other gcc options generating dot graph are -fdump-rtl-all-graph,
- -fdump-tree-all-graph, -fdump-ipa-all-graph, -fdump-analyzer-callgraph,
- -fdump-analyzer-exploded-graph -fdump-analyzer-state-purge -fdump-analyzer-supergraph
- The save-as-svg image output allows generation of big images which
- can be used with firefox browser, inkscape or gimp without problems.
- The file sfg.c is a single file graph layout library with the user api
- described in sfg.h and there is a python, php interface possible with
- example code at https://notabug.org/mooigraph/sfgraph
- Most dot language details are parsed but not implemented yet.
- Also a->b,c is not supported but a->{b,c} works as expected.
- When the "popup" checkbutton is active then a popup window with the
- node label text will appear when the mouse is at a node and this is
- usable with large graph layout drawings. And it can be turned off.
- On sourceforge at the "files" tab there is gml4win.exe with
- less features but smaller and does not need extra dll's to run.
- The windows gml4gtk.exe program is a 64 bits program.
- It is cross-compiled on a GNU/Linux computer.
- It is tested using wine64 windows emulator on Linux.
- In directory src is the sourcecode of gml4gtk.
- In directory data are some dot and gml graphs.
- The dll files are for gtk-3 and gml4gtk.exe is using gtk3.
- The zip file is created using zip -r on Linux.
- The gml4gtk.exe program is verified to run on native windows 64bit.
- The gml4gtk.exe program is checked to be virus free.
- To compile gml4gtk on windows it needs the mingw compiler and gtk+ runtime and gtk+ development files.
- There is mingw compiler but also alternative which has newest gcc 11 version at
- https://github.com/skeeto/w64devkit
- and the releases are at
- https://github.com/skeeto/w64devkit/releases
-
- This are the needed dll's to run this gml4gtk.exe gtk+3 program:
- libatk-1.0-0.dll
- libcairo-2.dll
- libcairo-gobject-2.dll
- libcairo-script-interpreter-2.dll
- libcroco-0.6-3.dll
- libffi-6.dll
- libfontconfig-1.dll
- libfreetype-6.dll
- libgailutil-3-0.dll
- libgdk-3-0.dll
- libgdk_pixbuf-2.0-0.dll
- libgio-2.0-0.dll
- libglib-2.0-0.dll
- libgmodule-2.0-0.dll
- libgobject-2.0-0.dll
- libgthread-2.0-0.dll
- libgtk-3-0.dll
- libiconv-2.dll
- libintl-8.dll
- libjasper-1.dll
- libjpeg-9.dll
- liblzma-5.dll
- libpango-1.0-0.dll
- libpangocairo-1.0-0.dll
- libpangoft2-1.0-0.dll
- libpangowin32-1.0-0.dll
- libpixman-1-0.dll
- libpng15-15.dll
- librsvg-2-2.dll
- libtiff-5.dll
- libtiffxx-5.dll
- libwinpthread-1.dll
- libxml2-2.dll
- zlib1.dll
- The gmltest directory has index.html page with javascript for syntax check of a gml graph
- The jgf4web directory has index.html page with javascript for graph layout of json jgf graph data
- The jgf json graph save and open feature is experimental or just may work.
- The json jgf files have file extension .jgf
- Read also the Kozo Sugiyama book isbn 981-02-4879-2
- If you want a good sugiyama barycenter javascript routine, see:
- https://github.com/speich/dGraph
- For free pdf's about graph layout topics search also here:
- https://scholar.archive.org/
- Use for example "graph barycenter" as search.
- To generate skeleton for use with flex-2.4.6 go into it's src dir and run:
- sed 's/m4_/m4postproc_/g; s/m4preproc_/m4_/g' flex.skl | m4 -P -DFLEX_MAJOR_VERSION=2 -DFLEX_MINOR_VERSION=4 -DFLEX_SUBMINOR_VERSION=6 | sed 's/m4postproc_/m4_/g' > myflex.skl
- Then use flex with "flex -Smyflex.skl input.l" and now myflex.skl can be edited.
- The source is checked and used with clang-12 and gcc-11 compiler development version.
- To make a package for debian, slackware, fedora, ubuntu the checkinstall program can be used.
- Settings for autoconf can be changed editing the .autom4te.cfg file
- some parts are (C) Universitaet Passau 1986-1991
- some parts are Copyright (C) 1998-2021 Free Software Foundation, Inc. from GNU GCC
- some parts are Copyright (C) 2008, 2011 Matthias Stallmann
- some parts are Copyright (C) 2008, 2011 Saurabh Gupta
- For questions mail to mooigraph on gmail.com
- /*
- * SPDX-License-Identifier: GPL-3.0+
- * License-Filename: LICENSE
- */
|