30 #include "../../core/pattern/mvc/ItemController.h"
31 #include "../../core/AbstractScene.h"
32 #include "../../core/pattern/mvc/Observable.h"
33 #include "../../../color/RGBAColor.h"
34 #include "../../../qt/widgets/Utils.h"
35 #include "../../../geometry/Envelope.h"
36 #include "../../../common/STLUtils.h"
37 #include "../../item/ArrowModel.h"
44 m_nameClass = std::string(this->metaObject()->className());
61 drawBackground(painter);
68 if (option->state & QStyle::State_Selected)
70 drawSelection(painter);
84 QRectF boundRect = boundingRect();
90 double centerY = boundRect.center().y();
92 QLineF lne(boundRect.bottomLeft().x(), centerY, boundRect.width(), centerY);
94 painter->drawLine(lne);
99 drawHeadArrow(painter);
106 QBrush bsh(Qt::black);
107 painter->setBrush(bsh);
108 painter->setPen(Qt::NoPen);
110 QRectF boundRect = boundingRect();
112 double h = boundRect.height();
114 double centerY = boundRect.center().y();
115 QLineF lne(boundRect.bottomLeft().x(), centerY, boundRect.width(), centerY);
118 double sizeHead = (h / 5.);
120 double angle = std::acos(lne.dx() / lne.length());
122 angle = (Pi * 2) - angle;
124 QPointF arrowP1 = lne.p1() + QPointF(sin(angle + Pi / 3) * sizeHead,
125 cos(angle + Pi / 3) * sizeHead);
126 QPointF arrowP2 = lne.p1() + QPointF(sin(angle + Pi - Pi / 3) * sizeHead,
127 cos(angle + Pi - Pi / 3) * sizeHead);
129 QPolygonF trianglePolygon;
130 trianglePolygon << lne.p1() << arrowP1 << arrowP2;
132 painter->drawPolygon(trianglePolygon);
Abstract class to represent an observable. "Model" part of MVC component.
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget=0)
Reimplemented from QGraphicsItem.
ArrowItem(ItemController *controller, Observable *o)
Constructor.
virtual ~ArrowItem()
Destructor.
Abstract class to represent a controller. "Controller" part of MVC component. All classes representin...
Abstract class that represents a graphic item. This object is of type QGraphicsObject.
std::string m_nameClass
Class name.
Class that represents a "Model" part of Arrow MVC component. Its coordinate system is the same of sce...
virtual void drawHeadArrow(QPainter *painter)
Drawing method of a Head Arrow.
virtual void drawArrow(QPainter *painter)
Drawing method of a Arrow.
Class that represents a graphic Arrow. Its coordinate system is the same of scene (millimeters)...