mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2025-01-09 13:43:22 +00:00
412 lines
19 KiB
Java
412 lines
19 KiB
Java
package com.google.android.material.shape;
|
|
|
|
import android.content.Context;
|
|
import android.content.res.TypedArray;
|
|
import android.graphics.RectF;
|
|
import android.util.AttributeSet;
|
|
import android.util.TypedValue;
|
|
import android.view.ContextThemeWrapper;
|
|
import com.google.android.material.R;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public class ShapeAppearanceModel {
|
|
public static final CornerSize PILL = new RelativeCornerSize(0.5f);
|
|
EdgeTreatment bottomEdge;
|
|
CornerTreatment bottomLeftCorner;
|
|
CornerSize bottomLeftCornerSize;
|
|
CornerTreatment bottomRightCorner;
|
|
CornerSize bottomRightCornerSize;
|
|
EdgeTreatment leftEdge;
|
|
EdgeTreatment rightEdge;
|
|
EdgeTreatment topEdge;
|
|
CornerTreatment topLeftCorner;
|
|
CornerSize topLeftCornerSize;
|
|
CornerTreatment topRightCorner;
|
|
CornerSize topRightCornerSize;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public interface CornerSizeUnaryOperator {
|
|
CornerSize apply(CornerSize cornerSize);
|
|
}
|
|
|
|
public EdgeTreatment getBottomEdge() {
|
|
return this.bottomEdge;
|
|
}
|
|
|
|
public CornerTreatment getBottomLeftCorner() {
|
|
return this.bottomLeftCorner;
|
|
}
|
|
|
|
public CornerSize getBottomLeftCornerSize() {
|
|
return this.bottomLeftCornerSize;
|
|
}
|
|
|
|
public CornerTreatment getBottomRightCorner() {
|
|
return this.bottomRightCorner;
|
|
}
|
|
|
|
public CornerSize getBottomRightCornerSize() {
|
|
return this.bottomRightCornerSize;
|
|
}
|
|
|
|
public EdgeTreatment getLeftEdge() {
|
|
return this.leftEdge;
|
|
}
|
|
|
|
public EdgeTreatment getRightEdge() {
|
|
return this.rightEdge;
|
|
}
|
|
|
|
public EdgeTreatment getTopEdge() {
|
|
return this.topEdge;
|
|
}
|
|
|
|
public CornerTreatment getTopLeftCorner() {
|
|
return this.topLeftCorner;
|
|
}
|
|
|
|
public CornerSize getTopLeftCornerSize() {
|
|
return this.topLeftCornerSize;
|
|
}
|
|
|
|
public CornerTreatment getTopRightCorner() {
|
|
return this.topRightCorner;
|
|
}
|
|
|
|
public CornerSize getTopRightCornerSize() {
|
|
return this.topRightCornerSize;
|
|
}
|
|
|
|
/* loaded from: classes2.dex */
|
|
public static final class Builder {
|
|
private EdgeTreatment bottomEdge;
|
|
private CornerTreatment bottomLeftCorner;
|
|
private CornerSize bottomLeftCornerSize;
|
|
private CornerTreatment bottomRightCorner;
|
|
private CornerSize bottomRightCornerSize;
|
|
private EdgeTreatment leftEdge;
|
|
private EdgeTreatment rightEdge;
|
|
private EdgeTreatment topEdge;
|
|
private CornerTreatment topLeftCorner;
|
|
private CornerSize topLeftCornerSize;
|
|
private CornerTreatment topRightCorner;
|
|
private CornerSize topRightCornerSize;
|
|
|
|
public Builder setBottomEdge(EdgeTreatment edgeTreatment) {
|
|
this.bottomEdge = edgeTreatment;
|
|
return this;
|
|
}
|
|
|
|
public Builder setBottomLeftCornerSize(CornerSize cornerSize) {
|
|
this.bottomLeftCornerSize = cornerSize;
|
|
return this;
|
|
}
|
|
|
|
public Builder setBottomRightCornerSize(CornerSize cornerSize) {
|
|
this.bottomRightCornerSize = cornerSize;
|
|
return this;
|
|
}
|
|
|
|
public Builder setLeftEdge(EdgeTreatment edgeTreatment) {
|
|
this.leftEdge = edgeTreatment;
|
|
return this;
|
|
}
|
|
|
|
public Builder setRightEdge(EdgeTreatment edgeTreatment) {
|
|
this.rightEdge = edgeTreatment;
|
|
return this;
|
|
}
|
|
|
|
public Builder setTopEdge(EdgeTreatment edgeTreatment) {
|
|
this.topEdge = edgeTreatment;
|
|
return this;
|
|
}
|
|
|
|
public Builder setTopLeftCornerSize(CornerSize cornerSize) {
|
|
this.topLeftCornerSize = cornerSize;
|
|
return this;
|
|
}
|
|
|
|
public Builder setTopRightCornerSize(CornerSize cornerSize) {
|
|
this.topRightCornerSize = cornerSize;
|
|
return this;
|
|
}
|
|
|
|
public Builder() {
|
|
this.topLeftCorner = MaterialShapeUtils.createDefaultCornerTreatment();
|
|
this.topRightCorner = MaterialShapeUtils.createDefaultCornerTreatment();
|
|
this.bottomRightCorner = MaterialShapeUtils.createDefaultCornerTreatment();
|
|
this.bottomLeftCorner = MaterialShapeUtils.createDefaultCornerTreatment();
|
|
this.topLeftCornerSize = new AbsoluteCornerSize(0.0f);
|
|
this.topRightCornerSize = new AbsoluteCornerSize(0.0f);
|
|
this.bottomRightCornerSize = new AbsoluteCornerSize(0.0f);
|
|
this.bottomLeftCornerSize = new AbsoluteCornerSize(0.0f);
|
|
this.topEdge = MaterialShapeUtils.createDefaultEdgeTreatment();
|
|
this.rightEdge = MaterialShapeUtils.createDefaultEdgeTreatment();
|
|
this.bottomEdge = MaterialShapeUtils.createDefaultEdgeTreatment();
|
|
this.leftEdge = MaterialShapeUtils.createDefaultEdgeTreatment();
|
|
}
|
|
|
|
public Builder(ShapeAppearanceModel shapeAppearanceModel) {
|
|
this.topLeftCorner = MaterialShapeUtils.createDefaultCornerTreatment();
|
|
this.topRightCorner = MaterialShapeUtils.createDefaultCornerTreatment();
|
|
this.bottomRightCorner = MaterialShapeUtils.createDefaultCornerTreatment();
|
|
this.bottomLeftCorner = MaterialShapeUtils.createDefaultCornerTreatment();
|
|
this.topLeftCornerSize = new AbsoluteCornerSize(0.0f);
|
|
this.topRightCornerSize = new AbsoluteCornerSize(0.0f);
|
|
this.bottomRightCornerSize = new AbsoluteCornerSize(0.0f);
|
|
this.bottomLeftCornerSize = new AbsoluteCornerSize(0.0f);
|
|
this.topEdge = MaterialShapeUtils.createDefaultEdgeTreatment();
|
|
this.rightEdge = MaterialShapeUtils.createDefaultEdgeTreatment();
|
|
this.bottomEdge = MaterialShapeUtils.createDefaultEdgeTreatment();
|
|
this.leftEdge = MaterialShapeUtils.createDefaultEdgeTreatment();
|
|
this.topLeftCorner = shapeAppearanceModel.topLeftCorner;
|
|
this.topRightCorner = shapeAppearanceModel.topRightCorner;
|
|
this.bottomRightCorner = shapeAppearanceModel.bottomRightCorner;
|
|
this.bottomLeftCorner = shapeAppearanceModel.bottomLeftCorner;
|
|
this.topLeftCornerSize = shapeAppearanceModel.topLeftCornerSize;
|
|
this.topRightCornerSize = shapeAppearanceModel.topRightCornerSize;
|
|
this.bottomRightCornerSize = shapeAppearanceModel.bottomRightCornerSize;
|
|
this.bottomLeftCornerSize = shapeAppearanceModel.bottomLeftCornerSize;
|
|
this.topEdge = shapeAppearanceModel.topEdge;
|
|
this.rightEdge = shapeAppearanceModel.rightEdge;
|
|
this.bottomEdge = shapeAppearanceModel.bottomEdge;
|
|
this.leftEdge = shapeAppearanceModel.leftEdge;
|
|
}
|
|
|
|
public Builder setAllCorners(int i, float f) {
|
|
return setAllCorners(MaterialShapeUtils.createCornerTreatment(i)).setAllCornerSizes(f);
|
|
}
|
|
|
|
public Builder setAllCorners(CornerTreatment cornerTreatment) {
|
|
return setTopLeftCorner(cornerTreatment).setTopRightCorner(cornerTreatment).setBottomRightCorner(cornerTreatment).setBottomLeftCorner(cornerTreatment);
|
|
}
|
|
|
|
public Builder setAllCornerSizes(CornerSize cornerSize) {
|
|
return setTopLeftCornerSize(cornerSize).setTopRightCornerSize(cornerSize).setBottomRightCornerSize(cornerSize).setBottomLeftCornerSize(cornerSize);
|
|
}
|
|
|
|
public Builder setAllCornerSizes(float f) {
|
|
return setTopLeftCornerSize(f).setTopRightCornerSize(f).setBottomRightCornerSize(f).setBottomLeftCornerSize(f);
|
|
}
|
|
|
|
public Builder setTopLeftCornerSize(float f) {
|
|
this.topLeftCornerSize = new AbsoluteCornerSize(f);
|
|
return this;
|
|
}
|
|
|
|
public Builder setTopRightCornerSize(float f) {
|
|
this.topRightCornerSize = new AbsoluteCornerSize(f);
|
|
return this;
|
|
}
|
|
|
|
public Builder setBottomRightCornerSize(float f) {
|
|
this.bottomRightCornerSize = new AbsoluteCornerSize(f);
|
|
return this;
|
|
}
|
|
|
|
public Builder setBottomLeftCornerSize(float f) {
|
|
this.bottomLeftCornerSize = new AbsoluteCornerSize(f);
|
|
return this;
|
|
}
|
|
|
|
public Builder setTopLeftCorner(int i, float f) {
|
|
return setTopLeftCorner(MaterialShapeUtils.createCornerTreatment(i)).setTopLeftCornerSize(f);
|
|
}
|
|
|
|
public Builder setTopLeftCorner(int i, CornerSize cornerSize) {
|
|
return setTopLeftCorner(MaterialShapeUtils.createCornerTreatment(i)).setTopLeftCornerSize(cornerSize);
|
|
}
|
|
|
|
public Builder setTopLeftCorner(CornerTreatment cornerTreatment) {
|
|
this.topLeftCorner = cornerTreatment;
|
|
float compatCornerTreatmentSize = compatCornerTreatmentSize(cornerTreatment);
|
|
if (compatCornerTreatmentSize != -1.0f) {
|
|
setTopLeftCornerSize(compatCornerTreatmentSize);
|
|
}
|
|
return this;
|
|
}
|
|
|
|
public Builder setTopRightCorner(int i, float f) {
|
|
return setTopRightCorner(MaterialShapeUtils.createCornerTreatment(i)).setTopRightCornerSize(f);
|
|
}
|
|
|
|
public Builder setTopRightCorner(int i, CornerSize cornerSize) {
|
|
return setTopRightCorner(MaterialShapeUtils.createCornerTreatment(i)).setTopRightCornerSize(cornerSize);
|
|
}
|
|
|
|
public Builder setTopRightCorner(CornerTreatment cornerTreatment) {
|
|
this.topRightCorner = cornerTreatment;
|
|
float compatCornerTreatmentSize = compatCornerTreatmentSize(cornerTreatment);
|
|
if (compatCornerTreatmentSize != -1.0f) {
|
|
setTopRightCornerSize(compatCornerTreatmentSize);
|
|
}
|
|
return this;
|
|
}
|
|
|
|
public Builder setBottomRightCorner(int i, float f) {
|
|
return setBottomRightCorner(MaterialShapeUtils.createCornerTreatment(i)).setBottomRightCornerSize(f);
|
|
}
|
|
|
|
public Builder setBottomRightCorner(int i, CornerSize cornerSize) {
|
|
return setBottomRightCorner(MaterialShapeUtils.createCornerTreatment(i)).setBottomRightCornerSize(cornerSize);
|
|
}
|
|
|
|
public Builder setBottomRightCorner(CornerTreatment cornerTreatment) {
|
|
this.bottomRightCorner = cornerTreatment;
|
|
float compatCornerTreatmentSize = compatCornerTreatmentSize(cornerTreatment);
|
|
if (compatCornerTreatmentSize != -1.0f) {
|
|
setBottomRightCornerSize(compatCornerTreatmentSize);
|
|
}
|
|
return this;
|
|
}
|
|
|
|
public Builder setBottomLeftCorner(int i, float f) {
|
|
return setBottomLeftCorner(MaterialShapeUtils.createCornerTreatment(i)).setBottomLeftCornerSize(f);
|
|
}
|
|
|
|
public Builder setBottomLeftCorner(int i, CornerSize cornerSize) {
|
|
return setBottomLeftCorner(MaterialShapeUtils.createCornerTreatment(i)).setBottomLeftCornerSize(cornerSize);
|
|
}
|
|
|
|
public Builder setBottomLeftCorner(CornerTreatment cornerTreatment) {
|
|
this.bottomLeftCorner = cornerTreatment;
|
|
float compatCornerTreatmentSize = compatCornerTreatmentSize(cornerTreatment);
|
|
if (compatCornerTreatmentSize != -1.0f) {
|
|
setBottomLeftCornerSize(compatCornerTreatmentSize);
|
|
}
|
|
return this;
|
|
}
|
|
|
|
public Builder setAllEdges(EdgeTreatment edgeTreatment) {
|
|
return setLeftEdge(edgeTreatment).setTopEdge(edgeTreatment).setRightEdge(edgeTreatment).setBottomEdge(edgeTreatment);
|
|
}
|
|
|
|
private static float compatCornerTreatmentSize(CornerTreatment cornerTreatment) {
|
|
if (cornerTreatment instanceof RoundedCornerTreatment) {
|
|
return ((RoundedCornerTreatment) cornerTreatment).radius;
|
|
}
|
|
if (cornerTreatment instanceof CutCornerTreatment) {
|
|
return ((CutCornerTreatment) cornerTreatment).size;
|
|
}
|
|
return -1.0f;
|
|
}
|
|
|
|
public ShapeAppearanceModel build() {
|
|
return new ShapeAppearanceModel(this);
|
|
}
|
|
}
|
|
|
|
public static Builder builder() {
|
|
return new Builder();
|
|
}
|
|
|
|
public static Builder builder(Context context, AttributeSet attributeSet, int i, int i2) {
|
|
return builder(context, attributeSet, i, i2, 0);
|
|
}
|
|
|
|
public static Builder builder(Context context, AttributeSet attributeSet, int i, int i2, int i3) {
|
|
return builder(context, attributeSet, i, i2, new AbsoluteCornerSize(i3));
|
|
}
|
|
|
|
public static Builder builder(Context context, AttributeSet attributeSet, int i, int i2, CornerSize cornerSize) {
|
|
TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, R.styleable.MaterialShape, i, i2);
|
|
int resourceId = obtainStyledAttributes.getResourceId(R.styleable.MaterialShape_shapeAppearance, 0);
|
|
int resourceId2 = obtainStyledAttributes.getResourceId(R.styleable.MaterialShape_shapeAppearanceOverlay, 0);
|
|
obtainStyledAttributes.recycle();
|
|
return builder(context, resourceId, resourceId2, cornerSize);
|
|
}
|
|
|
|
public static Builder builder(Context context, int i, int i2) {
|
|
return builder(context, i, i2, 0);
|
|
}
|
|
|
|
private static Builder builder(Context context, int i, int i2, int i3) {
|
|
return builder(context, i, i2, new AbsoluteCornerSize(i3));
|
|
}
|
|
|
|
private static Builder builder(Context context, int i, int i2, CornerSize cornerSize) {
|
|
ContextThemeWrapper contextThemeWrapper = new ContextThemeWrapper(context, i);
|
|
if (i2 != 0) {
|
|
contextThemeWrapper = new ContextThemeWrapper(contextThemeWrapper, i2);
|
|
}
|
|
TypedArray obtainStyledAttributes = contextThemeWrapper.obtainStyledAttributes(R.styleable.ShapeAppearance);
|
|
try {
|
|
int i3 = obtainStyledAttributes.getInt(R.styleable.ShapeAppearance_cornerFamily, 0);
|
|
int i4 = obtainStyledAttributes.getInt(R.styleable.ShapeAppearance_cornerFamilyTopLeft, i3);
|
|
int i5 = obtainStyledAttributes.getInt(R.styleable.ShapeAppearance_cornerFamilyTopRight, i3);
|
|
int i6 = obtainStyledAttributes.getInt(R.styleable.ShapeAppearance_cornerFamilyBottomRight, i3);
|
|
int i7 = obtainStyledAttributes.getInt(R.styleable.ShapeAppearance_cornerFamilyBottomLeft, i3);
|
|
CornerSize cornerSize2 = getCornerSize(obtainStyledAttributes, R.styleable.ShapeAppearance_cornerSize, cornerSize);
|
|
CornerSize cornerSize3 = getCornerSize(obtainStyledAttributes, R.styleable.ShapeAppearance_cornerSizeTopLeft, cornerSize2);
|
|
CornerSize cornerSize4 = getCornerSize(obtainStyledAttributes, R.styleable.ShapeAppearance_cornerSizeTopRight, cornerSize2);
|
|
CornerSize cornerSize5 = getCornerSize(obtainStyledAttributes, R.styleable.ShapeAppearance_cornerSizeBottomRight, cornerSize2);
|
|
return new Builder().setTopLeftCorner(i4, cornerSize3).setTopRightCorner(i5, cornerSize4).setBottomRightCorner(i6, cornerSize5).setBottomLeftCorner(i7, getCornerSize(obtainStyledAttributes, R.styleable.ShapeAppearance_cornerSizeBottomLeft, cornerSize2));
|
|
} finally {
|
|
obtainStyledAttributes.recycle();
|
|
}
|
|
}
|
|
|
|
private static CornerSize getCornerSize(TypedArray typedArray, int i, CornerSize cornerSize) {
|
|
TypedValue peekValue = typedArray.peekValue(i);
|
|
if (peekValue == null) {
|
|
return cornerSize;
|
|
}
|
|
if (peekValue.type == 5) {
|
|
return new AbsoluteCornerSize(TypedValue.complexToDimensionPixelSize(peekValue.data, typedArray.getResources().getDisplayMetrics()));
|
|
}
|
|
return peekValue.type == 6 ? new RelativeCornerSize(peekValue.getFraction(1.0f, 1.0f)) : cornerSize;
|
|
}
|
|
|
|
private ShapeAppearanceModel(Builder builder) {
|
|
this.topLeftCorner = builder.topLeftCorner;
|
|
this.topRightCorner = builder.topRightCorner;
|
|
this.bottomRightCorner = builder.bottomRightCorner;
|
|
this.bottomLeftCorner = builder.bottomLeftCorner;
|
|
this.topLeftCornerSize = builder.topLeftCornerSize;
|
|
this.topRightCornerSize = builder.topRightCornerSize;
|
|
this.bottomRightCornerSize = builder.bottomRightCornerSize;
|
|
this.bottomLeftCornerSize = builder.bottomLeftCornerSize;
|
|
this.topEdge = builder.topEdge;
|
|
this.rightEdge = builder.rightEdge;
|
|
this.bottomEdge = builder.bottomEdge;
|
|
this.leftEdge = builder.leftEdge;
|
|
}
|
|
|
|
public ShapeAppearanceModel() {
|
|
this.topLeftCorner = MaterialShapeUtils.createDefaultCornerTreatment();
|
|
this.topRightCorner = MaterialShapeUtils.createDefaultCornerTreatment();
|
|
this.bottomRightCorner = MaterialShapeUtils.createDefaultCornerTreatment();
|
|
this.bottomLeftCorner = MaterialShapeUtils.createDefaultCornerTreatment();
|
|
this.topLeftCornerSize = new AbsoluteCornerSize(0.0f);
|
|
this.topRightCornerSize = new AbsoluteCornerSize(0.0f);
|
|
this.bottomRightCornerSize = new AbsoluteCornerSize(0.0f);
|
|
this.bottomLeftCornerSize = new AbsoluteCornerSize(0.0f);
|
|
this.topEdge = MaterialShapeUtils.createDefaultEdgeTreatment();
|
|
this.rightEdge = MaterialShapeUtils.createDefaultEdgeTreatment();
|
|
this.bottomEdge = MaterialShapeUtils.createDefaultEdgeTreatment();
|
|
this.leftEdge = MaterialShapeUtils.createDefaultEdgeTreatment();
|
|
}
|
|
|
|
public Builder toBuilder() {
|
|
return new Builder(this);
|
|
}
|
|
|
|
public ShapeAppearanceModel withCornerSize(float f) {
|
|
return toBuilder().setAllCornerSizes(f).build();
|
|
}
|
|
|
|
public ShapeAppearanceModel withCornerSize(CornerSize cornerSize) {
|
|
return toBuilder().setAllCornerSizes(cornerSize).build();
|
|
}
|
|
|
|
public ShapeAppearanceModel withTransformedCornerSizes(CornerSizeUnaryOperator cornerSizeUnaryOperator) {
|
|
return toBuilder().setTopLeftCornerSize(cornerSizeUnaryOperator.apply(getTopLeftCornerSize())).setTopRightCornerSize(cornerSizeUnaryOperator.apply(getTopRightCornerSize())).setBottomLeftCornerSize(cornerSizeUnaryOperator.apply(getBottomLeftCornerSize())).setBottomRightCornerSize(cornerSizeUnaryOperator.apply(getBottomRightCornerSize())).build();
|
|
}
|
|
|
|
public boolean isRoundRect(RectF rectF) {
|
|
boolean z = this.leftEdge.getClass().equals(EdgeTreatment.class) && this.rightEdge.getClass().equals(EdgeTreatment.class) && this.topEdge.getClass().equals(EdgeTreatment.class) && this.bottomEdge.getClass().equals(EdgeTreatment.class);
|
|
float cornerSize = this.topLeftCornerSize.getCornerSize(rectF);
|
|
return z && ((this.topRightCornerSize.getCornerSize(rectF) > cornerSize ? 1 : (this.topRightCornerSize.getCornerSize(rectF) == cornerSize ? 0 : -1)) == 0 && (this.bottomLeftCornerSize.getCornerSize(rectF) > cornerSize ? 1 : (this.bottomLeftCornerSize.getCornerSize(rectF) == cornerSize ? 0 : -1)) == 0 && (this.bottomRightCornerSize.getCornerSize(rectF) > cornerSize ? 1 : (this.bottomRightCornerSize.getCornerSize(rectF) == cornerSize ? 0 : -1)) == 0) && ((this.topRightCorner instanceof RoundedCornerTreatment) && (this.topLeftCorner instanceof RoundedCornerTreatment) && (this.bottomRightCorner instanceof RoundedCornerTreatment) && (this.bottomLeftCorner instanceof RoundedCornerTreatment));
|
|
}
|
|
}
|