1/*
2 * Copyright (C) 2016 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
17package com.android.dialer.callcomposer.camera.camerafocus;
18
19import android.content.Context;
20import android.graphics.Canvas;
21import android.view.MotionEvent;
22
23/** Abstract class that all Camera overlays should implement. */
24public abstract class OverlayRenderer implements RenderOverlay.Renderer {
25
26  protected RenderOverlay mOverlay;
27
28  private int mLeft;
29  private int mTop;
30  private int mRight;
31  private int mBottom;
32  private boolean mVisible;
33
34  public void setVisible(boolean vis) {
35    mVisible = vis;
36    update();
37  }
38
39  public boolean isVisible() {
40    return mVisible;
41  }
42
43  // default does not handle touch
44  @Override
45  public boolean handlesTouch() {
46    return false;
47  }
48
49  @Override
50  public boolean onTouchEvent(MotionEvent evt) {
51    return false;
52  }
53
54  public abstract void onDraw(Canvas canvas);
55
56  @Override
57  public void draw(Canvas canvas) {
58    if (mVisible) {
59      onDraw(canvas);
60    }
61  }
62
63  @Override
64  public void setOverlay(RenderOverlay overlay) {
65    mOverlay = overlay;
66  }
67
68  @Override
69  public void layout(int left, int top, int right, int bottom) {
70    mLeft = left;
71    mRight = right;
72    mTop = top;
73    mBottom = bottom;
74  }
75
76  protected Context getContext() {
77    if (mOverlay != null) {
78      return mOverlay.getContext();
79    } else {
80      return null;
81    }
82  }
83
84  public int getWidth() {
85    return mRight - mLeft;
86  }
87
88  public int getHeight() {
89    return mBottom - mTop;
90  }
91
92  protected void update() {
93    if (mOverlay != null) {
94      mOverlay.update();
95    }
96  }
97}
98