15b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase/*
25b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * Copyright (C) 2011 The Android Open Source Project
35b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase *
45b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * Licensed under the Apache License, Version 2.0 (the "License");
55b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * you may not use this file except in compliance with the License.
65b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * You may obtain a copy of the License at
75b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase *
85b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase *      http://www.apache.org/licenses/LICENSE-2.0
95b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase *
105b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * Unless required by applicable law or agreed to in writing, software
115b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * distributed under the License is distributed on an "AS IS" BASIS,
125b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * See the License for the specific language governing permissions and
145b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * limitations under the License.
155b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase */
165b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase
175b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haasepackage com.android.test.hwui;
185b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase
195b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.animation.ObjectAnimator;
205b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.app.Activity;
215b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.content.Context;
225b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.graphics.Canvas;
235b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.graphics.Color;
245b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.graphics.Paint;
255b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.graphics.drawable.ColorDrawable;
265b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.os.Bundle;
275b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.view.View;
285b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.widget.FrameLayout;
295b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase
305b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase@SuppressWarnings({"UnusedDeclaration"})
315b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haasepublic class Lines2Activity extends Activity {
325b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase    private ObjectAnimator mAnimator;
335b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase
345b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase    @Override
355b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase    protected void onCreate(Bundle savedInstanceState) {
365b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        super.onCreate(savedInstanceState);
375b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        getWindow().setBackgroundDrawable(new ColorDrawable(0xff000000));
385b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        FrameLayout frame = new FrameLayout(this);
395b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        final LinesView gpuView = new LinesView(this, 0, Color.GREEN);
405b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        frame.addView(gpuView);
415b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        final LinesView swView = new LinesView(this, 400, Color.RED);
425b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        swView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
435b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        frame.addView(swView);
445b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        final LinesView hwBothView = new LinesView(this, 850, Color.GREEN);
458a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase        // Don't actually need to render to a hw layer, but it's a good sanity-check that
468a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase        // we're rendering to/from layers correctly
478a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase        hwBothView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
485b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        frame.addView(hwBothView);
495b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        final LinesView swBothView = new LinesView(this, 854, Color.RED);
505b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        swBothView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
515b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        frame.addView(swBothView);
525b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        setContentView(frame);
535b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase    }
545b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase
555b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase    @Override
565b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase    protected void onDestroy() {
575b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        super.onDestroy();
585b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase    }
595b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase
605b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase    public static class LinesView extends View {
615b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase
625b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        private float mOffset;
635b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        private int mColor;
645b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        private float[] basePoints = {
655b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase                120, 0, 120, 20, 120, 20, 125, 0, 130, 0, 132, 10
665b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        };
675b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        private float[] copyPoints = new float[12];
685b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase
695b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        public LinesView(Context c, float offset, int color) {
705b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            super(c);
715b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            mOffset = offset;
725b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            mColor = color;
735b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        }
745b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase
755b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        private void drawLines(Canvas canvas, Paint p, float xOffset, float yOffset) {
765b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.drawLine(10 + xOffset, yOffset, 10 + xOffset, 40 + yOffset, p);
775b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.drawLine(30 + xOffset, yOffset, 40 + xOffset, 40 + yOffset, p);
785b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.drawLine(40 + xOffset, yOffset, 75 + xOffset, 35 + yOffset, p);
795b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.drawLine(50 + xOffset, 5+ yOffset, 100 + xOffset, 15 + yOffset, p);
805b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.drawLine(60 + xOffset, yOffset, 110 + xOffset, 2 + yOffset, p);
815b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.drawLine(60 + xOffset, 40 + yOffset, 110 + xOffset, 40 + yOffset, p);
825b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            for (int i = 0; i < 12; i += 2) {
835b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase                copyPoints[i] = basePoints[i] + xOffset;
845b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase                copyPoints[i+1] = basePoints[i+1] + yOffset;
855b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            }
865b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.drawLines(copyPoints, 0, 12, p);
875b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        }
885b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase
8999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase        private void drawVerticalLine(Canvas canvas, Paint p, float length, float x, float y) {
9099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            canvas.drawLine(x, y, x, y + length, p);
9199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase        }
9299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase
9399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase        private void drawDiagonalLine(Canvas canvas, Paint p, float length, float x, float y) {
9499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            canvas.drawLine(x, y, x + length, y + length, p);
9599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase        }
9699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase
975b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        @Override
985b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        protected void onDraw(Canvas canvas) {
995b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            super.onDraw(canvas);
1005b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            Paint p = new Paint();
1015b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            p.setColor(mColor);
1025b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            float yOffset = 10;
1035b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase
1045b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.save();
1055b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            drawLines(canvas, p, mOffset, yOffset);
1065b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.scale(2, 2);
1075b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.translate(60, 0);
1085b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            drawLines(canvas, p, mOffset/2, yOffset/2);
1095b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.restore();
1105b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase
1115b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            yOffset +=100;
1125b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.save();
1135b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            p.setStrokeWidth(1);
1145b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            drawLines(canvas, p, mOffset, yOffset);
1155b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.scale(2, 2);
1165b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.translate(60, 0);
1175b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            drawLines(canvas, p, mOffset/2, yOffset/2);
1185b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.restore();
1195b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase
1205b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            yOffset += 100;
1215b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.save();
1225b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            p.setStrokeWidth(2);
1235b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            drawLines(canvas, p, mOffset, yOffset);
1245b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.scale(2, 2);
1255b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.translate(60, 0);
1265b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            drawLines(canvas, p, mOffset/2, yOffset/2);
1275b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.restore();
1285b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase
1295b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            p.setAntiAlias(true);
1305b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            p.setStrokeWidth(0);
1315b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            yOffset += 100;
1325b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.save();
1335b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            drawLines(canvas, p, mOffset, yOffset);
1345b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.scale(2, 2);
1355b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.translate(60, 0);
1365b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            drawLines(canvas, p, mOffset/2, yOffset/2);
1375b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.restore();
1385b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase
1395b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            yOffset += 100;
1405b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.save();
1415b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            p.setStrokeWidth(1);
1425b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            drawLines(canvas, p, mOffset, yOffset);
1435b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.scale(2, 2);
1445b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.translate(60, 0);
1455b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            drawLines(canvas, p, mOffset/2, yOffset/2);
1465b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.restore();
1475b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase
1485b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            yOffset += 100;
1495b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.save();
1505b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            p.setStrokeWidth(2);
1515b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            drawLines(canvas, p, mOffset, yOffset);
1525b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.scale(2, 2);
1535b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.translate(60, 0);
1545b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            drawLines(canvas, p, mOffset/2, yOffset/2);
1555b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase            canvas.restore();
15699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase
15799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            yOffset += 100;
15899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            canvas.save();
15999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            p.setStrokeWidth(1);
16099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            float x = 10 + mOffset;
16199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            for (float length = 1; length <= 10; length +=1 ) {
16299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                p.setAntiAlias(false);
16399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                drawVerticalLine(canvas, p, length, x, yOffset);
16499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                x += 5;
16599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                p.setAntiAlias(true);
16699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                drawVerticalLine(canvas, p, length, x, yOffset);
16799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                x += 5;
16899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            }
16999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            p.setStrokeWidth(5);
17099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            for (float length = 1; length <= 10; length +=1 ) {
17199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                p.setAntiAlias(false);
17299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                drawVerticalLine(canvas, p, length, x, yOffset);
17399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                x += 10;
17499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                p.setAntiAlias(true);
17599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                drawVerticalLine(canvas, p, length, x, yOffset);
17699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                x += 10;
17799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            }
17899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            canvas.restore();
17999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase
18099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            yOffset += 20;
18199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            canvas.save();
18299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            p.setStrokeWidth(1);
18399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            x = 10 + mOffset;
18499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            for (float length = 1; length <= 10; length +=1 ) {
18599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                p.setAntiAlias(false);
18699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                drawDiagonalLine(canvas, p, length, x, yOffset);
18799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                x += 5;
18899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                p.setAntiAlias(true);
18999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                drawDiagonalLine(canvas, p, length, x, yOffset);
19099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                x += 5;
19199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            }
19299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            p.setStrokeWidth(2);
19399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            for (float length = 1; length <= 10; length +=1 ) {
19499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                p.setAntiAlias(false);
19599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                drawDiagonalLine(canvas, p, length, x, yOffset);
19699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                x += 10;
19799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                p.setAntiAlias(true);
19899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                drawDiagonalLine(canvas, p, length, x, yOffset);
19999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                x += 10;
20099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            }
20199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            canvas.restore();
20299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase
20399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            yOffset += 20;
20499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            canvas.save();
20599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            p.setStrokeWidth(1);
20699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            x = 10 + mOffset;
20799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            for (float length = 1; length <= 10; length +=1 ) {
20899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                p.setAntiAlias(false);
20999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                canvas.drawLine(x, yOffset, x + 1, yOffset + length, p);
21099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                x += 5;
21199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                p.setAntiAlias(true);
21299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                canvas.drawLine(x, yOffset, x + 1, yOffset + length, p);
21399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                x += 5;
21499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            }
21599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            p.setStrokeWidth(2);
21699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            for (float length = 1; length <= 10; length +=1 ) {
21799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                p.setAntiAlias(false);
21899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                canvas.drawLine(x, yOffset, x + 1, yOffset + length, p);
21999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                x += 10;
22099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                p.setAntiAlias(true);
22199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                canvas.drawLine(x, yOffset, x + 1, yOffset + length, p);
22299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                x += 10;
22399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            }
22499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            canvas.restore();
22599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase
22699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            yOffset += 20;
22799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            canvas.save();
22899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            p.setStrokeWidth(1);
22999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            x = 10 + mOffset;
23099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            for (float length = 1; length <= 10; length +=1 ) {
23199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                p.setAntiAlias(false);
23299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                canvas.drawLine(x, yOffset, x + length, yOffset + 1, p);
23399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                x += 5;
23499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                p.setAntiAlias(true);
23599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                canvas.drawLine(x, yOffset, x + length, yOffset + 1, p);
23699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                x += 5;
23799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            }
23899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            p.setStrokeWidth(2);
23999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            for (float length = 1; length <= 10; length +=1 ) {
24099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                p.setAntiAlias(false);
24199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                canvas.drawLine(x, yOffset, x + length, yOffset + 1, p);
24299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                x += 10;
24399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                p.setAntiAlias(true);
24499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                canvas.drawLine(x, yOffset, x + length, yOffset + 1, p);
24599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase                x += 10;
24699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            }
24799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase            canvas.restore();
24899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase
2495b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase        }
2505b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase    }
2515b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase}
252