1 /* 2 * Copyright (C) 2015 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 17 package com.android.camera.util; 18 19 import android.graphics.Canvas; 20 import android.graphics.Paint; 21 import android.graphics.Rect; 22 import android.graphics.RectF; 23 24 /** 25 * Drawing utilities for rendering debug artifacts. 26 */ 27 public class DebugBoundsRenderer { 28 /** 29 * Draw a bounding box with indicators in the corners and crosshairs in 30 * the provided canvas object. 31 */ drawBounds(Canvas canvas, Paint paint, float size, Rect rect)32 public static void drawBounds(Canvas canvas, Paint paint, float size, Rect rect) { 33 drawBounds(canvas, paint, size, rect.left, rect.top, rect.right, rect.bottom); 34 } 35 36 /** 37 * Draw a bounding box with indicators in the corners and crosshairs in 38 * the provided canvas object. 39 */ drawBounds(Canvas canvas, Paint paint, float size, RectF rect)40 public static void drawBounds(Canvas canvas, Paint paint, float size, RectF rect) { 41 drawBounds(canvas, paint, size, rect.left, rect.top, rect.right, rect.bottom); 42 } 43 44 /** 45 * Draw a bounding box with indicators in the corners and crosshairs in 46 * the provided canvas object. 47 */ drawBounds(Canvas canvas, Paint paint, float size, float x1, float y1, float x2, float y2)48 public static void drawBounds(Canvas canvas, Paint paint, float size, float x1, float y1, 49 float x2, float y2) { 50 // Top left 51 // horizontal 52 canvas.drawLine(x1, y1, x1 + size, y1, paint); 53 // vertical 54 canvas.drawLine(x1, y1, x1, y1 + size, paint); 55 56 // top right 57 // horizontal 58 canvas.drawLine(x2 - size, y1, x2, y1, paint); 59 // vertical 60 canvas.drawLine(x2, y1, x2, y1 + size, paint); 61 62 // bottom right 63 // horizontal 64 canvas.drawLine(x2 - size, y2, x2, y2, paint); 65 // vertical 66 canvas.drawLine(x2, y2- size, x2, y2, paint); 67 68 // bottom left 69 // horizontal 70 canvas.drawLine(x1, y2, x1 + size, y2, paint); 71 // vertical 72 canvas.drawLine(x1, y2 - size, x1, y2, paint); 73 74 // crosshairs in the center 75 float cX = (x1 + x2) / 2; 76 float cY = (y1 + y2) / 2; 77 float halfSize = size / 2; 78 canvas.drawLine(cX - halfSize, cY, cX + halfSize, cY, paint); 79 canvas.drawLine(cX, cY - halfSize, cX, cY + halfSize, paint); 80 } 81 } 82