gui/mapstorage.h
author alpar
Tue, 26 Jul 2005 14:31:29 +0000
changeset 1588 b79bcba43661
parent 1524 587a823bcdd0
child 1606 dc4ea2010dee
permissions -rw-r--r--
BoundingBox<T>::operator+=() -> BoundingBox<T>::add() ->
     1 // -*- C++ -*- //
     2 
     3 #ifndef MAPSTORAGE_H
     4 #define MAPSTORAGE_H
     5 
     6 #include <all_include.h>
     7 
     8 ///Class MapStorage is responsible for storing
     9 ///NodeMaps and EdgeMaps that can be shown later
    10 ///on GUI. Therefore maps can be added to it,
    11 ///and datas over the added maps can be queried.
    12 ///The maps will be stored in an std::map,
    13 ///referenced with their names. Unfortunately at
    14 ///the moment it works only with double type maps
    15 ///
    16 ///\todo too many things are public!!
    17 class MapStorage
    18 {
    19 public:
    20 
    21   Graph &g;
    22 
    23   ///Stores double type NodeMaps
    24   std::map< std::string,Graph::NodeMap<double> * > nodemap_storage;
    25 
    26   ///Stores double type EdgeMaps
    27   std::map< std::string,Graph::EdgeMap<double> * > edgemap_storage;
    28 
    29   //Stores the default values for the different visualization node attributes
    30   std::vector<Graph::NodeMap<double> > default_nodemaps;
    31 
    32   //Stores the default values for the different visualization edge attributes
    33   std::vector<Graph::EdgeMap<double> > default_edgemaps;
    34 
    35 public:
    36   ///Constructor of MapStorage. Expects the Graph of
    37   ///which maps will be stored in it.
    38   ///Its all activity is initializing default values
    39   ///for different visualization attributes
    40   ///
    41   ///\param graph is the graph for which the maps are stored in this object.
    42   MapStorage(Graph &);
    43 
    44   ///Adds given map to storage. A name and the map itself has to be provided.
    45   ///\param name is the name of map
    46   ///\nodemap is the pointer of the given nodemap
    47   ///\todo map should be given by reference!
    48   int addNodeMap(const std::string &,Graph::NodeMap<double> *);
    49 
    50   ///Adds given map to storage. A name and the map itself has to be provided.
    51   ///\param name is the name of map
    52   ///\edgemap is the pointer of the given edgemap
    53   ///\todo map should be given by reference!
    54   int addEdgeMap(const std::string &,Graph::EdgeMap<double> *);
    55 
    56   ///Returns how much nodemaps is stored in \ref MapStorage
    57   int numOfNodeMaps() {return nodemap_storage.size();};
    58 
    59   ///Returns how much edgemaps is stored in \ref MapStorage
    60   int numOfEdgeMaps() {return edgemap_storage.size();};
    61 
    62   ///Returns the maximum value of the given NodeMap. NodeMap has to be given by its name.
    63   ///\param name is the name of map of which maximum is searched
    64   double maxOfNodeMap(const std::string &);
    65 
    66   ///Returns the maximum value of the given EdgeMap. EdgeMap has to be given by its name.
    67   ///\param name is the name of map of which maximum is searched
    68   double maxOfEdgeMap(const std::string &);
    69 
    70   ///Returns the minimum value of the given NodeMap. NodeMap has to be given by its name.
    71   ///\param name is the name of map of which minimum is searched
    72   double minOfNodeMap(const std::string &);
    73 
    74   ///Returns the minimum value of the given EdgeMap. EdgeMap has to be given by its name.
    75   ///\param name is the name of map of which minimum is searched
    76   double minOfEdgeMap(const std::string &);
    77 
    78   ///To be able to iterate through each maps this function returns an iterator pointing to the first nodemap in the storage.
    79   std::map< std::string,Graph::NodeMap<double> * >::iterator beginOfNodeMaps(){return nodemap_storage.begin();};
    80 
    81   ///To be able to iterate through each maps this function returns an iterator pointing to the first edgemap in the storage.
    82   std::map< std::string,Graph::EdgeMap<double> * >::iterator beginOfEdgeMaps(){return edgemap_storage.begin();};
    83 
    84   ///To be able to iterate through each maps this function returns an iterator pointing to the last nodemap in the storage.
    85   std::map< std::string,Graph::NodeMap<double> * >::iterator endOfNodeMaps(){return nodemap_storage.end();};
    86 
    87   ///To be able to iterate through each maps this function returns an iterator pointing to the last edgemap in the storage.
    88   std::map< std::string,Graph::EdgeMap<double> * >::iterator endOfEdgeMaps(){return edgemap_storage.end();};
    89 
    90   ///This function sets a default base value for the newly created node
    91   void initMapsForNode(NodeIt);
    92 
    93   ///This function sets a default base value for the newly created node
    94   void initMapsForEdge(Graph::Edge);
    95 };
    96 
    97 #endif //MAPSTORAGE_H