1#include <ogdf/fileformats/GraphIO.h>
2#include <ogdf/layered/MedianHeuristic.h>
3#include <ogdf/layered/OptimalHierarchyLayout.h>
4#include <ogdf/layered/SugiyamaLayout.h>
5
6using namespace ogdf;
7
8int r[] = {
9 0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10, 11, 12, 12,
10 13, 14, 14, 15, 16, 17, 18, 18, 19, 19, 20, 21, 22, 22,
11 22, 23, 23, 23, 23, 24, 25, 26, 27, 27, 27, 28, 29, 29,
12 29, 30, 30, 31, 31, 31, 32, 33, 33, 34, 34, 35, 35, 35,
13 35, 0, 1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 18,
14 19, 20, 21, 22, 23, 25, 27, 29, 30, 31, 32, 33, 34, 35, -1
15};
16
17int main()
18{
19 Graph G;
20 GraphAttributes GA(G,
21 GraphAttributes::nodeGraphics |
22 GraphAttributes::edgeGraphics |
23 GraphAttributes::nodeLabel |
24 GraphAttributes::edgeStyle |
25 GraphAttributes::nodeStyle |
26 GraphAttributes::nodeTemplate);
27 if (!GraphIO::read(GA, G, "unix-history-time.gml", GraphIO::readGML)) {
28 std::cerr << "Could not load unix-history-time.gml" << std::endl;
29 return 1;
30 }
31
32 NodeArray<int> rank(G);
33 int i = 0;
34 for(node v : G.nodes)
35 rank[v] = r[i++];
36
37 SugiyamaLayout SL;
38 SL.setCrossMin(new MedianHeuristic);
39 SL.arrangeCCs(false);
40
41 OptimalHierarchyLayout *ohl = new OptimalHierarchyLayout;
42 ohl->layerDistance(30.0);
43 ohl->nodeDistance(25.0);
44 ohl->weightBalancing(0.7);
45 SL.setLayout(ohl);
46
47 SL.call(GA, rank);
48 GraphIO::write(GA, "output-unix-history-hierarchical-ranking.svg", GraphIO::drawSVG);
49
50 return 0;
51}
52