21 #ifndef MOUSEEDGEBENDEDITION_H 
   22 #define MOUSEEDGEBENDEDITION_H 
   24 #include <tulip/GlCircle.h> 
   25 #include <tulip/GlTriangle.h> 
   26 #include <tulip/GLInteractor.h> 
   27 #include <tulip/GlScene.h> 
   28 #include <tulip/GlLines.h> 
   33 class BooleanProperty;
 
   36 class CoordVectorProperty;
 
   37 class IntegerProperty;
 
   39 class EdgeEntity : 
public GlSimpleEntity {
 
   43   std::vector<Coord> bends;
 
   47   void setCoordinates(
const Coord &startPos, 
const Coord &endPos,
const std::vector<Coord> &bendsPos) {
 
   48     boundingBox = BoundingBox();
 
   52     boundingBox.expand(start);
 
   53     boundingBox.expand(end);
 
   55     for(std::vector<Coord>::iterator it=bends.begin(); it!=bends.end(); ++it) {
 
   56       boundingBox.expand(*it);
 
   60   void draw(
float,Camera *) {
 
   61     GlLines::glDrawCurve(start,bends,end,10,0,Color(127,127,127,255),Color(127,127,127,255));
 
   64   void getXML(std::string &) {}
 
   65   void setWithXML(
const std::string &, 
unsigned int &) {}
 
   69 class TLP_QT_SCOPE MouseEdgeBendEditor:
public GLInteractorComponent {
 
   73   MouseEdgeBendEditor();
 
   74   ~MouseEdgeBendEditor();
 
   75   bool compute(GlMainWidget *glMainWidget);
 
   76   bool draw(GlMainWidget *);
 
   78   bool eventFilter(QObject *, QEvent *);
 
   81   enum EditOperation { NONE_OP=0, TRANSLATE_OP, NEW_OP, DELETE_OP};
 
   83   EditOperation operation()
const {
 
   95   enum OperationTarget { COORD = 0, SIZE, COORD_AND_SIZE};
 
   98   GlMainWidget* glMainWidget;
 
   99   LayoutProperty *_layout;
 
  100   BooleanProperty *_selection;
 
  101   DoubleProperty *_rotation;
 
  102   SizeProperty *_sizes;
 
  103   IntegerProperty *_shape;
 
  104   CoordVectorProperty *_coordsVectorProperty;
 
  106   void initProxies(GlMainWidget *glMainWidget);
 
  109   EditOperation _operation;
 
  110   OperationTarget mode;
 
  115   std::vector<tlp::GlCircle> circles;
 
  116   EdgeEntity *edgeEntity;
 
  117   std::vector<Coord> coordinates;
 
  118   GlCircle basicCircle;
 
  119   GlTriangle targetTriangle;
 
  120   GlCircle sourceCircle;
 
  121   GlComposite *circleString;
 
  122   std::vector <SelectedEntity> select;
 
  127   std::string selectedEntity;
 
  128   bool mouseButtonPressOnEdge;
 
  129   bool belong(Coord, Coord, Coord, GlMainWidget*);
 
  130   bool haveSelection(GlMainWidget *);
 
  131   void computeSrcTgtEntities(GlMainWidget *);
 
  132   bool computeBendsCircles(GlMainWidget*);
 
  133   void mMouseTranslate(
double, 
double, GlMainWidget*);
 
  135   void mMouseCreate(
double, 
double, GlMainWidget*);