am 60c06092: Merge "Fix bitmap meshes to work in display lists." into honeycomb

* commit '60c060929f41447c5ac3a75c1cd6cfb60b139200':
  Fix bitmap meshes to work in display lists.
This commit is contained in:
Romain Guy
2011-01-23 16:35:56 -08:00
committed by Android Git Automerger
4 changed files with 31 additions and 14 deletions

View File

@@ -1240,7 +1240,11 @@ public class Canvas {
VertexMode(int nativeInt) {
this.nativeInt = nativeInt;
}
final int nativeInt;
/**
* @hide
*/
public final int nativeInt;
}
/**

View File

@@ -325,6 +325,7 @@ void DisplayList::replay(OpenGLRenderer& renderer, uint32_t level) {
renderer.drawBitmapMesh(bitmap, meshWidth, meshHeight, vertices, colors, getPaint());
}
break;
case DrawPatch: {
int32_t* xDivs = NULL;
int32_t* yDivs = NULL;

View File

@@ -1094,10 +1094,10 @@ void OpenGLRenderer::drawBitmapMesh(SkBitmap* bitmap, int meshWidth, int meshHei
SkXfermode::Mode mode;
getAlphaAndMode(paint, &alpha, &mode);
// TODO: Support the colors array
const uint32_t count = meshWidth * meshHeight * 6;
TextureVertex mesh[count];
// TODO: Support the colors array
TextureVertex mesh[count];
TextureVertex* vertex = mesh;
for (int32_t y = 0; y < meshHeight; y++) {
for (int32_t x = 0; x < meshWidth; x++) {

View File

@@ -22,10 +22,7 @@ import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
@SuppressWarnings({"UnusedDeclaration"})
@@ -41,11 +38,30 @@ public class BitmapMeshActivity extends Activity {
static class BitmapMeshView extends View {
private Paint mBitmapPaint;
private final Bitmap mBitmap1;
private float[] mVertices;
private int[] mColors;
BitmapMeshView(Context c) {
super(c);
mBitmap1 = BitmapFactory.decodeResource(c.getResources(), R.drawable.sunset1);
final float width = mBitmap1.getWidth() / 3.0f;
final float height = mBitmap1.getHeight() / 3.0f;
mVertices = new float[] {
0.0f, 0.0f, width, 0.0f, width * 2, 0.0f, width * 3, 0.0f,
0.0f, height, width, height, width * 2, height, width * 4, height,
0.0f, height * 2, width, height * 2, width * 2, height * 2, width * 3, height * 2,
0.0f, height * 4, width, height * 4, width * 2, height * 4, width * 4, height * 4,
};
mColors = new int[] {
0xffff0000, 0xff00ff00, 0xff0000ff, 0xffff0000,
0xff0000ff, 0xffff0000, 0xff00ff00, 0xff00ff00,
0xff00ff00, 0xff0000ff, 0xffff0000, 0xff00ff00,
0x00ff0000, 0x0000ff00, 0x000000ff, 0x00ff0000,
};
}
@Override
@@ -54,14 +70,10 @@ public class BitmapMeshActivity extends Activity {
canvas.drawARGB(255, 255, 255, 255);
canvas.translate(100, 100);
final float width = mBitmap1.getWidth() / 3.0f;
final float height = mBitmap1.getHeight() / 3.0f;
canvas.drawBitmapMesh(mBitmap1, 3, 3, new float[] {
0.0f, 0.0f, width, 0.0f, width * 2, 0.0f, width * 3, 0.0f,
0.0f, height, width, height, width * 2, height, width * 4, height,
0.0f, height * 2, width, height * 2, width * 2, height * 2, width * 3, height * 2,
0.0f, height * 4, width, height * 4, width * 2, height * 4, width * 4, height * 4,
}, 0, null, 0, null);
canvas.drawBitmapMesh(mBitmap1, 3, 3, mVertices, 0, null, 0, null);
canvas.translate(400, 0);
canvas.drawBitmapMesh(mBitmap1, 3, 3, mVertices, 0, mColors, 0, null);
}
}
}