Rabbit-R1/android (non root)/java/sources/androidx/constraintlayout/solver/widgets/ConstraintAnchor.java

368 lines
12 KiB
Java
Raw Normal View History

2024-05-21 16:08:36 -05:00
package androidx.constraintlayout.solver.widgets;
import androidx.constraintlayout.solver.Cache;
import androidx.constraintlayout.solver.SolverVariable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
/* loaded from: classes.dex */
public class ConstraintAnchor {
private static final boolean ALLOW_BINARY = false;
private static final int UNSET_GONE_MARGIN = -1;
public final ConstraintWidget mOwner;
SolverVariable mSolverVariable;
public ConstraintAnchor mTarget;
public final Type mType;
private HashSet<ConstraintAnchor> mDependents = null;
public int mMargin = 0;
int mGoneMargin = -1;
/* loaded from: classes.dex */
public enum Type {
NONE,
LEFT,
TOP,
RIGHT,
BOTTOM,
BASELINE,
CENTER,
CENTER_X,
CENTER_Y
}
public ConstraintWidget getOwner() {
return this.mOwner;
}
public SolverVariable getSolverVariable() {
return this.mSolverVariable;
}
public ConstraintAnchor getTarget() {
return this.mTarget;
}
public Type getType() {
return this.mType;
}
public boolean isConnected() {
return this.mTarget != null;
}
public boolean hasDependents() {
HashSet<ConstraintAnchor> hashSet = this.mDependents;
return hashSet != null && hashSet.size() > 0;
}
public boolean hasCenteredDependents() {
HashSet<ConstraintAnchor> hashSet = this.mDependents;
if (hashSet == null) {
return false;
}
Iterator<ConstraintAnchor> it = hashSet.iterator();
while (it.hasNext()) {
if (it.next().getOpposite().isConnected()) {
return true;
}
}
return false;
}
public void copyFrom(ConstraintAnchor constraintAnchor, HashMap<ConstraintWidget, ConstraintWidget> hashMap) {
HashSet<ConstraintAnchor> hashSet;
ConstraintAnchor constraintAnchor2 = this.mTarget;
if (constraintAnchor2 != null && (hashSet = constraintAnchor2.mDependents) != null) {
hashSet.remove(this);
}
ConstraintAnchor constraintAnchor3 = constraintAnchor.mTarget;
if (constraintAnchor3 != null) {
this.mTarget = hashMap.get(constraintAnchor.mTarget.mOwner).getAnchor(constraintAnchor3.getType());
} else {
this.mTarget = null;
}
ConstraintAnchor constraintAnchor4 = this.mTarget;
if (constraintAnchor4 != null) {
if (constraintAnchor4.mDependents == null) {
constraintAnchor4.mDependents = new HashSet<>();
}
this.mTarget.mDependents.add(this);
}
this.mMargin = constraintAnchor.mMargin;
this.mGoneMargin = constraintAnchor.mGoneMargin;
}
public ConstraintAnchor(ConstraintWidget constraintWidget, Type type) {
this.mOwner = constraintWidget;
this.mType = type;
}
public void resetSolverVariable(Cache cache) {
SolverVariable solverVariable = this.mSolverVariable;
if (solverVariable == null) {
this.mSolverVariable = new SolverVariable(SolverVariable.Type.UNRESTRICTED, (String) null);
} else {
solverVariable.reset();
}
}
public int getMargin() {
ConstraintAnchor constraintAnchor;
if (this.mOwner.getVisibility() == 8) {
return 0;
}
return (this.mGoneMargin <= -1 || (constraintAnchor = this.mTarget) == null || constraintAnchor.mOwner.getVisibility() != 8) ? this.mMargin : this.mGoneMargin;
}
public void reset() {
HashSet<ConstraintAnchor> hashSet;
ConstraintAnchor constraintAnchor = this.mTarget;
if (constraintAnchor != null && (hashSet = constraintAnchor.mDependents) != null) {
hashSet.remove(this);
}
this.mTarget = null;
this.mMargin = 0;
this.mGoneMargin = -1;
}
public boolean connect(ConstraintAnchor constraintAnchor, int i, int i2, boolean z) {
if (constraintAnchor == null) {
reset();
return true;
}
if (!z && !isValidConnection(constraintAnchor)) {
return false;
}
this.mTarget = constraintAnchor;
if (constraintAnchor.mDependents == null) {
constraintAnchor.mDependents = new HashSet<>();
}
this.mTarget.mDependents.add(this);
if (i > 0) {
this.mMargin = i;
} else {
this.mMargin = 0;
}
this.mGoneMargin = i2;
return true;
}
public boolean connect(ConstraintAnchor constraintAnchor, int i) {
return connect(constraintAnchor, i, -1, false);
}
public boolean isValidConnection(ConstraintAnchor constraintAnchor) {
if (constraintAnchor == null) {
return false;
}
Type type = constraintAnchor.getType();
Type type2 = this.mType;
if (type == type2) {
return type2 != Type.BASELINE || (constraintAnchor.getOwner().hasBaseline() && getOwner().hasBaseline());
}
switch (AnonymousClass1.$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[this.mType.ordinal()]) {
case 1:
return (type == Type.BASELINE || type == Type.CENTER_X || type == Type.CENTER_Y) ? false : true;
case 2:
case 3:
boolean z = type == Type.LEFT || type == Type.RIGHT;
if (constraintAnchor.getOwner() instanceof Guideline) {
return z || type == Type.CENTER_X;
}
return z;
case 4:
case 5:
boolean z2 = type == Type.TOP || type == Type.BOTTOM;
if (constraintAnchor.getOwner() instanceof Guideline) {
return z2 || type == Type.CENTER_Y;
}
return z2;
case 6:
case 7:
case 8:
case 9:
return false;
default:
throw new AssertionError(this.mType.name());
}
}
/* JADX INFO: Access modifiers changed from: package-private */
/* renamed from: androidx.constraintlayout.solver.widgets.ConstraintAnchor$1, reason: invalid class name */
/* loaded from: classes.dex */
public static /* synthetic */ class AnonymousClass1 {
static final /* synthetic */ int[] $SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type;
static {
int[] iArr = new int[Type.values().length];
$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type = iArr;
try {
iArr[Type.CENTER.ordinal()] = 1;
} catch (NoSuchFieldError unused) {
}
try {
$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[Type.LEFT.ordinal()] = 2;
} catch (NoSuchFieldError unused2) {
}
try {
$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[Type.RIGHT.ordinal()] = 3;
} catch (NoSuchFieldError unused3) {
}
try {
$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[Type.TOP.ordinal()] = 4;
} catch (NoSuchFieldError unused4) {
}
try {
$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[Type.BOTTOM.ordinal()] = 5;
} catch (NoSuchFieldError unused5) {
}
try {
$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[Type.BASELINE.ordinal()] = 6;
} catch (NoSuchFieldError unused6) {
}
try {
$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[Type.CENTER_X.ordinal()] = 7;
} catch (NoSuchFieldError unused7) {
}
try {
$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[Type.CENTER_Y.ordinal()] = 8;
} catch (NoSuchFieldError unused8) {
}
try {
$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[Type.NONE.ordinal()] = 9;
} catch (NoSuchFieldError unused9) {
}
}
}
public boolean isSideAnchor() {
switch (AnonymousClass1.$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[this.mType.ordinal()]) {
case 1:
case 6:
case 7:
case 8:
case 9:
return false;
case 2:
case 3:
case 4:
case 5:
return true;
default:
throw new AssertionError(this.mType.name());
}
}
public boolean isSimilarDimensionConnection(ConstraintAnchor constraintAnchor) {
Type type = constraintAnchor.getType();
if (type == this.mType) {
return true;
}
switch (AnonymousClass1.$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[this.mType.ordinal()]) {
case 1:
return type != Type.BASELINE;
case 2:
case 3:
case 7:
return type == Type.LEFT || type == Type.RIGHT || type == Type.CENTER_X;
case 4:
case 5:
case 6:
case 8:
return type == Type.TOP || type == Type.BOTTOM || type == Type.CENTER_Y || type == Type.BASELINE;
case 9:
return false;
default:
throw new AssertionError(this.mType.name());
}
}
public void setMargin(int i) {
if (isConnected()) {
this.mMargin = i;
}
}
public void setGoneMargin(int i) {
if (isConnected()) {
this.mGoneMargin = i;
}
}
public boolean isVerticalAnchor() {
switch (AnonymousClass1.$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[this.mType.ordinal()]) {
case 1:
case 2:
case 3:
case 7:
return false;
case 4:
case 5:
case 6:
case 8:
case 9:
return true;
default:
throw new AssertionError(this.mType.name());
}
}
public String toString() {
return this.mOwner.getDebugName() + ":" + this.mType.toString();
}
public boolean isConnectionAllowed(ConstraintWidget constraintWidget, ConstraintAnchor constraintAnchor) {
return isConnectionAllowed(constraintWidget);
}
public boolean isConnectionAllowed(ConstraintWidget constraintWidget) {
if (isConnectionToMe(constraintWidget, new HashSet<>())) {
return false;
}
ConstraintWidget parent = getOwner().getParent();
return parent == constraintWidget || constraintWidget.getParent() == parent;
}
private boolean isConnectionToMe(ConstraintWidget constraintWidget, HashSet<ConstraintWidget> hashSet) {
if (hashSet.contains(constraintWidget)) {
return false;
}
hashSet.add(constraintWidget);
if (constraintWidget == getOwner()) {
return true;
}
ArrayList<ConstraintAnchor> anchors = constraintWidget.getAnchors();
int size = anchors.size();
for (int i = 0; i < size; i++) {
ConstraintAnchor constraintAnchor = anchors.get(i);
if (constraintAnchor.isSimilarDimensionConnection(this) && constraintAnchor.isConnected() && isConnectionToMe(constraintAnchor.getTarget().getOwner(), hashSet)) {
return true;
}
}
return false;
}
public final ConstraintAnchor getOpposite() {
switch (AnonymousClass1.$SwitchMap$androidx$constraintlayout$solver$widgets$ConstraintAnchor$Type[this.mType.ordinal()]) {
case 1:
case 6:
case 7:
case 8:
case 9:
return null;
case 2:
return this.mOwner.mRight;
case 3:
return this.mOwner.mLeft;
case 4:
return this.mOwner.mBottom;
case 5:
return this.mOwner.mTop;
default:
throw new AssertionError(this.mType.name());
}
}
}