package androidx.constraintlayout.solver.widgets.analyzer; import androidx.constraintlayout.solver.LinearSystem; import androidx.constraintlayout.solver.widgets.Barrier; import androidx.constraintlayout.solver.widgets.ChainHead; import androidx.constraintlayout.solver.widgets.ConstraintAnchor; import androidx.constraintlayout.solver.widgets.ConstraintWidget; import androidx.constraintlayout.solver.widgets.ConstraintWidgetContainer; import androidx.constraintlayout.solver.widgets.Guideline; import androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure; import java.util.ArrayList; import java.util.Iterator; public class Direct { private static final boolean APPLY_MATCH_PARENT = false; private static final boolean DEBUG = false; private static BasicMeasure.Measure measure = new BasicMeasure.Measure(); private static boolean canMeasure(ConstraintWidget constraintWidget) { ConstraintWidget.DimensionBehaviour horizontalDimensionBehaviour = constraintWidget.getHorizontalDimensionBehaviour(); ConstraintWidget.DimensionBehaviour verticalDimensionBehaviour = constraintWidget.getVerticalDimensionBehaviour(); ConstraintWidgetContainer constraintWidgetContainer = constraintWidget.getParent() != null ? (ConstraintWidgetContainer) constraintWidget.getParent() : null; if (constraintWidgetContainer != null) { constraintWidgetContainer.getHorizontalDimensionBehaviour(); ConstraintWidget.DimensionBehaviour dimensionBehaviour = ConstraintWidget.DimensionBehaviour.FIXED; } if (constraintWidgetContainer != null) { constraintWidgetContainer.getVerticalDimensionBehaviour(); ConstraintWidget.DimensionBehaviour dimensionBehaviour2 = ConstraintWidget.DimensionBehaviour.FIXED; } ConstraintWidget.DimensionBehaviour dimensionBehaviour3 = ConstraintWidget.DimensionBehaviour.FIXED; boolean z2 = horizontalDimensionBehaviour == dimensionBehaviour3 || horizontalDimensionBehaviour == ConstraintWidget.DimensionBehaviour.WRAP_CONTENT || (horizontalDimensionBehaviour == ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT && constraintWidget.mMatchConstraintDefaultWidth == 0 && constraintWidget.mDimensionRatio == 0.0f && constraintWidget.hasDanglingDimension(0)) || constraintWidget.isResolvedHorizontally(); boolean z3 = verticalDimensionBehaviour == dimensionBehaviour3 || verticalDimensionBehaviour == ConstraintWidget.DimensionBehaviour.WRAP_CONTENT || (verticalDimensionBehaviour == ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT && constraintWidget.mMatchConstraintDefaultHeight == 0 && constraintWidget.mDimensionRatio == 0.0f && constraintWidget.hasDanglingDimension(1)) || constraintWidget.isResolvedVertically(); if (constraintWidget.mDimensionRatio <= 0.0f || (!z2 && !z3)) { return z2 && z3; } return true; } private static void horizontalSolvingPass(ConstraintWidget constraintWidget, BasicMeasure.Measurer measurer, boolean z2) { ConstraintAnchor constraintAnchor; ConstraintAnchor constraintAnchor2; ConstraintAnchor constraintAnchor3; ConstraintAnchor constraintAnchor4; ConstraintAnchor constraintAnchor5; if (!(constraintWidget instanceof ConstraintWidgetContainer) && constraintWidget.isMeasureRequested() && canMeasure(constraintWidget)) { ConstraintWidgetContainer.measure(constraintWidget, measurer, new BasicMeasure.Measure(), BasicMeasure.Measure.SELF_DIMENSIONS); } ConstraintAnchor anchor = constraintWidget.getAnchor(ConstraintAnchor.Type.LEFT); ConstraintAnchor anchor2 = constraintWidget.getAnchor(ConstraintAnchor.Type.RIGHT); int finalValue = anchor.getFinalValue(); int finalValue2 = anchor2.getFinalValue(); if (anchor.getDependents() != null && anchor.hasFinalValue()) { Iterator it = anchor.getDependents().iterator(); while (it.hasNext()) { ConstraintAnchor next = it.next(); ConstraintWidget constraintWidget2 = next.mOwner; boolean canMeasure = canMeasure(constraintWidget2); if (constraintWidget2.isMeasureRequested() && canMeasure) { ConstraintWidgetContainer.measure(constraintWidget2, measurer, new BasicMeasure.Measure(), BasicMeasure.Measure.SELF_DIMENSIONS); } ConstraintWidget.DimensionBehaviour horizontalDimensionBehaviour = constraintWidget2.getHorizontalDimensionBehaviour(); ConstraintWidget.DimensionBehaviour dimensionBehaviour = ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT; if (horizontalDimensionBehaviour != dimensionBehaviour || canMeasure) { if (!constraintWidget2.isMeasureRequested()) { ConstraintAnchor constraintAnchor6 = constraintWidget2.mLeft; if (next == constraintAnchor6 && constraintWidget2.mRight.mTarget == null) { int margin = constraintAnchor6.getMargin() + finalValue; constraintWidget2.setFinalHorizontal(margin, constraintWidget2.getWidth() + margin); horizontalSolvingPass(constraintWidget2, measurer, z2); } else { ConstraintAnchor constraintAnchor7 = constraintWidget2.mRight; if (next == constraintAnchor7 && constraintAnchor6.mTarget == null) { int margin2 = finalValue - constraintAnchor7.getMargin(); constraintWidget2.setFinalHorizontal(margin2 - constraintWidget2.getWidth(), margin2); horizontalSolvingPass(constraintWidget2, measurer, z2); } else if (next == constraintAnchor6 && (constraintAnchor3 = constraintAnchor7.mTarget) != null && constraintAnchor3.hasFinalValue() && !constraintWidget2.isInHorizontalChain()) { solveHorizontalCenterConstraints(measurer, constraintWidget2, z2); } } } } else if (constraintWidget2.getHorizontalDimensionBehaviour() == dimensionBehaviour && constraintWidget2.mMatchConstraintMaxWidth >= 0 && constraintWidget2.mMatchConstraintMinWidth >= 0) { if (constraintWidget2.getVisibility() == 8 || (constraintWidget2.mMatchConstraintDefaultWidth == 0 && constraintWidget2.getDimensionRatio() == 0.0f)) { if (!constraintWidget2.isInHorizontalChain() && !constraintWidget2.isInVirtualLayout()) { if (((next == constraintWidget2.mLeft && (constraintAnchor5 = constraintWidget2.mRight.mTarget) != null && constraintAnchor5.hasFinalValue()) || (next == constraintWidget2.mRight && (constraintAnchor4 = constraintWidget2.mLeft.mTarget) != null && constraintAnchor4.hasFinalValue())) && !constraintWidget2.isInHorizontalChain()) { solveHorizontalMatchConstraint(constraintWidget, measurer, constraintWidget2, z2); } } } } } } if (!(constraintWidget instanceof Guideline) && anchor2.getDependents() != null && anchor2.hasFinalValue()) { Iterator it2 = anchor2.getDependents().iterator(); while (it2.hasNext()) { ConstraintAnchor next2 = it2.next(); ConstraintWidget constraintWidget3 = next2.mOwner; boolean canMeasure2 = canMeasure(constraintWidget3); if (constraintWidget3.isMeasureRequested() && canMeasure2) { ConstraintWidgetContainer.measure(constraintWidget3, measurer, new BasicMeasure.Measure(), BasicMeasure.Measure.SELF_DIMENSIONS); } boolean z3 = (next2 == constraintWidget3.mLeft && (constraintAnchor2 = constraintWidget3.mRight.mTarget) != null && constraintAnchor2.hasFinalValue()) || (next2 == constraintWidget3.mRight && (constraintAnchor = constraintWidget3.mLeft.mTarget) != null && constraintAnchor.hasFinalValue()); ConstraintWidget.DimensionBehaviour horizontalDimensionBehaviour2 = constraintWidget3.getHorizontalDimensionBehaviour(); ConstraintWidget.DimensionBehaviour dimensionBehaviour2 = ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT; if (horizontalDimensionBehaviour2 != dimensionBehaviour2 || canMeasure2) { if (!constraintWidget3.isMeasureRequested()) { ConstraintAnchor constraintAnchor8 = constraintWidget3.mLeft; if (next2 == constraintAnchor8 && constraintWidget3.mRight.mTarget == null) { int margin3 = constraintAnchor8.getMargin() + finalValue2; constraintWidget3.setFinalHorizontal(margin3, constraintWidget3.getWidth() + margin3); horizontalSolvingPass(constraintWidget3, measurer, z2); } else { ConstraintAnchor constraintAnchor9 = constraintWidget3.mRight; if (next2 == constraintAnchor9 && constraintAnchor8.mTarget == null) { int margin4 = finalValue2 - constraintAnchor9.getMargin(); constraintWidget3.setFinalHorizontal(margin4 - constraintWidget3.getWidth(), margin4); horizontalSolvingPass(constraintWidget3, measurer, z2); } else if (z3 && !constraintWidget3.isInHorizontalChain()) { solveHorizontalCenterConstraints(measurer, constraintWidget3, z2); } } } } else if (constraintWidget3.getHorizontalDimensionBehaviour() == dimensionBehaviour2 && constraintWidget3.mMatchConstraintMaxWidth >= 0 && constraintWidget3.mMatchConstraintMinWidth >= 0) { if (constraintWidget3.getVisibility() == 8 || (constraintWidget3.mMatchConstraintDefaultWidth == 0 && constraintWidget3.getDimensionRatio() == 0.0f)) { if (!constraintWidget3.isInHorizontalChain() && !constraintWidget3.isInVirtualLayout() && z3 && !constraintWidget3.isInHorizontalChain()) { solveHorizontalMatchConstraint(constraintWidget, measurer, constraintWidget3, z2); } } } } } } private static void solveBarrier(Barrier barrier, BasicMeasure.Measurer measurer, int i, boolean z2) { if (!barrier.allSolved()) { return; } if (i == 0) { horizontalSolvingPass(barrier, measurer, z2); } else { verticalSolvingPass(barrier, measurer); } } /* JADX WARNING: Code restructure failed: missing block: B:97:0x01db, code lost: if (r6[r21].mTarget.mOwner == r2) goto L_0x01df; */ /* JADX WARNING: Removed duplicated region for block: B:69:0x0120 */ /* JADX WARNING: Removed duplicated region for block: B:78:0x0150 */ public static boolean solveChain(ConstraintWidgetContainer constraintWidgetContainer, LinearSystem linearSystem, int i, int i2, ChainHead chainHead, boolean z2, boolean z3, boolean z4) { int margin; int finalValue; int finalValue2; int i3; boolean z5; LinearSystem linearSystem2; ConstraintWidget constraintWidget; int i4; if (z4) { return false; } if (i == 0) { if (!constraintWidgetContainer.isResolvedHorizontally()) { return false; } } else if (!constraintWidgetContainer.isResolvedVertically()) { return false; } boolean isRtl = constraintWidgetContainer.isRtl(); ConstraintWidget first = chainHead.getFirst(); ConstraintWidget last = chainHead.getLast(); ConstraintWidget firstVisibleWidget = chainHead.getFirstVisibleWidget(); ConstraintWidget lastVisibleWidget = chainHead.getLastVisibleWidget(); ConstraintWidget head = chainHead.getHead(); ConstraintAnchor constraintAnchor = first.mListAnchors[i2]; int i5 = i2 + 1; ConstraintAnchor constraintAnchor2 = last.mListAnchors[i5]; ConstraintAnchor constraintAnchor3 = constraintAnchor.mTarget; if (constraintAnchor3 == null || constraintAnchor2.mTarget == null || !constraintAnchor3.hasFinalValue() || !constraintAnchor2.mTarget.hasFinalValue() || firstVisibleWidget == null || lastVisibleWidget == null || (finalValue2 = (finalValue = constraintAnchor2.mTarget.getFinalValue() - lastVisibleWidget.mListAnchors[i5].getMargin()) - (margin = firstVisibleWidget.mListAnchors[i2].getMargin() + constraintAnchor.mTarget.getFinalValue())) <= 0) { return false; } BasicMeasure.Measure measure2 = new BasicMeasure.Measure(); ConstraintWidget constraintWidget2 = first; boolean z6 = false; int i6 = 0; int i7 = 0; int i8 = 0; while (true) { ConstraintWidget constraintWidget3 = null; if (!z6) { ConstraintAnchor constraintAnchor4 = constraintWidget2.mListAnchors[i2]; if (!canMeasure(constraintWidget2) || constraintWidget2.mListDimensionBehaviors[i] == ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT) { return false; } if (constraintWidget2.isMeasureRequested()) { ConstraintWidgetContainer.measure(constraintWidget2, constraintWidgetContainer.getMeasurer(), measure2, BasicMeasure.Measure.SELF_DIMENSIONS); } i8 = constraintWidget2.mListAnchors[i5].getMargin() + (i == 0 ? constraintWidget2.getWidth() : constraintWidget2.getHeight()) + constraintWidget2.mListAnchors[i2].getMargin() + i8; i7++; if (constraintWidget2.getVisibility() != 8) { i6++; } ConstraintAnchor constraintAnchor5 = constraintWidget2.mListAnchors[i5].mTarget; if (constraintAnchor5 != null) { ConstraintWidget constraintWidget4 = constraintAnchor5.mOwner; ConstraintAnchor[] constraintAnchorArr = constraintWidget4.mListAnchors; if (constraintAnchorArr[i2].mTarget != null && constraintAnchorArr[i2].mTarget.mOwner == constraintWidget2) { constraintWidget3 = constraintWidget4; } } if (constraintWidget3 != null) { constraintWidget2 = constraintWidget3; } else { z6 = true; } first = first; } else if (i6 == 0 || i6 != i7 || finalValue2 < i8) { return false; } else { int i9 = finalValue2 - i8; if (z2) { i9 /= i6 + 1; } else if (z3 && i6 > 2) { i3 = 1; i9 = (i9 / i6) - 1; if (i6 != i3) { int horizontalBiasPercent = (int) ((((float) i9) * (i == 0 ? head.getHorizontalBiasPercent() : head.getVerticalBiasPercent())) + ((float) margin) + 0.5f); if (i == 0) { firstVisibleWidget.setFinalHorizontal(horizontalBiasPercent, firstVisibleWidget.getWidth() + horizontalBiasPercent); } else { firstVisibleWidget.setFinalVertical(horizontalBiasPercent, firstVisibleWidget.getHeight() + horizontalBiasPercent); } horizontalSolvingPass(firstVisibleWidget, constraintWidgetContainer.getMeasurer(), isRtl); return true; } if (z2) { int i10 = margin + i9; ConstraintWidget constraintWidget5 = first; boolean z7 = false; while (!z7) { ConstraintAnchor constraintAnchor6 = constraintWidget5.mListAnchors[i2]; if (constraintWidget5.getVisibility() == 8) { if (i == 0) { constraintWidget5.setFinalHorizontal(i10, i10); horizontalSolvingPass(constraintWidget5, constraintWidgetContainer.getMeasurer(), isRtl); } else { constraintWidget5.setFinalVertical(i10, i10); verticalSolvingPass(constraintWidget5, constraintWidgetContainer.getMeasurer()); } linearSystem2 = linearSystem; z5 = false; } else { int margin2 = constraintWidget5.mListAnchors[i2].getMargin() + i10; if (i == 0) { constraintWidget5.setFinalHorizontal(margin2, constraintWidget5.getWidth() + margin2); horizontalSolvingPass(constraintWidget5, constraintWidgetContainer.getMeasurer(), isRtl); i4 = constraintWidget5.getWidth(); } else { constraintWidget5.setFinalVertical(margin2, constraintWidget5.getHeight() + margin2); verticalSolvingPass(constraintWidget5, constraintWidgetContainer.getMeasurer()); i4 = constraintWidget5.getHeight(); } i10 = constraintWidget5.mListAnchors[i5].getMargin() + i4 + margin2 + i9; z5 = false; linearSystem2 = linearSystem; } constraintWidget5.addToSolver(linearSystem2, z5); ConstraintAnchor constraintAnchor7 = constraintWidget5.mListAnchors[i5].mTarget; if (constraintAnchor7 != null) { constraintWidget = constraintAnchor7.mOwner; ConstraintAnchor[] constraintAnchorArr2 = constraintWidget.mListAnchors; if (constraintAnchorArr2[i2].mTarget != null) { } } constraintWidget = null; if (constraintWidget != null) { constraintWidget5 = constraintWidget; } else { z7 = true; } } } else if (z3) { if (i6 != 2) { return false; } if (i == 0) { firstVisibleWidget.setFinalHorizontal(margin, firstVisibleWidget.getWidth() + margin); lastVisibleWidget.setFinalHorizontal(finalValue - lastVisibleWidget.getWidth(), finalValue); horizontalSolvingPass(firstVisibleWidget, constraintWidgetContainer.getMeasurer(), isRtl); horizontalSolvingPass(lastVisibleWidget, constraintWidgetContainer.getMeasurer(), isRtl); return true; } firstVisibleWidget.setFinalVertical(margin, firstVisibleWidget.getHeight() + margin); lastVisibleWidget.setFinalVertical(finalValue - lastVisibleWidget.getHeight(), finalValue); verticalSolvingPass(firstVisibleWidget, constraintWidgetContainer.getMeasurer()); verticalSolvingPass(lastVisibleWidget, constraintWidgetContainer.getMeasurer()); return true; } return true; } i3 = 1; if (i6 != i3) { } } } } private static void solveHorizontalCenterConstraints(BasicMeasure.Measurer measurer, ConstraintWidget constraintWidget, boolean z2) { float horizontalBiasPercent = constraintWidget.getHorizontalBiasPercent(); int finalValue = constraintWidget.mLeft.mTarget.getFinalValue(); int finalValue2 = constraintWidget.mRight.mTarget.getFinalValue(); int margin = constraintWidget.mLeft.getMargin() + finalValue; int margin2 = finalValue2 - constraintWidget.mRight.getMargin(); if (finalValue == finalValue2) { horizontalBiasPercent = 0.5f; } else { finalValue = margin; finalValue2 = margin2; } int width = constraintWidget.getWidth(); int i = (finalValue2 - finalValue) - width; if (finalValue > finalValue2) { i = (finalValue - finalValue2) - width; } int i2 = ((int) ((horizontalBiasPercent * ((float) i)) + 0.5f)) + finalValue; int i3 = i2 + width; if (finalValue > finalValue2) { i3 = i2 - width; } constraintWidget.setFinalHorizontal(i2, i3); horizontalSolvingPass(constraintWidget, measurer, z2); } private static void solveHorizontalMatchConstraint(ConstraintWidget constraintWidget, BasicMeasure.Measurer measurer, ConstraintWidget constraintWidget2, boolean z2) { float horizontalBiasPercent = constraintWidget2.getHorizontalBiasPercent(); int margin = constraintWidget2.mLeft.getMargin() + constraintWidget2.mLeft.mTarget.getFinalValue(); int finalValue = constraintWidget2.mRight.mTarget.getFinalValue() - constraintWidget2.mRight.getMargin(); if (finalValue >= margin) { int width = constraintWidget2.getWidth(); if (constraintWidget2.getVisibility() != 8) { int i = constraintWidget2.mMatchConstraintDefaultWidth; if (i == 2) { width = (int) (constraintWidget2.getHorizontalBiasPercent() * 0.5f * ((float) (constraintWidget instanceof ConstraintWidgetContainer ? constraintWidget.getWidth() : constraintWidget.getParent().getWidth()))); } else if (i == 0) { width = finalValue - margin; } width = Math.max(constraintWidget2.mMatchConstraintMinWidth, width); int i2 = constraintWidget2.mMatchConstraintMaxWidth; if (i2 > 0) { width = Math.min(i2, width); } } int i3 = margin + ((int) ((horizontalBiasPercent * ((float) ((finalValue - margin) - width))) + 0.5f)); constraintWidget2.setFinalHorizontal(i3, width + i3); horizontalSolvingPass(constraintWidget2, measurer, z2); } } private static void solveVerticalCenterConstraints(BasicMeasure.Measurer measurer, ConstraintWidget constraintWidget) { float verticalBiasPercent = constraintWidget.getVerticalBiasPercent(); int finalValue = constraintWidget.mTop.mTarget.getFinalValue(); int finalValue2 = constraintWidget.mBottom.mTarget.getFinalValue(); int margin = constraintWidget.mTop.getMargin() + finalValue; int margin2 = finalValue2 - constraintWidget.mBottom.getMargin(); if (finalValue == finalValue2) { verticalBiasPercent = 0.5f; } else { finalValue = margin; finalValue2 = margin2; } int height = constraintWidget.getHeight(); int i = (finalValue2 - finalValue) - height; if (finalValue > finalValue2) { i = (finalValue - finalValue2) - height; } int i2 = (int) ((verticalBiasPercent * ((float) i)) + 0.5f); int i3 = finalValue + i2; int i4 = i3 + height; if (finalValue > finalValue2) { i3 = finalValue - i2; i4 = i3 - height; } constraintWidget.setFinalVertical(i3, i4); verticalSolvingPass(constraintWidget, measurer); } private static void solveVerticalMatchConstraint(ConstraintWidget constraintWidget, BasicMeasure.Measurer measurer, ConstraintWidget constraintWidget2) { float verticalBiasPercent = constraintWidget2.getVerticalBiasPercent(); int margin = constraintWidget2.mTop.getMargin() + constraintWidget2.mTop.mTarget.getFinalValue(); int finalValue = constraintWidget2.mBottom.mTarget.getFinalValue() - constraintWidget2.mBottom.getMargin(); if (finalValue >= margin) { int height = constraintWidget2.getHeight(); if (constraintWidget2.getVisibility() != 8) { int i = constraintWidget2.mMatchConstraintDefaultHeight; if (i == 2) { height = (int) (verticalBiasPercent * 0.5f * ((float) (constraintWidget instanceof ConstraintWidgetContainer ? constraintWidget.getHeight() : constraintWidget.getParent().getHeight()))); } else if (i == 0) { height = finalValue - margin; } height = Math.max(constraintWidget2.mMatchConstraintMinHeight, height); int i2 = constraintWidget2.mMatchConstraintMaxHeight; if (i2 > 0) { height = Math.min(i2, height); } } int i3 = margin + ((int) ((verticalBiasPercent * ((float) ((finalValue - margin) - height))) + 0.5f)); constraintWidget2.setFinalVertical(i3, height + i3); verticalSolvingPass(constraintWidget2, measurer); } } public static void solvingPass(ConstraintWidgetContainer constraintWidgetContainer, BasicMeasure.Measurer measurer) { ConstraintWidget.DimensionBehaviour horizontalDimensionBehaviour = constraintWidgetContainer.getHorizontalDimensionBehaviour(); ConstraintWidget.DimensionBehaviour verticalDimensionBehaviour = constraintWidgetContainer.getVerticalDimensionBehaviour(); constraintWidgetContainer.resetFinalResolution(); ArrayList children = constraintWidgetContainer.getChildren(); int size = children.size(); for (int i = 0; i < size; i++) { children.get(i).resetFinalResolution(); } boolean isRtl = constraintWidgetContainer.isRtl(); if (horizontalDimensionBehaviour == ConstraintWidget.DimensionBehaviour.FIXED) { constraintWidgetContainer.setFinalHorizontal(0, constraintWidgetContainer.getWidth()); } else { constraintWidgetContainer.setFinalLeft(0); } boolean z2 = false; boolean z3 = false; for (int i2 = 0; i2 < size; i2++) { ConstraintWidget constraintWidget = children.get(i2); if (constraintWidget instanceof Guideline) { Guideline guideline = (Guideline) constraintWidget; if (guideline.getOrientation() == 1) { if (guideline.getRelativeBegin() != -1) { guideline.setFinalValue(guideline.getRelativeBegin()); } else if (guideline.getRelativeEnd() != -1 && constraintWidgetContainer.isResolvedHorizontally()) { guideline.setFinalValue(constraintWidgetContainer.getWidth() - guideline.getRelativeEnd()); } else if (constraintWidgetContainer.isResolvedHorizontally()) { guideline.setFinalValue((int) ((guideline.getRelativePercent() * ((float) constraintWidgetContainer.getWidth())) + 0.5f)); } z2 = true; } } else if ((constraintWidget instanceof Barrier) && ((Barrier) constraintWidget).getOrientation() == 0) { z3 = true; } } if (z2) { for (int i3 = 0; i3 < size; i3++) { ConstraintWidget constraintWidget2 = children.get(i3); if (constraintWidget2 instanceof Guideline) { Guideline guideline2 = (Guideline) constraintWidget2; if (guideline2.getOrientation() == 1) { horizontalSolvingPass(guideline2, measurer, isRtl); } } } } horizontalSolvingPass(constraintWidgetContainer, measurer, isRtl); if (z3) { for (int i4 = 0; i4 < size; i4++) { ConstraintWidget constraintWidget3 = children.get(i4); if (constraintWidget3 instanceof Barrier) { Barrier barrier = (Barrier) constraintWidget3; if (barrier.getOrientation() == 0) { solveBarrier(barrier, measurer, 0, isRtl); } } } } if (verticalDimensionBehaviour == ConstraintWidget.DimensionBehaviour.FIXED) { constraintWidgetContainer.setFinalVertical(0, constraintWidgetContainer.getHeight()); } else { constraintWidgetContainer.setFinalTop(0); } boolean z4 = false; boolean z5 = false; for (int i5 = 0; i5 < size; i5++) { ConstraintWidget constraintWidget4 = children.get(i5); if (constraintWidget4 instanceof Guideline) { Guideline guideline3 = (Guideline) constraintWidget4; if (guideline3.getOrientation() == 0) { if (guideline3.getRelativeBegin() != -1) { guideline3.setFinalValue(guideline3.getRelativeBegin()); } else if (guideline3.getRelativeEnd() != -1 && constraintWidgetContainer.isResolvedVertically()) { guideline3.setFinalValue(constraintWidgetContainer.getHeight() - guideline3.getRelativeEnd()); } else if (constraintWidgetContainer.isResolvedVertically()) { guideline3.setFinalValue((int) ((guideline3.getRelativePercent() * ((float) constraintWidgetContainer.getHeight())) + 0.5f)); } z4 = true; } } else if ((constraintWidget4 instanceof Barrier) && ((Barrier) constraintWidget4).getOrientation() == 1) { z5 = true; } } if (z4) { for (int i6 = 0; i6 < size; i6++) { ConstraintWidget constraintWidget5 = children.get(i6); if (constraintWidget5 instanceof Guideline) { Guideline guideline4 = (Guideline) constraintWidget5; if (guideline4.getOrientation() == 0) { verticalSolvingPass(guideline4, measurer); } } } } verticalSolvingPass(constraintWidgetContainer, measurer); if (z5) { for (int i7 = 0; i7 < size; i7++) { ConstraintWidget constraintWidget6 = children.get(i7); if (constraintWidget6 instanceof Barrier) { Barrier barrier2 = (Barrier) constraintWidget6; if (barrier2.getOrientation() == 1) { solveBarrier(barrier2, measurer, 1, isRtl); } } } } for (int i8 = 0; i8 < size; i8++) { ConstraintWidget constraintWidget7 = children.get(i8); if (constraintWidget7.isMeasureRequested() && canMeasure(constraintWidget7)) { ConstraintWidgetContainer.measure(constraintWidget7, measurer, measure, BasicMeasure.Measure.SELF_DIMENSIONS); horizontalSolvingPass(constraintWidget7, measurer, isRtl); verticalSolvingPass(constraintWidget7, measurer); } } } private static void verticalSolvingPass(ConstraintWidget constraintWidget, BasicMeasure.Measurer measurer) { ConstraintAnchor constraintAnchor; ConstraintAnchor constraintAnchor2; ConstraintAnchor constraintAnchor3; ConstraintAnchor constraintAnchor4; ConstraintAnchor constraintAnchor5; if (!(constraintWidget instanceof ConstraintWidgetContainer) && constraintWidget.isMeasureRequested() && canMeasure(constraintWidget)) { ConstraintWidgetContainer.measure(constraintWidget, measurer, new BasicMeasure.Measure(), BasicMeasure.Measure.SELF_DIMENSIONS); } ConstraintAnchor anchor = constraintWidget.getAnchor(ConstraintAnchor.Type.TOP); ConstraintAnchor anchor2 = constraintWidget.getAnchor(ConstraintAnchor.Type.BOTTOM); int finalValue = anchor.getFinalValue(); int finalValue2 = anchor2.getFinalValue(); if (anchor.getDependents() != null && anchor.hasFinalValue()) { Iterator it = anchor.getDependents().iterator(); while (it.hasNext()) { ConstraintAnchor next = it.next(); ConstraintWidget constraintWidget2 = next.mOwner; boolean canMeasure = canMeasure(constraintWidget2); if (constraintWidget2.isMeasureRequested() && canMeasure) { ConstraintWidgetContainer.measure(constraintWidget2, measurer, new BasicMeasure.Measure(), BasicMeasure.Measure.SELF_DIMENSIONS); } ConstraintWidget.DimensionBehaviour verticalDimensionBehaviour = constraintWidget2.getVerticalDimensionBehaviour(); ConstraintWidget.DimensionBehaviour dimensionBehaviour = ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT; if (verticalDimensionBehaviour != dimensionBehaviour || canMeasure) { if (!constraintWidget2.isMeasureRequested()) { ConstraintAnchor constraintAnchor6 = constraintWidget2.mTop; if (next == constraintAnchor6 && constraintWidget2.mBottom.mTarget == null) { int margin = constraintAnchor6.getMargin() + finalValue; constraintWidget2.setFinalVertical(margin, constraintWidget2.getHeight() + margin); verticalSolvingPass(constraintWidget2, measurer); } else { ConstraintAnchor constraintAnchor7 = constraintWidget2.mBottom; if (next == constraintAnchor7 && constraintAnchor7.mTarget == null) { int margin2 = finalValue - constraintAnchor7.getMargin(); constraintWidget2.setFinalVertical(margin2 - constraintWidget2.getHeight(), margin2); verticalSolvingPass(constraintWidget2, measurer); } else if (next == constraintAnchor6 && (constraintAnchor3 = constraintAnchor7.mTarget) != null && constraintAnchor3.hasFinalValue()) { solveVerticalCenterConstraints(measurer, constraintWidget2); } } } } else if (constraintWidget2.getVerticalDimensionBehaviour() == dimensionBehaviour && constraintWidget2.mMatchConstraintMaxHeight >= 0 && constraintWidget2.mMatchConstraintMinHeight >= 0) { if (constraintWidget2.getVisibility() == 8 || (constraintWidget2.mMatchConstraintDefaultHeight == 0 && constraintWidget2.getDimensionRatio() == 0.0f)) { if (!constraintWidget2.isInVerticalChain() && !constraintWidget2.isInVirtualLayout()) { if (((next == constraintWidget2.mTop && (constraintAnchor5 = constraintWidget2.mBottom.mTarget) != null && constraintAnchor5.hasFinalValue()) || (next == constraintWidget2.mBottom && (constraintAnchor4 = constraintWidget2.mTop.mTarget) != null && constraintAnchor4.hasFinalValue())) && !constraintWidget2.isInVerticalChain()) { solveVerticalMatchConstraint(constraintWidget, measurer, constraintWidget2); } } } } } } if (!(constraintWidget instanceof Guideline)) { if (anchor2.getDependents() != null && anchor2.hasFinalValue()) { Iterator it2 = anchor2.getDependents().iterator(); while (it2.hasNext()) { ConstraintAnchor next2 = it2.next(); ConstraintWidget constraintWidget3 = next2.mOwner; boolean canMeasure2 = canMeasure(constraintWidget3); if (constraintWidget3.isMeasureRequested() && canMeasure2) { ConstraintWidgetContainer.measure(constraintWidget3, measurer, new BasicMeasure.Measure(), BasicMeasure.Measure.SELF_DIMENSIONS); } boolean z2 = (next2 == constraintWidget3.mTop && (constraintAnchor2 = constraintWidget3.mBottom.mTarget) != null && constraintAnchor2.hasFinalValue()) || (next2 == constraintWidget3.mBottom && (constraintAnchor = constraintWidget3.mTop.mTarget) != null && constraintAnchor.hasFinalValue()); ConstraintWidget.DimensionBehaviour verticalDimensionBehaviour2 = constraintWidget3.getVerticalDimensionBehaviour(); ConstraintWidget.DimensionBehaviour dimensionBehaviour2 = ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT; if (verticalDimensionBehaviour2 != dimensionBehaviour2 || canMeasure2) { if (!constraintWidget3.isMeasureRequested()) { ConstraintAnchor constraintAnchor8 = constraintWidget3.mTop; if (next2 == constraintAnchor8 && constraintWidget3.mBottom.mTarget == null) { int margin3 = constraintAnchor8.getMargin() + finalValue2; constraintWidget3.setFinalVertical(margin3, constraintWidget3.getHeight() + margin3); verticalSolvingPass(constraintWidget3, measurer); } else { ConstraintAnchor constraintAnchor9 = constraintWidget3.mBottom; if (next2 == constraintAnchor9 && constraintAnchor8.mTarget == null) { int margin4 = finalValue2 - constraintAnchor9.getMargin(); constraintWidget3.setFinalVertical(margin4 - constraintWidget3.getHeight(), margin4); verticalSolvingPass(constraintWidget3, measurer); } else if (z2 && !constraintWidget3.isInVerticalChain()) { solveVerticalCenterConstraints(measurer, constraintWidget3); } } } } else if (constraintWidget3.getVerticalDimensionBehaviour() == dimensionBehaviour2 && constraintWidget3.mMatchConstraintMaxHeight >= 0 && constraintWidget3.mMatchConstraintMinHeight >= 0) { if (constraintWidget3.getVisibility() == 8 || (constraintWidget3.mMatchConstraintDefaultHeight == 0 && constraintWidget3.getDimensionRatio() == 0.0f)) { if (!constraintWidget3.isInVerticalChain() && !constraintWidget3.isInVirtualLayout() && z2 && !constraintWidget3.isInVerticalChain()) { solveVerticalMatchConstraint(constraintWidget, measurer, constraintWidget3); } } } } } ConstraintAnchor anchor3 = constraintWidget.getAnchor(ConstraintAnchor.Type.BASELINE); if (anchor3.getDependents() != null && anchor3.hasFinalValue()) { int finalValue3 = anchor3.getFinalValue(); Iterator it3 = anchor3.getDependents().iterator(); while (it3.hasNext()) { ConstraintAnchor next3 = it3.next(); ConstraintWidget constraintWidget4 = next3.mOwner; boolean canMeasure3 = canMeasure(constraintWidget4); if (constraintWidget4.isMeasureRequested() && canMeasure3) { ConstraintWidgetContainer.measure(constraintWidget4, measurer, new BasicMeasure.Measure(), BasicMeasure.Measure.SELF_DIMENSIONS); } if (constraintWidget4.getVerticalDimensionBehaviour() != ConstraintWidget.DimensionBehaviour.MATCH_CONSTRAINT || canMeasure3) { if (!constraintWidget4.isMeasureRequested() && next3 == constraintWidget4.mBaseline) { constraintWidget4.setFinalBaseline(finalValue3); verticalSolvingPass(constraintWidget4, measurer); } } } } } } }