summaryrefslogtreecommitdiffstats
path: root/core/java/android/view
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2011-01-20 19:07:28 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-01-20 19:07:28 -0800
commit99d49118b857df4051a864b35254e275bc8a68b6 (patch)
treea1fba1440ba3a151c8241e83d42f3e4f35f8d07e /core/java/android/view
parent055e56ee1bf62d9dc97ba3b483c79312e2bb2beb (diff)
parent5a7b466a2b4b7ced739bd5c31e022de61650545a (diff)
downloadframeworks_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.java25
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);