Rabbit-R1/android (non root)/java/sources/androidx/constraintlayout/solver/widgets/analyzer/RunGroup.java
2024-05-21 17:08:36 -04:00

184 lines
7.8 KiB
Java

package androidx.constraintlayout.solver.widgets.analyzer;
import androidx.constraintlayout.solver.widgets.ConstraintWidgetContainer;
import java.util.ArrayList;
import java.util.Iterator;
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes.dex */
public class RunGroup {
public static final int BASELINE = 2;
public static final int END = 1;
public static final int START = 0;
public static int index;
int direction;
WidgetRun firstRun;
int groupIndex;
WidgetRun lastRun;
public int position = 0;
public boolean dual = false;
ArrayList<WidgetRun> runs = new ArrayList<>();
public RunGroup(WidgetRun widgetRun, int i) {
this.firstRun = null;
this.lastRun = null;
int i2 = index;
this.groupIndex = i2;
index = i2 + 1;
this.firstRun = widgetRun;
this.lastRun = widgetRun;
this.direction = i;
}
public void add(WidgetRun widgetRun) {
this.runs.add(widgetRun);
this.lastRun = widgetRun;
}
private long traverseStart(DependencyNode dependencyNode, long j) {
WidgetRun widgetRun = dependencyNode.run;
if (widgetRun instanceof HelperReferences) {
return j;
}
int size = dependencyNode.dependencies.size();
long j2 = j;
for (int i = 0; i < size; i++) {
Dependency dependency = dependencyNode.dependencies.get(i);
if (dependency instanceof DependencyNode) {
DependencyNode dependencyNode2 = (DependencyNode) dependency;
if (dependencyNode2.run != widgetRun) {
j2 = Math.max(j2, traverseStart(dependencyNode2, dependencyNode2.margin + j));
}
}
}
if (dependencyNode != widgetRun.start) {
return j2;
}
long wrapDimension = j + widgetRun.getWrapDimension();
return Math.max(Math.max(j2, traverseStart(widgetRun.end, wrapDimension)), wrapDimension - widgetRun.end.margin);
}
private long traverseEnd(DependencyNode dependencyNode, long j) {
WidgetRun widgetRun = dependencyNode.run;
if (widgetRun instanceof HelperReferences) {
return j;
}
int size = dependencyNode.dependencies.size();
long j2 = j;
for (int i = 0; i < size; i++) {
Dependency dependency = dependencyNode.dependencies.get(i);
if (dependency instanceof DependencyNode) {
DependencyNode dependencyNode2 = (DependencyNode) dependency;
if (dependencyNode2.run != widgetRun) {
j2 = Math.min(j2, traverseEnd(dependencyNode2, dependencyNode2.margin + j));
}
}
}
if (dependencyNode != widgetRun.end) {
return j2;
}
long wrapDimension = j - widgetRun.getWrapDimension();
return Math.min(Math.min(j2, traverseEnd(widgetRun.start, wrapDimension)), wrapDimension - widgetRun.start.margin);
}
public long computeWrapSize(ConstraintWidgetContainer constraintWidgetContainer, int i) {
long wrapDimension;
int i2;
WidgetRun widgetRun = this.firstRun;
if (widgetRun instanceof ChainRun) {
if (((ChainRun) widgetRun).orientation != i) {
return 0L;
}
} else if (i == 0) {
if (!(widgetRun instanceof HorizontalWidgetRun)) {
return 0L;
}
} else if (!(widgetRun instanceof VerticalWidgetRun)) {
return 0L;
}
DependencyNode dependencyNode = i == 0 ? constraintWidgetContainer.horizontalRun.start : constraintWidgetContainer.verticalRun.start;
DependencyNode dependencyNode2 = i == 0 ? constraintWidgetContainer.horizontalRun.end : constraintWidgetContainer.verticalRun.end;
boolean contains = this.firstRun.start.targets.contains(dependencyNode);
boolean contains2 = this.firstRun.end.targets.contains(dependencyNode2);
long wrapDimension2 = this.firstRun.getWrapDimension();
if (contains && contains2) {
long traverseStart = traverseStart(this.firstRun.start, 0L);
long traverseEnd = traverseEnd(this.firstRun.end, 0L);
long j = traverseStart - wrapDimension2;
if (j >= (-this.firstRun.end.margin)) {
j += this.firstRun.end.margin;
}
long j2 = ((-traverseEnd) - wrapDimension2) - this.firstRun.start.margin;
if (j2 >= this.firstRun.start.margin) {
j2 -= this.firstRun.start.margin;
}
float f = (float) (this.firstRun.widget.getBiasPercent(i) > 0.0f ? (((float) j2) / r11) + (((float) j) / (1.0f - r11)) : 0L);
wrapDimension = this.firstRun.start.margin + (f * r11) + 0.5f + wrapDimension2 + (f * (1.0f - r11)) + 0.5f;
i2 = this.firstRun.end.margin;
} else {
if (contains) {
return Math.max(traverseStart(this.firstRun.start, this.firstRun.start.margin), this.firstRun.start.margin + wrapDimension2);
}
if (contains2) {
return Math.max(-traverseEnd(this.firstRun.end, this.firstRun.end.margin), (-this.firstRun.end.margin) + wrapDimension2);
}
wrapDimension = this.firstRun.start.margin + this.firstRun.getWrapDimension();
i2 = this.firstRun.end.margin;
}
return wrapDimension - i2;
}
private boolean defineTerminalWidget(WidgetRun widgetRun, int i) {
if (!widgetRun.widget.isTerminalWidget[i]) {
return false;
}
for (Dependency dependency : widgetRun.start.dependencies) {
if (dependency instanceof DependencyNode) {
DependencyNode dependencyNode = (DependencyNode) dependency;
if (dependencyNode.run != widgetRun && dependencyNode == dependencyNode.run.start) {
if (widgetRun instanceof ChainRun) {
Iterator<WidgetRun> it = ((ChainRun) widgetRun).widgets.iterator();
while (it.hasNext()) {
defineTerminalWidget(it.next(), i);
}
} else if (!(widgetRun instanceof HelperReferences)) {
widgetRun.widget.isTerminalWidget[i] = false;
}
defineTerminalWidget(dependencyNode.run, i);
}
}
}
for (Dependency dependency2 : widgetRun.end.dependencies) {
if (dependency2 instanceof DependencyNode) {
DependencyNode dependencyNode2 = (DependencyNode) dependency2;
if (dependencyNode2.run != widgetRun && dependencyNode2 == dependencyNode2.run.start) {
if (widgetRun instanceof ChainRun) {
Iterator<WidgetRun> it2 = ((ChainRun) widgetRun).widgets.iterator();
while (it2.hasNext()) {
defineTerminalWidget(it2.next(), i);
}
} else if (!(widgetRun instanceof HelperReferences)) {
widgetRun.widget.isTerminalWidget[i] = false;
}
defineTerminalWidget(dependencyNode2.run, i);
}
}
}
return false;
}
public void defineTerminalWidgets(boolean z, boolean z2) {
if (z) {
WidgetRun widgetRun = this.firstRun;
if (widgetRun instanceof HorizontalWidgetRun) {
defineTerminalWidget(widgetRun, 0);
}
}
if (z2) {
WidgetRun widgetRun2 = this.firstRun;
if (widgetRun2 instanceof VerticalWidgetRun) {
defineTerminalWidget(widgetRun2, 1);
}
}
}
}