1b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb/* 2b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb * Copyright (C) 2012 The Android Open Source Project 3b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb * 4b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb * Licensed under the Apache License, Version 2.0 (the "License"); 5b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb * you may not use this file except in compliance with the License. 6b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb * You may obtain a copy of the License at 7b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb * 8b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb * http://www.apache.org/licenses/LICENSE-2.0 9b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb * 10b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb * Unless required by applicable law or agreed to in writing, software 11b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb * distributed under the License is distributed on an "AS IS" BASIS, 12b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb * See the License for the specific language governing permissions and 14b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb * limitations under the License. 15b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb */ 16b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb 17b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolbpackage com.android.camera.ui; 18b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb 19b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolbimport android.content.Context; 20b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolbimport android.graphics.Canvas; 211373b98135b2854578111dd535e24d39c8853f14Michael Kolbimport android.view.MotionEvent; 22b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb 23b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolbpublic abstract class OverlayRenderer implements RenderOverlay.Renderer { 24b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb 25b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb private static final String TAG = "CAM OverlayRenderer"; 26b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb protected RenderOverlay mOverlay; 27b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb 28b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb protected int mLeft, mTop, mRight, mBottom; 29b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb 30ad639dff251233032734106afe4fe51a52be3721Michael Kolb protected boolean mVisible; 31b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb 32b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb public void setVisible(boolean vis) { 33b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb mVisible = vis; 34b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb update(); 35b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb } 36b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb 37ad639dff251233032734106afe4fe51a52be3721Michael Kolb public boolean isVisible() { 38ad639dff251233032734106afe4fe51a52be3721Michael Kolb return mVisible; 39ad639dff251233032734106afe4fe51a52be3721Michael Kolb } 40ad639dff251233032734106afe4fe51a52be3721Michael Kolb 411373b98135b2854578111dd535e24d39c8853f14Michael Kolb // default does not handle touch 421373b98135b2854578111dd535e24d39c8853f14Michael Kolb @Override 431373b98135b2854578111dd535e24d39c8853f14Michael Kolb public boolean handlesTouch() { 441373b98135b2854578111dd535e24d39c8853f14Michael Kolb return false; 451373b98135b2854578111dd535e24d39c8853f14Michael Kolb } 461373b98135b2854578111dd535e24d39c8853f14Michael Kolb 471373b98135b2854578111dd535e24d39c8853f14Michael Kolb @Override 481373b98135b2854578111dd535e24d39c8853f14Michael Kolb public boolean onTouchEvent(MotionEvent evt) { 491373b98135b2854578111dd535e24d39c8853f14Michael Kolb return false; 501373b98135b2854578111dd535e24d39c8853f14Michael Kolb } 511373b98135b2854578111dd535e24d39c8853f14Michael Kolb 52b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb public abstract void onDraw(Canvas canvas); 53b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb 54b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb public void draw(Canvas canvas) { 55b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb if (mVisible) { 56b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb onDraw(canvas); 57b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb } 58b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb } 59b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb 60b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb @Override 61b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb public void setOverlay(RenderOverlay overlay) { 62b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb mOverlay = overlay; 63b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb } 64b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb 65b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb @Override 66b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb public void layout(int left, int top, int right, int bottom) { 67b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb mLeft = left; 68b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb mRight = right; 69b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb mTop = top; 70b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb mBottom = bottom; 71b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb } 72b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb 73b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb protected Context getContext() { 74b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb if (mOverlay != null) { 75b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb return mOverlay.getContext(); 76b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb } else { 77b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb return null; 78b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb } 79b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb } 80b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb 81b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb public int getWidth() { 82b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb return mRight - mLeft; 83b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb } 84b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb 85b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb public int getHeight() { 86b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb return mBottom - mTop; 87b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb } 88b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb 89b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb protected void update() { 90b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb if (mOverlay != null) { 91ad639dff251233032734106afe4fe51a52be3721Michael Kolb mOverlay.update(); 92b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb } 93b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb } 94b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb 95b19c713286b7beed376ec6c4390e7272a80aa5b9Michael Kolb} 96