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