blob: 7173a85f73e7a0d63a1f2bd5461eaa6077d02c3e [file] [log] [blame]
Chet Haase5b0200b2011-04-13 17:58:08 -07001/*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.test.hwui;
18
19import android.animation.ObjectAnimator;
20import android.app.Activity;
21import android.content.Context;
22import android.graphics.Canvas;
23import android.graphics.Color;
24import android.graphics.Paint;
25import android.graphics.drawable.ColorDrawable;
26import android.os.Bundle;
27import android.view.View;
28import android.widget.FrameLayout;
29
30@SuppressWarnings({"UnusedDeclaration"})
31public class Lines2Activity extends Activity {
32 private ObjectAnimator mAnimator;
33
34 @Override
35 protected void onCreate(Bundle savedInstanceState) {
36 super.onCreate(savedInstanceState);
37 getWindow().setBackgroundDrawable(new ColorDrawable(0xff000000));
38 FrameLayout frame = new FrameLayout(this);
39 final LinesView gpuView = new LinesView(this, 0, Color.GREEN);
40 frame.addView(gpuView);
41 final LinesView swView = new LinesView(this, 400, Color.RED);
42 swView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
43 frame.addView(swView);
44 final LinesView hwBothView = new LinesView(this, 850, Color.GREEN);
Chet Haase8a5cc922011-04-26 07:28:09 -070045 // Don't actually need to render to a hw layer, but it's a good sanity-check that
46 // we're rendering to/from layers correctly
47 hwBothView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
Chet Haase5b0200b2011-04-13 17:58:08 -070048 frame.addView(hwBothView);
49 final LinesView swBothView = new LinesView(this, 854, Color.RED);
50 swBothView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
51 frame.addView(swBothView);
52 setContentView(frame);
53 }
54
55 @Override
56 protected void onDestroy() {
57 super.onDestroy();
58 }
59
60 public static class LinesView extends View {
61
62 private float mOffset;
63 private int mColor;
64 private float[] basePoints = {
65 120, 0, 120, 20, 120, 20, 125, 0, 130, 0, 132, 10
66 };
67 private float[] copyPoints = new float[12];
68
69 public LinesView(Context c, float offset, int color) {
70 super(c);
71 mOffset = offset;
72 mColor = color;
73 }
74
75 private void drawLines(Canvas canvas, Paint p, float xOffset, float yOffset) {
76 canvas.drawLine(10 + xOffset, yOffset, 10 + xOffset, 40 + yOffset, p);
77 canvas.drawLine(30 + xOffset, yOffset, 40 + xOffset, 40 + yOffset, p);
78 canvas.drawLine(40 + xOffset, yOffset, 75 + xOffset, 35 + yOffset, p);
79 canvas.drawLine(50 + xOffset, 5+ yOffset, 100 + xOffset, 15 + yOffset, p);
80 canvas.drawLine(60 + xOffset, yOffset, 110 + xOffset, 2 + yOffset, p);
81 canvas.drawLine(60 + xOffset, 40 + yOffset, 110 + xOffset, 40 + yOffset, p);
82 for (int i = 0; i < 12; i += 2) {
83 copyPoints[i] = basePoints[i] + xOffset;
84 copyPoints[i+1] = basePoints[i+1] + yOffset;
85 }
86 canvas.drawLines(copyPoints, 0, 12, p);
87 }
88
Chet Haase99585ad2011-05-02 15:00:16 -070089 private void drawVerticalLine(Canvas canvas, Paint p, float length, float x, float y) {
90 canvas.drawLine(x, y, x, y + length, p);
91 }
92
93 private void drawDiagonalLine(Canvas canvas, Paint p, float length, float x, float y) {
94 canvas.drawLine(x, y, x + length, y + length, p);
95 }
96
Chet Haase5b0200b2011-04-13 17:58:08 -070097 @Override
98 protected void onDraw(Canvas canvas) {
99 super.onDraw(canvas);
100 Paint p = new Paint();
101 p.setColor(mColor);
102 float yOffset = 10;
103
104 canvas.save();
105 drawLines(canvas, p, mOffset, yOffset);
106 canvas.scale(2, 2);
107 canvas.translate(60, 0);
108 drawLines(canvas, p, mOffset/2, yOffset/2);
109 canvas.restore();
110
111 yOffset +=100;
112 canvas.save();
113 p.setStrokeWidth(1);
114 drawLines(canvas, p, mOffset, yOffset);
115 canvas.scale(2, 2);
116 canvas.translate(60, 0);
117 drawLines(canvas, p, mOffset/2, yOffset/2);
118 canvas.restore();
119
120 yOffset += 100;
121 canvas.save();
122 p.setStrokeWidth(2);
123 drawLines(canvas, p, mOffset, yOffset);
124 canvas.scale(2, 2);
125 canvas.translate(60, 0);
126 drawLines(canvas, p, mOffset/2, yOffset/2);
127 canvas.restore();
128
129 p.setAntiAlias(true);
130 p.setStrokeWidth(0);
131 yOffset += 100;
132 canvas.save();
133 drawLines(canvas, p, mOffset, yOffset);
134 canvas.scale(2, 2);
135 canvas.translate(60, 0);
136 drawLines(canvas, p, mOffset/2, yOffset/2);
137 canvas.restore();
138
139 yOffset += 100;
140 canvas.save();
141 p.setStrokeWidth(1);
142 drawLines(canvas, p, mOffset, yOffset);
143 canvas.scale(2, 2);
144 canvas.translate(60, 0);
145 drawLines(canvas, p, mOffset/2, yOffset/2);
146 canvas.restore();
147
148 yOffset += 100;
149 canvas.save();
150 p.setStrokeWidth(2);
151 drawLines(canvas, p, mOffset, yOffset);
152 canvas.scale(2, 2);
153 canvas.translate(60, 0);
154 drawLines(canvas, p, mOffset/2, yOffset/2);
155 canvas.restore();
Chet Haase99585ad2011-05-02 15:00:16 -0700156
157 yOffset += 100;
158 canvas.save();
159 p.setStrokeWidth(1);
160 float x = 10 + mOffset;
161 for (float length = 1; length <= 10; length +=1 ) {
162 p.setAntiAlias(false);
163 drawVerticalLine(canvas, p, length, x, yOffset);
164 x += 5;
165 p.setAntiAlias(true);
166 drawVerticalLine(canvas, p, length, x, yOffset);
167 x += 5;
168 }
169 p.setStrokeWidth(5);
170 for (float length = 1; length <= 10; length +=1 ) {
171 p.setAntiAlias(false);
172 drawVerticalLine(canvas, p, length, x, yOffset);
173 x += 10;
174 p.setAntiAlias(true);
175 drawVerticalLine(canvas, p, length, x, yOffset);
176 x += 10;
177 }
178 canvas.restore();
179
180 yOffset += 20;
181 canvas.save();
182 p.setStrokeWidth(1);
183 x = 10 + mOffset;
184 for (float length = 1; length <= 10; length +=1 ) {
185 p.setAntiAlias(false);
186 drawDiagonalLine(canvas, p, length, x, yOffset);
187 x += 5;
188 p.setAntiAlias(true);
189 drawDiagonalLine(canvas, p, length, x, yOffset);
190 x += 5;
191 }
192 p.setStrokeWidth(2);
193 for (float length = 1; length <= 10; length +=1 ) {
194 p.setAntiAlias(false);
195 drawDiagonalLine(canvas, p, length, x, yOffset);
196 x += 10;
197 p.setAntiAlias(true);
198 drawDiagonalLine(canvas, p, length, x, yOffset);
199 x += 10;
200 }
201 canvas.restore();
202
203 yOffset += 20;
204 canvas.save();
205 p.setStrokeWidth(1);
206 x = 10 + mOffset;
207 for (float length = 1; length <= 10; length +=1 ) {
208 p.setAntiAlias(false);
209 canvas.drawLine(x, yOffset, x + 1, yOffset + length, p);
210 x += 5;
211 p.setAntiAlias(true);
212 canvas.drawLine(x, yOffset, x + 1, yOffset + length, p);
213 x += 5;
214 }
215 p.setStrokeWidth(2);
216 for (float length = 1; length <= 10; length +=1 ) {
217 p.setAntiAlias(false);
218 canvas.drawLine(x, yOffset, x + 1, yOffset + length, p);
219 x += 10;
220 p.setAntiAlias(true);
221 canvas.drawLine(x, yOffset, x + 1, yOffset + length, p);
222 x += 10;
223 }
224 canvas.restore();
225
226 yOffset += 20;
227 canvas.save();
228 p.setStrokeWidth(1);
229 x = 10 + mOffset;
230 for (float length = 1; length <= 10; length +=1 ) {
231 p.setAntiAlias(false);
232 canvas.drawLine(x, yOffset, x + length, yOffset + 1, p);
233 x += 5;
234 p.setAntiAlias(true);
235 canvas.drawLine(x, yOffset, x + length, yOffset + 1, p);
236 x += 5;
237 }
238 p.setStrokeWidth(2);
239 for (float length = 1; length <= 10; length +=1 ) {
240 p.setAntiAlias(false);
241 canvas.drawLine(x, yOffset, x + length, yOffset + 1, p);
242 x += 10;
243 p.setAntiAlias(true);
244 canvas.drawLine(x, yOffset, x + length, yOffset + 1, p);
245 x += 10;
246 }
247 canvas.restore();
248
Chet Haase5b0200b2011-04-13 17:58:08 -0700249 }
250 }
251}