ShadowCanvas.java revision 93a1ab50e8a7374d3f500c45052ddad66726c923
156a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richardpackage com.xtremelabs.droidsugar.fakes;
256a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard
356a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richardimport android.graphics.Canvas;
456a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richardimport android.graphics.Paint;
556a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richardimport android.graphics.Path;
656a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richardimport com.xtremelabs.droidsugar.util.Implements;
756a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard
832c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richardimport java.util.ArrayList;
932c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richardimport java.util.List;
1032c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard
1156a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard@SuppressWarnings({"UnusedDeclaration"})
1256a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard@Implements(Canvas.class)
1356a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richardpublic class FakeCanvas {
1432c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard    private List<PaintEvents> pathPaintEvents = new ArrayList<PaintEvents>();
1593a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin    public Paint drawnPaint;
166570210d924d13ee284f456b8b1db6fc30f12937Chee Wong & Ryan Richard    public Paint circlePaint;
176570210d924d13ee284f456b8b1db6fc30f12937Chee Wong & Ryan Richard    public float circleCenterX;
186570210d924d13ee284f456b8b1db6fc30f12937Chee Wong & Ryan Richard    public float circleCenterY;
196570210d924d13ee284f456b8b1db6fc30f12937Chee Wong & Ryan Richard    public float circleRadius;
2032c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard    public boolean drewSomethingAfterCircle;
2156a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard
2293a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin    public void drawPaint(Paint paint) {
2393a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin        drawnPaint = paint;
2493a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin    }
2593a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin
2656a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard    public void drawPath(Path path, Paint paint) {
2732c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard        pathPaintEvents.add(new PaintEvents(path, paint));
2832c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard        if(hasDrawnCircle()) {
2932c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard            drewSomethingAfterCircle = true;
3032c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard        }
316570210d924d13ee284f456b8b1db6fc30f12937Chee Wong & Ryan Richard    }
326570210d924d13ee284f456b8b1db6fc30f12937Chee Wong & Ryan Richard
336570210d924d13ee284f456b8b1db6fc30f12937Chee Wong & Ryan Richard    public void drawCircle(float cx, float cy, float radius, Paint paint) {
346570210d924d13ee284f456b8b1db6fc30f12937Chee Wong & Ryan Richard        circleCenterX = cx;
356570210d924d13ee284f456b8b1db6fc30f12937Chee Wong & Ryan Richard        circleCenterY = cy;
366570210d924d13ee284f456b8b1db6fc30f12937Chee Wong & Ryan Richard        circleRadius = radius;
376570210d924d13ee284f456b8b1db6fc30f12937Chee Wong & Ryan Richard        circlePaint = paint;
3832c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard        drewSomethingAfterCircle = false;
3932c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard    }
4032c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard
4132c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard    public int getPathPaintCount() {
4232c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard        return pathPaintEvents.size();
4332c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard    }
4432c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard
4532c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard    public boolean hasDrawnPath() {
4632c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard        return getPathPaintCount() > 0;
4732c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard    }
4832c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard
4932c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard    public boolean hasDrawnCircle() {
5032c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard        return circlePaint != null;
5132c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard    }
5232c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard
5332c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard    public Paint getDrawnPathPaint(int i) {
5432c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard        return pathPaintEvents.get(i).pathPaint;
5532c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard    }
5632c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard
5732c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard    public Path getDrawnPath(int i) {
5832c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard        return pathPaintEvents.get(i).drawnPath;
5932c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard    }
6032c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard
6132c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard    private static class PaintEvents {
6232c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard        private Path drawnPath;
6332c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard        private Paint pathPaint;
6432c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard
6532c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard        PaintEvents(Path drawnPath, Paint pathPaint) {
6632c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard            this.drawnPath = drawnPath;
6732c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard            this.pathPaint = pathPaint;
6832c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard        }
6956a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard    }
7056a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard}
71