94 lines
4.1 KiB
Java
94 lines
4.1 KiB
Java
package androidx.constraintlayout.solver.widgets.analyzer;
|
|
|
|
import androidx.constraintlayout.solver.widgets.ConstraintWidget;
|
|
import androidx.constraintlayout.solver.widgets.Guideline;
|
|
public class GuidelineReference extends WidgetRun {
|
|
public GuidelineReference(ConstraintWidget constraintWidget) {
|
|
super(constraintWidget);
|
|
constraintWidget.horizontalRun.clear();
|
|
constraintWidget.verticalRun.clear();
|
|
this.orientation = ((Guideline) constraintWidget).getOrientation();
|
|
}
|
|
|
|
private void addDependency(DependencyNode dependencyNode) {
|
|
this.start.dependencies.add(dependencyNode);
|
|
dependencyNode.targets.add(this.start);
|
|
}
|
|
|
|
@Override // androidx.constraintlayout.solver.widgets.analyzer.WidgetRun
|
|
public void apply() {
|
|
Guideline guideline = (Guideline) this.widget;
|
|
int relativeBegin = guideline.getRelativeBegin();
|
|
int relativeEnd = guideline.getRelativeEnd();
|
|
guideline.getRelativePercent();
|
|
if (guideline.getOrientation() == 1) {
|
|
if (relativeBegin != -1) {
|
|
this.start.targets.add(this.widget.mParent.horizontalRun.start);
|
|
this.widget.mParent.horizontalRun.start.dependencies.add(this.start);
|
|
this.start.margin = relativeBegin;
|
|
} else if (relativeEnd != -1) {
|
|
this.start.targets.add(this.widget.mParent.horizontalRun.end);
|
|
this.widget.mParent.horizontalRun.end.dependencies.add(this.start);
|
|
this.start.margin = -relativeEnd;
|
|
} else {
|
|
DependencyNode dependencyNode = this.start;
|
|
dependencyNode.delegateToWidgetRun = true;
|
|
dependencyNode.targets.add(this.widget.mParent.horizontalRun.end);
|
|
this.widget.mParent.horizontalRun.end.dependencies.add(this.start);
|
|
}
|
|
addDependency(this.widget.horizontalRun.start);
|
|
addDependency(this.widget.horizontalRun.end);
|
|
return;
|
|
}
|
|
if (relativeBegin != -1) {
|
|
this.start.targets.add(this.widget.mParent.verticalRun.start);
|
|
this.widget.mParent.verticalRun.start.dependencies.add(this.start);
|
|
this.start.margin = relativeBegin;
|
|
} else if (relativeEnd != -1) {
|
|
this.start.targets.add(this.widget.mParent.verticalRun.end);
|
|
this.widget.mParent.verticalRun.end.dependencies.add(this.start);
|
|
this.start.margin = -relativeEnd;
|
|
} else {
|
|
DependencyNode dependencyNode2 = this.start;
|
|
dependencyNode2.delegateToWidgetRun = true;
|
|
dependencyNode2.targets.add(this.widget.mParent.verticalRun.end);
|
|
this.widget.mParent.verticalRun.end.dependencies.add(this.start);
|
|
}
|
|
addDependency(this.widget.verticalRun.start);
|
|
addDependency(this.widget.verticalRun.end);
|
|
}
|
|
|
|
@Override // androidx.constraintlayout.solver.widgets.analyzer.WidgetRun
|
|
public void applyToWidget() {
|
|
if (((Guideline) this.widget).getOrientation() == 1) {
|
|
this.widget.setX(this.start.value);
|
|
} else {
|
|
this.widget.setY(this.start.value);
|
|
}
|
|
}
|
|
|
|
@Override // androidx.constraintlayout.solver.widgets.analyzer.WidgetRun
|
|
public void clear() {
|
|
this.start.clear();
|
|
}
|
|
|
|
@Override // androidx.constraintlayout.solver.widgets.analyzer.WidgetRun
|
|
public void reset() {
|
|
this.start.resolved = false;
|
|
this.end.resolved = false;
|
|
}
|
|
|
|
@Override // androidx.constraintlayout.solver.widgets.analyzer.WidgetRun
|
|
public boolean supportsWrapComputation() {
|
|
return false;
|
|
}
|
|
|
|
@Override // androidx.constraintlayout.solver.widgets.analyzer.WidgetRun, androidx.constraintlayout.solver.widgets.analyzer.Dependency
|
|
public void update(Dependency dependency) {
|
|
DependencyNode dependencyNode = this.start;
|
|
if (dependencyNode.readyToSolve && !dependencyNode.resolved) {
|
|
this.start.resolve((int) ((((Guideline) this.widget).getRelativePercent() * ((float) dependencyNode.targets.get(0).value)) + 0.5f));
|
|
}
|
|
}
|
|
}
|