commonMain.androidx.constraintlayout.compose.ConstraintSet.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) 2021 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.compose
import androidx.compose.runtime.Immutable
import androidx.compose.ui.layout.Measurable
import androidx.constraintlayout.core.state.Transition
/**
* Immutable description of the constraints used to layout the children of a [ConstraintLayout].
*/
@Immutable
interface ConstraintSet {
/**
* Applies the [ConstraintSet] to a state.
*/
fun applyTo(state: State, measurables: List)
fun override(name: String, value: Float) = this
fun applyTo(transition: Transition, type: Int) {
// nothing here, used in MotionLayout
}
fun isDirty(measurables: List): Boolean = true
}
internal interface DerivedConstraintSet: ConstraintSet {
/**
* [ConstraintSet] that this instance will derive its constraints from.
*
* This means that the constraints from [extendFrom] will be applied before the constraints of
* this [DerivedConstraintSet] instance.
*/
val extendFrom: ConstraintSet?
override fun applyTo(state: State, measurables: List) {
buildMapping(state, measurables)
(extendFrom as? DerivedConstraintSet)?.applyTo(state, measurables)
applyToState(state)
}
/**
* Inheritors should implement this function so that derived constraints are applied properly.
*/
fun applyToState(state: State)
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy