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 *);
79 InteractorComponent *clone() {
80 return new MouseEdgeBendEditor();
84 enum EditOperation { NONE_OP=0, TRANSLATE_OP, NEW_OP, DELETE_OP};
86 EditOperation operation()
const {
100 enum OperationTarget { COORD = 0, SIZE, COORD_AND_SIZE};
103 GlMainWidget* glMainWidget;
104 LayoutProperty *_layout;
105 BooleanProperty *_selection;
106 DoubleProperty *_rotation;
107 SizeProperty *_sizes;
108 IntegerProperty *_shape;
109 CoordVectorProperty *_coordsVectorProperty;
110 LayoutProperty *_copyLayout;
111 SizeProperty *_copySizes;
112 DoubleProperty *_copyRotation;
114 void initProxies(GlMainWidget *glMainWidget);
119 EditOperation _operation;
120 OperationTarget mode;
125 std::vector<tlp::GlCircle> circles;
126 EdgeEntity edgeEntity;
127 std::vector<Coord> coordinates;
128 GlCircle basicCircle;
129 GlTriangle targetTriangle;
130 GlCircle sourceCircle;
131 GlComposite *circleString;
132 Graph *edgeBendsGraph;
133 std::vector <SelectedEntity> select;
138 std::string selectedEntity;
139 bool mouseButtonPressOnEdge;
140 bool belong(Coord, Coord, Coord, GlMainWidget*);
141 bool haveSelection(GlMainWidget *);
142 void computeSrcTgtEntities(GlMainWidget *);
143 bool computeBendsCircles(GlMainWidget*);
144 void mMouseTranslate(
double,
double, GlMainWidget*);
146 void mMouseCreate(
double,
double, GlMainWidget*);