1f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy/*
2f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * Copyright (C) 2010 The Android Open Source Project
3f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy *
4f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * Licensed under the Apache License, Version 2.0 (the "License");
5f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * you may not use this file except in compliance with the License.
6f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * You may obtain a copy of the License at
7f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy *
8f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy *      http://www.apache.org/licenses/LICENSE-2.0
9f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy *
10f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * Unless required by applicable law or agreed to in writing, software
11f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * distributed under the License is distributed on an "AS IS" BASIS,
12f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * See the License for the specific language governing permissions and
14f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * limitations under the License.
15f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy */
16f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy
17f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guypackage com.android.test.hwui;
18f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy
19f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.app.Activity;
20f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.content.Context;
21f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.graphics.Bitmap;
22f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.graphics.BitmapFactory;
23f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.graphics.Canvas;
24f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.graphics.Paint;
25f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.graphics.Path;
26f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.graphics.PorterDuff;
27f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.graphics.PorterDuffXfermode;
28f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.os.Bundle;
29f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.view.View;
30f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy
31f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy@SuppressWarnings({"UnusedDeclaration"})
32f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guypublic class ClearActivity extends Activity {
33f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy    @Override
34f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy    protected void onCreate(Bundle savedInstanceState) {
35f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy        super.onCreate(savedInstanceState);
36f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy        final PathsView view = new PathsView(this);
37f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy        setContentView(view);
38f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy    }
39f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy
40f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy    public static class PathsView extends View {
41f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy        private final Bitmap mBitmap1;
42f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy        private final Paint mClearPaint;
43f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy        private final Path mPath;
44f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy
45f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy        public PathsView(Context c) {
46f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy            super(c);
47f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy
48f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy            mBitmap1 = BitmapFactory.decodeResource(c.getResources(), R.drawable.sunset2);
49f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy
50f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy            mClearPaint = new Paint();
51f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy            mClearPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
52f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy            mClearPaint.setAntiAlias(true);
53f09ef51889f75289b041f9e9f949b7b82ed5b686Romain Guy            mClearPaint.setColor(0x0000ff00);
54f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy            mClearPaint.setStrokeWidth(15.0f);
55f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy            mClearPaint.setStyle(Paint.Style.FILL);
56f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy            mClearPaint.setTextSize(32.0f);
57f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy
58f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy            mPath = new Path();
59f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy            mPath.moveTo(0.0f, 0.0f);
60f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy            mPath.cubicTo(0.0f, 0.0f, 100.0f, 150.0f, 100.0f, 200.0f);
61f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy            mPath.cubicTo(100.0f, 200.0f, 50.0f, 300.0f, -80.0f, 200.0f);
62f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy            mPath.cubicTo(-80.0f, 200.0f, 100.0f, 200.0f, 200.0f, 0.0f);
63f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy
64f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy        }
65f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy
66f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy        @Override
67f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy        protected void onDraw(Canvas canvas) {
68f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy            super.onDraw(canvas);
69f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy
70f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy            canvas.save(); {
71f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy                canvas.drawARGB(255, 255, 255, 255);
72f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy                canvas.drawRect(100.0f, 100.0f, 200.0f, 200.0f, mClearPaint);
73f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy                canvas.drawCircle(150.0f, 400.0f, 100.0f, mClearPaint);
74f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy                canvas.drawBitmap(mBitmap1, 400.0f, 100.0f, mClearPaint);
75f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy                canvas.save(); {
76f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy                    canvas.translate(400.0f, 400.0f);
77f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy                    canvas.drawPath(mPath, mClearPaint);
78f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy                }
79f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy                canvas.restore();
80f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy                canvas.drawText("OpenGLRenderer", 50.0f, 50.0f, mClearPaint);
8154be1cdf3d63095512120fa7ced5c16e462abffaRomain Guy                mClearPaint.setColor(0xff000000);
8254be1cdf3d63095512120fa7ced5c16e462abffaRomain Guy                canvas.drawRect(800.0f, 100.0f, 900.0f, 200.0f, mClearPaint);
8354be1cdf3d63095512120fa7ced5c16e462abffaRomain Guy                mClearPaint.setColor(0x0000ff00);
84f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy            }
85f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy            canvas.restore();
86f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy        }
87f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy    }
88f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy}
89