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