ShadowPath.java revision 33873d2b41a5cd2597b20a4e88eb8942944c0f23
133873d2b41a5cd2597b20a4e88eb8942944c0f23Tyler Schultzpackage com.xtremelabs.robolectric.shadows;
256a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard
356a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richardimport android.graphics.Path;
4a2043a8fff01f3e2d9a5e30dd1cf5fb6a5342f4dTyler Schultzimport com.xtremelabs.robolectric.util.Implementation;
5a2043a8fff01f3e2d9a5e30dd1cf5fb6a5342f4dTyler Schultzimport com.xtremelabs.robolectric.util.Implements;
656a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard
756a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richardimport java.util.ArrayList;
856a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richardimport java.util.List;
956a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard
1056a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard@SuppressWarnings({"UnusedDeclaration"})
1156a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard@Implements(Path.class)
12afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williamspublic class ShadowPath {
1356a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard    private List<Point> points = new ArrayList<Point>();
1456a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard    public Point wasMovedTo;
1556a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard
16de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
1756a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard    public void moveTo(float x, float y) {
1856a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard        Point p = new Point(x, y);
1956a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard        points.add(p);
2056a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard        wasMovedTo = p;
2156a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard    }
2256a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard
23de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams    @Implementation
2456a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard    public void lineTo(float x, float y) {
2556a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard        points.add(new Point(x, y));
2656a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard    }
2756a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard
2856a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard    public List<Point> getPoints() {
2956a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard        return points;
3056a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard    }
3156a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard
3256a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard    public static class Point {
3356a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard        float x, y;
3456a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard
3556a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard        public Point(float x, float y) {
3656a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard            this.x = x;
3756a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard            this.y = y;
3856a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard        }
3956a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard
4056a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard        @Override
4156a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard        public boolean equals(Object o) {
4256a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard            if (this == o) return true;
4356a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard            if (o == null || getClass() != o.getClass()) return false;
4456a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard
4556a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard            Point point = (Point) o;
4656a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard
4756a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard            if (Float.compare(point.x, x) != 0) return false;
4856a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard            if (Float.compare(point.y, y) != 0) return false;
4956a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard
5056a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard            return true;
5156a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard        }
5256a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard
5356a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard        @Override
5456a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard        public int hashCode() {
5556a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard            int result = (x != +0.0f ? Float.floatToIntBits(x) : 0);
5656a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard            result = 31 * result + (y != +0.0f ? Float.floatToIntBits(y) : 0);
5756a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard            return result;
5856a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard        }
5956a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard
6056a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard        @Override
6156a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard        public String toString() {
6256a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard            return "Point(" + x + "," + y + ")";
6356a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard        }
6456a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard    }
6556a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard}
66