// Copyright 2013 Google Inc. All Rights Reserved. package com.android.cts.verifier.camera.fov; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; /** * View that draws an overlay on the camera preview. * @author settinger@google.com(Scott Ettinger) */ class CameraPreviewView extends View { private static final int GRID_ALPHA = 50; private static final int GRID_WIDTH = 50; private Paint mPaint = new Paint(); public CameraPreviewView(Context context) { super(context); this.setWillNotDraw(false); } public CameraPreviewView(Context context, AttributeSet attrs) { super(context, attrs); this.setWillNotDraw(false); } public CameraPreviewView( Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); this.setWillNotDraw(false); } @Override public void onDraw(Canvas canvas) { super.onDraw(canvas); // Draw a single vertical line on the center of the image to help align // the camera when setting up. float centerX = canvas.getWidth() / 2.0f; float centerY = canvas.getHeight() / 2.0f; mPaint.setStyle(Paint.Style.STROKE); mPaint.setColor(Color.GREEN); mPaint.setStrokeWidth(3); canvas.drawLine(centerX, 0, centerX, canvas.getHeight(), mPaint); // Draw the transparent grid. mPaint.setAlpha(GRID_ALPHA); int vertLines = canvas.getWidth() / 2 / GRID_WIDTH; int horizLines = canvas.getHeight() / 2 / GRID_WIDTH; for (int i = 0; i < horizLines; ++i) { int y = (int) centerY - i * GRID_WIDTH; canvas.drawLine(0, y, canvas.getWidth(), y, mPaint); y = (int) centerY + i * GRID_WIDTH; canvas.drawLine(0, y, canvas.getWidth(), y, mPaint); } for (int i = 0; i < vertLines; ++i) { int x = (int) centerX - i * GRID_WIDTH; canvas.drawLine(x, 0, x, canvas.getHeight(), mPaint); x = (int) centerX + i * GRID_WIDTH; canvas.drawLine(x, 0, x, canvas.getHeight(), mPaint); } } }