15a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy/*
25a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy * Copyright (C) 2010 The Android Open Source Project
35a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy *
45a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy * Licensed under the Apache License, Version 2.0 (the "License");
55a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy * you may not use this file except in compliance with the License.
65a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy * You may obtain a copy of the License at
75a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy *
85a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy *      http://www.apache.org/licenses/LICENSE-2.0
95a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy *
105a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy * Unless required by applicable law or agreed to in writing, software
115a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy * distributed under the License is distributed on an "AS IS" BASIS,
125a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy * See the License for the specific language governing permissions and
145a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy * limitations under the License.
155a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy */
165a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy
175a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guypackage com.android.test.hwui;
185a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy
195a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guyimport android.app.Activity;
205a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guyimport android.content.Context;
215a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guyimport android.graphics.Bitmap;
225a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guyimport android.graphics.BitmapFactory;
235a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guyimport android.graphics.Canvas;
245a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guyimport android.graphics.Paint;
255a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guyimport android.os.Bundle;
265a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guyimport android.view.View;
275a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy
285a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy@SuppressWarnings({"UnusedDeclaration"})
295a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guypublic class BitmapMeshActivity extends Activity {
305a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy    @Override
315a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy    protected void onCreate(Bundle savedInstanceState) {
325a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy        super.onCreate(savedInstanceState);
335a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy        final BitmapMeshView view = new BitmapMeshView(this);
345a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy        setContentView(view);
355a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy    }
365a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy
375a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy    static class BitmapMeshView extends View {
385a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy        private Paint mBitmapPaint;
395a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy        private final Bitmap mBitmap1;
40a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy        private float[] mVertices;
41a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy        private int[] mColors;
425a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy
435a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy        BitmapMeshView(Context c) {
445a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy            super(c);
455a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy
465a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy            mBitmap1 = BitmapFactory.decodeResource(c.getResources(), R.drawable.sunset1);
47a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy
48a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy            final float width = mBitmap1.getWidth() / 3.0f;
49a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy            final float height = mBitmap1.getHeight() / 3.0f;
50a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy
51a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy            mVertices = new float[] {
52a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy                0.0f, 0.0f, width, 0.0f, width * 2, 0.0f, width * 3, 0.0f,
53a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy                0.0f, height, width, height, width * 2, height, width * 4, height,
54a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy                0.0f, height * 2, width, height * 2, width * 2, height * 2, width * 3, height * 2,
55a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy                0.0f, height * 4, width, height * 4, width * 2, height * 4, width * 4, height * 4,
56a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy            };
57a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy
58a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy            mColors = new int[] {
59a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy                0xffff0000, 0xff00ff00, 0xff0000ff, 0xffff0000,
60a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy                0xff0000ff, 0xffff0000, 0xff00ff00, 0xff00ff00,
61a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy                0xff00ff00, 0xff0000ff, 0xffff0000, 0xff00ff00,
62a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy                0x00ff0000, 0x0000ff00, 0x000000ff, 0x00ff0000,
63a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy            };
645a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy        }
655a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy
665a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy        @Override
675a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy        protected void onDraw(Canvas canvas) {
685a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy            super.onDraw(canvas);
695a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy
705a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy            canvas.drawARGB(255, 255, 255, 255);
71a92bb4dc9605c86b8773c929412af2dc242b1fa8Romain Guy
725a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy            canvas.translate(100, 100);
73a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy            canvas.drawBitmapMesh(mBitmap1, 3, 3, mVertices, 0, null, 0, null);
74a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy
75a92bb4dc9605c86b8773c929412af2dc242b1fa8Romain Guy            canvas.save();
76a92bb4dc9605c86b8773c929412af2dc242b1fa8Romain Guy            canvas.translate(0, 400);
77a92bb4dc9605c86b8773c929412af2dc242b1fa8Romain Guy            canvas.clipRect(0.0f, 0.0f, 80.0f, 80.0f);
78a92bb4dc9605c86b8773c929412af2dc242b1fa8Romain Guy            canvas.drawBitmapMesh(mBitmap1, 3, 3, mVertices, 0, null, 0, null);
79a92bb4dc9605c86b8773c929412af2dc242b1fa8Romain Guy            canvas.restore();
80a92bb4dc9605c86b8773c929412af2dc242b1fa8Romain Guy
81a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy            canvas.translate(400, 0);
82a566b7c3aada08d37cf08096c972e3e641bed773Romain Guy            canvas.drawBitmapMesh(mBitmap1, 3, 3, mVertices, 0, mColors, 0, null);
835a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy        }
845a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy    }
855a7b466a2b4b7ced739bd5c31e022de61650545aRomain Guy}
86