1 // Copyright 2013 Google Inc. All Rights Reserved.
2 package com.android.cts.verifier.camera.fov;
3 
4 import android.content.Context;
5 import android.graphics.Canvas;
6 import android.graphics.Color;
7 import android.graphics.Paint;
8 import android.util.AttributeSet;
9 import android.view.View;
10 
11 /**
12  * View that draws an overlay on the camera preview.
13  * @author settinger@google.com(Scott Ettinger)
14  */
15 class CameraPreviewView extends View {
16 
17     private static final int GRID_ALPHA = 50;
18     private static final int GRID_WIDTH = 50;
19     private Paint mPaint = new Paint();
20 
CameraPreviewView(Context context)21     public CameraPreviewView(Context context) {
22         super(context);
23         this.setWillNotDraw(false);
24     }
25 
CameraPreviewView(Context context, AttributeSet attrs)26     public CameraPreviewView(Context context, AttributeSet attrs) {
27         super(context, attrs);
28         this.setWillNotDraw(false);
29     }
30 
CameraPreviewView( Context context, AttributeSet attrs, int defStyle)31     public CameraPreviewView(
32             Context context, AttributeSet attrs, int defStyle) {
33         super(context, attrs, defStyle);
34         this.setWillNotDraw(false);
35     }
36 
37     @Override
onDraw(Canvas canvas)38     public void onDraw(Canvas canvas) {
39         super.onDraw(canvas);
40 
41         // Draw a single vertical line on the center of the image to help align
42         // the camera when setting up.
43         float centerX = canvas.getWidth() / 2.0f;
44         float centerY = canvas.getHeight() / 2.0f;
45         mPaint.setStyle(Paint.Style.STROKE);
46         mPaint.setColor(Color.GREEN);
47         mPaint.setStrokeWidth(3);
48         canvas.drawLine(centerX, 0, centerX, canvas.getHeight(), mPaint);
49 
50         // Draw the transparent grid.
51         mPaint.setAlpha(GRID_ALPHA);
52         int vertLines = canvas.getWidth() / 2 / GRID_WIDTH;
53         int horizLines = canvas.getHeight() / 2 / GRID_WIDTH;
54         for (int i = 0; i < horizLines; ++i) {
55             int y = (int) centerY - i * GRID_WIDTH;
56             canvas.drawLine(0, y, canvas.getWidth(), y, mPaint);
57             y = (int) centerY + i * GRID_WIDTH;
58             canvas.drawLine(0, y, canvas.getWidth(), y, mPaint);
59         }
60         for (int i = 0; i < vertLines; ++i) {
61             int x = (int) centerX - i * GRID_WIDTH;
62             canvas.drawLine(x, 0, x, canvas.getHeight(), mPaint);
63             x = (int) centerX + i * GRID_WIDTH;
64             canvas.drawLine(x, 0, x, canvas.getHeight(), mPaint);
65         }
66     }
67 }
68