// -*- C++ -*- //

#ifndef BROKEN_EDGE_H
#define BROKEN_EDGE_H

class BrokenEdge;

#include "all_include.h"
#include <libgnomecanvasmm.h>
#include <libgnomecanvasmm/polygon.h>
#include "graph_displayer_canvas.h"
#include <lemon/xy.h>

class BrokenEdge : public Gnome::Canvas::Line
{
  GraphDisplayerCanvas & gdc;
  Gnome::Canvas::Polygon * arrow;
  Gnome::Art::Point * my_points;


  ///Indicates whether the button of mouse is pressed or not
  bool isbutton;

  ///At this location was the mousebutton pressed.
  ///It helps to calculate the distance of dragging.
  double clicked_x, clicked_y;

  ///event handler for forming edges
  bool edgeFormerEventHandler(GdkEvent*);
 public:
  BrokenEdge(Gnome::Canvas::Group &, Gnome::Canvas::Points, GraphDisplayerCanvas &);
  ~BrokenEdge();
  void setPoints(Gnome::Canvas::Points, bool move=false);
  xy<double> getArrowPos();
};


#endif //BROKEN_EDGE_H

