Several changes. \n If new map is added to mapstorage it emits signal with the name of the new map. This was important, because from now on not only tha mapwin should be updated. \n Furthermore algobox gets a pointer to mapstorage instead of only the mapnames from it. This is important because without it it would be complicated to pass all of the required maps to algobox.
2 * demo/graph_to_eps.cc - Part of LEMON, a generic C++ optimization library
4 * Copyright (C) 2006 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
5 * (Egervary Research Group on Combinatorial Optimization, EGRES).
7 * Permission to use, modify and distribute this software is granted
8 * provided that this copyright notice appears in all copies. For
9 * precise terms see the accompanying LICENSE file.
11 * This software is provided "AS IS" with no warranty of any kind,
12 * express or implied, and with no claim as to its suitability for any
19 /// \brief Demo of the graph grawing function \ref graphToEps()
21 /// This demo program shows examples how to use the function \ref
22 /// graphToEps(). It takes no input but simply creates six
23 /// <tt>.eps</tt> files demonstrating the capability of \ref
24 /// graphToEps(), and showing how to draw directed/undirected graphs,
25 /// how to handle parallel egdes, how to change the properties (like
26 /// color, shape, size, title etc.) of nodes and edges individually
27 /// using appropriate \ref maps-page "graph maps".
29 /// \include graph_to_eps_demo.cc
33 #include<lemon/graph_to_eps.h>
34 #include<lemon/list_graph.h>
35 #include<lemon/graph_utils.h>
38 using namespace lemon;
45 typedef ListGraph::Node Node;
46 typedef ListGraph::NodeIt NodeIt;
47 typedef ListGraph::Edge Edge;
56 ListGraph::NodeMap<Xy> coords(g);
57 ListGraph::NodeMap<double> sizes(g);
58 ListGraph::NodeMap<int> colors(g);
59 ListGraph::NodeMap<int> shapes(g);
60 ListGraph::EdgeMap<int> ecolors(g);
61 ListGraph::EdgeMap<int> widths(g);
63 coords[n1]=Xy(50,50); sizes[n1]=1; colors[n1]=1; shapes[n1]=0;
64 coords[n2]=Xy(50,70); sizes[n2]=2; colors[n2]=2; shapes[n2]=2;
65 coords[n3]=Xy(70,70); sizes[n3]=1; colors[n3]=3; shapes[n3]=0;
66 coords[n4]=Xy(70,50); sizes[n4]=2; colors[n4]=4; shapes[n4]=1;
67 coords[n5]=Xy(85,60); sizes[n5]=3; colors[n5]=5; shapes[n5]=2;
71 e=g.addEdge(n1,n2); ecolors[e]=0; widths[e]=1;
72 e=g.addEdge(n2,n3); ecolors[e]=0; widths[e]=1;
73 e=g.addEdge(n3,n5); ecolors[e]=0; widths[e]=3;
74 e=g.addEdge(n5,n4); ecolors[e]=0; widths[e]=1;
75 e=g.addEdge(n4,n1); ecolors[e]=0; widths[e]=1;
76 e=g.addEdge(n2,n4); ecolors[e]=1; widths[e]=2;
77 e=g.addEdge(n3,n4); ecolors[e]=2; widths[e]=1;
79 IdMap<ListGraph,Node> id(g);
81 cout << "Create 'graph_to_eps_demo_out.eps'" << endl;
82 graphToEps(g,"graph_to_eps_demo_out.eps").scale(10).coords(coords).
83 title("Sample .eps figure").
84 copyright("(C) 2006 LEMON Project").
85 nodeScale(2).nodeSizes(sizes).
87 nodeColors(composeMap(colorSet,colors)).
88 edgeColors(composeMap(colorSet,ecolors)).
89 edgeWidthScale(.4).edgeWidths(widths).
90 nodeTexts(id).nodeTextSize(3).
94 cout << "Create 'graph_to_eps_demo_out_arr.eps'" << endl;
95 graphToEps(g,"graph_to_eps_demo_out_arr.eps").scale(10).
96 title("Sample .eps figure (with arrowheads)").
97 copyright("(C) 2006 LEMON Project").
98 nodeColors(composeMap(colorSet,colors)).
100 nodeScale(2).nodeSizes(sizes).
102 edgeColors(composeMap(colorSet,ecolors)).
103 edgeWidthScale(.4).edgeWidths(widths).
104 nodeTexts(id).nodeTextSize(3).
105 drawArrows().arrowWidth(1).arrowLength(1).
108 e=g.addEdge(n1,n4); ecolors[e]=2; widths[e]=1;
109 e=g.addEdge(n4,n1); ecolors[e]=1; widths[e]=2;
111 e=g.addEdge(n1,n2); ecolors[e]=1; widths[e]=1;
112 e=g.addEdge(n1,n2); ecolors[e]=2; widths[e]=1;
113 e=g.addEdge(n1,n2); ecolors[e]=3; widths[e]=1;
114 e=g.addEdge(n1,n2); ecolors[e]=4; widths[e]=1;
115 e=g.addEdge(n1,n2); ecolors[e]=5; widths[e]=1;
116 e=g.addEdge(n1,n2); ecolors[e]=6; widths[e]=1;
117 e=g.addEdge(n1,n2); ecolors[e]=7; widths[e]=1;
119 cout << "Create 'graph_to_eps_demo_out_par.eps'" << endl;
120 graphToEps(g,"graph_to_eps_demo_out_par.eps").scale(10).
121 title("Sample .eps figure (parallel edges)").
122 copyright("(C) 2006 LEMON Project").
125 nodeScale(2).nodeSizes(sizes).
126 nodeColors(composeMap(colorSet,colors)).
127 edgeColors(composeMap(colorSet,ecolors)).
128 edgeWidthScale(.4).edgeWidths(widths).
129 nodeTexts(id).nodeTextSize(3).
130 enableParallel().parEdgeDist(1.5).
133 cout << "Create 'graph_to_eps_demo_out_par_arr.eps'" << endl;
134 graphToEps(g,"graph_to_eps_demo_out_par_arr.eps").scale(10).
135 title("Sample .eps figure (parallel edges and arrowheads)").
136 copyright("(C) 2006 LEMON Project").
137 nodeScale(2).nodeSizes(sizes).
140 nodeColors(composeMap(colorSet,colors)).
141 edgeColors(composeMap(colorSet,ecolors)).
142 edgeWidthScale(.3).edgeWidths(widths).
143 nodeTexts(id).nodeTextSize(3).
144 enableParallel().parEdgeDist(1).
145 drawArrows().arrowWidth(1).arrowLength(1).
148 cout << "Create 'graph_to_eps_demo_out_a4.eps'" << endl;
149 graphToEps(g,"graph_to_eps_demo_out_a4.eps").scaleToA4().
150 title("Sample .eps figure (fits to A4)").
151 copyright("(C) 2006 LEMON Project").
152 nodeScale(2).nodeSizes(sizes).
155 nodeColors(composeMap(colorSet,colors)).
156 edgeColors(composeMap(colorSet,ecolors)).
157 edgeWidthScale(.3).edgeWidths(widths).
158 nodeTexts(id).nodeTextSize(3).
159 enableParallel().parEdgeDist(1).
160 drawArrows().arrowWidth(1).arrowLength(1).
164 ListGraph::NodeMap<int> hcolors(h);
165 ListGraph::NodeMap<Xy> hcoords(h);
167 int cols=int(sqrt(double(colorSet.size())));
168 for(int i=0;i<int(colorSet.size());i++) {
170 hcoords[n]=Xy(i%cols,i/cols);
174 cout << "Create 'graph_to_eps_demo_out_colors.eps'" << endl;
175 graphToEps(h,"graph_to_eps_demo_out_colors.eps").scale(60).
176 title("Sample .eps figure (ColorSet demo)").
177 copyright("(C) 2006 LEMON Project").
180 distantColorNodeTexts().
181 // distantBWNodeTexts().
182 nodeTexts(hcolors).nodeTextSize(.6).
183 nodeColors(composeMap(colorSet,hcolors)).