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