From 5a7b466a2b4b7ced739bd5c31e022de61650545a Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Thu, 20 Jan 2011 19:09:30 -0800 Subject: Add support for drawBitmapMesh(). Change-Id: Ic77f9c534bb90dc7b9458299544bd50b8b6ae6a5 --- core/java/android/view/GLES20Canvas.java | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'core/java/android/view') diff --git a/core/java/android/view/GLES20Canvas.java b/core/java/android/view/GLES20Canvas.java index d82f051..e47dc93 100644 --- a/core/java/android/view/GLES20Canvas.java +++ b/core/java/android/view/GLES20Canvas.java @@ -630,9 +630,32 @@ class GLES20Canvas extends HardwareCanvas { @Override public void drawBitmapMesh(Bitmap bitmap, int meshWidth, int meshHeight, float[] verts, int vertOffset, int[] colors, int colorOffset, Paint paint) { - // TODO: Implement + if (meshWidth < 0 || meshHeight < 0 || vertOffset < 0 || colorOffset < 0) { + throw new ArrayIndexOutOfBoundsException(); + } + + if (meshWidth == 0 || meshHeight == 0) { + return; + } + + final int count = (meshWidth + 1) * (meshHeight + 1); + checkRange(verts.length, vertOffset, count * 2); + + // TODO: Colors are ignored for now + colors = null; + colorOffset = 0; + + boolean hasColorFilter = paint != null && setupColorFilter(paint); + final int nativePaint = paint == null ? 0 : paint.mNativePaint; + nDrawBitmapMesh(mRenderer, bitmap.mNativeBitmap, bitmap.mBuffer, meshWidth, meshHeight, + verts, vertOffset, colors, colorOffset, nativePaint); + if (hasColorFilter) nResetModifiers(mRenderer); } + private native void nDrawBitmapMesh(int renderer, int bitmap, byte[] buffer, + int meshWidth, int meshHeight, float[] verts, int vertOffset, + int[] colors, int colorOffset, int paint); + @Override public void drawCircle(float cx, float cy, float radius, Paint paint) { boolean hasModifier = setupModifiers(paint); -- cgit v1.1