1320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy/*
2320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy * Copyright (C) 2010 The Android Open Source Project
3320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy *
4320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy * Licensed under the Apache License, Version 2.0 (the "License");
5320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy * you may not use this file except in compliance with the License.
6320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy * You may obtain a copy of the License at
7320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy *
8320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy *      http://www.apache.org/licenses/LICENSE-2.0
9320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy *
10320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy * Unless required by applicable law or agreed to in writing, software
11320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy * distributed under the License is distributed on an "AS IS" BASIS,
12320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy * See the License for the specific language governing permissions and
14320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy * limitations under the License.
15320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy */
16320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy
17320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guypackage com.android.test.hwui;
18320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy
19320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guyimport android.app.Activity;
20320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guyimport android.content.Context;
21320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guyimport android.graphics.Canvas;
22320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guyimport android.graphics.Paint;
23320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guyimport android.graphics.Path;
24320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guyimport android.os.Bundle;
25320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guyimport android.view.View;
26320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guyimport android.widget.ScrollView;
27320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy
28320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy@SuppressWarnings({"UnusedDeclaration"})
29320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guypublic class TextPathActivity extends Activity {
30320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy    @Override
31320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy    protected void onCreate(Bundle savedInstanceState) {
32320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy        super.onCreate(savedInstanceState);
33320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy
34320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy        ScrollView scroller = new ScrollView(this);
35320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy        scroller.addView(new CustomTextView(this));
36320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy        setContentView(scroller);
37320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy    }
38320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy
39320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy    static class CustomTextView extends View {
40320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy        private final Paint mHugePaint;
41320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy
42320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy        CustomTextView(Context c) {
43320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy            super(c);
44320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy
45320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy            mHugePaint = new Paint();
46320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy            mHugePaint.setAntiAlias(true);
47320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy            mHugePaint.setColor(0xff000000);
48320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy            mHugePaint.setTextSize(300f);
49320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy        }
50320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy
51320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy        @Override
52320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
53320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy            setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), 3000);
54320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy        }
55320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy
56320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy        @Override
57320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy        protected void onDraw(Canvas canvas) {
58320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy            super.onDraw(canvas);
59320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy            canvas.drawRGB(255, 255, 255);
60320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy
61320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy            Path path = new Path();
62320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy
63320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy            canvas.translate(100.0f, 300.0f);
64320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy            drawTextAsPath(canvas, "Hello", path);
65320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy
66320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy            canvas.translate(0.0f, 400.0f);
67320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy            drawTextAsPath(canvas, "OpenGL", path);
68320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy        }
69320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy
70320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy        private void drawTextAsPath(Canvas canvas, String text, Path path) {
71320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy            int count = text.length();
72320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy            mHugePaint.getTextPath(text, 0, count, 0, 0, path);
73320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy            path.close();
74320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy            canvas.drawPath(path, mHugePaint);
75320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy        }
76320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy    }
77320d46bf844b84351cb80c5d4a4768d86447ac81Romain Guy}
78