From dea48d61df84c88996b2620714076c2826b03390 Mon Sep 17 00:00:00 2001 From: Charlie Tsai Date: Thu, 2 Mar 2017 18:09:56 +0000 Subject: [PATCH] Implement drawPoint and drawPoints of BaseCanvas_Delegate Test: Layoutlib tests Change-Id: Ic6d81b9581db9dab4ecbacb8f08ab41e0077bab0 --- .../android/graphics/BaseCanvas_Delegate.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/tools/layoutlib/bridge/src/android/graphics/BaseCanvas_Delegate.java b/tools/layoutlib/bridge/src/android/graphics/BaseCanvas_Delegate.java index df858067ba045..b1e71b241f149 100644 --- a/tools/layoutlib/bridge/src/android/graphics/BaseCanvas_Delegate.java +++ b/tools/layoutlib/bridge/src/android/graphics/BaseCanvas_Delegate.java @@ -161,17 +161,22 @@ public class BaseCanvas_Delegate { @LayoutlibDelegate /*package*/ static void nDrawPoint(long nativeCanvas, float x, float y, long nativePaint) { - // FIXME - Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED, - "Canvas.drawPoint is not supported.", null, null /*data*/); + // TODO: need to support the attribute (e.g. stroke width) of paint + draw(nativeCanvas, nativePaint, false /*compositeOnly*/, false /*forceSrcMode*/, + (graphics, paintDelegate) -> graphics.fillRect((int)x, (int)y, 1, 1)); } @LayoutlibDelegate /*package*/ static void nDrawPoints(long nativeCanvas, float[] pts, int offset, int count, long nativePaint) { - // FIXME - Bridge.getLog().fidelityWarning(LayoutLog.TAG_UNSUPPORTED, - "Canvas.drawPoint is not supported.", null, null /*data*/); + if (offset < 0 || count < 0 || offset + count > pts.length) { + throw new IllegalArgumentException("Invalid argument set"); + } + // ignore the last point if the count is odd (It means it is not paired). + count = (count >> 1) << 1; + for (int i = offset; i < offset + count; i += 2) { + nDrawPoint(nativeCanvas, pts[i], pts[i + 1], nativePaint); + } } @LayoutlibDelegate