# androidx.compose.ui.layout

Common/AllAndroid/JVM

## Interfaces

|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ApproachIntrinsicMeasureScope` | The receiver scope of a layout's intrinsic approach measurements lambdas. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ApproachLayoutModifierNode` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ApproachLayoutModifierNode` is designed to support gradually approaching the destination layout calculated in the lookahead pass. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ApproachMeasureScope` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ApproachMeasureScope` provides access to lookahead results to allow `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ApproachLayoutModifierNode` to leverage lookahead results to define how measurements and placements approach their destination. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/BeyondBoundsLayout` | Layout extra items in the specified direction. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/BeyondBoundsLayout.BeyondBoundsScope` | The scope used in `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/BeyondBoundsLayout#layout(androidx.compose.ui.layout.BeyondBoundsLayout.LayoutDirection,kotlin.Function1)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/BeyondBoundsLayoutProviderModifierNode` | Provides a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/BeyondBoundsLayout` through Modifier.Node APIs. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ContentScale` | Represents a rule to apply to scale a source rectangle to be inscribed into a destination | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/GraphicLayerInfo` | The info about the graphics layers used by tooling. | android |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/IntrinsicMeasurable` | A part of the composition that can be measured. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/IntrinsicMeasureScope` | The receiver scope of a layout's intrinsic measurements lambdas. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` | A holder of the measured bounds for the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Layout.composable#Layout(kotlin.Function0,androidx.compose.ui.Modifier,androidx.compose.ui.layout.MeasurePolicy)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutIdParentData` | Can be implemented by values used as parent data to make them usable as tags. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutInfo` | The public information about the layouts used internally as nodes in the Compose UI hierarchy. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutModifier` | A `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Element` that changes how its wrapped content is measured and laid out. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LookaheadScope` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LookaheadScope` provides a receiver scope for all (direct and indirect) child layouts in `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LookaheadScope`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Measurable` | A part of the composition that can be measured. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasurePolicy` | Defines the measure and layout behavior of a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Layout.composable#Layout(kotlin.Function0,androidx.compose.ui.Modifier,androidx.compose.ui.layout.MeasurePolicy)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureResult` | Interface holding the size and alignment lines of the measured layout, as well as the children positioning logic. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureScope` | The receiver scope of a layout's measure lambda. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Measured` | A `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Measured` corresponds to a layout that has been measured by its parent layout. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MultiContentMeasurePolicy` | Defines the measure and layout behavior of a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Layout.composable#Layout(kotlin.Function0,androidx.compose.ui.Modifier,androidx.compose.ui.layout.MeasurePolicy)` overload which accepts a list of multiple composable content lambdas. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/OnGloballyPositionedModifier` | A modifier whose `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/OnGloballyPositionedModifier#onGloballyPositioned(androidx.compose.ui.layout.LayoutCoordinates)` is called with the final LayoutCoordinates of the Layout when the global position of the content may have changed. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/OnPlacedModifier` | A modifier whose `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/OnPlacedModifier#onPlaced(androidx.compose.ui.layout.LayoutCoordinates)` is called after the parent `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutModifier` and parent layout has been placed and before child `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutModifier` is placed. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/OnRemeasuredModifier` | A modifier whose `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/OnRemeasuredModifier#onRemeasured(androidx.compose.ui.unit.IntSize)` is called when the layout content is remeasured. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ParentDataModifier` | A `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier` that provides data to the parent `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Layout.composable#Layout(kotlin.Function0,androidx.compose.ui.Modifier,androidx.compose.ui.layout.MeasurePolicy)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/PinnableContainer` | Represents a container which can be pinned when the content of this container is important. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/PinnableContainer.PinnedHandle` | This is an object returned by `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/PinnableContainer#pin()` which allows to release the pinning. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers` | A collection of `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Ruler`s used to define a Rectangle. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Remeasurement` | This object is associated with a layout node and allows to execute some extra measure/layout actions which are needed for some complex layouts. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RemeasurementModifier` | A `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier.Element` that provides a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Remeasurement` object associated with the layout node the modifier is applied to. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RulerScope` | A scope used in `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureScope#layout(kotlin.Int,kotlin.Int,kotlin.collections.Map,kotlin.Function1)` for the `rulers` parameter to allow a layout to define `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Ruler` values for children. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeLayoutState.PausedPrecomposition` | A `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeLayoutState.PausedPrecomposition` is a subcomposition that can be composed incrementally as it supports being paused and resumed. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeLayoutState.PrecomposedSlotHandle` | Instance of this interface is returned by `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeLayoutState#precompose(kotlin.Any,kotlin.Function0)` function. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeMeasureScope` | The receiver scope of a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeLayout.composable#SubcomposeLayout(androidx.compose.ui.Modifier,kotlin.Function2)`'s measure lambda which adds ability to dynamically subcompose a content during the measuring on top of the features provided by `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureScope`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeSlotReusePolicy` | This policy allows `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeLayout.composable#SubcomposeLayout(androidx.compose.ui.Modifier,kotlin.Function2)` to retain some of slots which we were used but not used anymore instead of disposing them. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/WindowInsetsAnimation` | Provides properties related to animating `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/WindowInsetsRulers`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/WindowInsetsRulers` | Contains rulers used for window insets. | Cmn |

## Classes

