gui/mapstorage.cc
author klao
Mon, 27 Jun 2005 19:47:09 +0000
changeset 1519 17e367a93cbb
parent 1509 f9113440b667
child 1524 587a823bcdd0
permissions -rw-r--r--
getstart improvements
ladanyi@1442
     1
#include <mapstorage.h>
ladanyi@1442
     2
ladanyi@1442
     3
MapStorage::MapStorage(Graph & graph):g(graph)
ladanyi@1442
     4
{
hegyi@1512
     5
  for(int i=0;i<EDGE_PROPERTY_NUM;i++)
ladanyi@1442
     6
  {
hegyi@1512
     7
    Graph::EdgeMap<double> emd(g,edge_property_defaults[i]);
ladanyi@1442
     8
    default_edgemaps.push_back(emd);
hegyi@1512
     9
  }
hegyi@1512
    10
hegyi@1512
    11
  for(int i=0;i<NODE_PROPERTY_NUM;i++)
hegyi@1512
    12
  {
hegyi@1512
    13
    Graph::NodeMap<double> nmd(g,node_property_defaults[i]);
ladanyi@1442
    14
    default_nodemaps.push_back(nmd);
ladanyi@1442
    15
  }
hegyi@1512
    16
hegyi@1512
    17
  for(int i=0;i<EDGE_PROPERTY_NUM;i++)
ladanyi@1442
    18
  {
ladanyi@1442
    19
      for (EdgeIt j(g); j!=INVALID; ++j)
ladanyi@1442
    20
      {
hegyi@1512
    21
	(default_edgemaps[i])[j]=edge_property_defaults[i];
ladanyi@1442
    22
      }
hegyi@1512
    23
      addEdgeMap(edge_property_strings[i],&(default_edgemaps[i]));
hegyi@1512
    24
  }
hegyi@1512
    25
hegyi@1512
    26
  for(int i=0;i<NODE_PROPERTY_NUM;i++)
hegyi@1512
    27
  {
hegyi@1512
    28
      for (NodeIt j(g); j!=INVALID; ++j)
hegyi@1512
    29
      {
hegyi@1512
    30
	(default_nodemaps[i])[j]=node_property_defaults[i];
hegyi@1512
    31
      }
hegyi@1512
    32
      addNodeMap(node_property_strings[i],&(default_nodemaps[i]));
ladanyi@1442
    33
  }
ladanyi@1442
    34
ladanyi@1442
    35
};
ladanyi@1442
    36
ladanyi@1442
    37
int MapStorage::addNodeMap(const std::string & name, Graph::NodeMap<double> *nodemap)
ladanyi@1442
    38
{
ladanyi@1442
    39
  nodemap_storage[name]=nodemap;
ladanyi@1442
    40
  return 0;
ladanyi@1442
    41
}
ladanyi@1442
    42
ladanyi@1442
    43
int MapStorage::addEdgeMap(const std::string & name, Graph::EdgeMap<double> *edgemap)
ladanyi@1442
    44
{
ladanyi@1442
    45
  edgemap_storage[name]=edgemap;
ladanyi@1442
    46
  return 0;
ladanyi@1442
    47
}
ladanyi@1442
    48
ladanyi@1442
    49
double MapStorage::maxOfNodeMap(const std::string & name)
ladanyi@1442
    50
{
ladanyi@1442
    51
  double max=0;
ladanyi@1442
    52
  for (NodeIt j(g); j!=INVALID; ++j)
ladanyi@1442
    53
  {
ladanyi@1442
    54
    if( (*nodemap_storage[name])[j]>max )
ladanyi@1442
    55
    {
ladanyi@1442
    56
      max=(*nodemap_storage[name])[j];
ladanyi@1442
    57
    }
ladanyi@1442
    58
  }
ladanyi@1442
    59
  return max;
ladanyi@1442
    60
}
ladanyi@1442
    61
ladanyi@1442
    62
double MapStorage::maxOfEdgeMap(const std::string & name)
ladanyi@1442
    63
{
ladanyi@1442
    64
  double max=0;
ladanyi@1442
    65
  for (EdgeIt j(g); j!=INVALID; ++j)
ladanyi@1442
    66
  {
ladanyi@1442
    67
    if( (*edgemap_storage[name])[j]>max )
ladanyi@1442
    68
    {
ladanyi@1442
    69
      max=(*edgemap_storage[name])[j];
ladanyi@1442
    70
    }
ladanyi@1442
    71
  }
ladanyi@1442
    72
  return max;
ladanyi@1442
    73
}
ladanyi@1442
    74
ladanyi@1442
    75
double MapStorage::minOfNodeMap(const std::string & name)
ladanyi@1442
    76
{
ladanyi@1442
    77
  NodeIt j(g);
ladanyi@1442
    78
  double min=(*nodemap_storage[name])[j];
ladanyi@1442
    79
  for (; j!=INVALID; ++j)
ladanyi@1442
    80
  {
ladanyi@1442
    81
    if( (*nodemap_storage[name])[j]<min )
ladanyi@1442
    82
    {
ladanyi@1442
    83
      min=(*nodemap_storage[name])[j];
ladanyi@1442
    84
    }
ladanyi@1442
    85
  }
ladanyi@1442
    86
  return min;
ladanyi@1442
    87
}
ladanyi@1442
    88
ladanyi@1442
    89
double MapStorage::minOfEdgeMap(const std::string & name)
ladanyi@1442
    90
{
ladanyi@1442
    91
  EdgeIt j(g);
ladanyi@1442
    92
  double min=(*edgemap_storage[name])[j];
ladanyi@1442
    93
  for (EdgeIt j(g); j!=INVALID; ++j)
ladanyi@1442
    94
  {
ladanyi@1442
    95
    if( (*edgemap_storage[name])[j]<min )
ladanyi@1442
    96
    {
ladanyi@1442
    97
      min=(*edgemap_storage[name])[j];
ladanyi@1442
    98
    }
ladanyi@1442
    99
  }
ladanyi@1442
   100
  return min;
ladanyi@1442
   101
}
ladanyi@1442
   102
hegyi@1509
   103
void MapStorage::init_maps_for_edge(Graph::Edge e)
hegyi@1509
   104
{
hegyi@1509
   105
  e=e;
hegyi@1509
   106
// beragad, aztan csovez
hegyi@1509
   107
//   std::map< std::string,Graph::EdgeMap<double> * >::iterator ems_it;
hegyi@1509
   108
//   for(ems_it=edgemap_storage.begin();ems_it!=edgemap_storage.end();ems_it++)
hegyi@1509
   109
//     {
hegyi@1509
   110
//       std::cout << "szevasz\n";
hegyi@1509
   111
//       (*((*ems_it).second))[e]=0;
hegyi@1509
   112
//     }
hegyi@1509
   113
//   std::cout << std::endl;
hegyi@1509
   114
hegyi@1509
   115
// g_closure_invoke...
hegyi@1512
   116
//   for(int i=0;i<EDGE_PROPERTY_NUM;i++)
hegyi@1509
   117
//     {
hegyi@1509
   118
//       (default_edgemaps[i])[e]=property_defaults[i];
hegyi@1509
   119
//     }
hegyi@1509
   120
}