/** * @file ModulePortInfoGraphicsItem.cpp * @date 2011-10-31 */ #include #include #include #include #include #include "ModuleGraphicsItem.h" #include "ModuleConnection.h" #include "ModuleInformation.h" #include "ModulePortInfoGraphicsItem.h" using namespace pai::graphics2d; ModulePortInfoGraphicsItem::ModulePortInfoGraphicsItem(ModuleGraphicsItem *pModuleItem, PortDirection portDirection, int portIndex, QGraphicsItem *pParent) : QGraphicsItem(pParent), m_pModuleItem(pModuleItem), m_PortDirection(portDirection), m_PortIndex(portIndex), m_TraceFinished(0), m_speed(0) { setZValue(0); } ModulePortInfoGraphicsItem::~ModulePortInfoGraphicsItem() { } int ModulePortInfoGraphicsItem::type() const { return Type; } QRectF ModulePortInfoGraphicsItem::boundingRect() const { QRectF rect; if(m_pModuleItem != NULL) { if(m_PortDirection == Top) { rect.setBottomLeft(m_pModuleItem->GetPortPostion(m_PortDirection, m_PortIndex)); rect.setSize(QSizeF(300, 40)); } else { rect.setTopLeft(m_pModuleItem->GetPortPostion(m_PortDirection, m_PortIndex)); rect.setSize(QSizeF(300, 40)); } } return rect; } void ModulePortInfoGraphicsItem::paint(QPainter *pPainter, const QStyleOptionGraphicsItem */*pOption*/, QWidget */*pWidget*/) { if(!m_pModuleItem) { return; } const int xLen = 60; const int yLen = 13; QPointF startPoint = m_pModuleItem->GetPortPostion(m_PortDirection, m_PortIndex); QPointF endPoint; if(m_PortDirection == Top) { endPoint.setX(startPoint.x() + xLen); endPoint.setY(startPoint.y() - yLen); } else { endPoint.setX(startPoint.x() + xLen); endPoint.setY(startPoint.y() + yLen); } QPen oldPen = pPainter->pen(); QPen pen; // creates a default pen pen.setStyle(Qt::DashLine); pen.setWidth(1); pen.setColor(Qt::black); pPainter->setPen(pen); pPainter->drawLine(startPoint, endPoint); pPainter->setPen(oldPen); pPainter->drawText(endPoint, QString("%1 Traces (%2 Trc/Sec)").arg(m_TraceFinished).arg(m_speed)); } pai::graphics2d::PortDirection ModulePortInfoGraphicsItem::GetPortDirection() const { return m_PortDirection; } int ModulePortInfoGraphicsItem::GetPortIndex() const { return m_PortIndex; } void ModulePortInfoGraphicsItem::SetPrgsInfo(int trace, int speed) { m_TraceFinished = trace; m_speed = speed; }