widgetOffset method

Offset widgetOffset(
  1. Size originSize
)

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);
    }
  }
}