Replace stream operation with simple iteration

Although the stream approach is elegant, we already have a simple loop
iterating over the rectangles which we can reuse for finding the
starting rectangle and save the overhead of the stream / additional
iteration over the rectangles.

Test: manual - verify smart select still works
Change-Id: I4e4195ded4268a7c18ad1b0bc352a9c273396932
This commit is contained in:
Petar Šegina
2017-09-27 20:18:03 +01:00
parent 2a791ee46c
commit cb2fdb8bb2

View File

@@ -374,21 +374,21 @@ final class SmartSelectSprite {
final List<RoundedRectangleShape> shapes = new LinkedList<>();
final List<Animator> cornerAnimators = new LinkedList<>();
final RectF centerRectangle = destinationRectangles
.stream()
.filter((r) -> contains(r, start))
.findFirst()
.orElseThrow(() -> new IllegalArgumentException(
"Center point is not inside any of the rectangles!"));
RectF centerRectangle = null;
int startingOffset = 0;
for (RectF rectangle : destinationRectangles) {
if (rectangle.equals(centerRectangle)) {
if (contains(rectangle, start)) {
centerRectangle = rectangle;
break;
}
startingOffset += rectangle.width();
}
if (centerRectangle == null) {
throw new IllegalArgumentException("Center point is not inside any of the rectangles!");
}
startingOffset += start.x - centerRectangle.left;
final float centerRectangleHalfHeight = centerRectangle.height() / 2;