// Path: src/tk/eatheat/omnisnitch/showcase/AnimationUtils.java
// public interface AnimationEndListener {
//     void onAnimationEnd();
// }
// 
// Path: src/tk/eatheat/omnisnitch/showcase/AnimationUtils.java
// public interface AnimationStartListener {
//     void onAnimationStart();
// }


import java.lang.reflect.Field;
import tk.eatheat.omnisnitch.R;
import tk.eatheat.omnisnitch.showcase.AnimationUtils.AnimationEndListener;
import tk.eatheat.omnisnitch.showcase.AnimationUtils.AnimationStartListener;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.text.DynamicLayout;
import android.text.Layout;
import android.text.TextPaint;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.RelativeLayout;
     */
    private boolean makeVoidedRect() {

        // This if statement saves resources by not recalculating voidedArea
        // if the X & Y coordinates haven't changed
        if (voidedArea == null
                || (showcaseX != legacyShowcaseX || showcaseY != legacyShowcaseY)) {
            int cx = (int) showcaseX, cy = (int) showcaseY;
            int dw = showcase.getIntrinsicWidth();
            int dh = showcase.getIntrinsicHeight();

            voidedArea = new Rect(cx - dw / 2, cy - dh / 2, cx + dw / 2, cy
                    + dh / 2);

            legacyShowcaseX = showcaseX;
            legacyShowcaseY = showcaseY;

            return true;
        }

        return false;
    }

    public void animateGesture(float offsetStartX, float offsetStartY,
            float offsetEndX, float offsetEndY) {
        mHandy = ((LayoutInflater) getContext().getSystemService(
                Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.handy, null);
        addView(mHandy);
        mHandy.setRotation(mOrientation);
        moveHand(offsetStartX, offsetStartY, offsetEndX, offsetEndY,
// Path: src/tk/eatheat/omnisnitch/showcase/AnimationUtils.java
// public interface AnimationEndListener {
//     void onAnimationEnd();
// }
// 
// Path: src/tk/eatheat/omnisnitch/showcase/AnimationUtils.java
// public interface AnimationStartListener {
//     void onAnimationStart();
// }


// Path: src/tk/eatheat/omnisnitch/showcase/ShowcaseView.java
import java.lang.reflect.Field;
import tk.eatheat.omnisnitch.R;
import tk.eatheat.omnisnitch.showcase.AnimationUtils.AnimationEndListener;
import tk.eatheat.omnisnitch.showcase.AnimationUtils.AnimationStartListener;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.text.DynamicLayout;
import android.text.Layout;
import android.text.TextPaint;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.RelativeLayout;

     */
    private boolean makeVoidedRect() {

        // This if statement saves resources by not recalculating voidedArea
        // if the X & Y coordinates haven't changed
        if (voidedArea == null
                || (showcaseX != legacyShowcaseX || showcaseY != legacyShowcaseY)) {
            int cx = (int) showcaseX, cy = (int) showcaseY;
            int dw = showcase.getIntrinsicWidth();
            int dh = showcase.getIntrinsicHeight();

            voidedArea = new Rect(cx - dw / 2, cy - dh / 2, cx + dw / 2, cy
                    + dh / 2);

            legacyShowcaseX = showcaseX;
            legacyShowcaseY = showcaseY;

            return true;
        }

        return false;
    }

    public void animateGesture(float offsetStartX, float offsetStartY,
            float offsetEndX, float offsetEndY) {
        mHandy = ((LayoutInflater) getContext().getSystemService(
                Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.handy, null);
        addView(mHandy);
        mHandy.setRotation(mOrientation);
        moveHand(offsetStartX, offsetStartY, offsetEndX, offsetEndY,
                new AnimationEndListener() {