getTotalOffsets property

List<Offset> getTotalOffsets

get all the offsets that fell in a drawn line

Implementation

List<Offset> get getTotalOffsets {
  Offset firstOffset = offsets.first.getSmallerOffset;
  Offset lastOffset = offsets.last.getSmallerOffset;

  if (firstOffset == lastOffset) {
    return [firstOffset, lastOffset];
  } else if (firstOffset.dx == lastOffset.dx) {
    ///xSign indicates the draw direction when the line is horizontal
    xSign = (lastOffset.dy - firstOffset.dy) ~/
        (firstOffset.dy - lastOffset.dy).abs();

    return List.generate((firstOffset.dy - lastOffset.dy).abs().toInt() + 1,
        (index) => Offset(firstOffset.dx, firstOffset.dy + index * xSign));
  } else if (firstOffset.dy == lastOffset.dy) {
    ///ySign indicates the draw direction when the line is vertical
    ySign = (lastOffset.dx - firstOffset.dx) ~/
        (firstOffset.dx - lastOffset.dx).abs();
    return List.generate((firstOffset.dx - lastOffset.dx).abs().toInt() + 1,
        (index) => Offset(firstOffset.dx + index * ySign, firstOffset.dy));
  } else {
    ///xSign and ySIgn both indicates the draw direction when the line is cross towards 4 corners
    ySign = (lastOffset.dy - firstOffset.dy) ~/
        (firstOffset.dy - lastOffset.dy).abs();

    xSign = (lastOffset.dx - firstOffset.dx) ~/
        (firstOffset.dx - lastOffset.dx).abs();
    return List.generate(
        (firstOffset.dy - lastOffset.dy).abs().toInt() + 1,
        (index) => Offset(
            firstOffset.dx + index * xSign, firstOffset.dy + index * ySign));
  }
}