mirror of
https://github.com/Suwayomi/Suwayomi-Server.git
synced 2026-07-01 09:54:34 -05:00
Some extensions use more Canvas methods, but they don't really seem to get that far yet, all the others I was able to test seem to work now.
123 lines
3.0 KiB
Java
123 lines
3.0 KiB
Java
package android.graphics;
|
|
|
|
import android.os.Parcel;
|
|
import android.os.Parcelable;
|
|
import java.util.regex.Matcher;
|
|
import java.util.regex.Pattern;
|
|
|
|
public final class Rect {
|
|
int left;
|
|
int top;
|
|
int right;
|
|
int bottom;
|
|
|
|
private static final class UnflattenHelper {
|
|
private static final Pattern FLATTENED_PATTERN = Pattern.compile(
|
|
"(-?\\d+) (-?\\d+) (-?\\d+) (-?\\d+)");
|
|
|
|
static Matcher getMatcher(String str) {
|
|
return FLATTENED_PATTERN.matcher(str);
|
|
}
|
|
}
|
|
|
|
public Rect() {
|
|
}
|
|
|
|
public Rect(int left, int top, int right, int bottom) {
|
|
this.left = left;
|
|
this.top = top;
|
|
this.right = right;
|
|
this.bottom = bottom;
|
|
}
|
|
|
|
public Rect(Rect r) {
|
|
if (r == null) {
|
|
this.left = 0;
|
|
this.top = 0;
|
|
this.right = 0;
|
|
this.bottom = 0;
|
|
} else {
|
|
this.left = left;
|
|
this.top = top;
|
|
this.right = right;
|
|
this.bottom = bottom;
|
|
}
|
|
}
|
|
|
|
public final int getWidth() {
|
|
return right - left;
|
|
}
|
|
|
|
public final int getHeight() {
|
|
return bottom - top;
|
|
}
|
|
|
|
public static Rect unflattenFromString(String str) {
|
|
if (str.isEmpty()) {
|
|
return null;
|
|
}
|
|
|
|
Matcher matcher = UnflattenHelper.getMatcher(str);
|
|
if (!matcher.matches()) {
|
|
return null;
|
|
}
|
|
|
|
return new Rect(Integer.parseInt(matcher.group(1)),
|
|
Integer.parseInt(matcher.group(2)),
|
|
Integer.parseInt(matcher.group(3)),
|
|
Integer.parseInt(matcher.group(4)));
|
|
}
|
|
|
|
public String toShortString() {
|
|
return toShortString(new StringBuilder(32));
|
|
}
|
|
|
|
public String toShortString(StringBuilder sb) {
|
|
sb.setLength(0);
|
|
sb.append('['); sb.append(left); sb.append(',');
|
|
sb.append(top); sb.append("]["); sb.append(right);
|
|
sb.append(','); sb.append(bottom); sb.append(']');
|
|
return sb.toString();
|
|
}
|
|
|
|
public String flattenToString() {
|
|
StringBuilder sb = new StringBuilder(32);
|
|
sb.append(left);
|
|
sb.append(' ');
|
|
sb.append(top);
|
|
sb.append(' ');
|
|
sb.append(right);
|
|
sb.append(' ');
|
|
sb.append(bottom);
|
|
return sb.toString();
|
|
}
|
|
|
|
public void writeToParcel(Parcel out, int flags) {
|
|
out.writeInt(left);
|
|
out.writeInt(top);
|
|
out.writeInt(right);
|
|
out.writeInt(bottom);
|
|
}
|
|
|
|
public static final Parcelable.Creator<Rect> CREATOR = new Parcelable.Creator<Rect>() {
|
|
@Override
|
|
public Rect createFromParcel(Parcel in) {
|
|
Rect r = new Rect();
|
|
r.readFromParcel(in);
|
|
return r;
|
|
}
|
|
|
|
@Override
|
|
public Rect[] newArray(int size) {
|
|
return new Rect[size];
|
|
}
|
|
};
|
|
|
|
public void readFromParcel(Parcel in) {
|
|
left = in.readInt();
|
|
top = in.readInt();
|
|
right = in.readInt();
|
|
bottom = in.readInt();
|
|
}
|
|
}
|