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