summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/CaptureAnimManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/CaptureAnimManager.java')
-rw-r--r--src/com/android/camera/CaptureAnimManager.java228
1 files changed, 0 insertions, 228 deletions
diff --git a/src/com/android/camera/CaptureAnimManager.java b/src/com/android/camera/CaptureAnimManager.java
deleted file mode 100644
index 3510d7528..000000000
--- a/src/com/android/camera/CaptureAnimManager.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.camera;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Color;
-import android.os.SystemClock;
-import android.view.animation.DecelerateInterpolator;
-import android.view.animation.Interpolator;
-
-import com.android.camera.support.glrenderer.GLCanvas;
-import com.android.camera.support.glrenderer.NinePatchTexture;
-import com.android.camera.support.glrenderer.RawTexture;
-import com.android.camera2.R;
-
-/**
- * Class to handle the capture animation.
- */
-public class CaptureAnimManager {
- @SuppressWarnings("unused")
- private static final String TAG = "CAM_Capture";
- // times mark endpoint of animation phase
- private static final int TIME_FLASH = 200;
- private static final int TIME_HOLD = 400;
- private static final int TIME_SLIDE = 800;
- private static final int TIME_HOLD2 = 3300;
- private static final int TIME_SLIDE2 = 4100;
-
- private static final int ANIM_BOTH = 0;
- private static final int ANIM_FLASH = 1;
- private static final int ANIM_SLIDE = 2;
- private static final int ANIM_HOLD2 = 3;
- private static final int ANIM_SLIDE2 = 4;
-
- private final Interpolator mSlideInterpolator = new DecelerateInterpolator();
-
- private volatile int mAnimOrientation; // Could be 0, 90, 180 or 270 degrees.
- private long mAnimStartTime; // milliseconds.
- private float mX; // The center of the whole view including preview and review.
- private float mY;
- private int mDrawWidth;
- private int mDrawHeight;
- private int mAnimType;
-
- private int mHoldX;
- private int mHoldY;
- private int mHoldW;
- private int mHoldH;
-
- private int mOffset;
-
- private int mMarginRight;
- private int mMarginTop;
- private int mSize;
- private Resources mResources;
- private NinePatchTexture mBorder;
- private int mShadowSize;
-
- public static int getAnimationDuration() {
- return TIME_SLIDE2;
- }
-
- /* preview: camera preview view.
- * review: view of picture just taken.
- */
- public CaptureAnimManager(Context ctx) {
- mBorder = new NinePatchTexture(ctx, R.drawable.capture_thumbnail_shadow);
- mResources = ctx.getResources();
- }
-
- public void setOrientation(int displayRotation) {
- mAnimOrientation = (360 - displayRotation) % 360;
- }
-
- public void animateSlide() {
- if (mAnimType != ANIM_FLASH) {
- return;
- }
- mAnimType = ANIM_SLIDE;
- mAnimStartTime = SystemClock.uptimeMillis();
- }
-
- public void animateFlash() {
- mAnimType = ANIM_FLASH;
- }
-
- public void animateFlashAndSlide() {
- mAnimType = ANIM_BOTH;
- }
-
- public void startAnimation() {
- mAnimStartTime = SystemClock.uptimeMillis();
- }
-
- private void setAnimationGeometry(int x, int y, int w, int h) {
- mMarginRight = mResources.getDimensionPixelSize(R.dimen.capture_margin_right);
- mMarginTop = mResources.getDimensionPixelSize(R.dimen.capture_margin_top);
- mSize = mResources.getDimensionPixelSize(R.dimen.capture_size);
- mShadowSize = mResources.getDimensionPixelSize(R.dimen.capture_border);
- mOffset = mMarginRight + mSize;
- // Set the views to the initial positions.
- mDrawWidth = w;
- mDrawHeight = h;
- mX = x;
- mY = y;
- mHoldW = mSize;
- mHoldH = mSize;
- switch (mAnimOrientation) {
- case 0: // Preview is on the left.
- mHoldX = x + w - mMarginRight - mSize;
- mHoldY = y + mMarginTop;
- break;
- case 90: // Preview is below.
- mHoldX = x + mMarginTop;
- mHoldY = y + mMarginRight;
- break;
- case 180: // Preview on the right.
- mHoldX = x + mMarginRight;
- mHoldY = y + h - mMarginTop - mSize;
- break;
- case 270: // Preview is above.
- mHoldX = x + w - mMarginTop - mSize;
- mHoldY = y + h - mMarginRight - mSize;
- break;
- }
- }
-
- // Returns true if the animation has been drawn.
- public boolean drawAnimation(GLCanvas canvas, CameraScreenNail preview,
- RawTexture review, int lx, int ly, int lw, int lh) {
- setAnimationGeometry(lx, ly, lw, lh);
- long timeDiff = SystemClock.uptimeMillis() - mAnimStartTime;
- // Check if the animation is over
- if (mAnimType == ANIM_SLIDE && timeDiff > TIME_SLIDE2 - TIME_HOLD) return false;
- if (mAnimType == ANIM_BOTH && timeDiff > TIME_SLIDE2) return false;
-
- // determine phase and time in phase
- int animStep = mAnimType;
- if (mAnimType == ANIM_SLIDE) {
- timeDiff += TIME_HOLD;
- }
- if (mAnimType == ANIM_SLIDE || mAnimType == ANIM_BOTH) {
- if (timeDiff < TIME_HOLD) {
- animStep = ANIM_FLASH;
- } else if (timeDiff < TIME_SLIDE) {
- animStep = ANIM_SLIDE;
- timeDiff -= TIME_HOLD;
- } else if (timeDiff < TIME_HOLD2) {
- animStep = ANIM_HOLD2;
- timeDiff -= TIME_SLIDE;
- } else {
- // SLIDE2
- animStep = ANIM_SLIDE2;
- timeDiff -= TIME_HOLD2;
- }
- }
-
- if (animStep == ANIM_FLASH) {
- review.draw(canvas, (int) mX, (int) mY, mDrawWidth, mDrawHeight);
- if (timeDiff < TIME_FLASH) {
- float f = 0.3f - 0.3f * timeDiff / TIME_FLASH;
- int color = Color.argb((int) (255 * f), 255, 255, 255);
- canvas.fillRect(mX, mY, mDrawWidth, mDrawHeight, color);
- }
- } else if (animStep == ANIM_SLIDE) {
- float fraction = mSlideInterpolator.getInterpolation((float) (timeDiff) / (TIME_SLIDE - TIME_HOLD));
- float x = mX;
- float y = mY;
- float w = 0;
- float h = 0;
- x = interpolate(mX, mHoldX, fraction);
- y = interpolate(mY, mHoldY, fraction);
- w = interpolate(mDrawWidth, mHoldW, fraction);
- h = interpolate(mDrawHeight, mHoldH, fraction);
- preview.directDraw(canvas, (int) mX, (int) mY, mDrawWidth, mDrawHeight);
- review.draw(canvas, (int) x, (int) y, (int) w, (int) h);
- } else if (animStep == ANIM_HOLD2) {
- preview.directDraw(canvas, (int) mX, (int) mY, mDrawWidth, mDrawHeight);
- review.draw(canvas, mHoldX, mHoldY, mHoldW, mHoldH);
- mBorder.draw(canvas, (int) mHoldX - mShadowSize, (int) mHoldY - mShadowSize,
- (int) mHoldW + 2 * mShadowSize, (int) mHoldH + 2 * mShadowSize);
- } else if (animStep == ANIM_SLIDE2) {
- float fraction = (float)(timeDiff) / (TIME_SLIDE2 - TIME_HOLD2);
- float x = mHoldX;
- float y = mHoldY;
- float d = mOffset * fraction;
- switch (mAnimOrientation) {
- case 0:
- x = mHoldX + d;
- break;
- case 180:
- x = mHoldX - d;
- break;
- case 90:
- y = mHoldY - d;
- break;
- case 270:
- y = mHoldY + d;
- break;
- }
- preview.directDraw(canvas, (int) mX, (int) mY, mDrawWidth, mDrawHeight);
- mBorder.draw(canvas, (int) x - mShadowSize, (int) y - mShadowSize,
- (int) mHoldW + 2 * mShadowSize, (int) mHoldH + 2 * mShadowSize);
- review.draw(canvas, (int) x, (int) y, mHoldW, mHoldH);
- }
- return true;
- }
-
- private static float interpolate(float start, float end, float fraction) {
- return start + (end - start) * fraction;
- }
-
-}