package com.fastaccess.provider.timeline.handler;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.Typeface;
import android.text.Layout;
import android.text.TextPaint;
import android.text.style.LeadingMarginSpan;
import android.text.style.LineBackgroundSpan;
import android.text.style.MetricAffectingSpan;
public class CodeBackgroundRoundedSpan extends MetricAffectingSpan implements LeadingMarginSpan, LineBackgroundSpan {
private final int color;
private final RectF rect = new RectF();
CodeBackgroundRoundedSpan(int color) {
this.color = color;
}
@Override public void updateMeasureState(TextPaint paint) {
apply(paint);
}
@Override public void updateDrawState(TextPaint paint) {
apply(paint);
}
private void apply(TextPaint paint) {
paint.setTypeface(Typeface.MONOSPACE);
}
@Override public void drawBackground(Canvas c, Paint p, int left, int right, int top, int baseline, int bottom,
CharSequence text, int start, int end, int lnum) {
Paint.Style style = p.getStyle();
int color = p.getColor();
p.setStyle(Paint.Style.FILL);
p.setColor(this.color);
rect.set(left, top, right, bottom);
c.drawRect(rect, p);
p.setColor(color);
p.setStyle(style);
}
@Override public int getLeadingMargin(boolean first) {
return 30;
}
@Override public void drawLeadingMargin(Canvas c, Paint p, int x, int dir, int top, int baseline, int bottom,
CharSequence text, int start, int end, boolean first, Layout layout) {}
}