createRectPathAroundLine method

  1. @visibleForTesting
Path createRectPathAroundLine(
  1. Line line,
  2. double width
)

Creates a rect around a narrow line

Implementation

@visibleForTesting
Path createRectPathAroundLine(Line line, double width) {
  width = width / 2;
  final normalized = line.normalize();

  final verticalAngle = line.direction() + (math.pi / 2);
  final verticalDirection =
      Offset(math.cos(verticalAngle), math.sin(verticalAngle));

  final startPoint1 = Offset(
    line.from.dx -
        (normalized * (width / 2)).dx -
        (verticalDirection * width).dx,
    line.from.dy -
        (normalized * (width / 2)).dy -
        (verticalDirection * width).dy,
  );

  final startPoint2 = Offset(
    line.to.dx +
        (normalized * (width / 2)).dx -
        (verticalDirection * width).dx,
    line.to.dy +
        (normalized * (width / 2)).dy -
        (verticalDirection * width).dy,
  );

  final startPoint3 = Offset(
    startPoint2.dx + (verticalDirection * (width * 2)).dx,
    startPoint2.dy + (verticalDirection * (width * 2)).dy,
  );

  final startPoint4 = Offset(
    startPoint1.dx + (verticalDirection * (width * 2)).dx,
    startPoint1.dy + (verticalDirection * (width * 2)).dy,
  );

  return Path()
    ..moveTo(startPoint1.dx, startPoint1.dy)
    ..lineTo(startPoint2.dx, startPoint2.dy)
    ..lineTo(startPoint3.dx, startPoint3.dy)
    ..lineTo(startPoint4.dx, startPoint4.dy)
    ..lineTo(startPoint1.dx, startPoint1.dy);
}