65 Wt::WRectF basicRect = Wt::WRectF(
_out,
_in).normalized();
67 Wt::WRectF c1c2Rect = Wt::WRectF(points.first, points.second).normalized();
71 float const diam = connectionStyle.pointDiameter();
73 Wt::WRectF commonRect = basicRect.united(c1c2Rect);
75 Wt::WPointF
const cornerOffset(diam, diam);
77 Wt::WPointF topLeft(commonRect.topLeft().x() - cornerOffset.x(), commonRect.topLeft().y() - cornerOffset.y());
79 Wt::WPointF bottomRight(commonRect.bottomLeft().x() + 2 * cornerOffset.x(), commonRect.bottomLeft().y() + 2 * cornerOffset.y());
81 return Wt::WRectF(topLeft, bottomRight);
86 const double defaultOffset = 200;
88 double xDistance =
_in.x() -
_out.x();
90 double horizontalOffset = std::min(defaultOffset, std::abs(xDistance));
92 double verticalOffset = 0;
98 double yDistance =
_in.y() -
_out.y();
100 double vector = yDistance < 0 ? -1.0 : 1.0;
102 verticalOffset = std::min(defaultOffset, std::abs(yDistance)) * vector;
107 horizontalOffset *= ratioX;
109 Wt::WPointF c1(
_out.x() + horizontalOffset,
_out.y() + verticalOffset);
110 Wt::WPointF c2(
_in.x() - horizontalOffset,
_in.y() - verticalOffset);
112 return std::make_pair(c1, c2);
305 auto node =
getNode(attachedPort);
307 Wt::WTransform nodeSceneTransform = node->nodeGraphicsObject().sceneTransform();
309 Wt::WPointF pos = node->nodeGeometry().portScenePosition(attachedPortIndex,
347 auto& nodeWeak =
getNode(portType);
466 return model->dataType(portType, index);
488 return model->
dataType(portType, index);
514 std::shared_ptr<WtNodeData> emptyData;
521 std::shared_ptr<WtNodeData> deletedData =
nullptr;
std::function< SharedNodeData(SharedNodeData)> TypeConverter
static const int INVALID_PORT
PortType oppositePort(PortType port)
Wt::WRectF boundingRect() const
void moveEndPoint(PortType portType, Wt::WPointF const &offset)
void setEndPoint(PortType portType, Wt::WPointF const &point)
Wt::WPointF const & getEndPoint(PortType portType) const
std::pair< Wt::WPointF, Wt::WPointF > pointsC1C2() const
Graphic Object for connection. Adds itself to scene.
WtConnectionState _connectionState
void propagateData(std::shared_ptr< WtNodeData > nodeData) const
WtNode * getNode(PortType portType) const
WtConnectionGeometry _connectionGeometry
NodeDataType dataType(PortType portType) const
WtConnectionGraphicsObject & getConnectionGraphicsObject() const
void setTypeConverter(TypeConverter converter)
void clearNode(PortType portType)
void propagateDisconnectedData() const
PortType requiredPort() const
void setRequiredPort(PortType portType)
PortIndex getPortIndex(PortType portType) const
WtConnection(PortType portType, WtNode &node, PortIndex portIndex)
void propagateEmptyData() const
WtConnectionState const & connectionState() const
WtConnectionGeometry & connectionGeometry()
std::unique_ptr< WtConnectionGraphicsObject > _connectionGraphicsObject
void setGraphicsObject(std::unique_ptr< WtConnectionGraphicsObject > &&graphics)
void setNodeToPort(WtNode &node, PortType portType, PortIndex portIndex)
void removeFromNodes() const
WtNode * _lastHoveredNode
void resetLastHoveredNode()
void setLastHoveredNode(WtNode *node)
void interactWithNode(WtNode *node)
virtual NodeDataType dataType(PortType portType, PortIndex portIndex) const =0
WtNodeDataModel * nodeDataModel() const
static WtConnectionStyle const & connectionStyle()