fix: socket bounding box and path
This commit is contained in:
@@ -81,7 +81,10 @@ void Network::deleteEdge(QGraphicsItem* edge)
|
|||||||
}
|
}
|
||||||
scene_->removeItem(edge);
|
scene_->removeItem(edge);
|
||||||
scene_->update();
|
scene_->update();
|
||||||
delete edge;
|
view_->update();
|
||||||
|
// NOTE: deleting edge kept giving me segmentation faults
|
||||||
|
// I coundn't figure it out so I'm just leaving it for now
|
||||||
|
// delete edge;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Network::leftMousePress(QMouseEvent *event)
|
void Network::leftMousePress(QMouseEvent *event)
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ SocketGraphic::SocketGraphic(SocketGraphic::SocketType type, QGraphicsItem *pare
|
|||||||
brushInactive_ = QBrush("#9f9f9f");
|
brushInactive_ = QBrush("#9f9f9f");
|
||||||
socketSize_ = 3;
|
socketSize_ = 3;
|
||||||
setAcceptHoverEvents(true);
|
setAcceptHoverEvents(true);
|
||||||
|
initBoundingBox();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SocketGraphic::addEdge(NodeEdgeGraphic* edge)
|
void SocketGraphic::addEdge(NodeEdgeGraphic* edge)
|
||||||
@@ -32,6 +33,16 @@ void SocketGraphic::removeEdge(NodeEdgeGraphic* edge)
|
|||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SocketGraphic::initBoundingBox()
|
||||||
|
{
|
||||||
|
boundRect_ = QRect(
|
||||||
|
-socketSize_/2.0f*paddingScale_,
|
||||||
|
-socketSize_/2.0f*paddingScale_,
|
||||||
|
socketSize_*paddingScale_,
|
||||||
|
socketSize_*paddingScale_
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void SocketGraphic::posChanged(QPointF pos)
|
void SocketGraphic::posChanged(QPointF pos)
|
||||||
{
|
{
|
||||||
@@ -55,14 +66,18 @@ void SocketGraphic::posChanged(QPointF pos)
|
|||||||
|
|
||||||
QRectF SocketGraphic::boundingRect() const
|
QRectF SocketGraphic::boundingRect() const
|
||||||
{
|
{
|
||||||
float paddingScale = 20;
|
return boundRect_;
|
||||||
auto boundRect = QRect(
|
}
|
||||||
-socketSize_/2.0f*paddingScale,
|
|
||||||
type_==SocketType::Input ? -socketSize_/2.0f*paddingScale : 0,
|
QPainterPath SocketGraphic::shape() const{
|
||||||
socketSize_*paddingScale,
|
QPainterPath path;
|
||||||
socketSize_/2.0f*paddingScale
|
QPointF startPt(boundRect_.center().x(), type_==SocketType::Input ? boundRect_.top() : boundRect_.bottom());
|
||||||
);
|
path.moveTo(startPt);
|
||||||
return boundRect;
|
path.arcTo(boundRect_, 0, type_==SocketType::Input ? 180 : -180);
|
||||||
|
path.lineTo(boundRect_.right(), boundRect_.center().y());
|
||||||
|
path.closeSubpath();
|
||||||
|
|
||||||
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
SocketGraphic::SocketType SocketGraphic::getIO() { return type_; }
|
SocketGraphic::SocketType SocketGraphic::getIO() { return type_; }
|
||||||
@@ -74,6 +89,9 @@ void SocketGraphic::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt
|
|||||||
painter->setBrush(hovered_ ? brushActive_ : brushInactive_);
|
painter->setBrush(hovered_ ? brushActive_ : brushInactive_);
|
||||||
painter->drawEllipse(QPoint(0,0), socketSize_, socketSize_);
|
painter->drawEllipse(QPoint(0,0), socketSize_, socketSize_);
|
||||||
|
|
||||||
|
// painter->drawRect(boundRect_);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SocketGraphic::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
|
void SocketGraphic::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ public:
|
|||||||
void addEdge(NodeEdgeGraphic* edge);
|
void addEdge(NodeEdgeGraphic* edge);
|
||||||
void removeEdge(NodeEdgeGraphic* edge);
|
void removeEdge(NodeEdgeGraphic* edge);
|
||||||
void posChanged(QPointF pos);
|
void posChanged(QPointF pos);
|
||||||
|
QPainterPath shape() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int socketSize_ = 1;
|
int socketSize_ = 1;
|
||||||
@@ -32,6 +33,10 @@ private:
|
|||||||
bool hovered_=false;
|
bool hovered_=false;
|
||||||
SocketType type_;
|
SocketType type_;
|
||||||
std::unordered_set<NodeEdgeGraphic*> edges_;
|
std::unordered_set<NodeEdgeGraphic*> edges_;
|
||||||
|
qreal paddingScale_=20;
|
||||||
|
QRectF boundRect_;
|
||||||
|
|
||||||
|
void initBoundingBox();
|
||||||
protected:
|
protected:
|
||||||
void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override;
|
void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override;
|
||||||
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override;
|
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override;
|
||||||
|
|||||||
Reference in New Issue
Block a user