Rabbit-R1/original r1/java/sources/androidx/constraintlayout/solver/PriorityGoalRow.java

273 lines
9.7 KiB
Java
Raw Normal View History

2024-05-21 16:08:36 -05:00
package androidx.constraintlayout.solver;
import androidx.constraintlayout.solver.ArrayRow;
import java.util.Arrays;
import java.util.Comparator;
/* loaded from: classes.dex */
public class PriorityGoalRow extends ArrayRow {
private static final boolean DEBUG = false;
static final int NOT_FOUND = -1;
private static final float epsilon = 1.0E-4f;
private int TABLE_SIZE;
GoalVariableAccessor accessor;
private SolverVariable[] arrayGoals;
Cache mCache;
private int numGoals;
private SolverVariable[] sortArray;
/* loaded from: classes.dex */
class GoalVariableAccessor implements Comparable {
PriorityGoalRow row;
SolverVariable variable;
public void init(SolverVariable solverVariable) {
this.variable = solverVariable;
}
public GoalVariableAccessor(PriorityGoalRow priorityGoalRow) {
this.row = priorityGoalRow;
}
public boolean addToGoal(SolverVariable solverVariable, float f) {
boolean z = true;
if (!this.variable.inGoal) {
for (int i = 0; i < 9; i++) {
float f2 = solverVariable.goalStrengthVector[i];
if (f2 != 0.0f) {
float f3 = f2 * f;
if (Math.abs(f3) < 1.0E-4f) {
f3 = 0.0f;
}
this.variable.goalStrengthVector[i] = f3;
} else {
this.variable.goalStrengthVector[i] = 0.0f;
}
}
return true;
}
for (int i2 = 0; i2 < 9; i2++) {
float[] fArr = this.variable.goalStrengthVector;
fArr[i2] = fArr[i2] + (solverVariable.goalStrengthVector[i2] * f);
if (Math.abs(this.variable.goalStrengthVector[i2]) < 1.0E-4f) {
this.variable.goalStrengthVector[i2] = 0.0f;
} else {
z = false;
}
}
if (z) {
PriorityGoalRow.this.removeGoal(this.variable);
}
return false;
}
public void add(SolverVariable solverVariable) {
for (int i = 0; i < 9; i++) {
float[] fArr = this.variable.goalStrengthVector;
fArr[i] = fArr[i] + solverVariable.goalStrengthVector[i];
if (Math.abs(this.variable.goalStrengthVector[i]) < 1.0E-4f) {
this.variable.goalStrengthVector[i] = 0.0f;
}
}
}
public final boolean isNegative() {
for (int i = 8; i >= 0; i--) {
float f = this.variable.goalStrengthVector[i];
if (f > 0.0f) {
return false;
}
if (f < 0.0f) {
return true;
}
}
return false;
}
public final boolean isSmallerThan(SolverVariable solverVariable) {
int i = 8;
while (true) {
if (i < 0) {
break;
}
float f = solverVariable.goalStrengthVector[i];
float f2 = this.variable.goalStrengthVector[i];
if (f2 == f) {
i--;
} else if (f2 < f) {
return true;
}
}
return false;
}
public final boolean isNull() {
for (int i = 0; i < 9; i++) {
if (this.variable.goalStrengthVector[i] != 0.0f) {
return false;
}
}
return true;
}
@Override // java.lang.Comparable
public int compareTo(Object obj) {
return this.variable.id - ((SolverVariable) obj).id;
}
public void reset() {
Arrays.fill(this.variable.goalStrengthVector, 0.0f);
}
public String toString() {
String str = "[ ";
if (this.variable != null) {
for (int i = 0; i < 9; i++) {
str = str + this.variable.goalStrengthVector[i] + " ";
}
}
return str + "] " + this.variable;
}
}
@Override // androidx.constraintlayout.solver.ArrayRow, androidx.constraintlayout.solver.LinearSystem.Row
public void clear() {
this.numGoals = 0;
this.constantValue = 0.0f;
}
public PriorityGoalRow(Cache cache) {
super(cache);
this.TABLE_SIZE = 128;
this.arrayGoals = new SolverVariable[128];
this.sortArray = new SolverVariable[128];
this.numGoals = 0;
this.accessor = new GoalVariableAccessor(this);
this.mCache = cache;
}
@Override // androidx.constraintlayout.solver.ArrayRow, androidx.constraintlayout.solver.LinearSystem.Row
public SolverVariable getPivotCandidate(LinearSystem linearSystem, boolean[] zArr) {
int i = -1;
for (int i2 = 0; i2 < this.numGoals; i2++) {
SolverVariable solverVariable = this.arrayGoals[i2];
if (!zArr[solverVariable.id]) {
this.accessor.init(solverVariable);
if (i == -1) {
if (!this.accessor.isNegative()) {
}
i = i2;
} else {
if (!this.accessor.isSmallerThan(this.arrayGoals[i])) {
}
i = i2;
}
}
}
if (i == -1) {
return null;
}
return this.arrayGoals[i];
}
@Override // androidx.constraintlayout.solver.ArrayRow, androidx.constraintlayout.solver.LinearSystem.Row
public void addError(SolverVariable solverVariable) {
this.accessor.init(solverVariable);
this.accessor.reset();
solverVariable.goalStrengthVector[solverVariable.strength] = 1.0f;
addToGoal(solverVariable);
}
private final void addToGoal(SolverVariable solverVariable) {
int i;
int i2 = this.numGoals + 1;
SolverVariable[] solverVariableArr = this.arrayGoals;
if (i2 > solverVariableArr.length) {
SolverVariable[] solverVariableArr2 = (SolverVariable[]) Arrays.copyOf(solverVariableArr, solverVariableArr.length * 2);
this.arrayGoals = solverVariableArr2;
this.sortArray = (SolverVariable[]) Arrays.copyOf(solverVariableArr2, solverVariableArr2.length * 2);
}
SolverVariable[] solverVariableArr3 = this.arrayGoals;
int i3 = this.numGoals;
solverVariableArr3[i3] = solverVariable;
int i4 = i3 + 1;
this.numGoals = i4;
if (i4 > 1 && solverVariableArr3[i3].id > solverVariable.id) {
int i5 = 0;
while (true) {
i = this.numGoals;
if (i5 >= i) {
break;
}
this.sortArray[i5] = this.arrayGoals[i5];
i5++;
}
Arrays.sort(this.sortArray, 0, i, new Comparator<SolverVariable>() { // from class: androidx.constraintlayout.solver.PriorityGoalRow.1
@Override // java.util.Comparator
public int compare(SolverVariable solverVariable2, SolverVariable solverVariable3) {
return solverVariable2.id - solverVariable3.id;
}
});
for (int i6 = 0; i6 < this.numGoals; i6++) {
this.arrayGoals[i6] = this.sortArray[i6];
}
}
solverVariable.inGoal = true;
solverVariable.addToRow(this);
}
/* JADX INFO: Access modifiers changed from: private */
public final void removeGoal(SolverVariable solverVariable) {
int i = 0;
while (i < this.numGoals) {
if (this.arrayGoals[i] == solverVariable) {
while (true) {
int i2 = this.numGoals;
if (i < i2 - 1) {
SolverVariable[] solverVariableArr = this.arrayGoals;
int i3 = i + 1;
solverVariableArr[i] = solverVariableArr[i3];
i = i3;
} else {
this.numGoals = i2 - 1;
solverVariable.inGoal = false;
return;
}
}
} else {
i++;
}
}
}
@Override // androidx.constraintlayout.solver.ArrayRow, androidx.constraintlayout.solver.LinearSystem.Row
public void updateFromRow(ArrayRow arrayRow, boolean z) {
SolverVariable solverVariable = arrayRow.variable;
if (solverVariable == null) {
return;
}
ArrayRow.ArrayRowVariables arrayRowVariables = arrayRow.variables;
int currentSize = arrayRowVariables.getCurrentSize();
for (int i = 0; i < currentSize; i++) {
SolverVariable variable = arrayRowVariables.getVariable(i);
float variableValue = arrayRowVariables.getVariableValue(i);
this.accessor.init(variable);
if (this.accessor.addToGoal(solverVariable, variableValue)) {
addToGoal(variable);
}
this.constantValue += arrayRow.constantValue * variableValue;
}
removeGoal(solverVariable);
}
@Override // androidx.constraintlayout.solver.ArrayRow
public String toString() {
String str = " goal -> (" + this.constantValue + ") : ";
for (int i = 0; i < this.numGoals; i++) {
this.accessor.init(this.arrayGoals[i]);
str = str + this.accessor + " ";
}
return str;
}
}