|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/AlignmentLine` | Defines an offset line that can be used by parent layouts to align and position their children. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/BeyondBoundsLayout.LayoutDirection` | The direction (from the visible bounds) that a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/BeyondBoundsLayout` is requesting more items to be laid. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/FixedScale` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ContentScale` implementation that always scales the dimension by the provided fixed floating point value | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalAlignmentLine` | A horizontal `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/AlignmentLine`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalRuler` | A horizontal `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Ruler`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutBoundsHolder` | An object which holds on to a (potentially) mutating `https://developer.android.com/reference/kotlin/androidx/compose/ui/spatial/RelativeLayoutBounds` of a specific node. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ModifierInfo` | Used by tooling to examine the modifiers on a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutInfo`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` | A `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable` corresponds to a child layout that can be positioned by its parent layout. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope` | Receiver scope that permits explicit placement of a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Ruler` | A line that can be used to align layout children inside a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor` | Holds 2 dimensional scaling factors for horizontal and vertical axes | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeLayoutState` | State used by `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeLayout.composable#SubcomposeLayout(androidx.compose.ui.Modifier,kotlin.Function2)`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeSlotReusePolicy.SlotIdsSet` | Set containing slot ids currently available to reuse. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalAlignmentLine` | A vertical `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/AlignmentLine`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/VerticalRuler` | A vertical `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Ruler`. | Cmn |

## Objects

|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers.Companion` |   | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/WindowInsetsRulers.Companion` |   | Cmn |

## Annotations

|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MeasureScopeMarker` |   | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/PlacementScopeMarker` |   | Cmn |

## Composables

|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Layout.composable` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Layout.composable#Layout(androidx.compose.ui.Modifier,androidx.compose.ui.layout.MeasurePolicy)` is the main core component for layout for "leaf" nodes. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LookaheadScope.composable` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LookaheadScope.composable#LookaheadScope(kotlin.Function1)` creates a scope in which all layouts will first determine their destination layout through a lookahead pass, followed by an *approach* pass to run the measurement and placement approach defined in `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/approachLayout.modifier#(androidx.compose.ui.Modifier).approachLayout(kotlin.Function1,kotlin.Function2,kotlin.Function3)` or `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ApproachLayoutModifierNode`, in order to gradually reach the destination. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/MultiMeasureLayout.composable` |   | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeLayout.composable` | Analogue of `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Layout.composable#Layout(kotlin.Function0,androidx.compose.ui.Modifier,androidx.compose.ui.layout.MeasurePolicy)` which allows to subcompose the actual content during the measuring stage for example to use the values calculated during the measurement as params for the composition of the children. | Cmn |

## Modifiers

|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/approachLayout.modifier` | Creates an approach layout intended to help gradually approach the destination layout calculated in the lookahead pass. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/layout.modifier` | Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutModifier` that allows changing how the wrapped element is measured and laid out. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/layoutBounds.modifier` | This will map the `https://developer.android.com/reference/kotlin/androidx/compose/ui/spatial/RelativeLayoutBounds` of the modifier into the provided `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutBoundsHolder`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/layoutId.modifier` | Tag the element with `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/layoutId.modifier#(androidx.compose.ui.Modifier).layoutId(kotlin.Any)` to identify the element within its parent. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/onFirstVisible.modifier` | Registers a callback to monitor when the node is first inside of the viewport of the window or not. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/onGloballyPositioned.modifier` | Invoke `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/onGloballyPositioned.modifier#(androidx.compose.ui.Modifier).onGloballyPositioned(kotlin.Function1)` with the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` of the element when the global position of the content may have changed. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/onLayoutRectChanged.modifier` | Invokes `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.Modifier).onLayoutRectChanged(kotlin.Long,kotlin.Long,kotlin.Function1)` with the position of this layout node relative to the coordinate system of the root of the composition, as well as in screen coordinates and window coordinates. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/onPlaced.modifier` | Invoke `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/onPlaced.modifier#(androidx.compose.ui.Modifier).onPlaced(kotlin.Function1)` after the parent `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutModifier` and parent layout has been placed and before child `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutModifier` is placed. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/onSizeChanged.modifier` | Invoked with the size of the modified Compose UI element when the element is first measured or when the size of the element changes. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/onVisibilityChanged.modifier` | Registers a callback to monitor whether or not the node is inside of the viewport of the window or not. | Cmn |

## Top-level functions summary

|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#RectRulers()()` Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#RectRulers()`. | Cmn |
| `inline https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#ScaleFactor(kotlin.Float,kotlin.Float)(scaleX: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html, scaleY: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Constructs a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#ScaleFactor(kotlin.Float,kotlin.Float)` from the given x and y scale values | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeSlotReusePolicy` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#SubcomposeSlotReusePolicy(kotlin.Int)(maxSlotsToRetainForReuse: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Creates `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#SubcomposeSlotReusePolicy(kotlin.Int)` which retains the fixed amount of slots. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#lerp(androidx.compose.ui.layout.ScaleFactor,androidx.compose.ui.layout.ScaleFactor,kotlin.Float)(start: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor, stop: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor, fraction: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Linearly interpolate between two `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor` parameters | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/node/DelegatableNode` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#onVisibilityChangedNode(kotlin.Long,kotlin.Float,androidx.compose.ui.layout.LayoutBoundsHolder,kotlin.Function1)( minDurationMs: @https://developer.android.com/reference/kotlin/androidx/annotation/IntRange(from = 0) https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html, minFractionVisible: @https://developer.android.com/reference/kotlin/androidx/annotation/FloatRange(from = 0.0, to = 1.0) https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html, viewportBounds: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutBoundsHolder?, callback: (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/node/DelegatableNode` for a modifier node, implementing the contract of `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/onVisibilityChanged.modifier#(androidx.compose.ui.Modifier).onVisibilityChanged(kotlin.Long,kotlin.Float,androidx.compose.ui.layout.LayoutBoundsHolder,kotlin.Function1)` Modifier. | Cmn |

## Extension functions summary

|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Rect` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.LayoutCoordinates).boundsInParent()()` Returns the bounding box of the child in the parent's content area, including any clipping done with respect to the parent. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Rect` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.LayoutCoordinates).boundsInRoot()()` The boundaries of this layout inside the root composable. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Rect` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.LayoutCoordinates).boundsInWindow(kotlin.Boolean)(clipBounds: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` The boundaries of this layout relative to the window's origin. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/WindowInsetsRulers.Companion.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.WindowInsetsRulers.Companion).disable()()` Used to disable `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/WindowInsetsRulers`. | Cmn |
| `operator https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.geometry.Size).div(androidx.compose.ui.layout.ScaleFactor)(scaleFactor: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor)` Division operator with `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size` | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.LayoutCoordinates).findRootCoordinates()()` Walks up the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` hierarchy to find the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` whose `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates#parentCoordinates()` is `null` and returns it. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers>` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Placeable.PlacementScope.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.Placeable.PlacementScope).getDisplayCutoutBounds()()` Returns a List of `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers`, one `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers` for each display cutout. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers.Companion.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.RectRulers.Companion).innermostOf(kotlin.Array)(vararg rulers: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers)` Merges multiple `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers` into a single `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers`, using the inner-most value. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LookaheadScope.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.LookaheadScope).lookaheadScopeCoordinates(androidx.compose.ui.layout.LayoutCoordinates)( sourceCoordinates: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates )` Obtains the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` for the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LookaheadScope` using a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` within the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LookaheadScope`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers.Companion.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.RectRulers.Companion).outermostOf(kotlin.Array)(vararg rulers: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers)` Merges multiple `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers` into a single `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers`, using the outer-most value. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Offset` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.LayoutCoordinates).positionInParent()()` Returns the position of the top-left in the parent's content area or (0, 0) for the root. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Offset` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.LayoutCoordinates).positionInRoot()()` The position of this layout inside the root composable. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Offset` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.LayoutCoordinates).positionInWindow()()` The position of this layout relative to the window. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Offset` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.LayoutCoordinates).positionOnScreen()()` The position of this layout on the device's screen. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/node/DelegatableNode.RegistrationHandle` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/node/DelegatableNode.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnGlobalLayoutListener(kotlin.Long,kotlin.Long,kotlin.Function1)( throttleMillis: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html, debounceMillis: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html, callback: (https://developer.android.com/reference/kotlin/androidx/compose/ui/spatial/RelativeLayoutBounds) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Registers a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnGlobalLayoutListener(kotlin.Long,kotlin.Long,kotlin.Function1)` to be executed with the position of this modifier node relative to the coordinate system of the root of the composition, as well as in screen coordinates and window coordinates, see `https://developer.android.com/reference/kotlin/androidx/compose/ui/spatial/RelativeLayoutBounds`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/node/DelegatableNode.RegistrationHandle` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/node/DelegatableNode.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnLayoutRectChanged(kotlin.Long,kotlin.Long,kotlin.Function1)( throttleMillis: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html, debounceMillis: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html, callback: (https://developer.android.com/reference/kotlin/androidx/compose/ui/spatial/RelativeLayoutBounds) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html )` Registers a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnLayoutRectChanged(kotlin.Long,kotlin.Long,kotlin.Function1)` to be executed with the position of this modifier node relative to the coordinate system of the root of the composition, as well as in screen coordinates and window coordinates. | Cmn |
| `inline https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.ScaleFactor).takeOrElse(kotlin.Function0)(block: () -> https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor)` If this `https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/package-summary#(androidx.compose.ui.graphics.Color).isSpecified()` then this is returned, otherwise `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.ScaleFactor).takeOrElse(kotlin.Function0)` is executed and its result is returned. | Cmn |
| `operator https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.geometry.Size).times(androidx.compose.ui.layout.ScaleFactor)(scaleFactor: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor)` Multiplication operator with `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size`. | Cmn |
| `operator https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.ScaleFactor).times(androidx.compose.ui.geometry.Size)(size: https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size)` Multiplication operator with `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size` with reverse parameter types to maintain commutative properties of multiplication | Cmn |

## Top-level properties summary

|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalAlignmentLine` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#FirstBaseline()` `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/AlignmentLine` defined by the baseline of a first line of a `https://developer.android.com/reference/kotlin/androidx/compose/foundation/text/BasicText.composable#BasicText(kotlin.String,androidx.compose.ui.Modifier,androidx.compose.ui.text.TextStyle,kotlin.Function1,androidx.compose.ui.text.style.TextOverflow,kotlin.Boolean,kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.ColorProducer,androidx.compose.foundation.text.TextAutoSize)` | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/HorizontalAlignmentLine` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#LastBaseline()` `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/AlignmentLine` defined by the baseline of the last line of a `https://developer.android.com/reference/kotlin/androidx/compose/foundation/text/BasicText.composable#BasicText(kotlin.String,androidx.compose.ui.Modifier,androidx.compose.ui.text.TextStyle,kotlin.Function1,androidx.compose.ui.text.style.TextOverflow,kotlin.Boolean,kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.ColorProducer,androidx.compose.foundation.text.TextAutoSize)` | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/runtime/ProvidableCompositionLocal<https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/PinnableContainer?>` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#LocalPinnableContainer()` Use this composition local to get the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/PinnableContainer` handling the current subhierarchy. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/modifier/ProvidableModifierLocal<https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/BeyondBoundsLayout?>` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#ModifierLocalBeyondBoundsLayout()` **This property is deprecated.** Please use DelegatableNode.findNearestBeyondBoundsLayoutAncestor() to access the nearest parent BeyondBoundsLayout. | Cmn |

## Extension properties summary

|---|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.ScaleFactor).isSpecified()` `false` when this is `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor#Unspecified()`. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.ScaleFactor).isUnspecified()` `true` when this is `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor#Unspecified()`. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/Measurable.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.Measurable).layoutId()` Retrieves the tag associated to a composable with the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/layoutId.modifier#(androidx.compose.ui.Modifier).layoutId(kotlin.Any)` modifier. | Cmn |
| `https://developer.android.com/reference/android/view/View.html?` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutInfo.https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.LayoutInfo).view()` Return the owner as a View from the associated LayoutNode. | android |

## Top-level functions

### RectRulers

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/RectRulers.kt+function:RectRulers) Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.9.0)

```
fun RectRulers(): RectRulers
```

Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#RectRulers()`.

