/**
*
* @author Peter Brinkmann (peter.brinkmann@gmail.com)
*
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution.
*
*/
package org.puredata.android.scenes;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
public class ImageOverlay extends Overlay {
private final Bitmap image;
private boolean centered = true;
private float scaleX = 1.0f;
private float scaleY = 1.0f;
private float angle = 0.0f;
private final Paint paint = new Paint();
public ImageOverlay(String filename) {
image = BitmapFactory.decodeFile(filename);
}
public void setCentered(boolean flag) {
centered = flag;
invalidate();
}
public void setScale(float valx, float valy) {
scaleX = valx;
scaleY = valy;
invalidate();
}
public void setAngle(float val) {
angle = val;
invalidate();
}
public void setAlpha(float val) {
paint.setAlpha((int) (val * 255));
invalidate();
}
@Override
protected void drawImpl(Canvas canvas) {
canvas.save(Canvas.MATRIX_SAVE_FLAG);
int cw = container.getWidth();
int ch = container.getHeight();
int xm = (int) (x * cw / SceneView.SIZE);
int ym = (int) (y * ch / SceneView.SIZE);
canvas.translate(xm, ym);
canvas.rotate(angle);
canvas.scale(scaleX, scaleY);
int xd = image.getWidth() * cw / SceneView.SIZE / 2;
int yd = image.getHeight() * ch / SceneView.SIZE / 2;
Rect rect = centered ? new Rect(-xd, -yd, xd, yd)
: new Rect(0, 0, 2 * xd, 2 * yd);
canvas.drawBitmap(image, null, rect, paint);
canvas.restore();
}
}