diff --git a/include/QtNodes/internal/AbstractNodeGeometry.hpp b/include/QtNodes/internal/AbstractNodeGeometry.hpp index b30c5a36c..acc60def5 100644 --- a/include/QtNodes/internal/AbstractNodeGeometry.hpp +++ b/include/QtNodes/internal/AbstractNodeGeometry.hpp @@ -21,11 +21,8 @@ class NODE_EDITOR_PUBLIC AbstractNodeGeometry * The node's size plus some additional margin around it to account for drawing * effects (for example shadows) or node's parts outside the size rectangle * (for example port points). - * - * The default implementation returns QSize + 20 percent of width and heights - * at each side of the rectangle. */ - virtual QRectF boundingRect(NodeId const nodeId) const; + virtual QRectF boundingRect(NodeId const nodeId) const = 0; /// A direct rectangle defining the borders of the node's rectangle. virtual QSize size(NodeId const nodeId) const = 0; diff --git a/include/QtNodes/internal/DefaultHorizontalNodeGeometry.hpp b/include/QtNodes/internal/DefaultHorizontalNodeGeometry.hpp index f5f660784..33367e109 100644 --- a/include/QtNodes/internal/DefaultHorizontalNodeGeometry.hpp +++ b/include/QtNodes/internal/DefaultHorizontalNodeGeometry.hpp @@ -15,6 +15,8 @@ class NODE_EDITOR_PUBLIC DefaultHorizontalNodeGeometry : public AbstractNodeGeom DefaultHorizontalNodeGeometry(AbstractGraphModel &graphModel); public: + QRectF boundingRect(NodeId const nodeId) const override; + QSize size(NodeId const nodeId) const override; void recomputeSize(NodeId const nodeId) const override; diff --git a/include/QtNodes/internal/DefaultVerticalNodeGeometry.hpp b/include/QtNodes/internal/DefaultVerticalNodeGeometry.hpp index ae9b62876..ce4dd9f17 100644 --- a/include/QtNodes/internal/DefaultVerticalNodeGeometry.hpp +++ b/include/QtNodes/internal/DefaultVerticalNodeGeometry.hpp @@ -15,6 +15,8 @@ class NODE_EDITOR_PUBLIC DefaultVerticalNodeGeometry : public AbstractNodeGeomet DefaultVerticalNodeGeometry(AbstractGraphModel &graphModel); public: + QRectF boundingRect(NodeId const nodeId) const override; + QSize size(NodeId const nodeId) const override; void recomputeSize(NodeId const nodeId) const override; diff --git a/src/AbstractNodeGeometry.cpp b/src/AbstractNodeGeometry.cpp index 034f4cf03..f6c893df7 100644 --- a/src/AbstractNodeGeometry.cpp +++ b/src/AbstractNodeGeometry.cpp @@ -15,22 +15,6 @@ AbstractNodeGeometry::AbstractNodeGeometry(AbstractGraphModel &graphModel) // } -QRectF AbstractNodeGeometry::boundingRect(NodeId const nodeId) const -{ - QSize s = size(nodeId); - - double ratio = 0.20; - - int widthMargin = s.width() * ratio; - int heightMargin = s.height() * ratio; - - QMargins margins(widthMargin, heightMargin, widthMargin, heightMargin); - - QRectF r(QPointF(0, 0), s); - - return r.marginsAdded(margins); -} - QPointF AbstractNodeGeometry::portScenePosition(NodeId const nodeId, PortType const portType, PortIndex const index, diff --git a/src/DefaultHorizontalNodeGeometry.cpp b/src/DefaultHorizontalNodeGeometry.cpp index 466c5ef34..f48dcf312 100644 --- a/src/DefaultHorizontalNodeGeometry.cpp +++ b/src/DefaultHorizontalNodeGeometry.cpp @@ -23,6 +23,18 @@ DefaultHorizontalNodeGeometry::DefaultHorizontalNodeGeometry(AbstractGraphModel _portSize = _fontMetrics.height(); } +QRectF DefaultHorizontalNodeGeometry::boundingRect(NodeId const nodeId) const +{ + QSize s = size(nodeId); + + qreal marginSize = 2.0 * _portSpasing; + QMargins margins(marginSize, marginSize, marginSize, marginSize); + + QRectF r(QPointF(0, 0), s); + + return r.marginsAdded(margins); +} + QSize DefaultHorizontalNodeGeometry::size(NodeId const nodeId) const { return _graphModel.nodeData(nodeId, NodeRole::Size); diff --git a/src/DefaultVerticalNodeGeometry.cpp b/src/DefaultVerticalNodeGeometry.cpp index 0254028ed..f20617f25 100644 --- a/src/DefaultVerticalNodeGeometry.cpp +++ b/src/DefaultVerticalNodeGeometry.cpp @@ -23,6 +23,18 @@ DefaultVerticalNodeGeometry::DefaultVerticalNodeGeometry(AbstractGraphModel &gra _portSize = _fontMetrics.height(); } +QRectF DefaultVerticalNodeGeometry::boundingRect(NodeId const nodeId) const +{ + QSize s = size(nodeId); + + qreal marginSize = 2.0 * _portSpasing; + QMargins margins(marginSize, marginSize, marginSize, marginSize); + + QRectF r(QPointF(0, 0), s); + + return r.marginsAdded(margins); +} + QSize DefaultVerticalNodeGeometry::size(NodeId const nodeId) const { return _graphModel.nodeData(nodeId, NodeRole::Size);