### ScaleFactor

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/ScaleFactor.kt+function:ScaleFactor) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
inline fun ScaleFactor(scaleX: Float, scaleY: Float): ScaleFactor
```

Constructs a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#ScaleFactor(kotlin.Float,kotlin.Float)` from the given x and y scale values

### SubcomposeSlotReusePolicy

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/SubcomposeLayout.kt+function:SubcomposeSlotReusePolicy) Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.2.0)

```
fun SubcomposeSlotReusePolicy(maxSlotsToRetainForReuse: Int): SubcomposeSlotReusePolicy
```

Creates `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#SubcomposeSlotReusePolicy(kotlin.Int)` which retains the fixed amount of slots.

| Parameters |
|---|---|
| `maxSlotsToRetainForReuse: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/SubcomposeLayout.composable#SubcomposeLayout(androidx.compose.ui.Modifier,kotlin.Function2)` will retain up to this amount of slots. |

### lerp

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/ScaleFactor.kt+function:lerp) Added in [1.10.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.10.0)

```
fun lerp(start: ScaleFactor, stop: ScaleFactor, fraction: Float): ScaleFactor
```

Linearly interpolate between two `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor` parameters

The `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#lerp(androidx.compose.ui.layout.ScaleFactor,androidx.compose.ui.layout.ScaleFactor,kotlin.Float)` argument represents position on the timeline, with 0.0 meaning that the interpolation has not started, returning `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#lerp(androidx.compose.ui.layout.ScaleFactor,androidx.compose.ui.layout.ScaleFactor,kotlin.Float)` (or something equivalent to `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#lerp(androidx.compose.ui.layout.ScaleFactor,androidx.compose.ui.layout.ScaleFactor,kotlin.Float)`), 1.0 meaning that the interpolation has finished, returning `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#lerp(androidx.compose.ui.layout.ScaleFactor,androidx.compose.ui.layout.ScaleFactor,kotlin.Float)` (or something equivalent to `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#lerp(androidx.compose.ui.layout.ScaleFactor,androidx.compose.ui.layout.ScaleFactor,kotlin.Float)`), and values in between meaning that the interpolation is at the relevant point on the timeline between `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#lerp(androidx.compose.ui.layout.ScaleFactor,androidx.compose.ui.layout.ScaleFactor,kotlin.Float)` and `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#lerp(androidx.compose.ui.layout.ScaleFactor,androidx.compose.ui.layout.ScaleFactor,kotlin.Float)`. The interpolation can be extrapolated beyond 0.0 and 1.0, so negative values and values greater than 1.0 are valid (and can easily be generated by curves).

Values for `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#lerp(androidx.compose.ui.layout.ScaleFactor,androidx.compose.ui.layout.ScaleFactor,kotlin.Float)` are usually obtained from an Animation, such as an `AnimationController`.

### onVisibilityChangedNode

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/OnVisibilityChangedModifier.kt+function:onVisibilityChangedNode) Added in [1.10.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.10.0)

```
fun onVisibilityChangedNode(
    minDurationMs: @IntRange(from = 0) Long = 0,
    minFractionVisible: @FloatRange(from = 0.0, to = 1.0) Float = 1.0f,
    viewportBounds: LayoutBoundsHolder? = null,
    callback: (Boolean) -> Unit
): DelegatableNode
```

