logplus/Workflow/WFEngine/Component/WorkflowWidget/src/ModulePortInfoGraphicsItem.cpp
2026-01-16 17:18:41 +08:00

117 lines
2.7 KiB
C++

/**
* @file ModulePortInfoGraphicsItem.cpp
* @date 2011-10-31
*/
#include <cmath>
#include <QPainter>
#include <QGradient>
#include <QPalette>
#include <QtDebug>
#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;
}