1d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy/*
2d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * Copyright (C) 2010 The Android Open Source Project
3d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy *
4d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * Licensed under the Apache License, Version 2.0 (the "License");
5d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * you may not use this file except in compliance with the License.
6d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * You may obtain a copy of the License at
7d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy *
8d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy *      http://www.apache.org/licenses/LICENSE-2.0
9d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy *
10d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * Unless required by applicable law or agreed to in writing, software
11d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * distributed under the License is distributed on an "AS IS" BASIS,
12d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * See the License for the specific language governing permissions and
14d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy * limitations under the License.
15d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy */
16d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
17f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guypackage com.android.test.hwui;
18d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
19d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.app.Activity;
20d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.content.Context;
21d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.graphics.Canvas;
22d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.graphics.Paint;
23d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.os.Bundle;
24d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guyimport android.view.View;
25d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
26d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy@SuppressWarnings({"UnusedDeclaration"})
27f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guypublic class NewLayersActivity extends Activity {
28d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy    @Override
29d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy    protected void onCreate(Bundle savedInstanceState) {
30d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy        super.onCreate(savedInstanceState);
31d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy        setContentView(new LayersView(this));
32d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy    }
33d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
34d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5Xavier Ducrohet    public static class LayersView extends View {
35d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy        private Paint mLayerPaint;
36d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy        private final Paint mRectPaint;
37d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
38d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5Xavier Ducrohet        public LayersView(Context c) {
39d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            super(c);
40d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
41d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mLayerPaint = new Paint();
428411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy            mLayerPaint.setAlpha(127);
43d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            mRectPaint = new Paint();
44f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guy            mRectPaint.setAntiAlias(true);
45f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guy            mRectPaint.setTextSize(24.0f);
46d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy        }
47d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
48d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy        @Override
49d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy        protected void onDraw(Canvas canvas) {
50d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            super.onDraw(canvas);
51f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guy            canvas.drawRGB(128, 255, 128);
52d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
538411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy            canvas.save();
54d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
558411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy            canvas.translate(140.0f, 100.0f);
568411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy            drawStuff(canvas, Canvas.ALL_SAVE_FLAG);
57d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
58f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guy            canvas.translate(0.0f, 200.0f);
598411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy            drawStuff(canvas, Canvas.HAS_ALPHA_LAYER_SAVE_FLAG);
60d38e776a3cc8cb53945cbebafbe6f6c2e3501fa5Xavier Ducrohet
618411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy            canvas.restore();
628411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy        }
638411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy
648411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy        private void drawStuff(Canvas canvas, int saveFlags) {
658411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy            int count = canvas.saveLayer(0.0f, 0.0f, 200.0f, 100.0f, mLayerPaint, saveFlags);
66d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
67f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guy            mRectPaint.setColor(0x7fff0000);
68f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guy            canvas.drawRect(-20.0f, -20.0f, 220.0f, 120.0f, mRectPaint);
69d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy
70f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guy            mRectPaint.setColor(0xff000000);
71f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guy            canvas.drawText("This is a very long string to overlap between layers and framebuffer",
72f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guy                    -100.0f, 50.0f, mRectPaint);
738411f336c786379c5a03106e9ed3bc8622b579a5Romain Guy
74d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy            canvas.restoreToCount(count);
75d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy        }
76d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy    }
77d55a86120dd1e8ebcc6906c9ffd463f7460348daRomain Guy}
78