Creates a `https://developer.android.com/reference/kotlin/androidx/compose/ui/node/DelegatableNode` for a modifier node, implementing the contract of `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/onVisibilityChanged.modifier#(androidx.compose.ui.Modifier).onVisibilityChanged(kotlin.Long,kotlin.Float,androidx.compose.ui.layout.LayoutBoundsHolder,kotlin.Function1)` Modifier. Such a node could be delegated to as part of a custom modifier node via `https://developer.android.com/reference/kotlin/androidx/compose/ui/node/DelegatingNode#delegate(androidx.compose.ui.node.DelegatableNode)`. In most of the cases users should just use `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/onVisibilityChanged.modifier#(androidx.compose.ui.Modifier).onVisibilityChanged(kotlin.Long,kotlin.Float,androidx.compose.ui.layout.LayoutBoundsHolder,kotlin.Function1)` Modifier directly.

Note that if you need to update some of the params, it is recommended to `https://developer.android.com/reference/kotlin/androidx/compose/ui/node/DelegatingNode#undelegate(androidx.compose.ui.node.DelegatableNode)` the previous node, and delegate again to a new one with the correct values.

Registers a callback to monitor whether or not the node is inside of the viewport of the window or not. Example use cases for this include, auto-playing videos in a feed, logging how long an item was visible, and starting/stopping animations.

| Parameters |
|---|---|
| `minDurationMs: @https://developer.android.com/reference/kotlin/androidx/annotation/IntRange(from = 0) https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html = 0` | the amount of time in milliseconds that this node should be considered visible before invoking the callback with (true). Depending on your use case, it might be useful to provide a non-zero number here if it is desirable to avoid triggering the callback on elements during really fast scrolls where they went from visible to invisible in a really short amount of time. |
| `minFractionVisible: @https://developer.android.com/reference/kotlin/androidx/annotation/FloatRange(from = 0.0, to = 1.0) https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html = 1.0f` | the fraction of the node which should be inside the viewport for the callback to get called with a value of true. A value of 1f means that the entire bounds of the rect need to be inside of the viewport, or that the rect fills 100% of the viewport. A value of 0f means that this will get triggered as soon as a non-zero amount of pixels are inside of the viewport. |
| `viewportBounds: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutBoundsHolder? = null` | a reference to the bounds to use as a "viewport" with which to calculate the amount of visibility this element has *inside* of that viewport. This is most commonly used to account for UI elements such as navigation bars which are drawn on top of the content that this modifier is applied to. It is required that this be passed in to a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/layoutBounds.modifier#(androidx.compose.ui.Modifier).layoutBounds(androidx.compose.ui.layout.LayoutBoundsHolder)` somewhere else in order for this parameter to get used properly. If null is provided, the window of the application will be used as the viewport. |
| `callback: (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | lambda that is invoked when the fraction of this node inside of the specified viewport crosses the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#onVisibilityChangedNode(kotlin.Long,kotlin.Float,androidx.compose.ui.layout.LayoutBoundsHolder,kotlin.Function1)`. The boolean argument passed into this lambda will be true in cases where the fraction visible is greater, and false when it is not. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/onVisibilityChanged.modifier#(androidx.compose.ui.Modifier).onVisibilityChanged(kotlin.Long,kotlin.Float,androidx.compose.ui.layout.LayoutBoundsHolder,kotlin.Function1)` |   |

## Extension functions

### LayoutCoordinates.boundsInParent

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/LayoutCoordinates.kt+function:boundsInParent) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
fun LayoutCoordinates.boundsInParent(): Rect
```

Returns the bounding box of the child in the parent's content area, including any clipping done with respect to the parent. For the root, the bounds is positioned at (0, 0) and sized to the size of the root.

### LayoutCoordinates.boundsInRoot

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/LayoutCoordinates.kt+function:boundsInRoot) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
fun LayoutCoordinates.boundsInRoot(): Rect
```

The boundaries of this layout inside the root composable.

### LayoutCoordinates.boundsInWindow

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/LayoutCoordinates.kt+function:boundsInWindow) Added in [1.10.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.10.0)

```
fun LayoutCoordinates.boundsInWindow(clipBounds: Boolean = true): Rect
```

The boundaries of this layout relative to the window's origin.

| Parameters |
|---|---|
| `clipBounds: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html = true` | Whether to clip the bounds of the layout to the window's boundaries. If `true`, any clipping that occurs between this layout and the window will affect the returned bounds, and can even result in an empty rectangle if clipped regions do not overlap. If `false`, the bounding box of this layout will be converted to window coordinates irrespective of any clipping applied. Defaults to `true`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Rect` | A `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Rect` representing the bounding box of this `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` in the window's coordinate space. If the bounds are completely clipped, returns `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Rect#Zero()`. |

### WindowInsetsRulers.Companion.disable

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/WindowInsetsRulers.kt+function:disable) Added in [1.13.0-rc01](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.13.0-rc01)

```
fun WindowInsetsRulers.Companion.disable(): Unit
```

Used to disable `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/WindowInsetsRulers`. This can be used when UI never reads WindowInsets across all Compose roots to reduce the overhead of requesting WindowInsets updates. Only call this when no Compose roots will ever need to handle insets over the lifetime of the application. This should be called before the first Compose root is created.

### Size.div

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/ScaleFactor.kt+function:div) Added in [1.10.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.10.0)

```
operator fun Size.div(scaleFactor: ScaleFactor): Size
```

Division operator with `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size`

Return a new `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size` with the width and height divided by `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor#scaleX()` and `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor#scaleY()` respectively

