COIN-OR::LEMON - Graph Library

Changeset 201:879e47e5b731 in glemon-0.x for gui_writer.cc


Ignore:
Timestamp:
01/02/08 22:03:09 (16 years ago)
Author:
Akos Ladanyi
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/glemon/trunk@3431
Message:

Merge branches/akos to trunk.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gui_writer.cc

    r194 r201  
    1717 */
    1818
    19 #include <xml.h>
     19#include "gui_writer.h"
     20#include "io_helper.h"
     21#include "mapstorage.h"
     22#include "xml.h"
    2023#include <lemon/dim2.h>
    2124#include <vector>
     
    3134void GuiWriter::write(std::ostream& os)
    3235{
     36  using std::vector;
     37  using std::string;
     38  using std::map;
     39  using std::string;
     40
    3341  XmlIo x(os);
    34   std::map<int, XY > m;
    35   for (EdgeIt e(mapstorage->graph); e != INVALID; ++e)
    36   {
    37     int edgeid = (int)(*(mapstorage->edgemap_storage["label"]))[e];
    38     m[edgeid] = mapstorage->arrow_pos[e];
    39   }
    40   x("arrow_pos", m);
     42
     43  vector<string> all_node_map_names = mapstorage->getNodeMapList();
     44  // name of the maps saved to the nodeset section
     45  vector<string> main_node_map_names;
     46  // name of the maps saved to the gui section
     47  vector<string> gui_node_map_names;
     48
     49  for (vector<string>::const_iterator it = all_node_map_names.begin();
     50      it != all_node_map_names.end(); ++it)
     51  {
     52    if (mapstorage->getNodeMapSaveDest(*it) == MapStorage::NESET_SECT)
     53      main_node_map_names.push_back(*it);
     54    else if (mapstorage->getNodeMapSaveDest(*it) == MapStorage::GUI_SECT)
     55      gui_node_map_names.push_back(*it);
     56  }
     57
     58  { x("main_node_map_names", main_node_map_names); }
     59  { x("gui_node_map_names", gui_node_map_names); }
     60
     61  map<string, MapValue::Type> node_map_types;
     62  for (vector<string>::const_iterator it = main_node_map_names.begin();
     63      it != main_node_map_names.end(); ++it)
     64  {
     65    node_map_types[*it] = mapstorage->getNodeMapElementType(*it);
     66  }
     67  for (vector<string>::const_iterator it = gui_node_map_names.begin();
     68      it != gui_node_map_names.end(); ++it)
     69  {
     70    node_map_types[*it] = mapstorage->getNodeMapElementType(*it);
     71  }
     72
     73  { x("node_map_types", node_map_types); }
     74
     75
     76  vector<string> all_edge_map_names = mapstorage->getEdgeMapList();
     77  // name of the maps saved to the edgeset section
     78  vector<string> main_edge_map_names;
     79  // name of the maps saved to the gui section
     80  vector<string> gui_edge_map_names;
     81
     82  for (vector<string>::const_iterator it = all_edge_map_names.begin();
     83      it != all_edge_map_names.end(); ++it)
     84  {
     85    if (mapstorage->getEdgeMapSaveDest(*it) == MapStorage::NESET_SECT)
     86      main_edge_map_names.push_back(*it);
     87    if (mapstorage->getEdgeMapSaveDest(*it) == MapStorage::GUI_SECT)
     88      gui_edge_map_names.push_back(*it);
     89  }
     90
     91  { x("main_edge_map_names", main_edge_map_names); }
     92  { x("gui_edge_map_names", gui_edge_map_names); }
     93
     94  map<string, MapValue::Type> edge_map_types;
     95  for (vector<string>::const_iterator it = main_edge_map_names.begin();
     96      it != main_edge_map_names.end(); ++it)
     97  {
     98    edge_map_types[*it] = mapstorage->getEdgeMapElementType(*it);
     99  }
     100  for (vector<string>::const_iterator it = gui_edge_map_names.begin();
     101      it != gui_edge_map_names.end(); ++it)
     102  {
     103    edge_map_types[*it] = mapstorage->getEdgeMapElementType(*it);
     104  }
     105
     106  { x("edge_map_types", edge_map_types); }
     107
     108  // write the gui node maps
     109  for (vector<string>::const_iterator it = gui_node_map_names.begin();
     110      it != gui_node_map_names.end(); ++it)
     111  {
     112    MapValue::Type type = mapstorage->getNodeMapElementType(*it);
     113    const MapStorage::NodeLabelMap& labels = mapstorage->getNodeLabelMap();
     114    switch (type)
     115    {
     116      case MapValue::NUMERIC:
     117        {
     118          std::map<int, double> map_data;
     119          MapStorage::NumericNodeMap& map =
     120            mapstorage->getNumericNodeMap(*it);
     121          for (NodeIt n(mapstorage->getGraph()); n != INVALID; ++n)
     122          {
     123            map_data[labels[n]] = map[n];
     124          }
     125          { x(*it, map_data); }
     126        }
     127        break;
     128      case MapValue::STRING:
     129        {
     130          std::map<int, std::string> map_data;
     131          MapStorage::StringNodeMap& map =
     132            mapstorage->getStringNodeMap(*it);
     133          for (NodeIt n(mapstorage->getGraph()); n != INVALID; ++n)
     134          {
     135            map_data[labels[n]] = map[n];
     136          }
     137          { x(*it, map_data); }
     138        }
     139        break;
     140    }
     141  }
     142
     143  // write the gui edge maps
     144  for (vector<string>::const_iterator it = gui_edge_map_names.begin();
     145      it != gui_edge_map_names.end(); ++it)
     146  {
     147    MapValue::Type type = mapstorage->getEdgeMapElementType(*it);
     148    const MapStorage::EdgeLabelMap& labels = mapstorage->getEdgeLabelMap();
     149    switch (type)
     150    {
     151      case MapValue::NUMERIC:
     152        {
     153          std::map<int, double> map_data;
     154          MapStorage::NumericEdgeMap& map =
     155            mapstorage->getNumericEdgeMap(*it);
     156          for (EdgeIt e(mapstorage->getGraph()); e != INVALID; ++e)
     157          {
     158            map_data[labels[e]] = map[e];
     159          }
     160          { x(*it, map_data); }
     161        }
     162        break;
     163      case MapValue::STRING:
     164        {
     165          std::map<int, std::string> map_data;
     166          MapStorage::StringEdgeMap& map =
     167            mapstorage->getStringEdgeMap(*it);
     168          for (EdgeIt e(mapstorage->getGraph()); e != INVALID; ++e)
     169          {
     170            map_data[labels[e]] = map[e];
     171          }
     172          { x(*it, map_data); }
     173        }
     174        break;
     175    }
     176  }
     177
     178  {
     179    switch (mapstorage->getNodeCoordsSaveDest())
     180    {
     181      case MapStorage::SpecMapSaveOpts::GUI_SECT:
     182        { x("node_coords_save_dest", string("gui_sect")); }
     183        // write the node coorinates
     184        {
     185          const MapStorage::NodeLabelMap& labels =
     186            mapstorage->getNodeLabelMap();
     187          std::map<int, XY> node_coord_map;
     188          MapStorage::NodeCoordMap& map = mapstorage->getNodeCoordMap();
     189          for (NodeIt n(mapstorage->getGraph()); n != INVALID; ++n)
     190          {
     191            node_coord_map[labels[n]] = map[n];
     192          }
     193          { x("node_coord_map", node_coord_map); }
     194        }
     195        break;
     196      case MapStorage::SpecMapSaveOpts::NESET_SECT:
     197        switch (mapstorage->getNodeCoordsSaveMapNum())
     198        {
     199          case MapStorage::SpecMapSaveOpts::ONE_MAP:
     200            { x("node_coords_save_dest", string("nodeset_sect_1_map")); }
     201            { x("map_name", mapstorage->getNodeCoordsOneMapName()); }
     202            break;
     203          case MapStorage::SpecMapSaveOpts::TWO_MAPS:
     204            { x("node_coords_save_dest", string("nodeset_sect_2_maps")); }
     205            { x("map1_name", mapstorage->getNodeCoordsTwoMaps1Name()); }
     206            { x("map2_name", mapstorage->getNodeCoordsTwoMaps2Name()); }
     207            break;
     208        }
     209        break;
     210    }
     211  }
     212
     213  {
     214    switch (mapstorage->getArrowCoordsSaveDest())
     215    {
     216      case MapStorage::SpecMapSaveOpts::GUI_SECT:
     217        { x("arrow_coords_save_dest", string("gui_sect")); }
     218        // write the arrow coorinates
     219        {
     220          const MapStorage::EdgeLabelMap& labels =
     221            mapstorage->getEdgeLabelMap();
     222          std::map<int, XY> arrow_coord_map;
     223          MapStorage::ArrowCoordMap& map = mapstorage->getArrowCoordMap();
     224          for (EdgeIt e(mapstorage->getGraph()); e != INVALID; ++e)
     225          {
     226            arrow_coord_map[labels[e]] = map[e];
     227          }
     228          { x("arrow_coord_map", arrow_coord_map); }
     229        }
     230        break;
     231      case MapStorage::SpecMapSaveOpts::NESET_SECT:
     232        switch (mapstorage->getArrowCoordsSaveMapNum())
     233        {
     234          case MapStorage::SpecMapSaveOpts::ONE_MAP:
     235            { x("arrow_coords_save_dest", string("edgeset_sect_1_map")); }
     236            { x("map_name", mapstorage->getArrowCoordsOneMapName()); }
     237            break;
     238          case MapStorage::SpecMapSaveOpts::TWO_MAPS:
     239            { x("arrow_coords_save_dest", string("edgeset_sect_2_maps")); }
     240            { x("map1_name", mapstorage->getArrowCoordsTwoMaps1Name()); }
     241            { x("map2_name", mapstorage->getArrowCoordsTwoMaps2Name()); }
     242            break;
     243        }
     244        break;
     245    }
     246  }
     247
    41248
    42249  std::map<int, std::string> nm;
     
    45252      nm[i]=mapstorage->active_nodemaps[i];
    46253    }
    47   x("active_nodemaps", nm);
     254  { x("active_nodemaps", nm); }
    48255
    49256  std::map<int, std::string> em;
     
    52259      em[i]=mapstorage->active_edgemaps[i];
    53260    }
    54   x("active_edgemaps", em);
     261  { x("active_edgemaps", em); }
    55262
    56263  double attraction;
     
    60267  mapstorage->get_design_data(attraction, propulsation, iteration);
    61268
    62   x("redesign-attraction", attraction);
    63   x("redesign-propulsation", propulsation);
    64   x("redesign-iteration", iteration);
     269  { x("redesign-attraction", attraction); }
     270  { x("redesign-propulsation", propulsation); }
     271  { x("redesign-iteration", iteration); }
    65272}
    66273
    67 GuiWriter::GuiWriter(LemonWriter& writer, MapStorage* ms) : Parent(writer), mapstorage(ms)
     274GuiWriter::GuiWriter(LemonWriter& writer, MapStorage* ms) :
     275  Parent(writer),
     276  mapstorage(ms)
    68277{
    69278}
Note: See TracChangeset for help on using the changeset viewer.