327 lines
13 KiB
Java
327 lines
13 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;
|
|
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;
|
|
private ConstraintAnchor mAnchor = this.mTop;
|
|
private int mMinimumPosition;
|
|
private int mOrientation;
|
|
public int mRelativeBegin = -1;
|
|
public int mRelativeEnd = -1;
|
|
public float mRelativePercent = -1.0f;
|
|
private boolean resolved;
|
|
|
|
/* renamed from: androidx.constraintlayout.solver.widgets.Guideline$1 reason: invalid class name */
|
|
public static /* synthetic */ class AnonymousClass1 {
|
|
public static final /* synthetic */ int[] $SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type;
|
|
|
|
static {
|
|
ConstraintAnchor.Type.values();
|
|
int[] iArr = new int[9];
|
|
$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) {
|
|
}
|
|
}
|
|
}
|
|
|
|
public Guideline() {
|
|
this.mOrientation = 0;
|
|
this.mMinimumPosition = 0;
|
|
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 addToSolver(LinearSystem linearSystem, boolean z2) {
|
|
ConstraintWidgetContainer constraintWidgetContainer = (ConstraintWidgetContainer) getParent();
|
|
if (constraintWidgetContainer != null) {
|
|
ConstraintAnchor anchor = constraintWidgetContainer.getAnchor(ConstraintAnchor.Type.LEFT);
|
|
ConstraintAnchor anchor2 = constraintWidgetContainer.getAnchor(ConstraintAnchor.Type.RIGHT);
|
|
ConstraintWidget constraintWidget = this.mParent;
|
|
boolean z3 = true;
|
|
boolean z4 = constraintWidget != null && constraintWidget.mListDimensionBehaviors[0] == ConstraintWidget.DimensionBehaviour.WRAP_CONTENT;
|
|
if (this.mOrientation == 0) {
|
|
anchor = constraintWidgetContainer.getAnchor(ConstraintAnchor.Type.TOP);
|
|
anchor2 = constraintWidgetContainer.getAnchor(ConstraintAnchor.Type.BOTTOM);
|
|
ConstraintWidget constraintWidget2 = this.mParent;
|
|
if (constraintWidget2 == null || constraintWidget2.mListDimensionBehaviors[1] != ConstraintWidget.DimensionBehaviour.WRAP_CONTENT) {
|
|
z3 = false;
|
|
}
|
|
z4 = z3;
|
|
}
|
|
if (this.resolved && this.mAnchor.hasFinalValue()) {
|
|
SolverVariable createObjectVariable = linearSystem.createObjectVariable(this.mAnchor);
|
|
linearSystem.addEquality(createObjectVariable, this.mAnchor.getFinalValue());
|
|
if (this.mRelativeBegin != -1) {
|
|
if (z4) {
|
|
linearSystem.addGreaterThan(linearSystem.createObjectVariable(anchor2), createObjectVariable, 0, 5);
|
|
}
|
|
} else if (this.mRelativeEnd != -1 && z4) {
|
|
SolverVariable createObjectVariable2 = linearSystem.createObjectVariable(anchor2);
|
|
linearSystem.addGreaterThan(createObjectVariable, linearSystem.createObjectVariable(anchor), 0, 5);
|
|
linearSystem.addGreaterThan(createObjectVariable2, createObjectVariable, 0, 5);
|
|
}
|
|
this.resolved = false;
|
|
} else if (this.mRelativeBegin != -1) {
|
|
SolverVariable createObjectVariable3 = linearSystem.createObjectVariable(this.mAnchor);
|
|
linearSystem.addEquality(createObjectVariable3, linearSystem.createObjectVariable(anchor), this.mRelativeBegin, 8);
|
|
if (z4) {
|
|
linearSystem.addGreaterThan(linearSystem.createObjectVariable(anchor2), createObjectVariable3, 0, 5);
|
|
}
|
|
} else if (this.mRelativeEnd != -1) {
|
|
SolverVariable createObjectVariable4 = linearSystem.createObjectVariable(this.mAnchor);
|
|
SolverVariable createObjectVariable5 = linearSystem.createObjectVariable(anchor2);
|
|
linearSystem.addEquality(createObjectVariable4, createObjectVariable5, -this.mRelativeEnd, 8);
|
|
if (z4) {
|
|
linearSystem.addGreaterThan(createObjectVariable4, linearSystem.createObjectVariable(anchor), 0, 5);
|
|
linearSystem.addGreaterThan(createObjectVariable5, createObjectVariable4, 0, 5);
|
|
}
|
|
} else if (this.mRelativePercent != -1.0f) {
|
|
linearSystem.addConstraint(LinearSystem.createRowDimensionPercent(linearSystem, linearSystem.createObjectVariable(this.mAnchor), linearSystem.createObjectVariable(anchor2), this.mRelativePercent));
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override // androidx.constraintlayout.solver.widgets.ConstraintWidget
|
|
public boolean allowedInBarrier() {
|
|
return true;
|
|
}
|
|
|
|
@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 cyclePosition() {
|
|
if (this.mRelativeBegin != -1) {
|
|
inferRelativePercentPosition();
|
|
} else if (this.mRelativePercent != -1.0f) {
|
|
inferRelativeEndPosition();
|
|
} else if (this.mRelativeEnd != -1) {
|
|
inferRelativeBeginPosition();
|
|
}
|
|
}
|
|
|
|
public ConstraintAnchor getAnchor() {
|
|
return this.mAnchor;
|
|
}
|
|
|
|
@Override // androidx.constraintlayout.solver.widgets.ConstraintWidget
|
|
public ConstraintAnchor getAnchor(ConstraintAnchor.Type type) {
|
|
switch (type.ordinal()) {
|
|
case 0:
|
|
case 5:
|
|
case 6:
|
|
case 7:
|
|
case 8:
|
|
return null;
|
|
case 1:
|
|
case 3:
|
|
if (this.mOrientation == 1) {
|
|
return this.mAnchor;
|
|
}
|
|
break;
|
|
case 2:
|
|
case 4:
|
|
if (this.mOrientation == 0) {
|
|
return this.mAnchor;
|
|
}
|
|
break;
|
|
}
|
|
throw new AssertionError(type.name());
|
|
}
|
|
|
|
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 void inferRelativeBeginPosition() {
|
|
int x2 = getX();
|
|
if (this.mOrientation == 0) {
|
|
x2 = getY();
|
|
}
|
|
setGuideBegin(x2);
|
|
}
|
|
|
|
public void inferRelativeEndPosition() {
|
|
int width = getParent().getWidth() - getX();
|
|
if (this.mOrientation == 0) {
|
|
width = getParent().getHeight() - getY();
|
|
}
|
|
setGuideEnd(width);
|
|
}
|
|
|
|
public void inferRelativePercentPosition() {
|
|
float x2 = ((float) getX()) / ((float) getParent().getWidth());
|
|
if (this.mOrientation == 0) {
|
|
x2 = ((float) getY()) / ((float) getParent().getHeight());
|
|
}
|
|
setGuidePercent(x2);
|
|
}
|
|
|
|
public boolean isPercent() {
|
|
return this.mRelativePercent != -1.0f && this.mRelativeBegin == -1 && this.mRelativeEnd == -1;
|
|
}
|
|
|
|
@Override // androidx.constraintlayout.solver.widgets.ConstraintWidget
|
|
public boolean isResolvedHorizontally() {
|
|
return this.resolved;
|
|
}
|
|
|
|
@Override // androidx.constraintlayout.solver.widgets.ConstraintWidget
|
|
public boolean isResolvedVertically() {
|
|
return this.resolved;
|
|
}
|
|
|
|
public void setFinalValue(int i) {
|
|
this.mAnchor.setFinalValue(i);
|
|
this.resolved = true;
|
|
}
|
|
|
|
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 setGuidePercent(int i) {
|
|
setGuidePercent(((float) i) / 100.0f);
|
|
}
|
|
|
|
public void setMinimumPosition(int i) {
|
|
this.mMinimumPosition = i;
|
|
}
|
|
|
|
public void setOrientation(int i) {
|
|
if (this.mOrientation != i) {
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override // androidx.constraintlayout.solver.widgets.ConstraintWidget
|
|
public void updateFromSolver(LinearSystem linearSystem, boolean z2) {
|
|
if (getParent() != null) {
|
|
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);
|
|
}
|
|
}
|
|
}
|