/**
*
* @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 java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.widget.ImageView;
public class SceneView extends ImageView {
public final static int SIZE = 320;
public SceneView(Context context, AttributeSet attrs) {
super(context, attrs);
}
private final List<Overlay> overlays = new ArrayList<Overlay>();
public synchronized void addOverlay(Overlay overlay) {
overlay.setContainer(this);
overlays.add(overlay);
}
public synchronized void removeOverlay(Overlay overlay) {
overlays.remove(overlay);
}
@Override
protected synchronized void onDraw(Canvas canvas) {
super.onDraw(canvas);
for (Overlay overlay: overlays) {
overlay.draw(canvas);
}
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int xDim = getDim(widthMeasureSpec);
int yDim = getDim(heightMeasureSpec);
int dim = Math.min(xDim, yDim);
setMeasuredDimension(dim, dim);
}
private int getDim(int widthMeasureSpec) {
int mode = MeasureSpec.getMode(widthMeasureSpec);
int size = MeasureSpec.getSize(widthMeasureSpec);
return (mode == MeasureSpec.UNSPECIFIED) ? SIZE : size;
}
}