demo/graph_to_eps_demo.cc
author hegyi
Thu, 16 Jun 2005 18:58:15 +0000
changeset 1500 a222eb109e52
parent 1417 53c2a0ccc9a4
child 1573 b76a0af36f44
permissions -rw-r--r--
First of all: revision 1981 is mine, what is important me because I was born in 1981. But what is new in my revision? If you drag nodes with left button, edge-breakpoints do not change location. If you drag nodes by right button, they do, they take up their base situation at the halfpoint of the edge.
     1 /* -*- C++ -*-
     2  * demo/graph_to_eps.cc - Part of LEMON, a generic C++ optimization library
     3  *
     4  * Copyright (C) 2005 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
     5  * (Egervary Research Group on Combinatorial Optimization, EGRES).
     6  *
     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.
    10  *
    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
    13  * purpose.
    14  *
    15  */
    16 
    17 #include<lemon/graph_to_eps.h>
    18 #include<lemon/maps.h>
    19 #include<lemon/list_graph.h>
    20 #include<lemon/graph_utils.h>
    21 
    22 #include <cmath>
    23 
    24 
    25 using namespace std;
    26 using namespace lemon;
    27 
    28 int main()
    29 {
    30   ColorSet colorSet;
    31 
    32   ListGraph g;
    33   typedef ListGraph::Node Node;
    34   typedef ListGraph::NodeIt NodeIt;
    35   typedef ListGraph::Edge Edge;
    36   typedef xy<int> Xy;
    37   
    38   Node n1=g.addNode();
    39   Node n2=g.addNode();
    40   Node n3=g.addNode();
    41   Node n4=g.addNode();
    42   Node n5=g.addNode();
    43 
    44   ListGraph::NodeMap<Xy> coords(g);
    45   ListGraph::NodeMap<double> sizes(g);
    46   ListGraph::NodeMap<int> colors(g);
    47   ListGraph::NodeMap<int> shapes(g);
    48   ListGraph::EdgeMap<int> ecolors(g);
    49   ListGraph::EdgeMap<int> widths(g);
    50   
    51   coords[n1]=Xy(50,50);  sizes[n1]=1; colors[n1]=1; shapes[n1]=0;
    52   coords[n2]=Xy(50,70);  sizes[n2]=2; colors[n2]=2; shapes[n2]=2;
    53   coords[n3]=Xy(70,70);  sizes[n3]=1; colors[n3]=3; shapes[n3]=0;
    54   coords[n4]=Xy(70,50);  sizes[n4]=2; colors[n4]=4; shapes[n4]=1;
    55   coords[n5]=Xy(85,60);  sizes[n5]=3; colors[n5]=5; shapes[n5]=2;
    56   
    57   Edge e;
    58 
    59   e=g.addEdge(n1,n2); ecolors[e]=0; widths[e]=1;
    60   e=g.addEdge(n2,n3); ecolors[e]=0; widths[e]=1;
    61   e=g.addEdge(n3,n5); ecolors[e]=0; widths[e]=3;
    62   e=g.addEdge(n5,n4); ecolors[e]=0; widths[e]=1;
    63   e=g.addEdge(n4,n1); ecolors[e]=0; widths[e]=1;
    64   e=g.addEdge(n2,n4); ecolors[e]=1; widths[e]=2;
    65   e=g.addEdge(n3,n4); ecolors[e]=2; widths[e]=1;
    66   
    67   IdMap<ListGraph,Node> id(g);
    68 
    69   graphToEps(g,"graph_to_eps_demo_out.eps").scale(10).coords(coords).
    70     title("Sample .eps figure").
    71     copyright("(C) 2005 LEMON Project").
    72     nodeScale(2).nodeSizes(sizes).
    73     nodeShapes(shapes).
    74     nodeColors(composeMap(colorSet,colors)).
    75     edgeColors(composeMap(colorSet,ecolors)).
    76     edgeWidthScale(.4).edgeWidths(widths).
    77     nodeTexts(id).nodeTextSize(3).
    78     run();
    79 
    80   graphToEps(g,"graph_to_eps_demo_out_arr.eps").scale(10).
    81     title("Sample .eps figure (with arrowheads)").
    82     copyright("(C) 2005 LEMON Project").
    83     nodeColors(composeMap(colorSet,colors)).
    84     coords(coords).
    85     nodeScale(2).nodeSizes(sizes).
    86     nodeShapes(shapes).
    87     edgeColors(composeMap(colorSet,ecolors)).
    88     edgeWidthScale(.4).edgeWidths(widths).
    89     nodeTexts(id).nodeTextSize(3).
    90     drawArrows().arrowWidth(1).arrowLength(1).
    91     run();
    92 
    93   e=g.addEdge(n1,n4); ecolors[e]=2; widths[e]=1;
    94   e=g.addEdge(n4,n1); ecolors[e]=1; widths[e]=2;
    95 
    96   e=g.addEdge(n1,n2); ecolors[e]=1; widths[e]=1;
    97   e=g.addEdge(n1,n2); ecolors[e]=2; widths[e]=1;
    98   e=g.addEdge(n1,n2); ecolors[e]=3; widths[e]=1;
    99   e=g.addEdge(n1,n2); ecolors[e]=4; widths[e]=1;
   100   e=g.addEdge(n1,n2); ecolors[e]=5; widths[e]=1;
   101   e=g.addEdge(n1,n2); ecolors[e]=6; widths[e]=1;
   102   e=g.addEdge(n1,n2); ecolors[e]=7; widths[e]=1;
   103 
   104   graphToEps(g,"graph_to_eps_demo_out_par.eps").scale(10).
   105     title("Sample .eps figure (parallel edges)").
   106     copyright("(C) 2005 LEMON Project").
   107     nodeShapes(shapes).
   108     coords(coords).
   109     nodeScale(2).nodeSizes(sizes).
   110     nodeColors(composeMap(colorSet,colors)).
   111     edgeColors(composeMap(colorSet,ecolors)).
   112     edgeWidthScale(.4).edgeWidths(widths).
   113     nodeTexts(id).nodeTextSize(3).
   114     enableParallel().parEdgeDist(1.5).
   115     run();
   116   
   117   graphToEps(g,"graph_to_eps_demo_out_par_arr.eps").scale(10).
   118     title("Sample .eps figure (parallel edges and arrowheads)").
   119     copyright("(C) 2005 LEMON Project").
   120     nodeScale(2).nodeSizes(sizes).
   121     coords(coords).
   122     nodeShapes(shapes).
   123     nodeColors(composeMap(colorSet,colors)).
   124     edgeColors(composeMap(colorSet,ecolors)).
   125     edgeWidthScale(.3).edgeWidths(widths).
   126     nodeTexts(id).nodeTextSize(3).
   127     enableParallel().parEdgeDist(1).
   128     drawArrows().arrowWidth(1).arrowLength(1).
   129     run();
   130 
   131   graphToEps(g,"graph_to_eps_demo_out_a4.eps").scaleToA4().
   132     title("Sample .eps figure (fits to A4)").
   133     copyright("(C) 2005 LEMON Project").
   134     nodeScale(2).nodeSizes(sizes).
   135     coords(coords).
   136     nodeShapes(shapes).
   137     nodeColors(composeMap(colorSet,colors)).
   138     edgeColors(composeMap(colorSet,ecolors)).
   139     edgeWidthScale(.3).edgeWidths(widths).
   140     nodeTexts(id).nodeTextSize(3).
   141     enableParallel().parEdgeDist(1).
   142     drawArrows().arrowWidth(1).arrowLength(1).
   143     run();
   144 
   145   ListGraph h;
   146   ListGraph::NodeMap<int> hcolors(h);
   147   ListGraph::NodeMap<Xy> hcoords(h);
   148   
   149   int cols=int(sqrt(double(colorSet.size())));
   150   for(int i=0;i<int(colorSet.size());i++) {
   151     Node n=h.addNode();
   152     hcoords[n]=Xy(i%cols,i/cols);
   153     hcolors[n]=i;
   154   }
   155   
   156   graphToEps(h,"graph_to_eps_demo_out_colors.eps").scale(60).
   157     title("Sample .eps figure (parallel edges and arrowheads)").
   158     copyright("(C) 2005 LEMON Project").
   159     coords(hcoords).
   160     nodeScale(.45).
   161     distantColorNodeTexts().
   162     //    distantBWNodeTexts().
   163     nodeTexts(hcolors).nodeTextSize(.6).
   164     nodeColors(composeMap(colorSet,hcolors)).
   165     run();
   166 
   167 
   168 }