package androidx.constraintlayout.solver.widgets; import androidx.constraintlayout.solver.widgets.ConstraintWidget; import java.util.ArrayList; public class ChainHead { private boolean mDefined; public ConstraintWidget mFirst; public ConstraintWidget mFirstMatchConstraintWidget; public ConstraintWidget mFirstVisibleWidget; public boolean mHasComplexMatchWeights; public boolean mHasDefinedWeights; public boolean mHasRatio; public boolean mHasUndefinedWeights; public ConstraintWidget mHead; private boolean mIsRtl = false; public ConstraintWidget mLast; public ConstraintWidget mLastMatchConstraintWidget; public ConstraintWidget mLastVisibleWidget; public boolean mOptimizable; private int mOrientation; public int mTotalMargins; public int mTotalSize; public float mTotalWeight = 0.0f; public int mVisibleWidgets; public ArrayList mWeightedMatchConstraintsWidgets; public int mWidgetsCount; public int mWidgetsMatchCount; public ChainHead(ConstraintWidget constraintWidget, int i, boolean z2) { this.mFirst = constraintWidget; this.mOrientation = i; this.mIsRtl = z2; } private void defineChainProperties() { int i = this.mOrientation * 2; ConstraintWidget constraintWidget = this.mFirst; boolean z2 = true; this.mOptimizable = true; ConstraintWidget constraintWidget2 = constraintWidget; boolean z3 = false; while (!z3) { this.mWidgetsCount++; ConstraintWidget[] constraintWidgetArr = constraintWidget.mNextChainWidget; int i2 = this.mOrientation; ConstraintWidget constraintWidget3 = null; constraintWidgetArr[i2] = null; constraintWidget.mListNextMatchConstraintsWidget[i2] = null; if (constraintWidget.getVisibility() != 8) { this.mVisibleWidgets++; ConstraintWidget.DimensionBehaviour dimensionBehaviour = constraintWidget.getDimensionBehaviour(this.mOrientation); ConstraintWidget.DimensionBehaviour dimensionBehaviour2 = ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT; if (dimensionBehaviour != dimensionBehaviour2) { this.mTotalSize = constraintWidget.getLength(this.mOrientation) + this.mTotalSize; } int margin = constraintWidget.mListAnchors[i].getMargin() + this.mTotalSize; this.mTotalSize = margin; int i3 = i + 1; this.mTotalSize = constraintWidget.mListAnchors[i3].getMargin() + margin; int margin2 = constraintWidget.mListAnchors[i].getMargin() + this.mTotalMargins; this.mTotalMargins = margin2; this.mTotalMargins = constraintWidget.mListAnchors[i3].getMargin() + margin2; if (this.mFirstVisibleWidget == null) { this.mFirstVisibleWidget = constraintWidget; } this.mLastVisibleWidget = constraintWidget; ConstraintWidget.DimensionBehaviour[] dimensionBehaviourArr = constraintWidget.mListDimensionBehaviors; int i4 = this.mOrientation; if (dimensionBehaviourArr[i4] == dimensionBehaviour2) { int[] iArr = constraintWidget.mResolvedMatchConstraintDefault; if (iArr[i4] == 0 || iArr[i4] == 3 || iArr[i4] == 2) { this.mWidgetsMatchCount++; float[] fArr = constraintWidget.mWeight; float f = fArr[i4]; if (f > 0.0f) { this.mTotalWeight += fArr[i4]; } if (isMatchConstraintEqualityCandidate(constraintWidget, i4)) { if (f < 0.0f) { this.mHasUndefinedWeights = true; } else { this.mHasDefinedWeights = true; } if (this.mWeightedMatchConstraintsWidgets == null) { this.mWeightedMatchConstraintsWidgets = new ArrayList<>(); } this.mWeightedMatchConstraintsWidgets.add(constraintWidget); } if (this.mFirstMatchConstraintWidget == null) { this.mFirstMatchConstraintWidget = constraintWidget; } ConstraintWidget constraintWidget4 = this.mLastMatchConstraintWidget; if (constraintWidget4 != null) { constraintWidget4.mListNextMatchConstraintsWidget[this.mOrientation] = constraintWidget; } this.mLastMatchConstraintWidget = constraintWidget; } if (this.mOrientation == 0) { if (constraintWidget.mMatchConstraintDefaultWidth != 0) { this.mOptimizable = false; } else if (!(constraintWidget.mMatchConstraintMinWidth == 0 && constraintWidget.mMatchConstraintMaxWidth == 0)) { this.mOptimizable = false; } } else if (constraintWidget.mMatchConstraintDefaultHeight != 0) { this.mOptimizable = false; } else if (!(constraintWidget.mMatchConstraintMinHeight == 0 && constraintWidget.mMatchConstraintMaxHeight == 0)) { this.mOptimizable = false; } if (constraintWidget.mDimensionRatio != 0.0f) { this.mOptimizable = false; this.mHasRatio = true; } } } if (constraintWidget2 != constraintWidget) { constraintWidget2.mNextChainWidget[this.mOrientation] = constraintWidget; } ConstraintAnchor constraintAnchor = constraintWidget.mListAnchors[i + 1].mTarget; if (constraintAnchor != null) { ConstraintWidget constraintWidget5 = constraintAnchor.mOwner; ConstraintAnchor[] constraintAnchorArr = constraintWidget5.mListAnchors; if (constraintAnchorArr[i].mTarget != null && constraintAnchorArr[i].mTarget.mOwner == constraintWidget) { constraintWidget3 = constraintWidget5; } } if (constraintWidget3 == null) { constraintWidget3 = constraintWidget; z3 = true; } constraintWidget2 = constraintWidget; constraintWidget = constraintWidget3; } ConstraintWidget constraintWidget6 = this.mFirstVisibleWidget; if (constraintWidget6 != null) { this.mTotalSize -= constraintWidget6.mListAnchors[i].getMargin(); } ConstraintWidget constraintWidget7 = this.mLastVisibleWidget; if (constraintWidget7 != null) { this.mTotalSize -= constraintWidget7.mListAnchors[i + 1].getMargin(); } this.mLast = constraintWidget; if (this.mOrientation != 0 || !this.mIsRtl) { this.mHead = this.mFirst; } else { this.mHead = constraintWidget; } if (!this.mHasDefinedWeights || !this.mHasUndefinedWeights) { z2 = false; } this.mHasComplexMatchWeights = z2; } private static boolean isMatchConstraintEqualityCandidate(ConstraintWidget constraintWidget, int i) { if (constraintWidget.getVisibility() != 8 && constraintWidget.mListDimensionBehaviors[i] == ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT) { int[] iArr = constraintWidget.mResolvedMatchConstraintDefault; if (iArr[i] == 0 || iArr[i] == 3) { return true; } } return false; } public void define() { if (!this.mDefined) { defineChainProperties(); } this.mDefined = true; } public ConstraintWidget getFirst() { return this.mFirst; } public ConstraintWidget getFirstMatchConstraintWidget() { return this.mFirstMatchConstraintWidget; } public ConstraintWidget getFirstVisibleWidget() { return this.mFirstVisibleWidget; } public ConstraintWidget getHead() { return this.mHead; } public ConstraintWidget getLast() { return this.mLast; } public ConstraintWidget getLastMatchConstraintWidget() { return this.mLastMatchConstraintWidget; } public ConstraintWidget getLastVisibleWidget() { return this.mLastVisibleWidget; } public float getTotalWeight() { return this.mTotalWeight; } }