diff options
author | Romain Guy <romainguy@google.com> | 2011-01-20 19:07:28 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-01-20 19:07:28 -0800 |
commit | 99d49118b857df4051a864b35254e275bc8a68b6 (patch) | |
tree | a1fba1440ba3a151c8241e83d42f3e4f35f8d07e /core/java/android/view | |
parent | 055e56ee1bf62d9dc97ba3b483c79312e2bb2beb (diff) | |
parent | 5a7b466a2b4b7ced739bd5c31e022de61650545a (diff) | |
download | frameworks_base-99d49118b857df4051a864b35254e275bc8a68b6.zip frameworks_base-99d49118b857df4051a864b35254e275bc8a68b6.tar.gz frameworks_base-99d49118b857df4051a864b35254e275bc8a68b6.tar.bz2 |
Merge "Add support for drawBitmapMesh()." into honeycomb
Diffstat (limited to 'core/java/android/view')
-rw-r--r-- | core/java/android/view/GLES20Canvas.java | 25 |
1 files changed, 24 insertions, 1 deletions
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); |