NewMapWin has become Dialog instead of Window. Therefore it is created dynamically, when there is need for it, instead of keeping one instance in memory. This solution is slower, but more correct than before.
2 * demo/graph_to_eps.cc - Part of LEMON, a generic C++ optimization library
4 * Copyright (C) 2005 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) 2005 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) 2005 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) 2005 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) 2005 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) 2005 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) 2005 LEMON Project").
180 distantColorNodeTexts().
181 // distantBWNodeTexts().
182 nodeTexts(hcolors).nodeTextSize(.6).
183 nodeColors(composeMap(colorSet,hcolors)).