package zenproject.meditation.android.ui.menu.dialogs.brush.size;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
public class BrushSizeDrawable extends Drawable {
public static final int BORDER_ALPHA = 40;
private final Paint borderBrushPaint;
private final Paint sizeBrushPaint;
private float radius;
private int centerX;
private int centerY;
public static BrushSizeDrawable newInstance() {
Paint borderBrushPaint = generateBorderPaint();
Paint sizeBrushPaint = generateBrushSizePaint();
return new BrushSizeDrawable(borderBrushPaint, sizeBrushPaint);
}
private static Paint generateBrushSizePaint() {
Paint sizeBrushPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
sizeBrushPaint.setStyle(Paint.Style.FILL);
return sizeBrushPaint;
}
private static Paint generateBorderPaint() {
Paint borderBrushPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
borderBrushPaint.setStyle(Paint.Style.STROKE);
borderBrushPaint.setAlpha(BORDER_ALPHA);
return borderBrushPaint;
}
protected BrushSizeDrawable(Paint borderBrushPaint, Paint sizeBrushPaint) {
this.borderBrushPaint = borderBrushPaint;
this.sizeBrushPaint = sizeBrushPaint;
}
@Override
public void draw(Canvas canvas) {
canvas.drawCircle(centerX, centerY, radius, sizeBrushPaint);
canvas.drawCircle(centerX, centerY, radius, borderBrushPaint);
}
@Override
public void setAlpha(int alpha) {
sizeBrushPaint.setAlpha(alpha);
borderBrushPaint.setAlpha(BORDER_ALPHA);
}
public void setSize(float size) {
this.radius = size / 2;
invalidateSelf();
}
@Override
public void setColorFilter(ColorFilter cf) {
sizeBrushPaint.setColorFilter(cf);
}
public void setColor(int color) {
sizeBrushPaint.setColor(color);
invalidateSelf();
}
@Override
public int getOpacity() {
return sizeBrushPaint.getAlpha();
}
public void setOrigin(int x, int y) {
centerX = x;
centerY = y;
}
}