package org.wikipedia.edit.richtext;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.NonNull;
import android.text.TextPaint;
import android.text.style.ForegroundColorSpan;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.wikipedia.json.GsonMarshaller;
import org.wikipedia.json.GsonUnmarshaller;
public class ColorSpanEx extends ForegroundColorSpan implements SpanExtents {
public static final Parcelable.Creator<ColorSpanEx> CREATOR = new Parcelable.Creator<ColorSpanEx>() {
@Override public ColorSpanEx createFromParcel(Parcel source) {
return new ColorSpanEx(source);
}
@Override public ColorSpanEx[] newArray(int size) {
return new ColorSpanEx[size];
}
};
private int spanStart;
private int spanEnd;
private SyntaxRule syntaxRule;
private int backColor;
public ColorSpanEx(int foreColor, int backColor, int spanStart, SyntaxRule syntaxRule) {
super(foreColor);
this.spanStart = spanStart;
this.syntaxRule = syntaxRule;
this.backColor = backColor;
}
public ColorSpanEx(@NonNull Parcel src) {
super(src.readInt());
this.spanStart = src.readInt();
this.spanEnd = src.readInt();
this.syntaxRule = GsonUnmarshaller.unmarshal(SyntaxRule.class, src.readString());
this.backColor = src.readInt();
}
@Override
public void updateDrawState(@NonNull TextPaint tp) {
tp.bgColor = backColor;
super.updateDrawState(tp);
}
@Override
public int getStart() {
return spanStart;
}
@Override
public void setStart(int start) {
spanStart = start;
}
@Override
public int getEnd() {
return spanEnd;
}
@Override
public void setEnd(int end) {
spanEnd = end;
}
@Override
public SyntaxRule getSyntaxRule() {
return syntaxRule;
}
@Override
public void setSyntaxRule(SyntaxRule item) {
syntaxRule = item;
}
@Override public void writeToParcel(Parcel dest, int flags) {
super.writeToParcel(dest, flags);
dest.writeInt(spanStart);
dest.writeInt(spanEnd);
dest.writeString(GsonMarshaller.marshal(syntaxRule));
dest.writeInt(backColor);
}
@Override public String toString() {
return ToStringBuilder.reflectionToString(this);
}
@Override public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
@SuppressWarnings("EqualsWhichDoesntCheckParameterClass")
@Override public boolean equals(Object other) {
return EqualsBuilder.reflectionEquals(this, other);
}
}