androidAndroidTest.androidx.constraintlayout.core.scout.Scout.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ktx-compose-constraint-layout Show documentation
Show all versions of ktx-compose-constraint-layout Show documentation
Extensions for the Kotlin standard library and third-party libraries.
The newest version!
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package androidx.constraintlayout.core.scout
import androidx.constraintlayout.core.widgets.ConstraintWidgetContainer
import androidx.constraintlayout.core.widgets.WidgetContainer
/**
* Main entry for the Scout Inference engine.
* All external access should be through this class
* TODO support Stash / merge constraints table etc.
*/
object Scout {
/**
* Given a collection of widgets evaluates probability of a connection
* and makes connections
*
* @param list collection of widgets to connect
*/
/**
* Recursive decent of widget tree inferring constraints on ConstraintWidgetContainer
*
* @param base
*/
@JvmStatic
fun inferConstraints(base: WidgetContainer?) {
if (base == null) {
return
}
if (base is ConstraintWidgetContainer && base.handlesInternalConstraints()) {
return
}
val preX = base.x
val preY = base.y
base.x = 0
base.y = 0
for (constraintWidget in base.children) {
if (constraintWidget is ConstraintWidgetContainer) {
val container = constraintWidget
if (!container.children.isEmpty()) {
inferConstraints(container)
}
}
}
val list = ArrayList(base.children)
list.add(0, base)
val widgets = list.toTypedArray()
ScoutWidget.Companion.computeConstraints(ScoutWidget.Companion.create(widgets))
base.x = preX
base.y = preY
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy