widgetOffset method
Implementation
Offset widgetOffset(Size originSize) {
var node1Box = node1.box;
var node2Box = node2.box;
if (direction == Axis.horizontal) {
if ((node2Box.position.top + node2Box.size.height / 2) <
(node1Box.position.top + node1Box.size.height / 2)) {
_lineStart = Offset(
0,
node1Box.position.top -
node2Box.position.top -
node2Box.size.height / 2 +
node1Box.size.height / 2 +
triangleArrowHeight / 2);
_lineEnd = Offset(
node2Box.position.left -
node1Box.position.right +
node2Box.overflowPadding.left +
node1Box.overflowPadding.right,
triangleArrowHeight / 2);
return Offset(
node1Box.position.right - node1Box.overflowPadding.right,
node2Box.position.top +
node2Box.size.height / 2 -
triangleArrowHeight / 2);
} else {
_lineStart = Offset(0, triangleArrowHeight / 2);
_lineEnd = Offset(
node2Box.position.left -
node1Box.position.right +
node2Box.overflowPadding.left +
node1Box.overflowPadding.right,
node2Box.position.top -
node1Box.position.top -
node1Box.size.height / 2 +
node2Box.size.height / 2 +
triangleArrowHeight / 2);
return Offset(
node1Box.position.right - node1Box.overflowPadding.right,
node1Box.position.top +
node1Box.size.height / 2 -
triangleArrowHeight / 2);
}
} else {
if ((node2Box.position.left + node2Box.size.width / 2) <
(node1Box.position.left + node1Box.size.width / 2)) {
_lineStart = Offset(
node1Box.position.left -
node2Box.position.left -
node2Box.size.width / 2 +
node1Box.size.width / 2 +
triangleArrowHeight / 2,
0);
_lineEnd = Offset(
triangleArrowHeight / 2,
node2Box.position.top -
node1Box.position.bottom +
node2Box.overflowPadding.top +
node2Box.overflowPadding.bottom);
return Offset(
node2Box.position.left +
node2Box.size.width / 2 -
triangleArrowHeight / 2,
node1Box.position.bottom - node1Box.overflowPadding.bottom);
} else {
_lineStart = Offset(triangleArrowHeight / 2, 0);
_lineEnd = Offset(
node2Box.position.left -
node1Box.position.left -
node1Box.size.width / 2 +
node2Box.size.width / 2 +
triangleArrowHeight / 2,
node2Box.position.top -
node1Box.position.bottom +
node2Box.overflowPadding.top +
node1Box.overflowPadding.bottom);
return Offset(
node1Box.position.left +
node1Box.size.width / 2 -
triangleArrowHeight / 2,
node1Box.position.bottom - node1Box.overflowPadding.bottom);
}
}
}