### LayoutCoordinates.findRootCoordinates

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/LayoutCoordinates.kt+function:findRootCoordinates) Added in [1.3.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.3.0)

```
fun LayoutCoordinates.findRootCoordinates(): LayoutCoordinates
```

Walks up the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` hierarchy to find the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` whose `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates#parentCoordinates()` is `null` and returns it. If `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates#isAttached()`, this will have the size of the androidx.compose.ui.platform.ComposeView.

### Placeable.PlacementScope.getDisplayCutoutBounds

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/WindowInsetsRulers.kt+function:getDisplayCutoutBounds) Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.9.0)

```
fun Placeable.PlacementScope.getDisplayCutoutBounds(): List<RectRulers>
```

Returns a List of `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers`, one `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers` for each display cutout. Each `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers` provides values for the bounds of the display cutout. `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/WindowInsetsRulers#DisplayCutout()` provides the safe inset values for content avoiding all display cutouts.

### RectRulers.Companion.innermostOf

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/RectRulers.kt+function:innermostOf) Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.9.0)

```
fun RectRulers.Companion.innermostOf(vararg rulers: RectRulers): RectRulers
```

Merges multiple `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers` into a single `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers`, using the inner-most value. That is, the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers#left()` will be the greatest `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers#left()`, the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers#top()` will be the greatest `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers#top()`, the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers#right()` will be the least `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers#right()`, and the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers#bottom()` will be the least of all `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.RectRulers.Companion).innermostOf(kotlin.Array)`.

When `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.RectRulers.Companion).innermostOf(kotlin.Array)` provide non-overlapping values, the result may have negative size. For example, if one `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers` provides (10, 20, 30, 40) as their ruler values, and another provides (1, 1, 5, 5), the merged result will be (10, 20, 5, 5).

If one of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.RectRulers.Companion).innermostOf(kotlin.Array)` does not provide a value, it will not be considered in the calculation.

### LookaheadScope.lookaheadScopeCoordinates

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/LookaheadScope.kt+function:lookaheadScopeCoordinates) Added in [1.10.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.10.0)

```
fun LookaheadScope.lookaheadScopeCoordinates(
    sourceCoordinates: LayoutCoordinates
): LayoutCoordinates
```

Obtains the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` for the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LookaheadScope` using a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` within the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LookaheadScope`.

**Important:** This must be an actual `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` instance from the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#PlacementScope(androidx.compose.ui.node.LookaheadCapablePlaceable)` or `https://developer.android.com/reference/kotlin/androidx/compose/ui/Modifier` APIs. The Layout that associates with the coordinates needs to be within the subtree of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LookaheadScope`. Using a custom `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` implementation will result in an `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-illegal-argument-exception/index.html`.

| Parameters |
|---|---|
| `sourceCoordinates: https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` | A `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutCoordinates` within the subtree of the given `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LookaheadScope`. |

### RectRulers.Companion.outermostOf

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/RectRulers.kt+function:outermostOf) Added in [1.9.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.9.0)

```
fun RectRulers.Companion.outermostOf(vararg rulers: RectRulers): RectRulers
```

Merges multiple `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers` into a single `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers`, using the outer-most value. That is, the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers#left()` will be the least `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers#left()`, the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers#top()` will be the least `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers#top()`, the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers#right()` will be the greatest `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers#right()`, and the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/RectRulers#bottom()` will be the greatest of all `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.RectRulers.Companion).outermostOf(kotlin.Array)`.

If one of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.RectRulers.Companion).outermostOf(kotlin.Array)` does not provide a value, it will not be considered in the calculation.

### LayoutCoordinates.positionInParent

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/LayoutCoordinates.kt+function:positionInParent) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
fun LayoutCoordinates.positionInParent(): Offset
```

Returns the position of the top-left in the parent's content area or (0, 0) for the root.

### LayoutCoordinates.positionInRoot

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/LayoutCoordinates.kt+function:positionInRoot) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
fun LayoutCoordinates.positionInRoot(): Offset
```

The position of this layout inside the root composable.

### LayoutCoordinates.positionInWindow

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/LayoutCoordinates.kt+function:positionInWindow) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
fun LayoutCoordinates.positionInWindow(): Offset
```

The position of this layout relative to the window.

### LayoutCoordinates.positionOnScreen

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/LayoutCoordinates.kt+function:positionOnScreen) Added in [1.7.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.7.0)

```
fun LayoutCoordinates.positionOnScreen(): Offset
```

The position of this layout on the device's screen. Returns `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Offset#Unspecified()` if the conversion cannot be performed.

### DelegatableNode.registerOnGlobalLayoutListener

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/OnGlobalLayoutListener.kt+function:registerOnGlobalLayoutListener) Added in [1.8.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.8.0)

```
fun DelegatableNode.registerOnGlobalLayoutListener(
    throttleMillis: Long,
    debounceMillis: Long,
    callback: (RelativeLayoutBounds) -> Unit
): DelegatableNode.RegistrationHandle
```

Registers a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnGlobalLayoutListener(kotlin.Long,kotlin.Long,kotlin.Function1)` to be executed with the position of this modifier node relative to the coordinate system of the root of the composition, as well as in screen coordinates and window coordinates, see `https://developer.android.com/reference/kotlin/androidx/compose/ui/spatial/RelativeLayoutBounds`.

It may also be used to calculate certain Layout relationships at the time of the callback execution, such as `https://developer.android.com/reference/kotlin/androidx/compose/ui/spatial/RelativeLayoutBounds#calculateOcclusions()`.

This will be called after layout pass. This API allows for throttling and debouncing parameters in order to moderate the frequency with which the callback gets invoked during high rates of change (e.g. scrolling).

Specifying `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnGlobalLayoutListener(kotlin.Long,kotlin.Long,kotlin.Function1)` will prevent `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnGlobalLayoutListener(kotlin.Long,kotlin.Long,kotlin.Function1)` from being executed more than once over that time period. Specifying `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnGlobalLayoutListener(kotlin.Long,kotlin.Long,kotlin.Function1)` will delay the execution of `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnGlobalLayoutListener(kotlin.Long,kotlin.Long,kotlin.Function1)` until that amount of time has elapsed without a new position.

Specifying 0 for both `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnGlobalLayoutListener(kotlin.Long,kotlin.Long,kotlin.Function1)` and `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnGlobalLayoutListener(kotlin.Long,kotlin.Long,kotlin.Function1)` will result in the callback being executed every time the position has changed. Specifying non-zero amounts for both will result in both conditions being met.

| Parameters |
|---|---|
| `throttleMillis: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | The duration, in milliseconds, to prevent `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnGlobalLayoutListener(kotlin.Long,kotlin.Long,kotlin.Function1)` from being executed more than once over that time period. |
| `debounceMillis: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | The duration, in milliseconds, to delay the execution of `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnGlobalLayoutListener(kotlin.Long,kotlin.Long,kotlin.Function1)` until that amount of time has elapsed without a new position. |
| `callback: (https://developer.android.com/reference/kotlin/androidx/compose/ui/spatial/RelativeLayoutBounds) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | The callback to be executed, provides a new `https://developer.android.com/reference/kotlin/androidx/compose/ui/spatial/RelativeLayoutBounds` instance associated to this `https://developer.android.com/reference/kotlin/androidx/compose/ui/node/DelegatableNode`. Keep in mind this callback is executed on the main thread even when debounced. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/node/DelegatableNode.RegistrationHandle` | an object which should be used to unregister/dispose this callback, such as when a node is detached |

### DelegatableNode.registerOnLayoutRectChanged

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/OnLayoutRectChangedModifier.kt+function:registerOnLayoutRectChanged) Added in [1.8.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.8.0)

```
fun DelegatableNode.registerOnLayoutRectChanged(
    throttleMillis: Long,
    debounceMillis: Long,
    callback: (RelativeLayoutBounds) -> Unit
): DelegatableNode.RegistrationHandle
```

Registers a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnLayoutRectChanged(kotlin.Long,kotlin.Long,kotlin.Function1)` to be executed with the position of this modifier node relative to the coordinate system of the root of the composition, as well as in screen coordinates and window coordinates. This will be called after layout pass. This API allows for throttling and debouncing parameters in order to moderate the frequency with which the callback gets invoked during high rates of change (e.g. scrolling).

Specifying `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnLayoutRectChanged(kotlin.Long,kotlin.Long,kotlin.Function1)` will prevent `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnLayoutRectChanged(kotlin.Long,kotlin.Long,kotlin.Function1)` from being executed more than once over that time period. Specifying `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnLayoutRectChanged(kotlin.Long,kotlin.Long,kotlin.Function1)` will delay the execution of `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnLayoutRectChanged(kotlin.Long,kotlin.Long,kotlin.Function1)` until that amount of time has elapsed without a new position.

Specifying 0 for both `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnLayoutRectChanged(kotlin.Long,kotlin.Long,kotlin.Function1)` and `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnLayoutRectChanged(kotlin.Long,kotlin.Long,kotlin.Function1)` will result in the callback being executed every time the position has changed. Specifying non-zero amounts for both will result in both conditions being met.

| Parameters |
|---|---|
| `throttleMillis: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | The duration, in milliseconds, to prevent `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnLayoutRectChanged(kotlin.Long,kotlin.Long,kotlin.Function1)` from being executed more than once over that time period. |
| `debounceMillis: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-long/index.html` | The duration, in milliseconds, to delay the execution of `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.node.DelegatableNode).registerOnLayoutRectChanged(kotlin.Long,kotlin.Long,kotlin.Function1)` until that amount of time has elapsed without a new position. |
| `callback: (https://developer.android.com/reference/kotlin/androidx/compose/ui/spatial/RelativeLayoutBounds) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | The callback to be executed. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/node/DelegatableNode.RegistrationHandle` | an object which should be used to unregister/dispose this callback |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/onLayoutRectChanged.modifier#(androidx.compose.ui.Modifier).onLayoutRectChanged(kotlin.Long,kotlin.Long,kotlin.Function1)` |   |

### ScaleFactor.takeOrElse

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/ScaleFactor.kt+function:takeOrElse) Added in [1.10.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.10.0)

```
inline fun ScaleFactor.takeOrElse(block: () -> ScaleFactor): ScaleFactor
```

If this `https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/package-summary#(androidx.compose.ui.graphics.Color).isSpecified()` then this is returned, otherwise `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/package-summary#(androidx.compose.ui.layout.ScaleFactor).takeOrElse(kotlin.Function0)` is executed and its result is returned.

