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

490 lines
19 KiB
Java

package androidx.constraintlayout.solver.widgets;
import androidx.constraintlayout.solver.LinearSystem;
import androidx.constraintlayout.solver.Metrics;
import androidx.constraintlayout.solver.widgets.ConstraintWidget;
import androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure;
import androidx.constraintlayout.solver.widgets.analyzer.DependencyGraph;
import java.util.ArrayList;
import java.util.Arrays;
/* loaded from: classes.dex */
public class ConstraintWidgetContainer extends WidgetContainer {
private static final boolean DEBUG = false;
static final boolean DEBUG_GRAPH = false;
private static final boolean DEBUG_LAYOUT = false;
private static final int MAX_ITERATIONS = 8;
BasicMeasure mBasicMeasureSolver;
int mDebugSolverPassCount;
public DependencyGraph mDependencyGraph;
public boolean mGroupsWrapOptimized;
private boolean mHeightMeasuredTooSmall;
ChainHead[] mHorizontalChainsArray;
int mHorizontalChainsSize;
public boolean mHorizontalWrapOptimized;
private boolean mIsRtl;
protected BasicMeasure.Measurer mMeasurer;
public Metrics mMetrics;
private int mOptimizationLevel;
int mPaddingBottom;
int mPaddingLeft;
int mPaddingRight;
int mPaddingTop;
public boolean mSkipSolver;
protected LinearSystem mSystem;
ChainHead[] mVerticalChainsArray;
int mVerticalChainsSize;
public boolean mVerticalWrapOptimized;
private boolean mWidthMeasuredTooSmall;
public int mWrapFixedHeight;
public int mWrapFixedWidth;
private void resetChains() {
this.mHorizontalChainsSize = 0;
this.mVerticalChainsSize = 0;
}
public BasicMeasure.Measurer getMeasurer() {
return this.mMeasurer;
}
public int getOptimizationLevel() {
return this.mOptimizationLevel;
}
public LinearSystem getSystem() {
return this.mSystem;
}
@Override // androidx.constraintlayout.solver.widgets.ConstraintWidget
public String getType() {
return "ConstraintLayout";
}
public boolean handlesInternalConstraints() {
return false;
}
public boolean isHeightMeasuredTooSmall() {
return this.mHeightMeasuredTooSmall;
}
public boolean isRtl() {
return this.mIsRtl;
}
public boolean isWidthMeasuredTooSmall() {
return this.mWidthMeasuredTooSmall;
}
public boolean optimizeFor(int i) {
return (this.mOptimizationLevel & i) == i;
}
public void setPadding(int i, int i2, int i3, int i4) {
this.mPaddingLeft = i;
this.mPaddingTop = i2;
this.mPaddingRight = i3;
this.mPaddingBottom = i4;
}
public void setRtl(boolean z) {
this.mIsRtl = z;
}
public void invalidateGraph() {
this.mDependencyGraph.invalidateGraph();
}
public void invalidateMeasures() {
this.mDependencyGraph.invalidateMeasures();
}
public boolean directMeasure(boolean z) {
return this.mDependencyGraph.directMeasure(z);
}
public boolean directMeasureSetup(boolean z) {
return this.mDependencyGraph.directMeasureSetup(z);
}
public boolean directMeasureWithOrientation(boolean z, int i) {
return this.mDependencyGraph.directMeasureWithOrientation(z, i);
}
public void defineTerminalWidgets() {
this.mDependencyGraph.defineTerminalWidgets(getHorizontalDimensionBehaviour(), getVerticalDimensionBehaviour());
}
public long measure(int i, int i2, int i3, int i4, int i5, int i6, int i7, int i8, int i9) {
this.mPaddingLeft = i8;
this.mPaddingTop = i9;
return this.mBasicMeasureSolver.solverMeasure(this, i, i8, i9, i2, i3, i4, i5, i6, i7);
}
public void updateHierarchy() {
this.mBasicMeasureSolver.updateHierarchy(this);
}
public void setMeasurer(BasicMeasure.Measurer measurer) {
this.mMeasurer = measurer;
this.mDependencyGraph.setMeasurer(measurer);
}
public void fillMetrics(Metrics metrics) {
this.mMetrics = metrics;
this.mSystem.fillMetrics(metrics);
}
public ConstraintWidgetContainer() {
this.mBasicMeasureSolver = new BasicMeasure(this);
this.mDependencyGraph = new DependencyGraph(this);
this.mMeasurer = null;
this.mIsRtl = false;
this.mSystem = new LinearSystem();
this.mHorizontalChainsSize = 0;
this.mVerticalChainsSize = 0;
this.mVerticalChainsArray = new ChainHead[4];
this.mHorizontalChainsArray = new ChainHead[4];
this.mGroupsWrapOptimized = false;
this.mHorizontalWrapOptimized = false;
this.mVerticalWrapOptimized = false;
this.mWrapFixedWidth = 0;
this.mWrapFixedHeight = 0;
this.mOptimizationLevel = Optimizer.OPTIMIZATION_STANDARD;
this.mSkipSolver = false;
this.mWidthMeasuredTooSmall = false;
this.mHeightMeasuredTooSmall = false;
this.mDebugSolverPassCount = 0;
}
public ConstraintWidgetContainer(int i, int i2, int i3, int i4) {
super(i, i2, i3, i4);
this.mBasicMeasureSolver = new BasicMeasure(this);
this.mDependencyGraph = new DependencyGraph(this);
this.mMeasurer = null;
this.mIsRtl = false;
this.mSystem = new LinearSystem();
this.mHorizontalChainsSize = 0;
this.mVerticalChainsSize = 0;
this.mVerticalChainsArray = new ChainHead[4];
this.mHorizontalChainsArray = new ChainHead[4];
this.mGroupsWrapOptimized = false;
this.mHorizontalWrapOptimized = false;
this.mVerticalWrapOptimized = false;
this.mWrapFixedWidth = 0;
this.mWrapFixedHeight = 0;
this.mOptimizationLevel = Optimizer.OPTIMIZATION_STANDARD;
this.mSkipSolver = false;
this.mWidthMeasuredTooSmall = false;
this.mHeightMeasuredTooSmall = false;
this.mDebugSolverPassCount = 0;
}
public ConstraintWidgetContainer(int i, int i2) {
super(i, i2);
this.mBasicMeasureSolver = new BasicMeasure(this);
this.mDependencyGraph = new DependencyGraph(this);
this.mMeasurer = null;
this.mIsRtl = false;
this.mSystem = new LinearSystem();
this.mHorizontalChainsSize = 0;
this.mVerticalChainsSize = 0;
this.mVerticalChainsArray = new ChainHead[4];
this.mHorizontalChainsArray = new ChainHead[4];
this.mGroupsWrapOptimized = false;
this.mHorizontalWrapOptimized = false;
this.mVerticalWrapOptimized = false;
this.mWrapFixedWidth = 0;
this.mWrapFixedHeight = 0;
this.mOptimizationLevel = Optimizer.OPTIMIZATION_STANDARD;
this.mSkipSolver = false;
this.mWidthMeasuredTooSmall = false;
this.mHeightMeasuredTooSmall = false;
this.mDebugSolverPassCount = 0;
}
public void setOptimizationLevel(int i) {
this.mOptimizationLevel = i;
LinearSystem.OPTIMIZED_ENGINE = Optimizer.enabled(i, 256);
}
@Override // androidx.constraintlayout.solver.widgets.WidgetContainer, androidx.constraintlayout.solver.widgets.ConstraintWidget
public void reset() {
this.mSystem.reset();
this.mPaddingLeft = 0;
this.mPaddingRight = 0;
this.mPaddingTop = 0;
this.mPaddingBottom = 0;
this.mSkipSolver = false;
super.reset();
}
public boolean addChildrenToSolver(LinearSystem linearSystem) {
addToSolver(linearSystem);
int size = this.mChildren.size();
boolean z = false;
for (int i = 0; i < size; i++) {
ConstraintWidget constraintWidget = this.mChildren.get(i);
constraintWidget.setInBarrier(0, false);
constraintWidget.setInBarrier(1, false);
if (constraintWidget instanceof Barrier) {
z = true;
}
}
if (z) {
for (int i2 = 0; i2 < size; i2++) {
ConstraintWidget constraintWidget2 = this.mChildren.get(i2);
if (constraintWidget2 instanceof Barrier) {
((Barrier) constraintWidget2).markWidgets();
}
}
}
for (int i3 = 0; i3 < size; i3++) {
ConstraintWidget constraintWidget3 = this.mChildren.get(i3);
if (constraintWidget3.addFirst()) {
constraintWidget3.addToSolver(linearSystem);
}
}
for (int i4 = 0; i4 < size; i4++) {
ConstraintWidget constraintWidget4 = this.mChildren.get(i4);
if (constraintWidget4 instanceof ConstraintWidgetContainer) {
ConstraintWidget.DimensionBehaviour dimensionBehaviour = constraintWidget4.mListDimensionBehaviors[0];
ConstraintWidget.DimensionBehaviour dimensionBehaviour2 = constraintWidget4.mListDimensionBehaviors[1];
if (dimensionBehaviour == ConstraintWidget.DimensionBehaviour.WRAP_CONTENT) {
constraintWidget4.setHorizontalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.FIXED);
}
if (dimensionBehaviour2 == ConstraintWidget.DimensionBehaviour.WRAP_CONTENT) {
constraintWidget4.setVerticalDimensionBehaviour(ConstraintWidget.DimensionBehaviour.FIXED);
}
constraintWidget4.addToSolver(linearSystem);
if (dimensionBehaviour == ConstraintWidget.DimensionBehaviour.WRAP_CONTENT) {
constraintWidget4.setHorizontalDimensionBehaviour(dimensionBehaviour);
}
if (dimensionBehaviour2 == ConstraintWidget.DimensionBehaviour.WRAP_CONTENT) {
constraintWidget4.setVerticalDimensionBehaviour(dimensionBehaviour2);
}
} else {
Optimizer.checkMatchParent(this, linearSystem, constraintWidget4);
if (!constraintWidget4.addFirst()) {
constraintWidget4.addToSolver(linearSystem);
}
}
}
if (this.mHorizontalChainsSize > 0) {
Chain.applyChainConstraints(this, linearSystem, 0);
}
if (this.mVerticalChainsSize > 0) {
Chain.applyChainConstraints(this, linearSystem, 1);
}
return true;
}
public void updateChildrenFromSolver(LinearSystem linearSystem, boolean[] zArr) {
zArr[2] = false;
updateFromSolver(linearSystem);
int size = this.mChildren.size();
for (int i = 0; i < size; i++) {
this.mChildren.get(i).updateFromSolver(linearSystem);
}
}
@Override // androidx.constraintlayout.solver.widgets.ConstraintWidget
public void updateFromRuns(boolean z, boolean z2) {
super.updateFromRuns(z, z2);
int size = this.mChildren.size();
for (int i = 0; i < size; i++) {
this.mChildren.get(i).updateFromRuns(z, z2);
}
}
/* JADX WARN: Type inference failed for: r11v13 */
/* JADX WARN: Type inference failed for: r11v8 */
/* JADX WARN: Type inference failed for: r11v9, types: [boolean] */
@Override // androidx.constraintlayout.solver.widgets.WidgetContainer
public void layout() {
boolean z;
?? r11;
this.mX = 0;
this.mY = 0;
int max = Math.max(0, getWidth());
int max2 = Math.max(0, getHeight());
this.mWidthMeasuredTooSmall = false;
this.mHeightMeasuredTooSmall = false;
boolean z2 = optimizeFor(64) || optimizeFor(128);
this.mSystem.graphOptimizer = false;
this.mSystem.newgraphOptimizer = false;
if (this.mOptimizationLevel != 0 && z2) {
this.mSystem.newgraphOptimizer = true;
}
ConstraintWidget.DimensionBehaviour dimensionBehaviour = this.mListDimensionBehaviors[1];
ConstraintWidget.DimensionBehaviour dimensionBehaviour2 = this.mListDimensionBehaviors[0];
ArrayList<ConstraintWidget> arrayList = this.mChildren;
boolean z3 = getHorizontalDimensionBehaviour() == ConstraintWidget.DimensionBehaviour.WRAP_CONTENT || getVerticalDimensionBehaviour() == ConstraintWidget.DimensionBehaviour.WRAP_CONTENT;
resetChains();
int size = this.mChildren.size();
for (int i = 0; i < size; i++) {
ConstraintWidget constraintWidget = this.mChildren.get(i);
if (constraintWidget instanceof WidgetContainer) {
((WidgetContainer) constraintWidget).layout();
}
}
int i2 = 0;
boolean z4 = false;
boolean z5 = true;
while (z5) {
int i3 = i2 + 1;
try {
this.mSystem.reset();
resetChains();
createObjectVariables(this.mSystem);
for (int i4 = 0; i4 < size; i4++) {
this.mChildren.get(i4).createObjectVariables(this.mSystem);
}
z5 = addChildrenToSolver(this.mSystem);
if (z5) {
this.mSystem.minimize();
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("EXCEPTION : " + e);
}
if (z5) {
updateChildrenFromSolver(this.mSystem, Optimizer.flags);
} else {
updateFromSolver(this.mSystem);
for (int i5 = 0; i5 < size; i5++) {
this.mChildren.get(i5).updateFromSolver(this.mSystem);
}
}
if (z3 && i3 < 8 && Optimizer.flags[2]) {
int i6 = 0;
int i7 = 0;
for (int i8 = 0; i8 < size; i8++) {
ConstraintWidget constraintWidget2 = this.mChildren.get(i8);
i6 = Math.max(i6, constraintWidget2.mX + constraintWidget2.getWidth());
i7 = Math.max(i7, constraintWidget2.mY + constraintWidget2.getHeight());
}
int max3 = Math.max(this.mMinWidth, i6);
int max4 = Math.max(this.mMinHeight, i7);
if (dimensionBehaviour2 != ConstraintWidget.DimensionBehaviour.WRAP_CONTENT || getWidth() >= max3) {
z = false;
} else {
setWidth(max3);
this.mListDimensionBehaviors[0] = ConstraintWidget.DimensionBehaviour.WRAP_CONTENT;
z = true;
z4 = true;
}
if (dimensionBehaviour == ConstraintWidget.DimensionBehaviour.WRAP_CONTENT && getHeight() < max4) {
setHeight(max4);
this.mListDimensionBehaviors[1] = ConstraintWidget.DimensionBehaviour.WRAP_CONTENT;
z = true;
z4 = true;
}
} else {
z = false;
}
int max5 = Math.max(this.mMinWidth, getWidth());
if (max5 > getWidth()) {
setWidth(max5);
this.mListDimensionBehaviors[0] = ConstraintWidget.DimensionBehaviour.FIXED;
z = true;
z4 = true;
}
int max6 = Math.max(this.mMinHeight, getHeight());
if (max6 > getHeight()) {
setHeight(max6);
r11 = 1;
this.mListDimensionBehaviors[1] = ConstraintWidget.DimensionBehaviour.FIXED;
z = true;
z4 = true;
} else {
r11 = 1;
}
if (!z4) {
if (this.mListDimensionBehaviors[0] == ConstraintWidget.DimensionBehaviour.WRAP_CONTENT && max > 0 && getWidth() > max) {
this.mWidthMeasuredTooSmall = r11;
this.mListDimensionBehaviors[0] = ConstraintWidget.DimensionBehaviour.FIXED;
setWidth(max);
z = r11;
z4 = z;
}
if (this.mListDimensionBehaviors[r11] == ConstraintWidget.DimensionBehaviour.WRAP_CONTENT && max2 > 0 && getHeight() > max2) {
this.mHeightMeasuredTooSmall = r11;
this.mListDimensionBehaviors[r11] = ConstraintWidget.DimensionBehaviour.FIXED;
setHeight(max2);
z5 = true;
z4 = true;
i2 = i3;
}
}
z5 = z;
i2 = i3;
}
this.mChildren = arrayList;
if (z4) {
this.mListDimensionBehaviors[0] = dimensionBehaviour2;
this.mListDimensionBehaviors[1] = dimensionBehaviour;
}
resetSolverVariables(this.mSystem.getCache());
}
public ArrayList<Guideline> getVerticalGuidelines() {
ArrayList<Guideline> arrayList = new ArrayList<>();
int size = this.mChildren.size();
for (int i = 0; i < size; i++) {
ConstraintWidget constraintWidget = this.mChildren.get(i);
if (constraintWidget instanceof Guideline) {
Guideline guideline = (Guideline) constraintWidget;
if (guideline.getOrientation() == 1) {
arrayList.add(guideline);
}
}
}
return arrayList;
}
public ArrayList<Guideline> getHorizontalGuidelines() {
ArrayList<Guideline> arrayList = new ArrayList<>();
int size = this.mChildren.size();
for (int i = 0; i < size; i++) {
ConstraintWidget constraintWidget = this.mChildren.get(i);
if (constraintWidget instanceof Guideline) {
Guideline guideline = (Guideline) constraintWidget;
if (guideline.getOrientation() == 0) {
arrayList.add(guideline);
}
}
}
return arrayList;
}
/* JADX INFO: Access modifiers changed from: package-private */
public void addChain(ConstraintWidget constraintWidget, int i) {
if (i == 0) {
addHorizontalChain(constraintWidget);
} else if (i == 1) {
addVerticalChain(constraintWidget);
}
}
private void addHorizontalChain(ConstraintWidget constraintWidget) {
int i = this.mHorizontalChainsSize + 1;
ChainHead[] chainHeadArr = this.mHorizontalChainsArray;
if (i >= chainHeadArr.length) {
this.mHorizontalChainsArray = (ChainHead[]) Arrays.copyOf(chainHeadArr, chainHeadArr.length * 2);
}
this.mHorizontalChainsArray[this.mHorizontalChainsSize] = new ChainHead(constraintWidget, 0, isRtl());
this.mHorizontalChainsSize++;
}
private void addVerticalChain(ConstraintWidget constraintWidget) {
int i = this.mVerticalChainsSize + 1;
ChainHead[] chainHeadArr = this.mVerticalChainsArray;
if (i >= chainHeadArr.length) {
this.mVerticalChainsArray = (ChainHead[]) Arrays.copyOf(chainHeadArr, chainHeadArr.length * 2);
}
this.mVerticalChainsArray[this.mVerticalChainsSize] = new ChainHead(constraintWidget, 1, isRtl());
this.mVerticalChainsSize++;
}
}