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*);
The edge struct represents an edge in a Graph object.