297 lines
11 KiB
Java
297 lines
11 KiB
Java
package androidx.constraintlayout.solver.state;
|
|
|
|
import androidx.constraintlayout.solver.state.helpers.AlignHorizontallyReference;
|
|
import androidx.constraintlayout.solver.state.helpers.AlignVerticallyReference;
|
|
import androidx.constraintlayout.solver.state.helpers.BarrierReference;
|
|
import androidx.constraintlayout.solver.state.helpers.GuidelineReference;
|
|
import androidx.constraintlayout.solver.state.helpers.HorizontalChainReference;
|
|
import androidx.constraintlayout.solver.state.helpers.VerticalChainReference;
|
|
import androidx.constraintlayout.solver.widgets.ConstraintWidget;
|
|
import androidx.constraintlayout.solver.widgets.ConstraintWidgetContainer;
|
|
import androidx.constraintlayout.solver.widgets.HelperWidget;
|
|
import c.d.b.a.a;
|
|
import java.util.HashMap;
|
|
import java.util.Iterator;
|
|
public class State {
|
|
public static final int CONSTRAINT_RATIO = 2;
|
|
public static final int CONSTRAINT_SPREAD = 0;
|
|
public static final int CONSTRAINT_WRAP = 1;
|
|
public static final Integer PARENT = 0;
|
|
public static final int UNKNOWN = -1;
|
|
public HashMap<Object, HelperReference> mHelperReferences = new HashMap<>();
|
|
public final ConstraintReference mParent;
|
|
public HashMap<Object, Reference> mReferences = new HashMap<>();
|
|
private int numHelpers;
|
|
|
|
/* renamed from: androidx.constraintlayout.solver.state.State$1 reason: invalid class name */
|
|
public static /* synthetic */ class AnonymousClass1 {
|
|
public static final /* synthetic */ int[] $SwitchMap$androidx$constraintlayout$solver$state$State$Helper;
|
|
|
|
static {
|
|
Helper.values();
|
|
int[] iArr = new int[7];
|
|
$SwitchMap$androidx$constraintlayout$solver$state$State$Helper = iArr;
|
|
try {
|
|
iArr[Helper.HORIZONTAL_CHAIN.ordinal()] = 1;
|
|
} catch (NoSuchFieldError unused) {
|
|
}
|
|
try {
|
|
$SwitchMap$androidx$constraintlayout$solver$state$State$Helper[Helper.VERTICAL_CHAIN.ordinal()] = 2;
|
|
} catch (NoSuchFieldError unused2) {
|
|
}
|
|
try {
|
|
$SwitchMap$androidx$constraintlayout$solver$state$State$Helper[Helper.ALIGN_HORIZONTALLY.ordinal()] = 3;
|
|
} catch (NoSuchFieldError unused3) {
|
|
}
|
|
try {
|
|
$SwitchMap$androidx$constraintlayout$solver$state$State$Helper[Helper.ALIGN_VERTICALLY.ordinal()] = 4;
|
|
} catch (NoSuchFieldError unused4) {
|
|
}
|
|
try {
|
|
$SwitchMap$androidx$constraintlayout$solver$state$State$Helper[Helper.BARRIER.ordinal()] = 5;
|
|
} catch (NoSuchFieldError unused5) {
|
|
}
|
|
}
|
|
}
|
|
|
|
public enum Chain {
|
|
SPREAD,
|
|
SPREAD_INSIDE,
|
|
PACKED
|
|
}
|
|
|
|
public enum Constraint {
|
|
LEFT_TO_LEFT,
|
|
LEFT_TO_RIGHT,
|
|
RIGHT_TO_LEFT,
|
|
RIGHT_TO_RIGHT,
|
|
START_TO_START,
|
|
START_TO_END,
|
|
END_TO_START,
|
|
END_TO_END,
|
|
TOP_TO_TOP,
|
|
TOP_TO_BOTTOM,
|
|
BOTTOM_TO_TOP,
|
|
BOTTOM_TO_BOTTOM,
|
|
BASELINE_TO_BASELINE,
|
|
CENTER_HORIZONTALLY,
|
|
CENTER_VERTICALLY
|
|
}
|
|
|
|
public enum Direction {
|
|
LEFT,
|
|
RIGHT,
|
|
START,
|
|
END,
|
|
TOP,
|
|
BOTTOM
|
|
}
|
|
|
|
public enum Helper {
|
|
HORIZONTAL_CHAIN,
|
|
VERTICAL_CHAIN,
|
|
ALIGN_HORIZONTALLY,
|
|
ALIGN_VERTICALLY,
|
|
BARRIER,
|
|
LAYER,
|
|
FLOW
|
|
}
|
|
|
|
public State() {
|
|
ConstraintReference constraintReference = new ConstraintReference(this);
|
|
this.mParent = constraintReference;
|
|
this.numHelpers = 0;
|
|
this.mReferences.put(PARENT, constraintReference);
|
|
}
|
|
|
|
private String createHelperKey() {
|
|
StringBuilder L = a.L("__HELPER_KEY_");
|
|
int i = this.numHelpers;
|
|
this.numHelpers = i + 1;
|
|
return a.y(L, i, "__");
|
|
}
|
|
|
|
public void apply(ConstraintWidgetContainer constraintWidgetContainer) {
|
|
constraintWidgetContainer.removeAllChildren();
|
|
this.mParent.getWidth().apply(this, constraintWidgetContainer, 0);
|
|
this.mParent.getHeight().apply(this, constraintWidgetContainer, 1);
|
|
for (Object obj : this.mHelperReferences.keySet()) {
|
|
HelperWidget helperWidget = this.mHelperReferences.get(obj).getHelperWidget();
|
|
if (helperWidget != null) {
|
|
Reference reference = this.mReferences.get(obj);
|
|
if (reference == null) {
|
|
reference = constraints(obj);
|
|
}
|
|
reference.setConstraintWidget(helperWidget);
|
|
}
|
|
}
|
|
for (Object obj2 : this.mReferences.keySet()) {
|
|
Reference reference2 = this.mReferences.get(obj2);
|
|
if (reference2 != this.mParent) {
|
|
ConstraintWidget constraintWidget = reference2.getConstraintWidget();
|
|
constraintWidget.setParent(null);
|
|
if (reference2 instanceof GuidelineReference) {
|
|
reference2.apply();
|
|
}
|
|
constraintWidgetContainer.add(constraintWidget);
|
|
} else {
|
|
reference2.setConstraintWidget(constraintWidgetContainer);
|
|
}
|
|
}
|
|
for (Object obj3 : this.mHelperReferences.keySet()) {
|
|
HelperReference helperReference = this.mHelperReferences.get(obj3);
|
|
if (helperReference.getHelperWidget() != null) {
|
|
Iterator<Object> it = helperReference.mReferences.iterator();
|
|
while (it.hasNext()) {
|
|
helperReference.getHelperWidget().add(this.mReferences.get(it.next()).getConstraintWidget());
|
|
}
|
|
helperReference.apply();
|
|
}
|
|
}
|
|
for (Object obj4 : this.mReferences.keySet()) {
|
|
this.mReferences.get(obj4).apply();
|
|
}
|
|
}
|
|
|
|
public BarrierReference barrier(Object obj, Direction direction) {
|
|
BarrierReference barrierReference = (BarrierReference) helper(obj, Helper.BARRIER);
|
|
barrierReference.setBarrierDirection(direction);
|
|
return barrierReference;
|
|
}
|
|
|
|
public AlignHorizontallyReference centerHorizontally(Object... objArr) {
|
|
AlignHorizontallyReference alignHorizontallyReference = (AlignHorizontallyReference) helper(null, Helper.ALIGN_HORIZONTALLY);
|
|
alignHorizontallyReference.add(objArr);
|
|
return alignHorizontallyReference;
|
|
}
|
|
|
|
public AlignVerticallyReference centerVertically(Object... objArr) {
|
|
AlignVerticallyReference alignVerticallyReference = (AlignVerticallyReference) helper(null, Helper.ALIGN_VERTICALLY);
|
|
alignVerticallyReference.add(objArr);
|
|
return alignVerticallyReference;
|
|
}
|
|
|
|
public ConstraintReference constraints(Object obj) {
|
|
Reference reference = this.mReferences.get(obj);
|
|
if (reference == null) {
|
|
reference = createConstraintReference(obj);
|
|
this.mReferences.put(obj, reference);
|
|
reference.setKey(obj);
|
|
}
|
|
if (reference instanceof ConstraintReference) {
|
|
return (ConstraintReference) reference;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public int convertDimension(Object obj) {
|
|
if (obj instanceof Float) {
|
|
return ((Float) obj).intValue();
|
|
}
|
|
if (obj instanceof Integer) {
|
|
return ((Integer) obj).intValue();
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
public ConstraintReference createConstraintReference(Object obj) {
|
|
return new ConstraintReference(this);
|
|
}
|
|
|
|
public void directMapping() {
|
|
for (Object obj : this.mReferences.keySet()) {
|
|
constraints(obj).setView(obj);
|
|
}
|
|
}
|
|
|
|
public GuidelineReference guideline(Object obj, int i) {
|
|
Reference reference = this.mReferences.get(obj);
|
|
GuidelineReference guidelineReference = reference;
|
|
if (reference == null) {
|
|
GuidelineReference guidelineReference2 = new GuidelineReference(this);
|
|
guidelineReference2.setOrientation(i);
|
|
guidelineReference2.setKey(obj);
|
|
this.mReferences.put(obj, guidelineReference2);
|
|
guidelineReference = guidelineReference2;
|
|
}
|
|
return (GuidelineReference) guidelineReference;
|
|
}
|
|
|
|
public State height(Dimension dimension) {
|
|
return setHeight(dimension);
|
|
}
|
|
|
|
public HelperReference helper(Object obj, Helper helper) {
|
|
HelperReference helperReference;
|
|
if (obj == null) {
|
|
obj = createHelperKey();
|
|
}
|
|
HelperReference helperReference2 = this.mHelperReferences.get(obj);
|
|
if (helperReference2 == null) {
|
|
int ordinal = helper.ordinal();
|
|
if (ordinal == 0) {
|
|
helperReference = new HorizontalChainReference(this);
|
|
} else if (ordinal == 1) {
|
|
helperReference = new VerticalChainReference(this);
|
|
} else if (ordinal == 2) {
|
|
helperReference = new AlignHorizontallyReference(this);
|
|
} else if (ordinal == 3) {
|
|
helperReference = new AlignVerticallyReference(this);
|
|
} else if (ordinal != 4) {
|
|
helperReference2 = new HelperReference(this, helper);
|
|
this.mHelperReferences.put(obj, helperReference2);
|
|
} else {
|
|
helperReference = new BarrierReference(this);
|
|
}
|
|
helperReference2 = helperReference;
|
|
this.mHelperReferences.put(obj, helperReference2);
|
|
}
|
|
return helperReference2;
|
|
}
|
|
|
|
public HorizontalChainReference horizontalChain(Object... objArr) {
|
|
HorizontalChainReference horizontalChainReference = (HorizontalChainReference) helper(null, Helper.HORIZONTAL_CHAIN);
|
|
horizontalChainReference.add(objArr);
|
|
return horizontalChainReference;
|
|
}
|
|
|
|
public GuidelineReference horizontalGuideline(Object obj) {
|
|
return guideline(obj, 0);
|
|
}
|
|
|
|
public void map(Object obj, Object obj2) {
|
|
constraints(obj).setView(obj2);
|
|
}
|
|
|
|
public Reference reference(Object obj) {
|
|
return this.mReferences.get(obj);
|
|
}
|
|
|
|
public void reset() {
|
|
this.mHelperReferences.clear();
|
|
}
|
|
|
|
public State setHeight(Dimension dimension) {
|
|
this.mParent.setHeight(dimension);
|
|
return this;
|
|
}
|
|
|
|
public State setWidth(Dimension dimension) {
|
|
this.mParent.setWidth(dimension);
|
|
return this;
|
|
}
|
|
|
|
public VerticalChainReference verticalChain(Object... objArr) {
|
|
VerticalChainReference verticalChainReference = (VerticalChainReference) helper(null, Helper.VERTICAL_CHAIN);
|
|
verticalChainReference.add(objArr);
|
|
return verticalChainReference;
|
|
}
|
|
|
|
public GuidelineReference verticalGuideline(Object obj) {
|
|
return guideline(obj, 1);
|
|
}
|
|
|
|
public State width(Dimension dimension) {
|
|
return setWidth(dimension);
|
|
}
|
|
}
|