package com.csound.wizard.view.unit;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;
import com.csound.wizard.Const;
import com.csound.wizard.layout.param.Types.Range;
import com.csound.wizard.view.ViewUtils;
import com.csound.wizard.view.GraphUtils.Rect;
import com.csound.wizard.view.Listener.SetSlide;
import com.csound.wizard.view.ViewUtils.OnMeasure;
public class RainbowCircle extends View implements SetSlide {
private float mx = 0.5f;
private Paint paint = new Paint();
private Rect mRect = new Rect();
private static final int desiredSize = Const.desiredCircleSize;
private Range mRange;
public RainbowCircle(Context context, Range range) {
super(context);
ViewUtils.initPaint(paint);
mRange = range;
}
@Override
public void setSlide(float x) {
mx = ViewUtils.withinBounds(mRange.toRelative(x));
invalidate();
}
protected void onDraw(Canvas canvas) {
mRect.setView(this);
float rad = 0.45f * Math.min(mRect.getHeight(), mRect.getWidth());
float cx = mRect.getCenterX();
float cy = mRect.getCenterY();
paint.setColor(ViewUtils.getRainbowColor(mx));
canvas.drawCircle(cx, cy, rad, paint);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
ViewUtils.mkOnMeasure(widthMeasureSpec, heightMeasureSpec, desiredSize, desiredSize, onMeasureRunner);
}
private OnMeasure onMeasureRunner = new OnMeasure() {
@Override
public void apply(int width, int height) {
int size = Math.min(width, height);
setMeasuredDimension(size, size);
}
};
}