### Size.times

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/ScaleFactor.kt+function:times) Added in [1.10.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.10.0)

```
operator fun Size.times(scaleFactor: ScaleFactor): Size
```

Multiplication operator with `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size`.

Return a new `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size` with the width and height multiplied by the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor#scaleX()` and `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor#scaleY()` respectively

### ScaleFactor.times

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/ScaleFactor.kt+function:times) Added in [1.10.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.10.0)

```
operator fun ScaleFactor.times(size: Size): Size
```

Multiplication operator with `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size` with reverse parameter types to maintain commutative properties of multiplication

Return a new `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Size` with the width and height multiplied by the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor#scaleX()` and `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor#scaleY()` respectively

## Top-level properties

### FirstBaseline

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/AlignmentLine.kt+symbol:FirstBaseline) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
val FirstBaseline: HorizontalAlignmentLine
```

`https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/AlignmentLine` defined by the baseline of a first line of a `https://developer.android.com/reference/kotlin/androidx/compose/foundation/text/BasicText.composable#BasicText(kotlin.String,androidx.compose.ui.Modifier,androidx.compose.ui.text.TextStyle,kotlin.Function1,androidx.compose.ui.text.style.TextOverflow,kotlin.Boolean,kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.ColorProducer,androidx.compose.foundation.text.TextAutoSize)`

### LastBaseline

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/AlignmentLine.kt+symbol:LastBaseline) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
val LastBaseline: HorizontalAlignmentLine
```

`https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/AlignmentLine` defined by the baseline of the last line of a `https://developer.android.com/reference/kotlin/androidx/compose/foundation/text/BasicText.composable#BasicText(kotlin.String,androidx.compose.ui.Modifier,androidx.compose.ui.text.TextStyle,kotlin.Function1,androidx.compose.ui.text.style.TextOverflow,kotlin.Boolean,kotlin.Int,kotlin.Int,androidx.compose.ui.graphics.ColorProducer,androidx.compose.foundation.text.TextAutoSize)`

### LocalPinnableContainer

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/PinnableContainer.kt+symbol:LocalPinnableContainer) Added in [1.4.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.4.0)

```
val LocalPinnableContainer: ProvidableCompositionLocal<PinnableContainer?>
```

Use this composition local to get the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/PinnableContainer` handling the current subhierarchy.

It will be not null, for example, when the current content is composed as an item of lazy list.

### ModifierLocalBeyondBoundsLayout

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/BeyondBoundsLayout.kt+symbol:ModifierLocalBeyondBoundsLayout) Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.2.0) Deprecated in [1.10.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.10.0)

```
val ModifierLocalBeyondBoundsLayout: ProvidableModifierLocal<BeyondBoundsLayout?>
```

> [!CAUTION]
> **This property is deprecated.**   
> Please use DelegatableNode.findNearestBeyondBoundsLayoutAncestor() to access the nearest parent BeyondBoundsLayout.

A modifier local that provides access to a `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/BeyondBoundsLayout` that a child can use to ask a parent to layout more items that are beyond its visible bounds.

## Extension properties

### ScaleFactor.isSpecified

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/ScaleFactor.kt+symbol:isSpecified)

```
val ScaleFactor.isSpecified: Boolean
```

`false` when this is `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor#Unspecified()`.

### ScaleFactor.isUnspecified

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/ScaleFactor.kt+symbol:isUnspecified)

```
val ScaleFactor.isUnspecified: Boolean
```

`true` when this is `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/ScaleFactor#Unspecified()`.

### Measurable.layoutId

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/LayoutId.kt+symbol:layoutId) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.0.0)

```
val Measurable.layoutId: Any?
```

Retrieves the tag associated to a composable with the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/layoutId.modifier#(androidx.compose.ui.Modifier).layoutId(kotlin.Any)` modifier. For a parent data value to be returned by this property when not using the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/layoutId.modifier#(androidx.compose.ui.Modifier).layoutId(kotlin.Any)` modifier, the parent data value should implement the `https://developer.android.com/reference/kotlin/androidx/compose/ui/layout/LayoutIdParentData` interface.

Example usage:

```kotlin
import androidx.compose.foundation.layout.Box
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.Layout
import androidx.compose.ui.layout.layout
import androidx.compose.ui.layout.layoutId
import androidx.compose.ui.unit.Constraints

Layout({
    // Here the Containers are only needed to apply the modifiers. You could use the
    // modifier on header and footer directly if they are composables accepting modifiers.
    Box(Modifier.layoutId("header")) { header() }
    Box(Modifier.layoutId("footer")) { footer() }
}) { measurables, constraints ->
    val placeables = measurables.map { measurable ->
        when (measurable.layoutId) {
            // You should use appropriate constraints. Here we measure fake constraints.
            "header" -> measurable.measure(Constraints.fixed(100, 100))
            "footer" -> measurable.measure(constraints)
            else -> error("Unexpected tag")
        }
    }
    // Size should be derived from children measured sizes on placeables,
    // but this is simplified for the purposes of the example.
    layout(100, 100) { placeables.forEach { it.placeRelative(0, 0) } }
}
```

### LayoutInfo.view

android Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/layout/LayoutInfo.android.kt+symbol:view)

```
val LayoutInfo.view: View?
```

Return the owner as a View from the associated LayoutNode.