Added Line Iterator.
This commit is contained in:
parent
e33112dcb0
commit
c21bcf2a80
79
app/src/main/java/fr/iutfbleau/sae/LineIterator.java
Normal file
79
app/src/main/java/fr/iutfbleau/sae/LineIterator.java
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
package fr.iutfbleau.sae;
|
||||||
|
|
||||||
|
import android.graphics.Point;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@code LineIterator} is an iterator that iterates over the {@code Cell}s of a
|
||||||
|
* {@code Line}.
|
||||||
|
*
|
||||||
|
* @autor Alexeï Kadir, Lyanis Souidi, Hugo Dimitrijevic
|
||||||
|
* @version 1.0
|
||||||
|
*/
|
||||||
|
public class LineIterator implements Iterator<Cell> {
|
||||||
|
/**
|
||||||
|
* The {@code Line} to iterate over.
|
||||||
|
*/
|
||||||
|
private final Line line;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The difference between the x-coordinates of the start and end {@code Cell}s
|
||||||
|
* of the {@code Line}.
|
||||||
|
*/
|
||||||
|
private final int dx;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The difference between the y-coordinates of the start and end {@code Cell}s
|
||||||
|
* of the {@code Line}.
|
||||||
|
*/
|
||||||
|
private final int dy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The index of the next {@code Cell} to return.
|
||||||
|
*/
|
||||||
|
private int index;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new {@code LineIterator} that iterates over the specified
|
||||||
|
* {@code Line}.
|
||||||
|
*
|
||||||
|
* @param line The {@code Line} to iterate over.
|
||||||
|
*/
|
||||||
|
public LineIterator(Line line) {
|
||||||
|
this.line = line;
|
||||||
|
|
||||||
|
this.dx = this.line.getEnd().x - this.line.getStart().x;
|
||||||
|
this.dy = this.line.getEnd().y - this.line.getStart().y;
|
||||||
|
|
||||||
|
this.index = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if there is a next {@code Cell} to return.
|
||||||
|
*
|
||||||
|
* @return {@code true} if there is a next {@code Cell} to return, {@code false}
|
||||||
|
* otherwise.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean hasNext() {
|
||||||
|
return this.index < 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the next {@code Cell} of the {@code Line}.
|
||||||
|
*
|
||||||
|
* @return The next {@code Cell} of the {@code Line}.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Cell next() {
|
||||||
|
Cell cell = this.line.getStart();
|
||||||
|
|
||||||
|
cell.x += Integer.signum(this.dx) * this.index;
|
||||||
|
cell.y += Integer.signum(this.dy) * this.index;
|
||||||
|
|
||||||
|
this.index++;
|
||||||
|
|
||||||
|
return cell;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user