1b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy/* 2b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy * Copyright (C) 2011 The Android Open Source Project 3b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy * 4b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 5b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy * you may not use this file except in compliance with the License. 6b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy * You may obtain a copy of the License at 7b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy * 8b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy * http://www.apache.org/licenses/LICENSE-2.0 9b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy * 10b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy * Unless required by applicable law or agreed to in writing, software 11b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy * distributed under the License is distributed on an "AS IS" BASIS, 12b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy * See the License for the specific language governing permissions and 14b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy * limitations under the License. 15b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy */ 16b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 17b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guypackage com.android.test.hwui; 18b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 19b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guyimport android.app.Activity; 20b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guyimport android.content.Context; 21b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guyimport android.graphics.Bitmap; 22b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guyimport android.graphics.BitmapFactory; 23b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guyimport android.graphics.Canvas; 24b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guyimport android.graphics.Paint; 25b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guyimport android.os.Bundle; 26b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guyimport android.view.View; 27b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 28b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy@SuppressWarnings({"UnusedDeclaration"}) 29b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guypublic class BitmapMeshLayerActivity extends Activity { 30b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy @Override 31b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy protected void onCreate(Bundle savedInstanceState) { 32b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy super.onCreate(savedInstanceState); 33b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy final BitmapMeshView view = new BitmapMeshView(this); 34b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy view.setLayerType(View.LAYER_TYPE_HARDWARE, null); 35b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy setContentView(view); 36b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy } 37b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 38b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy static class BitmapMeshView extends View { 39b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy private Paint mBitmapPaint; 40b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy private final Bitmap mBitmap1; 41b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy private float[] mVertices; 42b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy private int[] mColors; 43b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 44b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy BitmapMeshView(Context c) { 45b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy super(c); 46b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 47b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy mBitmap1 = BitmapFactory.decodeResource(c.getResources(), R.drawable.sunset1); 48b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 49b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy final float width = mBitmap1.getWidth() / 3.0f; 50b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy final float height = mBitmap1.getHeight() / 3.0f; 51b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 52b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy mVertices = new float[] { 53b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 0.0f, 0.0f, width, 0.0f, width * 2, 0.0f, width * 3, 0.0f, 54b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 0.0f, height, width, height, width * 2, height, width * 4, height, 55b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 0.0f, height * 2, width, height * 2, width * 2, height * 2, width * 3, height * 2, 56b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 0.0f, height * 4, width, height * 4, width * 2, height * 4, width * 4, height * 4, 57b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy }; 58b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 59b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy mColors = new int[] { 60b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 0xffff0000, 0xff00ff00, 0xff0000ff, 0xffff0000, 61b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 0xff0000ff, 0xffff0000, 0xff00ff00, 0xff00ff00, 62b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 0xff00ff00, 0xff0000ff, 0xffff0000, 0xff00ff00, 63b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 0x00ff0000, 0x0000ff00, 0x000000ff, 0x00ff0000, 64b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy }; 65b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy } 66b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 67b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy @Override 68b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy protected void onDraw(Canvas canvas) { 69b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy super.onDraw(canvas); 70b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 71b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy canvas.translate(100, 100); 72b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy canvas.drawBitmapMesh(mBitmap1, 3, 3, mVertices, 0, null, 0, null); 73b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy 74b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy canvas.translate(400, 0); 75b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy canvas.drawBitmapMesh(mBitmap1, 3, 3, mVertices, 0, mColors, 0, null); 76b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy } 77b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy } 78b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0Romain Guy} 79