|
1 /* -*- C++ -*- |
|
2 * src/lemon/demo/graph_to_eps.cc - |
|
3 * Part of LEMON, a generic C++ optimization library |
|
4 * |
|
5 * Copyright (C) 2004 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
|
6 * (Egervary Combinatorial Optimization Research Group, EGRES). |
|
7 * |
|
8 * Permission to use, modify and distribute this software is granted |
|
9 * provided that this copyright notice appears in all copies. For |
|
10 * precise terms see the accompanying LICENSE file. |
|
11 * |
|
12 * This software is provided "AS IS" with no warranty of any kind, |
|
13 * express or implied, and with no claim as to its suitability for any |
|
14 * purpose. |
|
15 * |
|
16 */ |
|
17 |
|
18 #include<lemon/graph_to_eps.h> |
|
19 #include<lemon/maps.h> |
|
20 #include<lemon/list_graph.h> |
|
21 |
|
22 |
|
23 using namespace std; |
|
24 using namespace lemon; |
|
25 |
|
26 class ColorSet : public MapBase<int,Color> |
|
27 { |
|
28 public: |
|
29 Color operator[](int i) const |
|
30 { |
|
31 switch(i%8){ |
|
32 case 0: return Color(0,0,0); |
|
33 case 1: return Color(1,0,0); |
|
34 case 2: return Color(0,1,0); |
|
35 case 3: return Color(0,0,1); |
|
36 case 4: return Color(1,1,0); |
|
37 case 5: return Color(1,0,1); |
|
38 case 6: return Color(0,1,1); |
|
39 case 7: return Color(1,1,1); |
|
40 } |
|
41 return Color(0,0,0); |
|
42 } |
|
43 } colorSet; |
|
44 |
|
45 class IdMap :public MapBase<ListGraph::Node,int> |
|
46 { |
|
47 const ListGraph &g; |
|
48 public: |
|
49 IdMap(const ListGraph &_g) :g(_g) {} |
|
50 Value operator[](Key n) const { return g.id(n); } |
|
51 }; |
|
52 |
|
53 int main() |
|
54 { |
|
55 ListGraph g; |
|
56 typedef ListGraph::Node Node; |
|
57 typedef ListGraph::NodeIt NodeIt; |
|
58 typedef ListGraph::Edge Edge; |
|
59 typedef xy<int> Xy; |
|
60 |
|
61 Node n1=g.addNode(); |
|
62 Node n2=g.addNode(); |
|
63 Node n3=g.addNode(); |
|
64 Node n4=g.addNode(); |
|
65 Node n5=g.addNode(); |
|
66 |
|
67 ListGraph::NodeMap<Xy> coords(g); |
|
68 ListGraph::NodeMap<double> sizes(g); |
|
69 ListGraph::NodeMap<int> colors(g); |
|
70 ListGraph::EdgeMap<int> ecolors(g); |
|
71 ListGraph::EdgeMap<int> widths(g); |
|
72 |
|
73 coords[n1]=Xy(50,50); sizes[n1]=1; colors[n1]=1; |
|
74 coords[n2]=Xy(50,70); sizes[n2]=2; colors[n2]=2; |
|
75 coords[n3]=Xy(70,70); sizes[n3]=1; colors[n3]=3; |
|
76 coords[n4]=Xy(70,50); sizes[n4]=2; colors[n4]=4; |
|
77 coords[n5]=Xy(85,60); sizes[n5]=3; colors[n5]=5; |
|
78 |
|
79 Edge e; |
|
80 |
|
81 e=g.addEdge(n1,n2); ecolors[e]=0; widths[e]=1; |
|
82 e=g.addEdge(n2,n3); ecolors[e]=0; widths[e]=1; |
|
83 e=g.addEdge(n3,n5); ecolors[e]=0; widths[e]=3; |
|
84 e=g.addEdge(n5,n4); ecolors[e]=0; widths[e]=1; |
|
85 e=g.addEdge(n4,n1); ecolors[e]=0; widths[e]=1; |
|
86 e=g.addEdge(n2,n4); ecolors[e]=1; widths[e]=2; |
|
87 e=g.addEdge(n3,n4); ecolors[e]=2; widths[e]=1; |
|
88 |
|
89 IdMap id(g); |
|
90 |
|
91 graphToEps(g,"graph_to_eps_demo_out.eps").scale(10).coords(coords). |
|
92 nodeScale(2).nodeSizes(sizes). |
|
93 nodeColors(composeMap(colorSet,colors)). |
|
94 edgeColors(composeMap(colorSet,ecolors)). |
|
95 edgeWidthScale(.4).edgeWidths(widths). |
|
96 nodeTexts(id).nodeTextSize(3); |
|
97 |
|
98 graphToEps(g,"graph_to_eps_demo_out_arr.eps").scale(10).coords(coords). |
|
99 nodeScale(2).nodeSizes(sizes). |
|
100 nodeColors(composeMap(colorSet,colors)). |
|
101 edgeColors(composeMap(colorSet,ecolors)). |
|
102 edgeWidthScale(.4).edgeWidths(widths). |
|
103 nodeTexts(id).nodeTextSize(3). |
|
104 drawArrows().arrowWidth(1).arrowLength(1); |
|
105 |
|
106 e=g.addEdge(n1,n4); ecolors[e]=2; widths[e]=1; |
|
107 e=g.addEdge(n4,n1); ecolors[e]=1; widths[e]=2; |
|
108 |
|
109 e=g.addEdge(n1,n2); ecolors[e]=1; widths[e]=1; |
|
110 e=g.addEdge(n1,n2); ecolors[e]=2; widths[e]=1; |
|
111 e=g.addEdge(n1,n2); ecolors[e]=3; widths[e]=1; |
|
112 e=g.addEdge(n1,n2); ecolors[e]=4; widths[e]=1; |
|
113 e=g.addEdge(n1,n2); ecolors[e]=5; widths[e]=1; |
|
114 e=g.addEdge(n1,n2); ecolors[e]=6; widths[e]=1; |
|
115 e=g.addEdge(n1,n2); ecolors[e]=7; widths[e]=1; |
|
116 |
|
117 graphToEps(g,"graph_to_eps_demo_out_par.eps").scale(10).coords(coords). |
|
118 nodeScale(2).nodeSizes(sizes). |
|
119 nodeColors(composeMap(colorSet,colors)). |
|
120 edgeColors(composeMap(colorSet,ecolors)). |
|
121 edgeWidthScale(.4).edgeWidths(widths). |
|
122 nodeTexts(id).nodeTextSize(3). |
|
123 enableParallel().parEdgeDist(1.5); |
|
124 |
|
125 graphToEps(g,"graph_to_eps_demo_out_par_arr.eps").scale(10).coords(coords). |
|
126 nodeScale(2).nodeSizes(sizes). |
|
127 nodeColors(composeMap(colorSet,colors)). |
|
128 edgeColors(composeMap(colorSet,ecolors)). |
|
129 edgeWidthScale(.3).edgeWidths(widths). |
|
130 nodeTexts(id).nodeTextSize(3). |
|
131 enableParallel().parEdgeDist(1). |
|
132 drawArrows().arrowWidth(1).arrowLength(1); |
|
133 } |