COIN-OR::LEMON - Graph Library

Ignore:
Timestamp:
02/28/07 19:20:28 (14 years ago)
Author:
Hegyi Péter
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/glemon/trunk@3205
Message:

Header reorganising

File:
1 edited

Legend:

Unmodified
Added
Removed
  • graph_displayer_canvas-event.cc

    r187 r194  
    1717 */
    1818
    19 #include "graph_displayer_canvas.h"
     19#include <graph_displayer_canvas.h>
     20#include <mapstorage.h>
     21#include <nbtab.h>
    2022#include <cmath>
    2123
     
    146148      active_item=(get_item_at(clicked_x, clicked_y));
    147149      active_node=INVALID;
    148       for (NodeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)
     150      for (NodeIt i((mytab.mapstorage)->graph); i!=INVALID; ++i)
    149151        {
    150152          if(nodesmap[i]==active_item)
     
    169171      if(active_node!=INVALID)
    170172        {
    171           (mytab.mapstorage).modified = true;
     173          (mytab.mapstorage)->modified = true;
    172174         
    173175          //new coordinates will be the old values,
     
    191193          std::ostringstream ostr;
    192194          ostr << "(" <<
    193             (mytab.mapstorage).coords[active_node].x << ", " <<
    194             (mytab.mapstorage).coords[active_node].y << ")";
     195            (mytab.mapstorage)->coords[active_node].x << ", " <<
     196            (mytab.mapstorage)->coords[active_node].y << ")";
    195197          double radius =
    196198            (nodesmap[active_node]->property_x2().get_value() -
     
    199201            {
    200202              coord_text->property_text().set_value(ostr.str());
    201               coord_text->property_x().set_value((mytab.mapstorage).coords[active_node].x +
     203              coord_text->property_x().set_value((mytab.mapstorage)->coords[active_node].x +
    202204                                                 radius);
    203               coord_text->property_y().set_value((mytab.mapstorage).coords[active_node].y -
     205              coord_text->property_y().set_value((mytab.mapstorage)->coords[active_node].y -
    204206                                                 radius);
    205207            }
     
    208210              coord_text = new Gnome::Canvas::Text(
    209211                                                   displayed_graph,
    210                                                    (mytab.mapstorage).coords[active_node].x + radius,
    211                                                    (mytab.mapstorage).coords[active_node].y - radius,
     212                                                   (mytab.mapstorage)->coords[active_node].x + radius,
     213                                                   (mytab.mapstorage)->coords[active_node].y - radius,
    212214                                                   ostr.str());
    213215              coord_text->property_fill_color().set_value("black");
     
    300302
    301303    case GDK_BUTTON_RELEASE:
    302       (mytab.mapstorage).modified = true;
     304      (mytab.mapstorage)->modified = true;
    303305
    304306      is_drawn=true;
     
    306308      isbutton=1;
    307309
    308       active_node=(mytab.mapstorage).graph.addNode();
     310      active_node=(mytab.mapstorage)->graph.addNode();
    309311
    310312      //initiating values corresponding to new node in maps
     
    313315
    314316      // update coordinates
    315       (mytab.mapstorage).coords.set(active_node, XY(clicked_x, clicked_y));
     317      (mytab.mapstorage)->coords.set(active_node, XY(clicked_x, clicked_y));
    316318
    317319      // update all other maps
    318320      for (std::map<std::string, Graph::NodeMap<double>*>::const_iterator it =
    319           (mytab.mapstorage).nodemap_storage.begin(); it !=
    320           (mytab.mapstorage).nodemap_storage.end(); ++it)
     321          (mytab.mapstorage)->nodemap_storage.begin(); it !=
     322          (mytab.mapstorage)->nodemap_storage.end(); ++it)
    321323      {
    322324        if ((it->first != "coordinates_x") &&
     
    324326        {
    325327          (*(it->second))[active_node] =
    326             (mytab.mapstorage).nodemap_default[it->first];
     328            (mytab.mapstorage)->nodemap_default[it->first];
    327329        }
    328330      }
    329331      // increment the id map's default value
    330       (mytab.mapstorage).nodemap_default["label"] += 1.0;
     332      (mytab.mapstorage)->nodemap_default["label"] += 1.0;
    331333
    332334      nodesmap[active_node]=new Gnome::Canvas::Ellipse(displayed_graph,
     
    378380          active_item=(get_item_at(clicked_x, clicked_y));
    379381          active_node=INVALID;
    380           for (NodeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)
     382          for (NodeIt i((mytab.mapstorage)->graph); i!=INVALID; ++i)
    381383          {
    382384            if(nodesmap[i]==active_item)
     
    407409          target_item=(get_item_at(clicked_x, clicked_y));
    408410          Node target_node=INVALID;
    409           for (NodeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)
     411          for (NodeIt i((mytab.mapstorage)->graph); i!=INVALID; ++i)
    410412          {
    411413            if(nodesmap[i]==target_item)
     
    417419          if(target_node!=INVALID)
    418420          {
    419             (mytab.mapstorage).modified = true;
     421            (mytab.mapstorage)->modified = true;
    420422
    421423            *(nodesmap[target_node]) <<
     
    423425
    424426            //creating new edge
    425             active_edge=(mytab.mapstorage).graph.addEdge(active_node,
     427            active_edge=(mytab.mapstorage)->graph.addEdge(active_node,
    426428                target_node);
    427429
     
    429431            for (std::map<std::string,
    430432                Graph::EdgeMap<double>*>::const_iterator it =
    431                 (mytab.mapstorage).edgemap_storage.begin(); it !=
    432                 (mytab.mapstorage).edgemap_storage.end(); ++it)
     433                (mytab.mapstorage)->edgemap_storage.begin(); it !=
     434                (mytab.mapstorage)->edgemap_storage.end(); ++it)
    433435            {
    434436              (*(it->second))[active_edge] =
    435                 (mytab.mapstorage).edgemap_default[it->first];
     437                (mytab.mapstorage)->edgemap_default[it->first];
    436438            }
    437439            // increment the id map's default value
    438             (mytab.mapstorage).edgemap_default["label"] += 1.0;
     440            (mytab.mapstorage)->edgemap_default["label"] += 1.0;
    439441
    440442            if(target_node!=active_node)               
    441443            {
    442444              // set the coordinates of the arrow on the new edge
    443               MapStorage& ms = mytab.mapstorage;
     445              MapStorage& ms = *mytab.mapstorage;
    444446              ms.arrow_pos.set(active_edge,
    445447                  (ms.coords[ms.graph.source(active_edge)] +
     
    453455            {
    454456              // set the coordinates of the arrow on the new edge
    455               MapStorage& ms = mytab.mapstorage;
     457              MapStorage& ms = *mytab.mapstorage;
    456458              ms.arrow_pos.set(active_edge,
    457459                  (ms.coords[ms.graph.source(active_edge)] +
     
    464466
    465467            //initializing edge-text as well, to empty string
    466             XY text_pos=mytab.mapstorage.arrow_pos[active_edge];
     468            XY text_pos=mytab.mapstorage->arrow_pos[active_edge];
    467469            text_pos+=(XY(10,10));
    468470
     
    498500        if(target_item)
    499501        {
    500           propertyUpdate((mytab.mapstorage).graph.target(active_edge),N_COLOR);
     502          propertyUpdate((mytab.mapstorage)->graph.target(active_edge),N_COLOR);
    501503          target_item=NULL;
    502504        }
     
    522524      active_edge=INVALID;
    523525      //was it a node?
    524       for (NodeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)
     526      for (NodeIt i((mytab.mapstorage)->graph); i!=INVALID; ++i)
    525527        {
    526528          if(nodesmap[i]==active_item)
     
    532534      if(active_node==INVALID)
    533535        {
    534           for (EdgeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)
     536          for (EdgeIt i((mytab.mapstorage)->graph); i!=INVALID; ++i)
    535537            {
    536538              if(edgesmap[i]->getLine()==active_item)
     
    561563              if(active_node!=INVALID)
    562564                {
    563                   (mytab.mapstorage).modified = true;
     565                  (mytab.mapstorage)->modified = true;
    564566
    565567                  std::set<Graph::Edge> edges_to_delete;
    566568
    567                   for(OutEdgeIt e((mytab.mapstorage).graph,active_node);e!=INVALID;++e)
     569                  for(OutEdgeIt e((mytab.mapstorage)->graph,active_node);e!=INVALID;++e)
    568570                    {
    569571                      edges_to_delete.insert(e);
    570572                    }
    571573                 
    572                   for(InEdgeIt e((mytab.mapstorage).graph,active_node);e!=INVALID;++e)
     574                  for(InEdgeIt e((mytab.mapstorage)->graph,active_node);e!=INVALID;++e)
    573575                    {
    574576                      edges_to_delete.insert(e);
     
    636638
    637639            //find the activated item between text of nodes
    638             for (NodeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)
     640            for (NodeIt i((mytab.mapstorage)->graph); i!=INVALID; ++i)
    639641              {
    640642                //at the same time only one can be active
     
    648650            if(clicked_node==INVALID)
    649651              {
    650                 for (NodeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)
     652                for (NodeIt i((mytab.mapstorage)->graph); i!=INVALID; ++i)
    651653                  {
    652654                    //at the same time only one can be active
     
    661663              {
    662664                //find the activated item between texts
    663                 for (EdgeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)
     665                for (EdgeIt i((mytab.mapstorage)->graph); i!=INVALID; ++i)
    664666                  {
    665667                    //at the same time only one can be active
     
    673675                if(clicked_edge==INVALID)
    674676                  {
    675                     for (EdgeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)
     677                    for (EdgeIt i((mytab.mapstorage)->graph); i!=INVALID; ++i)
    676678                      {
    677679                        //at the same time only one can be active
     
    715717                      case Gtk::RESPONSE_ACCEPT:
    716718                        double new_value = spin.get_value();
    717                         (*(mytab.mapstorage).nodemap_storage[nodemap_to_edit])[active_node] =
     719                        (*(mytab.mapstorage)->nodemap_storage[nodemap_to_edit])[active_node] =
    718720                          new_value;
    719721                        std::ostringstream ostr;
     
    758760                        case Gtk::RESPONSE_ACCEPT:
    759761                          double new_value = spin.get_value();
    760                           (*(mytab.mapstorage).edgemap_storage[edgemap_to_edit])[active_edge] =
     762                          (*(mytab.mapstorage)->edgemap_storage[edgemap_to_edit])[active_edge] =
    761763                            new_value;
    762764                          std::ostringstream ostr;
     
    783785  delete(nodetextmap[node_to_delete]);
    784786  delete(nodesmap[node_to_delete]);
    785   (mytab.mapstorage).graph.erase(node_to_delete);
     787  (mytab.mapstorage)->graph.erase(node_to_delete);
    786788}
    787789
     
    790792  delete(edgetextmap[edge_to_delete]);
    791793  delete(edgesmap[edge_to_delete]);
    792   (mytab.mapstorage).graph.erase(edge_to_delete);
     794  (mytab.mapstorage)->graph.erase(edge_to_delete);
    793795}
    794796
     
    810812    else
    811813    {
    812       for (EdgeIt i((mytab.mapstorage).graph); i!=INVALID; ++i)
     814      for (EdgeIt i((mytab.mapstorage)->graph); i!=INVALID; ++i)
    813815      {
    814816        if(edgesmap[i]==active_bre)
     
    852854
    853855  // the new coordinates of the centre of the node
    854   double coord_x = dx + (mytab.mapstorage).coords[moved_node].x;
    855   double coord_y = dy + (mytab.mapstorage).coords[moved_node].y;
     856  double coord_x = dx + (mytab.mapstorage)->coords[moved_node].x;
     857  double coord_y = dy + (mytab.mapstorage)->coords[moved_node].y;
    856858
    857859  // write back the new coordinates to the coords map
    858   (mytab.mapstorage).coords.set(moved_node, XY(coord_x, coord_y));
     860  (mytab.mapstorage)->coords.set(moved_node, XY(coord_x, coord_y));
    859861
    860862  //all the edges connected to the moved point has to be redrawn
    861   for(OutEdgeIt ei((mytab.mapstorage).graph,moved_node);ei!=INVALID;++ei)
     863  for(OutEdgeIt ei((mytab.mapstorage)->graph,moved_node);ei!=INVALID;++ei)
    862864    {
    863865      XY arrow_pos;
    864866
    865       if (mytab.mapstorage.graph.source(ei) == mytab.mapstorage.graph.target(ei))
    866         {
    867           arrow_pos = mytab.mapstorage.arrow_pos[ei] + XY(dx, dy);
     867      if (mytab.mapstorage->graph.source(ei) == mytab.mapstorage->graph.target(ei))
     868        {
     869          arrow_pos = mytab.mapstorage->arrow_pos[ei] + XY(dx, dy);
    868870        }
    869871      else
     
    871873          XY moved_node_1(coord_x - dx, coord_y - dy);
    872874          XY moved_node_2(coord_x, coord_y);
    873           Node target = mytab.mapstorage.graph.target(ei);
    874           XY fix_node(mytab.mapstorage.coords[target].x,
    875                       mytab.mapstorage.coords[target].y);
    876           XY old_arrow_pos(mytab.mapstorage.arrow_pos[ei]);
     875          Node target = mytab.mapstorage->graph.target(ei);
     876          XY fix_node(mytab.mapstorage->coords[target].x,
     877                      mytab.mapstorage->coords[target].y);
     878          XY old_arrow_pos(mytab.mapstorage->arrow_pos[ei]);
    877879
    878880          arrow_pos = calcArrowPos(moved_node_1, moved_node_2, fix_node, old_arrow_pos, isbutton);
    879881        }
    880882
    881       mytab.mapstorage.arrow_pos.set(ei, arrow_pos);
     883      mytab.mapstorage->arrow_pos.set(ei, arrow_pos);
    882884      edgesmap[ei]->draw();
    883885
    884886      //reposition of edgetext
    885       XY text_pos=mytab.mapstorage.arrow_pos[ei];
     887      XY text_pos=mytab.mapstorage->arrow_pos[ei];
    886888      text_pos+=(XY(10,10));
    887889      edgetextmap[ei]->property_x().set_value(text_pos.x);
     
    889891    }
    890892
    891   for(InEdgeIt ei((mytab.mapstorage).graph,moved_node);ei!=INVALID;++ei)
    892     {
    893       if (mytab.mapstorage.graph.source(ei) != mytab.mapstorage.graph.target(ei))
     893  for(InEdgeIt ei((mytab.mapstorage)->graph,moved_node);ei!=INVALID;++ei)
     894    {
     895      if (mytab.mapstorage->graph.source(ei) != mytab.mapstorage->graph.target(ei))
    894896        {
    895897          XY moved_node_1(coord_x - dx, coord_y - dy);
    896898          XY moved_node_2(coord_x, coord_y);
    897           Node source = mytab.mapstorage.graph.source(ei);
    898           XY fix_node(mytab.mapstorage.coords[source].x,
    899                       mytab.mapstorage.coords[source].y);
    900           XY old_arrow_pos(mytab.mapstorage.arrow_pos[ei]);
     899          Node source = mytab.mapstorage->graph.source(ei);
     900          XY fix_node(mytab.mapstorage->coords[source].x,
     901                      mytab.mapstorage->coords[source].y);
     902          XY old_arrow_pos(mytab.mapstorage->arrow_pos[ei]);
    901903
    902904          XY arrow_pos;
    903905          arrow_pos = calcArrowPos(moved_node_1, moved_node_2, fix_node, old_arrow_pos, isbutton);
    904906
    905           mytab.mapstorage.arrow_pos.set(ei, arrow_pos);
     907          mytab.mapstorage->arrow_pos.set(ei, arrow_pos);
    906908          edgesmap[ei]->draw();
    907909
    908910          //reposition of edgetext
    909           XY text_pos=mytab.mapstorage.arrow_pos[ei];
     911          XY text_pos=mytab.mapstorage->arrow_pos[ei];
    910912          text_pos+=(XY(10,10));
    911913          edgetextmap[ei]->property_x().set_value(text_pos.x);
Note: See TracChangeset for help on using the changeset viewer.