COIN-OR::LEMON - Graph Library

source: glemon-0.x/mapstorage.h @ 108:bf355fd6563e

gui
Last change on this file since 108:bf355fd6563e was 108:bf355fd6563e, checked in by Hegyi Péter, 15 years ago

Several changes. \n If new map is added to mapstorage it emits signal with the name of the new map. This was important, because from now on not only tha mapwin should be updated. \n Furthermore algobox gets a pointer to mapstorage instead of only the mapnames from it. This is important because without it it would be complicated to pass all of the required maps to algobox.

File size: 5.2 KB
Line 
1// -*- C++ -*- //
2
3#ifndef MAPSTORAGE_H
4#define MAPSTORAGE_H
5
6class Mapstorage;
7
8#include "all_include.h"
9#include "xymap.h"
10#include <libgnomecanvasmm.h>
11
12///Class MapStorage is responsible for storing
13///NodeMaps and EdgeMaps that can be shown later
14///on GUI. Therefore maps can be added to it,
15///and datas over the added maps can be queried.
16///The maps will be stored in an std::map,
17///referenced with their names. Unfortunately at
18///the moment it works only with double type maps
19///
20///\todo too many things are public!!
21class MapStorage
22{
23public:
24
25  Graph graph;
26  /// the coordinates of the nodes
27  XYMap<Graph::NodeMap<double> > coords;
28  /// the coordinates of the arrows on the edges
29  XYMap<Graph::EdgeMap<double> > arrow_pos;
30
31  bool modified;
32  std::string file_name;
33
34  ///Stores double type NodeMaps
35  std::map< std::string,Graph::NodeMap<double> * > nodemap_storage;
36
37  ///Stores double type EdgeMaps
38  std::map< std::string,Graph::EdgeMap<double> * > edgemap_storage;
39
40  //Stores the default values for the different visualization node attributes
41  std::vector<Graph::NodeMap<double> > default_nodemaps;
42
43  //Stores the default values for the different visualization edge attributes
44  std::vector<Graph::EdgeMap<double> > default_edgemaps;
45
46  //Stores the active maps for the different visualization node attributes
47  std::vector< std::string > active_nodemaps;
48
49  //Stores the active maps for the different visualization edge attributes
50  std::vector< std::string > active_edgemaps;
51
52  // Default values for the maps
53  std::map< std::string, double > nodemap_default;
54
55  // Default values for the maps
56  std::map< std::string, double > edgemap_default;
57
58  bool arrow_pos_read_ok;
59
60protected:
61  typedef sigc::signal<void, bool, int> Signal_Prop;
62  Signal_Prop signal_prop;
63  sigc::signal<void, std::string> signal_node_map;
64  sigc::signal<void, std::string> signal_edge_map;
65
66public:
67  ///Constructor of MapStorage. Expects the Graph of
68  ///which maps will be stored in it.
69  ///Its all activity is initializing default values
70  ///for different visualization attributes
71  ///
72  ///\param graph is the graph for which the maps are stored in this object.
73  MapStorage();
74
75  ~MapStorage();
76
77  void changeActiveMap(bool, int, std::string);
78
79  std::string getActiveEdgeMap(int);
80  std::string getActiveNodeMap(int);
81
82  std::vector<std::string> getEdgeMapList();
83  std::vector<std::string> getNodeMapList();
84
85  Signal_Prop signal_prop_ch();
86
87  sigc::signal<void, std::string> signal_node_map_ch(){return signal_node_map;};
88  sigc::signal<void, std::string> signal_edge_map_ch(){return signal_edge_map;};
89
90  ///Adds given map to storage. A name and the map itself has to be provided.
91  ///\param name is the name of map
92  ///\nodemap is the pointer of the given nodemap
93  ///\todo map should be given by reference!
94  int addNodeMap(const std::string &,Graph::NodeMap<double> *, double);
95
96  ///Adds given map to storage. A name and the map itself has to be provided.
97  ///\param name is the name of map
98  ///\edgemap is the pointer of the given edgemap
99  ///\todo map should be given by reference!
100  int addEdgeMap(const std::string &,Graph::EdgeMap<double> *, double);
101
102  ///Returns how much nodemaps is stored in \ref MapStorage
103  int numOfNodeMaps() {return nodemap_storage.size();};
104
105  ///Returns how much edgemaps is stored in \ref MapStorage
106  int numOfEdgeMaps() {return edgemap_storage.size();};
107
108  ///Returns the maximum value of the given NodeMap. NodeMap has to be given by its name.
109  ///\param name is the name of map of which maximum is searched
110  double maxOfNodeMap(const std::string &);
111
112  ///Returns the maximum value of the given EdgeMap. EdgeMap has to be given by its name.
113  ///\param name is the name of map of which maximum is searched
114  double maxOfEdgeMap(const std::string &);
115
116  ///Returns the minimum value of the given NodeMap. NodeMap has to be given by its name.
117  ///\param name is the name of map of which minimum is searched
118  double minOfNodeMap(const std::string &);
119
120  ///Returns the minimum value of the given EdgeMap. EdgeMap has to be given by its name.
121  ///\param name is the name of map of which minimum is searched
122  double minOfEdgeMap(const std::string &);
123
124  ///To be able to iterate through each maps this function returns an iterator pointing to the first nodemap in the storage.
125  std::map< std::string,Graph::NodeMap<double> * >::iterator beginOfNodeMaps(){return nodemap_storage.begin();};
126
127  ///To be able to iterate through each maps this function returns an iterator pointing to the first edgemap in the storage.
128  std::map< std::string,Graph::EdgeMap<double> * >::iterator beginOfEdgeMaps(){return edgemap_storage.begin();};
129
130  ///To be able to iterate through each maps this function returns an iterator pointing to the last nodemap in the storage.
131  std::map< std::string,Graph::NodeMap<double> * >::iterator endOfNodeMaps(){return nodemap_storage.end();};
132
133  ///To be able to iterate through each maps this function returns an iterator pointing to the last edgemap in the storage.
134  std::map< std::string,Graph::EdgeMap<double> * >::iterator endOfEdgeMaps(){return edgemap_storage.end();};
135
136  int readFromFile(const std::string &);
137  void writeToFile(const std::string &);
138
139  void clear();
140
141  void ArrowPosReadOK();
142};
143
144#endif //MAPSTORAGE_H
Note: See TracBrowser for help on using the repository browser.