src/demo/graph_to_eps_demo.cc
changeset 1079 81addddaf3d3
child 1086 caa13d291528
equal deleted inserted replaced
-1:000000000000 0:0c52852dd696
       
     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 }