package com.zzhoujay.markdown.style;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.text.style.ReplacementSpan;
/**
* Created by zhou on 16-7-2.
* 代码Span
*/
public class CodeSpan extends ReplacementSpan {
private float radius = 10;
private Drawable drawable;
private float padding;
private int width;
private int textColor;
public CodeSpan(int color) {
GradientDrawable d = new GradientDrawable();
d.setColor(color);
d.setCornerRadius(radius);
drawable = d;
}
public CodeSpan(int color, int textColor, float radius) {
this.radius = radius;
this.textColor = textColor;
GradientDrawable d = new GradientDrawable();
d.setColor(color);
d.setCornerRadius(radius);
drawable = d;
}
@Override public int getSize(Paint paint, CharSequence text, int start, int end, Paint.FontMetricsInt fm) {
padding = paint.measureText("t");
width = (int) (paint.measureText(text, start, end) + padding * 2);
return width;
}
@Override public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) {
drawable.setBounds((int) x, top, (int) x + width, bottom);
drawable.draw(canvas);
if (textColor != 0) {
paint.setColor(textColor);
}
canvas.drawText(text, start, end, x + padding, y, paint);
}
}