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)...