COIN-OR::LEMON - Graph Library

Changeset 118:cfd49e5c8723 in glemon-0.x for graph_displayer_canvas.h


Ignore:
Timestamp:
01/10/06 16:15:57 (18 years ago)
Author:
Hegyi Péter
Branch:
gui
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk/gui@2463
Message:

If default value of a new map is constant, the newly created elements will get that value as well. Documentation is added to BrokenEdge?, MapStorage? and GraphDisplazCanvas? classes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • graph_displayer_canvas.h

    r98 r118  
    1717  friend class BrokenEdge;
    1818
     19  ///Edge displayer class
     20
     21  ///This class is responsible for displaying edges in graph.
     22  ///The displayed edge is broken in the middle. The
     23  ///aim of this is to be able to indicate direction of edges
     24  ///and to be able to display more then one edges between the
     25  ///same source and target
    1926  class BrokenEdge : public Gnome::Canvas::Line
    2027  {
     28    ///The edge that the class displays.
     29
     30    ///It is needed, because some datas needed from
     31    ///graph can be accessed by this or should be sent
     32    ///as parameter, but it would be complicated
    2133    Edge edge;
     34
     35    ///Reference to the canvas, on which the graph is drawn.
     36
     37    ///It is needed, because some datas needed from
     38    ///graph can be accessed by this or should be sent
     39    ///as parameter, but it would be complicated
    2240    GraphDisplayerCanvas & gdc;
     41
     42    ///An arrow that indicates the direction of the edges
     43
     44    ///in case of directional graph direction can be indicated
     45    ///by this polygon. The polygon formulates a red arrow.
    2346    Gnome::Canvas::Polygon * arrow;
    2447
    25     ///Indicates whether the button of mouse is pressed or not
     48    ///Indicates whether the button of mouse is pressed or not at the moment.
    2649    bool isbutton;
    2750
    28     ///At this location was the mousebutton pressed.
    29     ///It helps to calculate the distance of dragging.
    30     double clicked_x, clicked_y;
    31 
    32     ///event handler for forming edges
    33     bool edgeFormerEventHandler(GdkEvent*);
     51    ///At this location was the mousebutton pressed. Horizontal component.
     52
     53    ///It helps to calculate the
     54    ///distance of dragging.
     55    double clicked_x;
     56
     57    ///At this location was the mousebutton pressed. Vertical component.
     58
     59    ///It helps to calculate the
     60    ///distance of dragging.
     61    double clicked_y;
     62
     63    ///event handler for forming broken edges
     64
     65    ///\param event the
     66    ///event to handle
     67    bool edgeFormerEventHandler(GdkEvent* event);
    3468  public:
    35     BrokenEdge(Gnome::Canvas::Group &, Edge, GraphDisplayerCanvas &);
     69
     70    ///Constructor of broken edge class.
     71
     72    ///\param g the group to which the edge belongs
     73    ///\param _edge the represented edge
     74    ///\param gc the canvas
     75    BrokenEdge(Gnome::Canvas::Group & g, Edge _edge, GraphDisplayerCanvas & gc);
     76
     77    ///Destructor of broken edge class
     78
     79    ///Frees up
     80    ///reserved memory
    3681    ~BrokenEdge();
     82
     83    ///The function that draws the edge based on collected data
    3784    void draw();
    3885  };
     86
     87  ///Type of canvas, on which the graph is drawn
    3988  typedef Gnome::Canvas::CanvasAA Parent;
    4089
    4190public:
    42   GraphDisplayerCanvas(NoteBookTab &);
     91  ///Constructor
     92
     93  ///\param nbt the tab of the window, in which the graph is displayed
     94  GraphDisplayerCanvas(NoteBookTab & nbt);
     95
     96  ///destructor of the class
    4397  virtual ~GraphDisplayerCanvas();
    4498
    45   ///Changes the linewidth attribute according to the given map.
    46   ///\param mapname is the name of the map which contains the new values
    47   int changeEdgeWidth (std::string mapname, Edge new_item=INVALID);
    48   int resetEdgeWidth (Edge new_item=INVALID);
    49 
    50   ///Changes the linecolor attribute according to the given map.
    51   ///\param mapname is the name of the map which contains the new values
    52   int changeEdgeColor (std::string mapname, Edge new_item=INVALID);
    53   int resetEdgeColor (Edge new_item=INVALID);
    54 
    55   ///Changes the text of line attribute according to the given map.
    56   ///\param mapname is the name of the map which contains the new values
    57   int changeEdgeText (std::string mapname, Edge new_item=INVALID);
    58   int resetEdgeText (Edge new_item=INVALID);
    59 
    60   ///Changes the linewidth attribute according to the given map.
    61   ///\param mapname is the name of the map which contains the new values
    62   int changeNodeRadius (std::string mapname, Node new_item=INVALID);
    63   int resetNodeRadius (Node new_item=INVALID);
    64 
    65   ///Changes the linecolor attribute according to the given map.
    66   ///\param mapname is the name of the map which contains the new values
    67   int changeNodeColor (std::string mapname, Node new_item=INVALID);
    68   int resetNodeColor (Node new_item=INVALID);
    69 
    70   ///Changes the text of line attribute according to the given map.
    71   ///\param mapname is the name of the map which contains the new values
    72   int changeNodeText (std::string mapname, Node new_item=INVALID);
    73   int resetNodeText (Node new_item=INVALID);
    74 
    75   void propertyChange(bool, int);
    76   void propertyUpdate(Edge, int, int dummy=0);
    77   void propertyUpdate(Node, int, int dummy=0);
    78 
     99  ///Changes the width of edge(s) according to the given map.
     100
     101  ///\param mapname is the name of the map which contains the values to be set
     102  ///\param edge if it is given, only the width of the given edge will be set, instead of all of them.
     103  int changeEdgeWidth (std::string mapname, Edge edge=INVALID);
     104
     105  ///Resets width of edge(s) to the default value
     106
     107  ///\param edge if it is given, only the width of the
     108  ///given edge will be reset, instead of all of them.
     109  int resetEdgeWidth (Edge edge=INVALID);
     110
     111  ///Changes the color of edge(s) according to the given map.
     112
     113  ///\param mapname is the name of the map which contains the new values
     114  ///\param edge if it is given, only the color of the given edge will be set, instead of all of them.
     115  int changeEdgeColor (std::string mapname, Edge edge=INVALID);
     116
     117  ///Resets color of edge(s) to the default value
     118
     119  ///\param edge if it is given, only the color of the
     120  ///given edge will be reset, instead of all of them.
     121  int resetEdgeColor (Edge edge=INVALID);
     122
     123  ///Changes the label of edge(s) according to the given map.
     124
     125  ///\param mapname is the name of the map which contains the new values
     126  ///\param edge if it is given, only the label of the given edge will be set, instead of all of them.
     127  int changeEdgeText (std::string mapname, Edge edge=INVALID);
     128
     129  ///Resets label of edge(s) to the default value
     130
     131  ///\param edge if it is given, only the color of the
     132  ///given edge will be reset, instead of all of them.
     133  int resetEdgeText (Edge edge=INVALID);
     134
     135  ///Changes the radius of node(s) according to the given map.
     136
     137  ///\param mapname is the name of the map which contains the new values
     138  ///\param node if it is given, only the radius of the given node will be set, instead of all of them.
     139  int changeNodeRadius (std::string mapname, Node node=INVALID);
     140
     141  ///Resets radius of node(s) to the default value
     142
     143  ///\param node if it is given, only the radius of the
     144  ///given node will be reset, instead of all of them.
     145  int resetNodeRadius (Node node=INVALID);
     146
     147  ///Changes the color of node(s) according to the given map.
     148
     149  ///\param mapname is the name of the map which contains the new values
     150  ///\param node if it is given, only the color of the given node will be set, instead of all of them.
     151  int changeNodeColor (std::string mapname, Node node=INVALID);
     152
     153  ///Resets color of node(s) to the default value
     154
     155  ///\param node if it is given, only the color of the
     156  ///given node will be reset, instead of all of them.
     157  int resetNodeColor (Node node=INVALID);
     158
     159  ///Changes the label of node(s) according to the given map.
     160
     161  ///\param mapname is the name of the map which contains the new values
     162  ///\param node if it is given, only the label of the given node will be set, instead of all of them.
     163  int changeNodeText (std::string mapname, Node node=INVALID);
     164
     165  ///Resets label of node(s) to the default value
     166
     167  ///\param node if it is given, only the label of the
     168  ///given node will be reset, instead of all of them.
     169  int resetNodeText (Node node=INVALID);
     170
     171  ///This function is called, when any of the displayed attributes have to be updated, or changed
     172
     173  ///\param itisedge if true, edge property has to be changed, else node property
     174  ///\param prop the id of property that has to changed or updated
     175  void propertyChange(bool itisedge, int prop);
     176
     177  ///updates the given property
     178
     179  ///\param edge if it is not INVALID, only the property of the given edge will be updated, instead of all of them
     180  ///\param prop the property to update
     181  void propertyUpdate(Edge edge, int prop);
     182
     183  ///updates the given property
     184
     185  ///\param node if it is not INVALID, only the property of the given node will be updated, instead of all of them
     186  ///\param prop the property to update
     187  void propertyUpdate(Node node, int prop);
     188
     189  ///updates all the property for the given edge
    79190  void propertyUpdate(Edge);
     191
     192  ///updates all the property for the given node
    80193  void propertyUpdate(Node);
    81194
     
    96209protected:
    97210
    98   //maximizing, minimizing, restoring window, etc. 
     211  //maximizing, minimizing, restoring window, etc.
    99212  virtual bool on_expose_event(GdkEventExpose *);
    100213
     
    128241  ///Moves the text to new place
    129242  void textReposition(xy<double>);
     243
    130244  ///Activates an edge belonging to a BrokenEdge
    131   ///
     245
    132246  ///After we have activated an edge this way,
    133247  ///the GDC object will know, which edge is under forming
    134   ///therefore it can redraw the necessarz elementy on the canvas,
     248  ///therefore it can redraw the necessary elements on the canvas,
    135249  ///for example the text belonging to the \ref BrokenEdge can be
    136250  ///redrawn (\ref textReposition).
     
    138252
    139253public:
    140   ///\return the actual tool in hand
     254
     255  ///Returns the actual tool in hand
    141256  int getActualTool();
    142257
     258  ///draws the graph
     259
     260  ///Called when opening a file.
    143261  void drawGraph();
     262
     263  ///Clears the canvas
     264
     265  ///It achieves this by deleting all data
     266  ///structure used to help handle the displayed graph.
    144267  void clear();
    145268
    146269  ///creates a new Nodemap
    147   int addNewNodeMap(double,std::string);
     270
     271  ///\param init initial value of the map
     272  ///\param mapname name of new map
     273  int addNewNodeMap(double init,std::string mapname);
    148274  ///creates a new Edgemap
    149   int addNewEdgeMap(double,std::string);
     275
     276  ///\param init initial value of the map
     277  ///\param mapname name of new map
     278  int addNewEdgeMap(double init,std::string mapname);
    150279
    151280private:
     
    184313
    185314  ///Remembers which Gnome::Canvas::Item was pressed.
    186   ///this variable is needed, because
    187   ///1. we cannot query the item at he cursor as fast as it could not cause a Segmentation Fault
    188   ///2. we would like to handle only ony item per movement, therefore quering it is not a working solution
    189   Gnome::Canvas::Item * active_item, * target_item;
     315
     316  ///this variable is needed, to work on it after selection
     317  Gnome::Canvas::Item * active_item;
     318
     319  ///Remembers which Gnome::Canvas::Item was pressed.
     320
     321  ///this variable is used at edge creation, it will
     322  ///be the secondly selected node. No local variable
     323  ///can be used for this purpose inside the function,
     324  ///because the node selected by button press, and
     325  ///the edge is created by button release. Both of
     326  ///them is different function call.
     327  Gnome::Canvas::Item * target_item;
     328
     329  ///selected node (for any editing)
    190330  Node active_node;
     331
     332  ///selected edge (for any editing)
    191333  Edge active_edge;
     334
     335  ///the edge that is selected by clicking on the red arrow in the middle of it
     336
     337  ///This edge is stored only for the purpose of reshape it.
     338  ///That is why it is selected in a different manner.
    192339  Edge forming_edge;
    193340
    194   std::string nodemap_to_edit, edgemap_to_edit;
     341  ///Map displayed by label can be edited.
     342  std::string nodemap_to_edit;
     343
     344  ///Map displayed by label can be edited.
     345  std::string edgemap_to_edit;
    195346
    196347  static const int zoom_step = 5;
     
    198349private:
    199350
    200   ///reference to the parent window
     351  ///reference to the container, in which the canvas is
    201352  NoteBookTab & mytab;
    202353
Note: See TracChangeset for help on using the changeset viewer.