Rabbit-R1/original r1/java/sources/androidx/constraintlayout/solver/widgets/Guideline.java
2024-05-21 17:08:36 -04:00

300 lines
11 KiB
Java

package androidx.constraintlayout.solver.widgets;
import androidx.constraintlayout.solver.LinearSystem;
import androidx.constraintlayout.solver.SolverVariable;
import androidx.constraintlayout.solver.widgets.ConstraintAnchor;
import androidx.constraintlayout.solver.widgets.ConstraintWidget;
import java.util.HashMap;
/* loaded from: classes.dex */
public class Guideline extends ConstraintWidget {
public static final int HORIZONTAL = 0;
public static final int RELATIVE_BEGIN = 1;
public static final int RELATIVE_END = 2;
public static final int RELATIVE_PERCENT = 0;
public static final int RELATIVE_UNKNWON = -1;
public static final int VERTICAL = 1;
protected float mRelativePercent = -1.0f;
protected int mRelativeBegin = -1;
protected int mRelativeEnd = -1;
private ConstraintAnchor mAnchor = this.mTop;
private int mOrientation = 0;
private int mMinimumPosition = 0;
@Override // androidx.constraintlayout.solver.widgets.ConstraintWidget
public boolean allowedInBarrier() {
return true;
}
public ConstraintAnchor getAnchor() {
return this.mAnchor;
}
public int getOrientation() {
return this.mOrientation;
}
public int getRelativeBegin() {
return this.mRelativeBegin;
}
public int getRelativeBehaviour() {
if (this.mRelativePercent != -1.0f) {
return 0;
}
if (this.mRelativeBegin != -1) {
return 1;
}
return this.mRelativeEnd != -1 ? 2 : -1;
}
public int getRelativeEnd() {
return this.mRelativeEnd;
}
public float getRelativePercent() {
return this.mRelativePercent;
}
@Override // androidx.constraintlayout.solver.widgets.ConstraintWidget
public String getType() {
return "Guideline";
}
public boolean isPercent() {
return this.mRelativePercent != -1.0f && this.mRelativeBegin == -1 && this.mRelativeEnd == -1;
}
public void setGuideBegin(int i) {
if (i > -1) {
this.mRelativePercent = -1.0f;
this.mRelativeBegin = i;
this.mRelativeEnd = -1;
}
}
public void setGuideEnd(int i) {
if (i > -1) {
this.mRelativePercent = -1.0f;
this.mRelativeBegin = -1;
this.mRelativeEnd = i;
}
}
public void setGuidePercent(float f) {
if (f > -1.0f) {
this.mRelativePercent = f;
this.mRelativeBegin = -1;
this.mRelativeEnd = -1;
}
}
public void setMinimumPosition(int i) {
this.mMinimumPosition = i;
}
public Guideline() {
this.mAnchors.clear();
this.mAnchors.add(this.mAnchor);
int length = this.mListAnchors.length;
for (int i = 0; i < length; i++) {
this.mListAnchors[i] = this.mAnchor;
}
}
@Override // androidx.constraintlayout.solver.widgets.ConstraintWidget
public void copy(ConstraintWidget constraintWidget, HashMap<ConstraintWidget, ConstraintWidget> hashMap) {
super.copy(constraintWidget, hashMap);
Guideline guideline = (Guideline) constraintWidget;
this.mRelativePercent = guideline.mRelativePercent;
this.mRelativeBegin = guideline.mRelativeBegin;
this.mRelativeEnd = guideline.mRelativeEnd;
setOrientation(guideline.mOrientation);
}
public void setOrientation(int i) {
if (this.mOrientation == i) {
return;
}
this.mOrientation = i;
this.mAnchors.clear();
if (this.mOrientation == 1) {
this.mAnchor = this.mLeft;
} else {
this.mAnchor = this.mTop;
}
this.mAnchors.add(this.mAnchor);
int length = this.mListAnchors.length;
for (int i2 = 0; i2 < length; i2++) {
this.mListAnchors[i2] = this.mAnchor;
}
}
/* renamed from: androidx.constraintlayout.solver.widgets.Guideline$1, reason: invalid class name */
/* loaded from: classes.dex */
static /* synthetic */ class AnonymousClass1 {
static final /* synthetic */ int[] $SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type;
static {
int[] iArr = new int[ConstraintAnchor.Type.values().length];
$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type = iArr;
try {
iArr[ConstraintAnchor.Type.LEFT.ordinal()] = 1;
} catch (NoSuchFieldError unused) {
}
try {
$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[ConstraintAnchor.Type.RIGHT.ordinal()] = 2;
} catch (NoSuchFieldError unused2) {
}
try {
$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[ConstraintAnchor.Type.TOP.ordinal()] = 3;
} catch (NoSuchFieldError unused3) {
}
try {
$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[ConstraintAnchor.Type.BOTTOM.ordinal()] = 4;
} catch (NoSuchFieldError unused4) {
}
try {
$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[ConstraintAnchor.Type.BASELINE.ordinal()] = 5;
} catch (NoSuchFieldError unused5) {
}
try {
$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[ConstraintAnchor.Type.CENTER.ordinal()] = 6;
} catch (NoSuchFieldError unused6) {
}
try {
$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[ConstraintAnchor.Type.CENTER_X.ordinal()] = 7;
} catch (NoSuchFieldError unused7) {
}
try {
$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[ConstraintAnchor.Type.CENTER_Y.ordinal()] = 8;
} catch (NoSuchFieldError unused8) {
}
try {
$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[ConstraintAnchor.Type.NONE.ordinal()] = 9;
} catch (NoSuchFieldError unused9) {
}
}
}
@Override // androidx.constraintlayout.solver.widgets.ConstraintWidget
public ConstraintAnchor getAnchor(ConstraintAnchor.Type type) {
switch (AnonymousClass1.$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[type.ordinal()]) {
case 1:
case 2:
if (this.mOrientation == 1) {
return this.mAnchor;
}
break;
case 3:
case 4:
if (this.mOrientation == 0) {
return this.mAnchor;
}
break;
case 5:
case 6:
case 7:
case 8:
case 9:
return null;
}
throw new AssertionError(type.name());
}
public void setGuidePercent(int i) {
setGuidePercent(i / 100.0f);
}
@Override // androidx.constraintlayout.solver.widgets.ConstraintWidget
public void addToSolver(LinearSystem linearSystem) {
ConstraintWidgetContainer constraintWidgetContainer = (ConstraintWidgetContainer) getParent();
if (constraintWidgetContainer == null) {
return;
}
ConstraintAnchor anchor = constraintWidgetContainer.getAnchor(ConstraintAnchor.Type.LEFT);
ConstraintAnchor anchor2 = constraintWidgetContainer.getAnchor(ConstraintAnchor.Type.RIGHT);
boolean z = this.mParent != null && this.mParent.mListDimensionBehaviors[0] == ConstraintWidget.DimensionBehaviour.WRAP_CONTENT;
if (this.mOrientation == 0) {
anchor = constraintWidgetContainer.getAnchor(ConstraintAnchor.Type.TOP);
anchor2 = constraintWidgetContainer.getAnchor(ConstraintAnchor.Type.BOTTOM);
z = this.mParent != null && this.mParent.mListDimensionBehaviors[1] == ConstraintWidget.DimensionBehaviour.WRAP_CONTENT;
}
if (this.mRelativeBegin != -1) {
SolverVariable createObjectVariable = linearSystem.createObjectVariable(this.mAnchor);
linearSystem.addEquality(createObjectVariable, linearSystem.createObjectVariable(anchor), this.mRelativeBegin, 8);
if (z) {
linearSystem.addGreaterThan(linearSystem.createObjectVariable(anchor2), createObjectVariable, 0, 5);
return;
}
return;
}
if (this.mRelativeEnd == -1) {
if (this.mRelativePercent != -1.0f) {
linearSystem.addConstraint(LinearSystem.createRowDimensionPercent(linearSystem, linearSystem.createObjectVariable(this.mAnchor), linearSystem.createObjectVariable(anchor2), this.mRelativePercent));
return;
}
return;
}
SolverVariable createObjectVariable2 = linearSystem.createObjectVariable(this.mAnchor);
SolverVariable createObjectVariable3 = linearSystem.createObjectVariable(anchor2);
linearSystem.addEquality(createObjectVariable2, createObjectVariable3, -this.mRelativeEnd, 8);
if (z) {
linearSystem.addGreaterThan(createObjectVariable2, linearSystem.createObjectVariable(anchor), 0, 5);
linearSystem.addGreaterThan(createObjectVariable3, createObjectVariable2, 0, 5);
}
}
@Override // androidx.constraintlayout.solver.widgets.ConstraintWidget
public void updateFromSolver(LinearSystem linearSystem) {
if (getParent() == null) {
return;
}
int objectVariableValue = linearSystem.getObjectVariableValue(this.mAnchor);
if (this.mOrientation == 1) {
setX(objectVariableValue);
setY(0);
setHeight(getParent().getHeight());
setWidth(0);
return;
}
setX(0);
setY(objectVariableValue);
setWidth(getParent().getWidth());
setHeight(0);
}
void inferRelativePercentPosition() {
float x = getX() / getParent().getWidth();
if (this.mOrientation == 0) {
x = getY() / getParent().getHeight();
}
setGuidePercent(x);
}
void inferRelativeBeginPosition() {
int x = getX();
if (this.mOrientation == 0) {
x = getY();
}
setGuideBegin(x);
}
void inferRelativeEndPosition() {
int width = getParent().getWidth() - getX();
if (this.mOrientation == 0) {
width = getParent().getHeight() - getY();
}
setGuideEnd(width);
}
public void cyclePosition() {
if (this.mRelativeBegin != -1) {
inferRelativePercentPosition();
} else if (this.mRelativePercent != -1.0f) {
inferRelativeEndPosition();
} else if (this.mRelativeEnd != -1) {
inferRelativeBeginPosition();
}
}
}