blob: f065cf777b7fcd397fbd7424fd1a455ae44a4725 [file] [log] [blame]
// Copyright 2010 Google Inc. All Rights Reserved.
package com.android.gallery3d.anim;
import com.android.gallery3d.ui.GLCanvas;
public class ScaleAnimation extends CanvasAnimation {
private final float mFromX;
private final float mFromY;
private final float mFromZ;
private final float mToX;
private final float mToY;
private final float mToZ;
private float mCurrentX;
private float mCurrentY;
private float mCurrentZ;
private final float mPivotX;
private final float mPivotY;
private final float mPivotZ;
public ScaleAnimation(float fromX, float toX,
float fromY, float toY, float pivotX, float pivotY) {
this(fromX, toX, fromY, toY, 0, 0, pivotX, pivotY, 0);
}
public ScaleAnimation(float fromX, float toX, float fromY, float toY,
float fromZ, float toZ, float px, float py, float pz) {
mFromX = fromX;
mFromY = fromY;
mFromZ = fromZ;
mToX = toX;
mToY = toY;
mToZ = toZ;
mPivotX = px;
mPivotY = py;
mPivotZ = pz;
}
@Override
public void apply(GLCanvas canvas) {
if (mPivotX != 0 || mPivotY != 0 || mPivotZ != 0) {
canvas.translate(mPivotX, mPivotY, mPivotZ);
canvas.scale(mCurrentX, mCurrentY, mCurrentZ);
canvas.translate(-mPivotX, -mPivotY, -mPivotZ);
} else {
canvas.scale(mCurrentX, mCurrentY, mCurrentZ);
}
}
@Override
public int getCanvasSaveFlags() {
return GLCanvas.SAVE_FLAG_MATRIX;
}
@Override
protected void onCalculate(float progress) {
mCurrentX = mFromX + (mToX - mFromX) * progress;
mCurrentY = mFromY + (mToY - mFromY) * progress;
mCurrentZ = mFromZ + (mToZ - mFromZ) * progress;
}
}